+;;; User Variables
+
+(defgroup bookmark nil
+ "Setting, annotation and jumping to bookmarks."
+ :group 'matching)
+
+
+(defcustom bookmark-use-annotations nil
+ "*If non-nil, saving a bookmark queries for an annotation in a buffer."
+ :type 'boolean
+ :group 'bookmark)
+
+
+(defcustom bookmark-save-flag t
+ "*Controls when Emacs saves bookmarks to a file.
+--> nil means never save bookmarks, except when `bookmark-save' is
+ explicitly called \(\\[bookmark-save]\).
+--> t means save bookmarks when Emacs is killed.
+--> Otherwise, it should be a number that is the frequency with which
+ the bookmark list is saved \(i.e.: the number of times which
+ Emacs' bookmark list may be modified before it is automatically
+ saved.\). If it is a number, Emacs will also automatically save
+ bookmarks when it is killed.
+
+Therefore, the way to get it to save every time you make or delete a
+bookmark is to set this variable to 1 \(or 0, which produces the same
+behavior.\)
+
+To specify the file in which to save them, modify the variable
+`bookmark-default-file', which is `~/.emacs.bmk' by default."
+ :type '(choice (const nil) integer (other t))
+ :group 'bookmark)
+
+
+(defconst bookmark-old-default-file "~/.emacs-bkmrks"
+ "*The `.emacs.bmk' file used to be called this name.")
+
+
+;; defvarred to avoid a compilation warning:
+(defvar bookmark-file nil
+ "Old name for `bookmark-default-file'.")
+
+(defcustom bookmark-default-file
+ (if bookmark-file
+ ;; In case user set `bookmark-file' in her .emacs:
+ bookmark-file
+ (convert-standard-filename "~/.emacs.bmk"))
+ "*File in which to save bookmarks by default."
+ :type 'file
+ :group 'bookmark)
+
+
+(defcustom bookmark-version-control 'nospecial
+ "*Whether or not to make numbered backups of the bookmark file.
+It can have four values: t, nil, `never', and `nospecial'.
+The first three have the same meaning that they do for the
+variable `version-control', and the final value `nospecial' means just
+use the value of `version-control'."
+ :type '(choice (const nil) (const never) (const nospecial)
+ (other t))
+ :group 'bookmark)
+
+
+(defcustom bookmark-completion-ignore-case t
+ "*Non-nil means bookmark functions ignore case in completion."
+ :type 'boolean
+ :group 'bookmark)
+
+
+(defcustom bookmark-sort-flag t
+ "*Non-nil means that bookmarks will be displayed sorted by bookmark name.
+Otherwise they will be displayed in LIFO order (that is, most
+recently set ones come first, oldest ones come last)."
+ :type 'boolean
+ :group 'bookmark)
+
+
+(defcustom bookmark-automatically-show-annotations t
+ "*Nil means don't show annotations when jumping to a bookmark."
+ :type 'boolean
+ :group 'bookmark)
+
+
+(defcustom bookmark-bmenu-file-column 30
+ "*Column at which to display filenames in a buffer listing bookmarks.
+You can toggle whether files are shown with \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-toggle-filenames]."
+ :type 'integer
+ :group 'bookmark)
+
+
+(defcustom bookmark-bmenu-toggle-filenames t
+ "*Non-nil means show filenames when listing bookmarks.
+This may result in truncated bookmark names. To disable this, put the
+following in your `.emacs' file:
+
+\(setq bookmark-bmenu-toggle-filenames nil\)"
+ :type 'boolean
+ :group 'bookmark)
+
+
+(defcustom bookmark-menu-length 70
+ "*Maximum length of a bookmark name displayed on a popup menu."
+ :type 'integer
+ :group 'boolean)
+
+
+;;; No user-serviceable parts beyond this point.
+
+;; Is it XEmacs?
+(defconst bookmark-xemacsp
+ (string-match "\\(Lucid\\|Xemacs\\)" emacs-version))
+