MapaDelSitio CambiosRecientes Noticias ÁreaElisp WikiCómo

bookmark+-chg.el

Download

;;; bookmark+-chg.el - Change logs for Bookmark+ libraries.
;;
;; Filename: bookmark+-chg.el
;; Description: Change logs for Bookmark+ libraries.
;; Author: Drew Adams
;; Maintainer: Drew Adams (concat "drew.adams" "@" "oracle" ".com")
;; Copyright (C) 2000-2013, Drew Adams, all rights reserved.
;; Created: Fri Sep 15 07:58:41 2000
;; Last-Updated: Wed May 15 14:21:02 2013 (-0700)
;;           By: dradams
;;     Update #: 15305
;; URL: http://www.emacswiki.org/bookmark+-chg.el
;; Doc URL: http://www.emacswiki.org/BookmarkPlus
;; Keywords: bookmarks, bookmark+
;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x, 24.x
;;
;; Features that might be required by this library:
;;
;;   None
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;;    Change log for the Bookmark+ libraries, which extend standard
;;    library `bookmark.el'.  This file contains no code, so you need
;;    not load it.
;;
;;    The Bookmark+ libraries are these:
;;
;;    `bookmark+.el'     - main (driver) code library
;;    `bookmark+-mac.el' - Lisp macros
;;    `bookmark+-lit'    - (optional) code for highlighting bookmarks
;;    `bookmark+-bmu.el' - code for the `*Bookmark List*' (bmenu)
;;    `bookmark+-1.el'   - other (non-bmenu) required code
;;    `bookmark+-key.el' - key and menu bindings
;;
;;    `bookmark+-doc'    - documentation (comment-only file)
;;    `bookmark+-chg'    - change log (this file)
;;
;;    The documentation (in `bookmark+-doc.el') includes how to
;;    byte-compile and install Bookmark+.  The documentation is also
;;    available in these ways:
;;
;;    1. From the bookmark list (`C-x r l'):
;;       Use `?' to show the current bookmark-list status and general
;;       help, then click link `Doc in Commentary' or link `Doc on the
;;       Web'.
;;
;;    2. From the Emacs-Wiki Web site:
;;       http://www.emacswiki.org/cgi-bin/wiki/BookmarkPlus.
;;
;;    3. From the Bookmark+ group customization buffer:
;;       `M-x customize-group bookmark-plus', then click link
;;       `Commentary'.
;;
;;    (The commentary links in #1 and #3 work only if you put library
;;    `bookmark+-doc.el' in your `load-path'.)
;;
;;
;;    ****** NOTE ******
;;
;;      WHENEVER you update Bookmark+ (i.e., download new versions of
;;      Bookmark+ source files), I recommend that you do the
;;      following:
;;
;;      1. Delete ALL existing BYTE-COMPILED Bookmark+ files
;;         (bookmark+*.elc).
;;      2. Load Bookmark+ (`load-library' or `require').
;;      3. Byte-compile the source files.
;;
;;      In particular, ALWAYS LOAD `bookmark+-mac.el' (not
;;      `bookmark+-mac.elc') BEFORE YOU BYTE-COMPILE new versions of
;;      the files, in case there have been any changes to Lisp macros
;;      (in `bookmark+-mac.el').
;;
;;      (This is standard procedure for Lisp: code that depends on
;;      macros needs to be byte-compiled anew after loading the
;;      updated macros.)
;;
;;    ******************
;;
;;
;;    ****** NOTE ******
;;
;;      On 2010-06-18, I changed the prefix used by package Bookmark+
;;      from `bookmarkp-' to `bmkp-'.  THIS IS AN INCOMPATIBLE CHANGE.
;;      I apologize for the inconvenience, but the new prefix is
;;      preferable for a number of reasons, including easier
;;      distinction from standard `bookmark.el' names.
;;
;;      This change means that YOU MUST MANUALLY REPLACE ALL
;;      OCCURRENCES of `bookmarkp-' by `bmkp-' in the following
;;      places, if you used Bookmark+ prior to this change:
;;
;;      1. In your init file (`~/.emacs') or your `custom-file', if
;;         you have one.  This is needed if you customized any
;;         Bookmark+ features.
;;
;;      2. In your default bookmark file, `bookmark-default-file'
;;         (`.emacs.bmk'), and in any other bookmark files you might
;;         have.
;;
;;      3. In your `*Bookmark List*' state file,
;;         `bmkp-bmenu-state-file' (`~/.emacs-bmk-bmenu-state.el').
;;
;;      4. In your `*Bookmark List*' commands file,
;;         `bmkp-bmenu-commands-file' (`~/.emacs-bmk-bmenu-commands.el'),
;;         if you have one.
;;
;;      You can do this editing in a virgin Emacs session (`emacs
;;      -Q'), that is, without loading Bookmark+.
;;
;;      Alternatively, you can do this editing in an Emacs session
;;      where Bookmark+ has been loaded, but in that case you must
;;      TURN OFF AUTOMATIC SAVING of both your default bookmark file
;;      and your `*Bookmark List*' state file.  Otherwise, when you
;;      quit Emacs your manually edits will be overwritten.
;;
;;      To turn off this automatic saving, you can use `M-~' and `M-l'
;;      in buffer `*Bookmark List*' (commands
;;      `bmkp-toggle-saving-bookmark-file' and
;;      `bmkp-toggle-saving-menu-list-state' - they are also in the
;;      `Bookmark+' menu).
;;
;;
;;      Again, sorry for this inconvenience.
;;
;;    ******************
 
;;(@> "Index")
;;
;;  If you have library `linkd.el' and Emacs 22 or later, load
;;  `linkd.el' and turn on `linkd-mode' now.  It lets you easily
;;  navigate around the sections of this doc.  Linkd mode will
;;  highlight this Index, as well as the cross-references and section
;;  headings throughout this file.  You can get `linkd.el' here:
;;  http://dto.freeshell.org/notebook/Linkd.html.
;;
;;  (@> "CHANGE LOG FOR `bookmark+-1.el'")
;;  (@> "CHANGE LOG FOR `bookmark+-bmu.el'")
;;  (@> "CHANGE LOG FOR `bookmark+-key.el'")
;;  (@> "CHANGE LOG FOR `bookmark+-lit.el'")
;;  (@> "CHANGE LOG FOR `bookmark+-mac.el'")
;;  (@> "CHANGE LOG FOR `bookmark+.el'")
 
;;;(@* "CHANGE LOG FOR `bookmark+-1.el'")
;;
;; 2013/05/15 dadams
;;     bmkp-*-alist-only: Make sure we call bookmark-maybe-load-default-file.
;;     Moved bmkp-string-match-p to bookmark+-bmu.el.
;;     Use bmkp-string-match-p instead of string-match wherever appropriate.
;; 2013/05/12 dadams
;;     Added: bmkp-write-bookmark-file-hook.
;;     bookmark-write-file: Run bmkp-bookmark-write-file-hook functions after writing.
;; 2013/04/19 dadams
;;     bookmark-exit-hook-internal: Removed test for non-empty bookmark-alist (Emacs bug #13972).
;; 2013/04/15 dadams
;;     bmkp-set-sequence-bookmark: Corrected case of adding one sequence to another.
;;     bookmark-write-file: Corrected write-out of sequence bookmarks.
;;     bookmark-alist-from-buffer: Better error message if read error.
;; 2013/04/14 dadams
;;     Added: bmkp-wrap-bookmark-with-last-kbd-macro, bmkp-dired-remember-*-marks.
;;     bookmark-write-file: If not saving propertized, remove text props for bmks in sequence bmk.
;;     bmkp-edit-bookmark-record-send:
;;       Raise error if bmkp-edit-bookmark-record-send was somehow reset to nil.
;;       Do not reset bmkp-edit-bookmark-orig-record if read error.
;;     bmkp-make-function-bookmark:
;;       Prefix arg means use last-kbd-macro instead of prompting for FUNCTION.
;;       Use read-from-whole-string, not read, to convert name to symbol.
;;       If FUNCTION is a function or vector, do not convert it.
;;     bmkp-bookmark-description: For sequence-p, remove properties from each bmk name in sequence.
;;     Define bmkp-bookmark-name-from-record (no longer a defalias) with an optional UNPROPERTIZE arg.
;;     bmkp-make-dired-record: Use bmkp-dired-remember-*-marks, not dired-remember-marks.
;;       FUNCTION can now be a vector (a keyboard macro).  Use read-from-whole-string, not read.
;;     bmkp-jump-function: If function property is a vector, invoke it as a keyboard macro.
;;     bmkp-set-sequence-bookmark:
;;       Prefix ARG now allows for replace, in addition to append and prepend.  No replace question.
;;       A BOOKMARK-NAMES item can now be a bookmark, a function, or keyboard macro - or its name.
;;       A BOOKMARK-NAMES item that is itself a sequence has its bookmarks spliced in.
;;       Use lax as value of NAMES-ONLY-P to bmkp-completing-read-bookmarks.
;; 2013/04/12 dadams
;;     Added: bmkp-sequence-alist-only.
;;     bmkp-set-sequence-bookmark: Added prefix arg PREPENDP.  Use bmkp-completing-read-lax.
;;     Use \\<bmkp-edit-bookmark-record-mode-map> in doc strings with *-record-send.
;;     bookmark-get-bookmark: A cons must also have a string car, to tell a bmk from a list of bmks.
;;     bmkp-make-function-bookmark: Use bmkp-completing-read-lax for BOOKMARK-NAME.
;; 2013/04/10 dadams
;;     Added: bmkp-set-sequence-bookmark, bmkp-make-sequence-record, bmkp-completing-read-bookmarks.
;;     bmkp-completing-read-1:
;;       Do not put DEFAULT in PROMPT if DEFAULT is "".  Removed useless let-binding of DEFAULT.
;;       Removed unnecessary final massaging of STR.
;;     bookmark-completing-read: Mention in doc string that nil DEFAULT means return "".
;; 2013/03/29 dadams
;;     bmkp-toggle-saving-bookmark-file: If neither is nil, set *-last-* to nil before toggling.
;; 2013/03/17 dadams
;;     bmkp-bmenu-list-1: Do not toggle filenames unless bookmark-alist is defined (Emacs bug #13972).
;; 2013/01/07 dadams
;;     bmkp-remove-all-tags, bmkp(-autofile)-(add|remove)-tags, bmkp-set-tag-value,
;;       bmkp-paste-(add|replace)-tags, bmkp-(url|file)-target-set, bmkp-autofile-set:
;;         Added missing NO-UPDATE-P arg for interactive spec.
;;     bmkp-remove-all-tags: Moveed msg to the end.
;;     bmkp-paste-replace-tags: Added sleep-for after first msg.
;; 2012/11/13 dadams
;;     bmkp-sorting-description: Fixed 1st case: use ORDER only if bmkp-sort-comparer is also non-nil.
;; 2012/11/11 dadams
;;     Added: bmkp-sorting-description (factored out from bmkp-msg-about-sort-order).
;;     bmkp-msg-about-sort-order: Use bmkp-sorting-description.
;;     bmkp-current-sort-order: Return nil if bmkp-sort-comparer is not in bmkp-sort-orders-alist.
;; 2012/11/09 dadams
;;     Added: bmkp-autofile-filecache.
;;     Added defadvice for file-cache-add-file.
;;     bookmark-store, bmkp-url-target-set: Added optional arg NO-UPDATE-P.
;;     bookmark-set, bmkp-make-function-bookmark, bmkp-url-target-set, bmkp-file-target-set:
;;       Adjusted calls to bookmark-store to accommodate NO-UPDATE-P arg.
;;     bmkp-make-record-for-target-file:
;;       Add CREATED property for all bookmark types.  Factor out the common stuff.
;;       Remove any text properties from FILE arg before using it.
;; 2012/10/09 dadams
;;     Made all autoload cookies explicitly load bookmark+.el(c).  Should help ELPA (e.g. MELPA).
;; 2012/10/01 dadams
;;     bmkp-thing-at-point: Updated per icicle-thing-at-point.  Thx to Joe Bloggs.
;; 2012/09/29 dadams
;;     Added redefinition of bookmark-version-control.
;;     bookmark--jump-via:
;;       When bmkp-use-w32-browser-p, just handle, do after-jump hook & jump-fn, and show annotation.
;;     bookmark-handle-bookmark:
;;       When bmkp-use-w32-browser-p, just invoke w32-browser and throw to bookmark--jump-via.
;;     bookmark-write-file: Use find-file-noselect.
;;     bmkp-save-menu-list-state:
;;       Bind print-circle, version-control, require-final-new-line.  Use find-file-noselect.
;;       Copy shared bookmark lists and single strings, to avoid circular refs.
;;       Raise error, not just msg, if file-error.
;;     bookmark-write-file: Bind require-final-newline.
;; 2012/09/26 dadams
;;     bmkp-save-menu-list-state: Use write-file, not write-region, so backups are made.
;; 2012/09/24 dadams
;;     bookmark-write-file: Use write-file, not write-region, so backups are made.  Emacs bug #12507.
;; 2012/09/22 dadams
;;     bookmark-set: Updated handling of bmkp-auto-light-when-set for (non-)autonamed-in-buffer.
;;     bmkp-autonamed-this-buffer-bookmark-p: Require that the buffer name part match also.
;;     bmkp-autonamed-this-buffer-alist-only: Corrected to use bmkp-autonamed-this-buffer-bookmark-p.
;; 2012/09/11 dadams
;;     bmkp-set-autonamed-bookmark-at-line: Use prefix arg for line no.  Use line-beginning-position.
;; 2012/09/06 dadams
;;     Added: bmkp-string-match-p.
;; 2012/08/28 dadams
;;     bookmark-send-edited-annotation: Record an empty annotation as nil, not "".
;; 2012/08/21 dadams
;;     Call tap-put-thing-at-point-props after load thingatpt+.el.
;; 2012/08/18 dadams
;;     Invoke tap-define-aliases-wo-prefix if thingatpt+.el is loaded.
;;     Added: bmkp-thing-at-point.
;;     thing-at-point -> bmkp-thing-at-point, everywhere.
;; 2012/08/10 dadams
;;     Info-bookmark-make-record: Updated wrt Emacs 24.
;;     Renamed: old-bookmark-insert to bmkp-ORIG-bookmark-insert.
;; 2012/07/04 dadams
;;     bmkp-create-variable-list-bookmark: Removed INTERACTIVEP arg to bookmark-set.
;;     #'(lambda...) -> (lambda...).
;; 2012/07/02 dadams
;;     bmkp-default-handler-for-file:
;;       Reverted 2012/05/04 change to use lexical-let.  Byte code in saved bookmark was problematic.
;; 2012/06/26 dadams
;;     Wrapped require of bookmark+-mac.el in eval-when-compile.
;; 2012/06/21 dadams
;;     Try to load-library bookmark+-mac.  Require it only if cannot load-library.
;; 2012/06/12 dadams
;;     bmkp-new-bookmark-default-names: 1. Test for DEFS at end is listp, not consp. 2. Return FNS.
;;     bmkp-completing-read-1: Removed empty-input loop - caller must provide a default or handle "".
;; 2012/06/1 dadams
;;     bookmark-make-record: Replace an empty bookmark name with <EMPTY NAME>.
;;     bookmark-set, bmkp-completing-read-1: Require user to input a non-empty bookmark name.
;;     bmkp-bookmark-name-member: If NAME is null, just use member.  Skip any in NAMES that is null.
;; 2012/05/16 dadams
;;     Added: bmkp-string-less-case-fold-p.
;;     bmkp-list-all-tags: List tags alphabetically.  Thx to Anders Johansson for the suggestion.
;; 2012/05/05 dadams
;;     bookmark-store, bmkp-make-function-bookmark, bmkp-unomit-all, bmkp-url-target-set:
;;       Added optional arg NO-MSG-P.
;;     bookmark-store, bookmark-set, bmkp-record-visit, bmkp-make-function-bookmark,
;;       bmkp-current-bookmark-list-state, bmkp-unomit-all, bmkp-url-target-set, bmkp-file-target-set,
;;       bmkp-replace-existing-bookmark:
;;         Pass NO-MSG-P to *-refresh/rebuild-menu-list, *-surreptitiously-rebuild-list, *-store.
;; 2012/05/04 dadams
;;     bmkp-remove-tags, bmkp-all-tags(-regexp)-alist-only
;;       bmkp(-(auto)file(-this-dir))(-(all|some)-tags)(-regexp)-alist-only,
;;       bmkp-specific-(buffers|files)-alist-only, bmkp-sort-omit, bmkp-url-target-set,
;;       bmkp-autofile-remove-tags. bmkp-default-handler-for-file, bmkp-set-bookmark-file-bookmark,
;;       bmkp-set-desktop-bookmark, bmkp-set-variable-list-bookmark,
;;       bmkp-create-variable-list-bookmark, bmkp-jump-dired,
;;       bmkp-find-file-(all|some)-tags(-regexp)(-other-window):
;;         Use lexical-let(*), to get closures for free vars in lambdas.
;;     bmkp-regexp-filtered-(file-name|tags)-alist-only: Moved let inside lambda.
;;     bmkp-make-dired-record: Use car instead of (lambda (x) (car x)).
;; 2012/05/01 dadams
;;     Added: bmkp-tagged-bookmark-p (alias), bmkp-tagged-cp.
;;     bmkp-(add|remove)-tags: Return negative nb-* if changed from (un)tagged to not (un)tagged.
;;     bmkp-paste-replace-tags: Do not call bmkp-remove-all-tags unless there are tags to remove.
;; 2012/04/27 dadams
;;     bmkp-edit-(tags|bookmark-record): Use bmkp-with-output-to-plain-temp-buffer.
;; 2012/04/18 dadams
;;     Do not try to define bmkp-global-auto-idle-bookmark-mode for Emacs 21 (no define-globalized*).
;; 2012/04/16 dadams
;;     bmkp-bookmark-description: List tags as strings on separate lines.
;;                                Add newline after annotation.
;; 2012/04/13 dadams
;;     Added: bmkp-(flagged|modified)-bookmark-p, bmkp-(flagged|modified)-cp.
;;     bookmark-store, bookmark-set-name, bookmark-prop-set, bmkp-edit-bookmark-record(s)-send,
;;       bmkp-replace-existing-bookmark, bmkp-delete-bookmarks:
;;         Use (equivalent of) eq version of add-to-list.
;; 2012/04/10 dadams
;;     Added: bmkp-count-multi-mods-as-one-flag.
;;     bmkp-edit-bookmark-records-send, bmkp-set-tag-value-for-bookmarks, bmkp-remove-tags-from-all,
;;       bmkp-rename-tag, bmkp-purge-notags-autofiles,
;;       bmkp-delete(-all)-autonamed(-for)(-this-buffer)(-no-confirm), bmkp-delete-bookmarks,
;;       bmkp-delete(-all)-temporary(-bookmarks|-no-confirm):
;;         Corrected bookmark-save to bookmark-save-flag in bindings to nil.
;;         Use bmkp-count-multi-mods-as-one-flag for the binding.
;; 2012/04/09 dadams
;;     bookmark-relocate, bmkp-edit-bookmark-records-send, bmkp-set-tag-value, bmkp-file-target-set,
;;       bmkp-autofile-set:
;;         Added optional arg NO-UPDATE-P.  Use it to inhibit display refreshing.
;;     bmkp-edit-bookmark-records-send, bmkp-set-tag-value-for-bookmarks, bmkp-remove-tags-from-all,
;;       bmkp-rename-tag, bmkp-purge-notags-autofiles, delete-all-autonamed-for-this-buffer
;;       bmkp-delete(-all)-temporary-(bookmarks|no-confirm), bmkp-delete-bookmarks,
;;       bmkp-delete-autonamed(-this-buffer)(-no-confirm):
;;         Bind bookmark-save to nil around iteration, to inhibit saving until finished.
;;     bmkp-(add|remove)(-all)-tags, bmkp-paste-(add|replace)-tags, bmkp-autofile-(add|remove)-tags:
;;       Swapped order of args MSGP and NO-UPDATE-P (put MSGP last).
;;     bmkp-(add|remove)(-all)-tags, bmkp-autofile-(add|remove)-tags:
;;       Use NO-UPDATE-P also to inhibit display refreshing.
;;     bmkp-remove-tags-from-all: Pass non-nil NO-UPDATE-P arg to bmkp-remove-tags.
;; 2012/04/07 dadams
;;     Added: bmkp-new-bookmark-default-names (option & function).
;;     Redefine bookmark-make-record (for all Emacs versions) to use bmkp-new-bookmark-default-names.
;;     bookmark-set: Use bmkp-new-bookmark-default-names (multiple defaults).
;;                   Moved the region-text default value stuff to fn bmkp-new-bookmark-default-names.
;;     bmkp-completing-read-1: Handle a cons DEFAULT.
;;     Added soft require of thingatpt+.el.
;; 2012/04/06 dadams
;;     Added: bmkp-auto-idle-bookmark-min-distance, bmkp-not-near-other-auto-idle-bmks,
;;            bmkp-auto-idle-bookmarks.
;;     bmkp-autotemp-bookmark-predicates:
;;       Changed default value to include bmkp-autonamed-bookmark(-this-buffer)-p.
;;     bookmark-store: Add the bookmark to bmkp-auto-idle-bookmarks (if appropriate).
;;     bookmark-delete: Remove the bookmark from bmkp-auto-idle-bookmarks.
;;     bmkp-auto-idle-bookmark-mode:
;;       Bind bmkp-setting-auto-idle-bmk-p.  Do nothing if bmkp-not-near-other-auto-idle-bmks says so.
;; 2012/04/05 dadams
;;     Added (Emacs 21+): bmkp-global-auto-idle-bookmark-mode, bmkp-turn-on-auto-idle-bookmark-mode.
;;     bmkp-auto-idle-bookmark-mode (Emacs 21+):
;;       Made it local:
;;         Removed keyword :global, added keyword :require.
;;         Timer function does nothing if the mode is not enabled (i.e., for the current buffer).
;;     bmkp-auto-idle-bookmark-mode (Emacs 20):
;;       Changed interactive spec to handle toggle symbol.
;;       Timer function does nothing if the mode is not enabled (for the current buffer, if local).
;;       Change message to mention buffer when the mode is local.
;;     Removed: bmkp-auto-idle-bookmark-mode-hook.
;;     Added autoload cookie for Emacs 20 defcustom for bmkp-auto-idle-bookmark-mode.
;;     bmkp-auto-idle-bookmark-mode-timer: Use nil as default value.
;;     bmkp-auto-idle-bookmark-mode: If timer is non-nil, set it to nil (and cancel it).
;; 2012/04/04 dadams
;;     Added: bmkp-auto-idle-bookmark-mode(-delay|-hook|-lighter|-set-function),
;;            bmkp-temporary-bookmarking-mode-lighter, bmkp-auto-idle-bookmark-mode-timer.
;;     bmkp-temporary-bookmarking-mode: Added lighter.
;;     bookmark-set: Pass INTERACTIVEP arg, not constant MSGP, to bmkp-light-(bookmarks|this-buffer).
;; 2012/04/03 dadams
;;     Moved to bookmark+-bmu.el: bmkp-face-prop.
;; 2012/04/02 dadams
;;     bmkp-toggle-autonamed-bookmark-set/delete, bmkp-set-autonamed-bookmark(-at-line),
;;       bmkp-delete-bookmarks:
;;         Made POSITION, NUMBER, ALLP optional.
;; 2012/03/18 dadams
;;     Added: bmkp-modified-bookmarks, redefinition of bookmark-set-name.
;;     bookmark-store, bookmark-set-name, bookmark-prop-set, bmkp-replace-existing-bookmark:
;;       Add the bookmark to bmkp-modified-bookmarks.
;;     bookmark-rename: Call bmkp-rename-for-marked-and-omitted-lists _after_ set new name w/ prop.
;;     bookmark-save: Reset bmkp-modified-bookmarks.  Call bmkp-refresh/rebuild-menu-list.
;;     bmkp-rename-for-marked-and-omitted-lists: Fixed typo: marked -> omitted.
;;     bmkp-edit-bookmark-name-and-file:
;;       Save each of bmk name and file name only if changed (bug fix).  Provide default file name.
;;       If no automatic save, and modifications, ask user whether to save.
;;     bmkp-edit-bookmark-records-send:
;;       Add updated bookmarks to bmkp-modified-bookmarks.
;;       Merge sanity-check dolist with main dolist.
;;       Set bmkp-bmenu-marked-bookmarks to names in bmkp-modified-bookmarks, not in edited-bookmarks.
;;     bmkp-edit-bookmark-record: Use (shallow) copy of bmkp-edit-bookmark-orig-record, not original.
;;     bmkp-edit-bookmark-record-send: Add updated bookmark to bmkp-modified-bookmarks.
;;     bmkp-record-visit: Let-bind bmkp-modified-bookmarks to itself, so will be restored.
;;     bmkp-refresh-menu-list: Pass no FILTEREDP if no current filter (start anew).
;;     bmkp-bookmark-name-member: If a name in NAMES is unpropertized, don't try to match property.
;;     bmkp-replace-existing-bookmark: For propertize bookmark-current-bookmark with bmkp-full-record.
;; 2012/03/13 dadams
;;     bmkp-incremental-filter-delay:
;;       Use bookmark-search-delay as default value, if available.  Else use 0.2 (not 0.6).
;; 2012/03/11 dadams
;;     bmkp-revert-bookmark-file: Added p to interactive spec (forgot).
;; 2012/03/06 dadams
;;     Added: bmkp-revert-bookmark-file.
;;     bookmark-load: If bookmark-file buffer already existed, do not kill it after loading.
;; 2012/03/04 dadams
;;     Added: bmkp-refresh/rebuild-menu-list.
;;     bookmark-store, bookmark-send-edited-annotation, bookmark-delete,
;;       bmkp-edit-bookmark-record(s)-send, bmkp-edit-tags-send, bmkp-update-autonamed-bookmark,
;;       bmkp-remove(-all)-tags, bmkp-add-tags, bmkp-file-target-set, bmkp-refresh/rebuild-menu-list:
;;         Use bmkp-refresh/rebuild-menu-list.
;;     bookmark-load:
;;       Use bmkp-refresh/rebuild-menu-list only if interactive.  Do not call *-surreptitiously-*.
;;     bmkp-edit-bookmark-record(s)-send: Added optional arg MSGP.  Raise read error if batch.
;;     bmkp-record-visit:
;;       Added optional arg BATCHP.  Do not bookmark-bmenu-surreptitiously-rebuild-list if BATCHP.
;;     bmkp-edit-tags-send: Added optional arg BATCHP, and pass it to bmkp-record-visit.
;;     bmkp-refresh-menu-list: Use bmkp-bookmark-name-from-record only when BOOKMARK is non-nil.
;;     bmkp-paste-replace-tags, bmkp-(compilation|occur)-target-set-all:
;;       Raise error with OK message if user cancels.
;;     bmkp-purge-notags-autofiles, bmkp-delete-all-temporary-bookmarks: Added optional arg MSGP.
;;     bmkp-purge-notags-autofiles, bmkp-delete-all-temporary-bookmarks,
;;       bmkp-delete-temporary-no-confirm:
;;         Call bmkp-refresh/rebuild-menu-list after the dolist.  Inhibit refresh for bookmark-delete.
;;     bmkp-jump-bookmark-file: Removed reference to current-prefix-arg: prompt only if SWITCHP.
;;     bmkp-delete-all-autonamed-for-this-buffer:
;;       Added optional arg MSGP.  Prompt for confirmation only if MSGP.
;;     bmkp-delete-autonamed-this-buffer-no-confirm:
;;       Added optional arg NO-REFRESH-P.  Inhibit refresh for bookmark-delete.
;;       Unless  NO-REFRESH-P, call bmkp-refresh/rebuild-menu-list after the dolist.
;;     bmkp-delete-autonamed-no-confirm:
;;       Call bmkp-delete-autonamed-this-buffer-no-confirm with NO-REFRESH-P.
;;       Call bmkp-refresh/rebuild-menu-list after the dolist.
;;     bmkp-delete-bookmarks:
;;       Added optional arg MSGP.  Prompt for confirmation only if MSGP.
;;       Raise error with OK message if user cancels.
;;       Call bmkp-refresh/rebuild-menu-list after the dolist.  Inhibit refresh for bookmark-delete.
;;       Use bmkp-this-buffer-alist-only, not bookmark-alist, for selecting bookmarks.
;;       Use `...', etc. when echoing deleted bookmarks.
;; 2012/03/02 dadams
;;     bookmark-load:
;;       Changed last arg from NO-MSG-P to BATCHP.  If non-nil, act with no prompt, saving or not.
;;       If nil, prompt user whether to save before loading.  If user quits with C-g, do not load.
;;     bookmark-maybe-load-default-file: Pass symbol nosave, not t, as last arg to bookmark-load.
;;     bmkp-switch-bookmark-file-create: Last arg is now the complement: BATCHP, not INTERACTIVEP.
;;     bmkp-temporary-bookmarking-mode: Pass nosave as last arg to bookmark-load, since do save here.
;;     bmkp-default-handlers-for-file-types: Added eval-when-compile to require cl.el for Emacs 20.
;;     bmkp-maybe-save-bookmarks: Added optional arg SAME-COUNT-P.
;;     bmkp-record-visit: Pass non-nil arg to bmkp-maybe-save-bookmarks to prevent changing mod count.
;;     bookmark-store: Call bmkp-refresh-menu-list if Bookmark List is displayed.
;;     bmkp-toggle-saving-bookmark-file: Added optional arg MSGP - show message only if non-nil.
;;     bmkp-find-file(-other-window): Added missing FIL arg for error format string.
;;     bmkp-temporary-bookmarking-mode: Pass a MSGP arg to bmkp-toggle-saving-bookmark-file.
;; 2012/02/29 dadams
;;     bmkp-completing-read-lax: Bind & restore C-M-w, C-M-u, SPC, and ? (so can insert SPC, ? etc.).
;; 2012/02/28 dadams
;;     bmkp-file-target-set: Call bmkp-refresh-menu-list if Bookmark List is displayed.
;;     Renamed option bmkp-default-handler-associations to bmkp-default-handlers-for-file-types.
;;       bmkp-default-handler-associations is NOW OBSOLETE - RENAME IT IF YOU HAVE CUSTOMIZED IT.
;;     bmkp-same-file-p: Take advantage of Emacs 24 function, file-equal-p.  Thx to Michael Albinus.
;;     bmkp-find-file(-other-window):
;;       Added optional args CREATE-AUTOFILE-P & MSGP (new arg order).  Prefix arg creates bookmark.
;;       Use bmkp-default-handlers-for-file-types even for files not bookmarked.
;; 2012/02/26 dadams
;;     Added: bmkp-(autofile|autonamed)-history, bmkp-autofile-(all|some)-tags(-regexp)-alist-only,
;;            bmkp-autofile(-(all|some)-tags(-regexp))-jump(-other-window).
;;     bmkp-types-alist: Added entries for (autofile|autonamed).
;;     Everywhere that read-file-name is used:
;;       Bind icicle-unpropertize-completion-result-flag to t, for read-file-name.
;;     No longer alias bmkp-autofile*-jump to bmkp-find-file.  The *-autofile-*jump commands use
;;       bmkp-read-bookmark-for-type and bmkp-jump-1, not read-file-name and find-file.
;;     bmkp-find-file(-other-window):
;;       Added optional args FILE MUST-EXIST-P.
;;       Use read-file-name and either bookmark-jump or find-file, not just find-file (and no PRED).
;;     bmkp-find-file-*-tags(-regexp)(-other-window):
;;       Added optional FILE arg.
;;       Use bookmark-jump, not find-file - so only autofiles with the tags are candidates.
;;       Bind icicle-must-pass-after-match-predicate.  Use PRED for read-file-name only if no Icicles.
;;     The new bmkp-find-file* commands are bound to ... C-f, not ... a.
;;     bmkp-default-handler-associations: Correct docstring: double backslashes.
;; 2012/02/21 dadams
;;     bmkp-jump-to-type(-other-window): Corrected ALIST: If no HISTORY do not call *-alist-only.
;; 2012/02/20 dadams
;;     bookmark-handle-bookmark: Handle, in priority, new property file-handler.
;;     bookmark-default-handler: Handle new property file-handler.
;;     bmkp-make-record-for-target-file:
;;       Use new property file-handler, not handler, for default handler.
;;       Use file-handler with play-sound-file, not handler with bmkp-sound-jump (deprecated).
;;     bmkp-default-handler-for-file: Return function bmkp-user, not a lambda that applies it to file.
;;     bmkp-handler-pred:
;;       Return t if TYPE is handler or file-handler.  Do not match a lambda that applies the handler.
;;     bmkp-default-handler-associations, bookmark-alist, bmkp-jump-to-type:
;;       Updated doc string to reflect new implementation of file handlers using prop file-handler.
;; 2012/02/19 dadams
;;     Added: bmkp-handler-pred, bmkp-temporary-history, bmkp-w32-browser-jump.
;;     bmkp-types-alist: Added bmkp-temporary-history.
;;     bmkp-read-bookmark-for-type: Prepend a space before "bookmark" in prompt.
;;     bmkp-jump-to-type:
;;       Use lax completion.
;;       When call bmkp-read-bookmark-for-type:
;;        Do not append a space to TYPE name passed.
;;        Pass a predicate arg returned by bmkp-handler-pred when TYPE is not a known type.
;;     bmkp-*-jump(-other-window): Remove space after TYPE name passed to bmkp-read-bookmark-for-type.
;;     bmkp-(specific-(buffers|files)|temporary)-jump(-other-window):
;;       Pass specific HIST arg to bmkp-read-bookmark-for-type.
;; 2012/02/16 dadams
;;     Updated for Emacs 24+:
;;       bookmark-set: Do not set bookmark-(yank-point|current-buffer) if set.
;;       bmkp-make-gnus-record: Be able to bookmark from article buffer, as well as summary buffer.
;;       bmkp-jump-gnus: Go to article buffer if location field says to.
;;     Use bmkp-make-gnus-record (not gnus-summary-bookmark-make-record) for Emacs 24+ also.
;; 2012/02/14 dadams
;;     bmkp-set-desktop-bookmark: Provide default for read-file-name.  Thx to Markus Grunwald.
;;                                Provide all bookmarked desktop files as Icicles proxy candidates.
;; 2012/02/08 dadams
;;     bmkp-autofile-set: Use MSGP also for the case where the bookmark already exists.
;;     bmkp-remove-dups: Redefined to use a hash table.
;; 2012/02/07 dadams
;;     bmkp-same-file-p: Test compare-strings result using t, not non-nil.  Thx to Michael Heerdegen.
;; 2012/02/04 dadams
;;     Added: bmkp-tags-for-completion, bmkp-tags-in-bookmark-file.
;;     Use bmkp-tags-for-completion for tags completing everywhere - updated doc strings.
;;     bmkp-list-all-tags: Added args current-only-p and (optional) msgp.
;;                         Different prefix arg values for different behaviors.
;;     bmkp-tags-list: Added optional arg current-only-p.  Use bmkp-tags-for-completion by default.
;; 2012/01/20 dadams
;;     bmkp(-autofile)-(add|remove)-tags(-from-all), bmkp-find-file-(all|some)-tags(-other-window),
;;       bmkp(-file(-this-dir))-(all|some)-tags-jump(-other-window):
;;         Let user use a prefix arg to refresh tags list.  Add this info to doc string.
;; 2012/01/14 dadams
;;     Corrected bmkp-same-file-p: call to compare-strings.
;; 2012/01/13 dadams
;;     bmkp-same-file-p: Handle case-sensitivity for local files, at least (not yet done for remote).
;; 2012/01/08 dadams
;;     Added: bmkp-autonamed-this-buffer-bookmark-p.
;;     bmkp-autotemp-bookmark-predicates: Updated doc string for *-autonamed-this-buffer-bookmark-p.
;;     bmkp-autonamed-bookmark-for-buffer-p: Updated doc string to mention it just checks the name.
;;     bmkp-autonamed-this-buffer-alist-only:
;;       Use bmkp-this-buffer-p, not bmkp-autonamed-bookmark-for-buffer-p.
;; 2011/12/30 dadams
;;     Renamed bmkp-edit-bookmark to bmkp-edit-bookmark-name-and-file.
;;     Added aliases: bmkp-bookmark-(data|name)-from-record.
;;     Added: bmkp-get-bookmark-in-alist, bmkp-bookmark-record-from-name,
;;            bmkp-edit-bookmark-records-(number|send|mode(-map)),
;;            bookmark-alist-from-buffer (redefinition), bmkp-edit-bookmark-orig-record,
;;            bmkp-rename-for-marked-and-omitted-lists.
;;     Use new names (aliases) bmkp-bookmark-(data|name)-from-record.
;;     bookmark-get-bookmark-record: Use redefinition for all Emacs versions (updated doc string).
;;     bookmark-get-bookmark: Use bmkp-bookmark-record-from-name, with no MEMP check.
;;     bookmark-store: Use bmkp-get-bookmark-in-alist to test whether bookmark exists.
;;                     Set the bookmark name also, not just the data, for an existing bookmark.
;;                     Unconditionally always put full bookmark on name as property bmkp-full-record.
;;     bookmark-send-edited-annotation, bookmark-rename:
;;       Do bookmark-bmenu-surreptitiously-rebuild-list only if no bmenu display window.
;;     bookmark-rename:
;;       Return OLD if if BATCHP is non-nil and NEW is nil.  Do not prompt for name if BATCHP.
;;       Use bmkp-rename-for-marked-and-omitted-lists (rename in those lists too).
;;       Unconditionally always put full bookmark on name as property bmkp-full-record.
;;       Use bmkp-bookmark-record-from-name, not bookmark-get-bookmark, to get full record.
;;     bookmark-delete, bmkp-edit-bookmark-name-and-file, bmkp-edit-bookmark-record,
;;       bmkp-edit-tags(-send), bmkp-toggle-autonamed-bookmark-set/delete:
;;         Use bmkp-get-bookmark-in-alist, not bookmark-get-bookmark.
;;     bookmark-load: Call bmkp-refresh-menu-list only if display is visible, and with NO-MSG-P arg.
;;     bookmark-show-annotation: Do not raise error if not a valid bookmark.
;;     bmkp-edit-bookmark-record: Record bmkp-edit-bookmark-orig-record.  Strip properties from name.
;;                                Updated edit-buffer text.
;;     bmkp-edit-bookmark-record-send: Rewrote similarly to bmkp-edit-bookmark-records-send.  No args.
;;     bmkp-default-bookmark-name:
;;       Use bmkp-bookmark-record-from-name, not bookmark-get-bookmark, requiring membership in ALIST.
;;     bmkp-save-menu-list-state, bmkp-get-tag-value: Added optional arg MSGP, and status messages.
;;     bmkp-make-function-bookmark: Use bmkp-bookmark-record-from-name, not bookmark-get-bookmark.
;;     bmkp-autonamed-bookmark(-for-buffer)-p:
;;       Use bmkp-bookmark-name-from-record, not bookmark-get-bookmark and bookmark-name-from-*.
;;     bmkp-get-tag-value, bmkp-has-tag-p: Removed unused arg MSGP.
;;     bmkp-delete-bookmark-name-from-list:
;;       For unpropertized DELNAME, Set BNAMES to result of delete call.
;;       For propertized DELNAME, delete also unpropertized matches.
;;     bmkp-(compilation|occur)-target-set-all: Do not prompt or show message unless MSGP.
;;     bmkp-describe-bookmark-internals: Use a copy of the bookmark.  Strip properties from name.
;;     bmkp-set-autonamed-regexp-buffer: Pass MSGP, do not hardcode.n
;;     Doc string improvements.
;; 2011/12/24 dadams
;;     bmkp-refresh-menu-list: Added progress message.
;;     bmkp-jump-bookmark-file: Pass NO-MSG-P arg to bookmark-load.
;; 2011/12/21 dadams
;;     Added: bmkp-orphaned(-local|-remote)-file-(alist-only|bookmark-p),
;;            bmkp-dired-wildcards-bookmark-p.
;;     bookmark-load:
;;       Call (bmkp-refresh-menu-list (bookmark-bmenu-bookmark)), not (bmkp-bmenu-refresh-menu-list).
;; 2011/12/19 dadams
;;     bookmark-set, bmkp-handle-region-default:  Use line-end-position, not end-of-line + point.
;; 2011/12/17 dadams
;;     bmkp-remote-file-p:
;;       If file-remote-p not available, match /...: (same as ffap-ftp-regexp).  Return match.
;;     bmkp-same-file-p: Redefined to use new bmkp-remote-file-p.  Thx to M. Heerdegen & M. Albinus.
;; 2011/12/15 dadams
;;     bmkp-dired-this-dir-bookmark-p: Use file-name-directory, in case filename has wildcards.
;; 2011/12/13 dadams
;;     bmkp-handle-region-default: Limit buffer-substring-no-properties positions to point-min/max.
;; 2011/12/06 dadams
;;     bmkp-last-as-first-bookmark-file:
;;       Removed autoload cookie to avoid void-variable error for bookmark-default-file.
;;     bmkp-edit-bookmark, bookmark-rename: Use bmkp-completing-read-lax, not read-from-minibuffer.
;; 2011/12/05 dadams
;;     bmkp-this-buffer-p:
;;       Do not use buffer-file-name (for Dired).  Wrap bookmark-buffer-file-name with condition-case.
;;     bookmark-save: Swap write order, so last message is about the bookmark file, not customize.
;; 2011/12/03 dadams
;;     Renamed: bmkp-use-bookmark-file-create to bmkp-switch-bookmark-file-create.
;;     Added: bmkp-last-as-first-bookmark-file, bookmark-maybe-load-default-file (redefinition),
;;            bookmarks-already-loaded (redefinition), bmkp-default-bookmark-file.
;;     bookmark-save: Update and save bmkp-last-as-first-bookmark-file.
;;     bookmark-load: New default for reading file name, and require an existing file (match).
;;                    Update and save bmkp-last-as-first-bookmark-file.  Update bmkp-sorted-alist.
;;     bmkp-switch-bookmark-file (no longer used): New default for reading file name.
;;     bmkp-switch-bookmark-file-create: Added optional arg INTERACTIVEP.  New default for reading
;;       file name.  Use bookmark-load, not bmkp-switch-bookmark-file.  Require confirmation only for
;;       new, empty file.  Added final message.
;;     bmkp-switch-to-last-bookmark-file: Use bmkp-last-as-first-bookmark-file as first fallback.
;;     bmkp-set-bookmark-file-bookmark: Use bmkp-read-bookmark-file-name, not read-file-name.
;;                                      New default for reading file name.
;;     bmkp-temporary-bookmarking-mode: Use bookmark-load, not bmkp-switch-bookmark-file.
;;     Removed: bookmark-maybe-message.  Use only message now, not bookmark-maybe-message.
;;     bmkp-autofile-set: For Emacs 23.3+, provide multiple defaults for file name.
;; 2011/11/30 dadams
;;     bmkp-same-file-p: Avoid having Tramp prompt for passwords, when possible.  Thx to M. Heerdegen.
;;     bmkp-toggle-autotemp-on-set: Removed ARG (copy/paste typos).
;; 2011/11/28 dadams
;;     bmkp-set-bookmark-file-bookmark: Prompt user for bookmark name here, to make clear what it is.
;; 2011/11/27 dadams
;;     bookmark-write-file: If write error, do not overwrite message.  And show error msg for 4 sec.
;; 2011/11/18 dadams
;;     Renamed: bmkp-bookmark-image-bookmark-p to bmkp-image-bookmark-p.
;;     Added: bmkp-image-alist-only, bmkp-image-jump(-other-window), bmkp-image-history.
;;     bookmark-handle-bookmark: If bmk has handler but it's not a function, use default handler.
;;     bmkp-autotemp-bookmark-predicates: Update doc string to include bmkp-image-bookmark-p.
;;     bmkp-types-alist: Added entry for images.
;; 2011/11/15 dadams
;;     bookmark-relocate: Redefine without using old-*.  Update Dired location too.
;;     Added: bmkp-cycle-this-file(/buffer)(-other-window),
;;            bmkp-(next|previous)-bookmark-this-file(/buffer)(-repeat),
;;            bmkp-this-file(/buffer)-bmenu-list, bmkp-this-file/buffer-alist-only.
;;     Renamed bmkp-this-buffer-cycle-sort-comparer to bmkp-this-file/buffer-cycle-sort-comparer.
;;     bmkp-this-buffer-p: Return nil if bookmark has a file diff from buffer.
;;     bmkp-this-file-p:
;;       Ensure bmkp-file-bookmark-p and bookmark-buffer-file-name.  Use bmkp-same-file-p.
;; 2011/11/09 dadams
;;     bmkp-jump-dired, bmkp-jump-man: Added bmkp-select-buffer-other-window to other-window fns.
;; 2011/11/08 dadams
;;     bmkp-edit-bookmark: For new file name, use read-file-name, not read-from-minibuffer.
;; 2011/11/03 dadams
;;     Renamed: bmkp-autoname-bookmark to bmkp-autoname-bookmark-function-default.
;; 2011/11/01 dadams
;;     Added: bmkp-temporary-jump(-other-window).
;;     bmkp-bookmark-description: Title now indicates whether temporary.
;; 2011/10/31 dadams
;;     Added: bmkp-toggle-autotemp-on-set, bmkp-autotemp-all-when-set-p.
;;     bookmark-set: If bmkp-autotemp-all-when-set-p call bmkp-make-bookmark-temporary.
;; 2011/10/28 dadams
;;     Added: bmkp-delete-temporary-no-confirm.
;;     bmkp-delete-all-temporary-bookmarks: Rewrote (it was just a stub).
;;     bmkp-bmenu-menubar-menu:
;;       Added: bmkp-temporary-bookmarking-mode, bmkp-delete-all-temporary-bookmarks,
;;              bmkp-bmenu-toggle-marked-temporary/savable.
;;     bmkp-bmenu-show-menu: Added: bmkp-bmenu-show-only-temporary.
;;     bmkp-bmenu-mark-menu:
;;       Added: bmkp-bmenu-mark-temporary-bookmarks, bmkp-bmenu-mark-autonamed-bookmarks.
;;     bmkp-bmenu-mouse-3-menu: Added: bmkp-bmenu-toggle-temporary.
;;     bookmark-bmenu-mode: Updated doc string.
;; 2011/10/27 dadams
;;     Added: bmkp-autotemp-bookmark-predicates, bmkp-temporary-bookmarking-mode(-hook),
;;            bmkp-delete-all-temporary-bookmarks, bmkp-make-bookmark-(savable|temporary),
;;            bmkp-toggle-temporary-bookmark, bmkp-temporary-alist-only, bmkp-temporary-bookmark-p.
;;     bookmark-set: Make bookmark temporary, if bmkp-autotemp-bookmark-predicates says to.
;;     bookmark-write-file: Do not save temporary bookmarks (bmkp-temporary-bookmark-p).
;; 2011/10/25 dadams
;;     bmkp-empty-file: Added optional arg CONFIRMP.  By default, no confirmation if not interactive.
;; 2011/08/09 dadams
;;     Bind icicle-unpropertize-completion-result-flag to t for all calls to completing-read.
;; 2011/08/07 dadams
;;     Added: bmkp-guess-default-handler-for-file-flag, bmkp-file-bookmark-handlers.
;;     bmkp-file-bookmark-p: Use bmkp-file-bookmark-handlers, which means also image-bookmark-jump.
;;     bmkp-make-record-for-target-file (need to keep in sync with diredp-bookmark):
;;       Instead of image-bookmark-make-record, use explicit function that includes file and type.
;;     bmkp-default-handler-for-file:
;;       Use bmkp-guess-default only if bmkp-guess-default-handler-for-file-flag is non-nil.
;;     bmkp-default-handler-associations: Updated doc string.
;; 2011/08/05 dadams
;;     bmkp-file-bookmark-p: Allow handler to be bmkp-default-handler-for-file, e.g. for image files.
;;     bmkp-all-tags-alist-only: Corrected.
;;     bmkp-refresh-menu-list: Ensure BOOKMARK is a string.
;;     bmkp-every: Removed unused binding.
;; 2011/05/08 dadams
;;     Just put some definitions in alphabetic order - no real change.
;; 2011/04/25 dadams
;;     bmkp-bookmark-description: Added optional arg NO-IMAGE.
;;     bmkp-url-target-set: Protect url-get-url-at-point with fboundp.
;;     bmkp-(file-target|autofile)-set, bmkp-autofile-(add|remove)-tags:
;;       Added buffer-file-name as a default possibility.  Removed URL functions for that purpose.
;; 2011/04/24 dadams
;;     Added: bmkp-purge-notags-autofiles.
;;     bookmark-delete: Redefined to accept either bookmark or name as arg.
;;     bmkp-(url|file|compilation|occur)-target-set(-all), bmkp-autofile-(set|(add|remove)-tags):
;;       Removed optional args when read prefix.
;;     bmkp-occur-target-set-all: Made PREFIX arg optional too.
;;     Added some missing autoload cookies.  Removed some from non-def sexps.
;; 2011/04/21 dadams
;;     Added: bmkp-copied-tags, bmkp-copy-tags, bmkp-paste-add-tags, bmkp-paste-replace-tags..
;; 2011/04/20 dadams
;;     bmkp-remove-all-tags: Added optional arg no-cache-update-p.
;; 2011/04/19 dadams
;;     bmkp-make-record-for-target-file: Fixed backquotes on lambdas.
;; 2011/04/17 dadams
;;     bmkp-edit-tags: Do not apply bmkp-full-tag to the tags.
;; 2011/04/16 dadams
;;     Added: bmkp-edit-tags(-send|-mode(-map)), bmkp-return-buffer.
;;     bookmark-(rename|relocate|send-edited-annotation), bmkp-update-autonamed-bookmark,
;;       bmkp-(add|remove(-all)-tags:
;;         Wrap with-current-buffer around bmkp-refresh-menu-list.
;;     bookmark-(store|rename|write-file): Test emacs-major-version, not just (boundp 'print-circle).
;;     bmkp-autofile-add-tags: Fix interactive args - forgot to include DIR arg (= nil).
;; 2011/04/15 dadams
;;     Added: bmkp-autofile-alist-only, bmkp-autofile-bookmark-p.
;; 2011/04/13 dadams
;;     Added: bmkp-autofile-jump(-other-window) (aliases), bmkp-find-file(-other-window).
;;     bmkp-find-file-(all|some)-tags(-regexp)(-other-window): Bind use-file-dialog to nil.
;; 2011/04/12
;;     Added: bmkp-bookmark-name-member, bmkp-names-same-bookmark-p, bmkp-sort-omit,
;;            bmkp-remove-omitted, bmkp-delete-bookmark-name-from-list, bmkp-bookmark-a-file (alias),
;;            bmkp-autofile-(add|remove)-tags, bmkp-(un)tag-a-file (aliases),
;;            bmkp-get-autofile-bookmark, bmkp-find-file-(all|some)-tags(-regexp)(-other-window).
;;     Removed: bmkp-remove-assoc-dups, bmkp-sort-and-remove-dups.
;;     Applied renaming: bmkp-bmenu-omitted-list to bmkp-bmenu-omitted-bookmarks.
;;     bookmark-store: Redefine for all Emacs versions now:
;;       Put the bookmark on the name as property bmkp-full-record.  Use bmkp-maybe-save-bookmarks.
;;       Return the bookmark.
;;     bookmark-get-bookmark: Redefine for all Emacs versions now:
;;       If BOOKMARK is a bookmark-name string that has property bmkp-full-record, return that value.
;;     bookmark-send-edited-annotation: Make sure it's the annotation buffer that gets killed.
;;     bookmark-default-handler: Return nil, like vanilla (but why?).
;;     bookmark-location: Pass full bookmark to the various "get" functions.
;;     bookmark-rename: Put bmkp-full-record property on new name.
;;     bookmark-delete:
;;       Use bmkp-delete-bookmark-name-from-list: If name has bmkp-full-record property, use that
;;         with name to find bookmark to delete.
;;       Pass full bookmark to unlight.
;;     bmkp-edit-bookmark: Save if either is non-empty, not if both are.  Thx to Michael Heerdegen.
;;     bmkp-edit-bookmark-record: Bind print-circle to t around pp.
;;     bmkp-default-bookmark-name:
;;       Use bookmark-name-from-full-record plus bookmark-get-bookmark, not assoc.
;;       If BNAME is nil (no default) then do not try to look it up in alist.
;;     bookmark-write-file: Unpropertize only for Emacs 20 or nil bmkp-propertize-bookmark-names-flag.
;;                          Bind print-circle to t around pp.
;;     bmkp-save-menu-list-state: Make it interactive (a command).  Bind print-circle.
;;                                Use bmkp-maybe-unpropertize-bookmark-names on alists and name lists.
;;                                Bind print-circle to t around pp.
;;     bmkp-unomit-all: Use bmkp-delete-bookmark-name-from-list, not delete.
;;     bmkp-dired-this-dir-bookmark-p: Use bmkp-same-file-p, not string=.
;;     bmkp-url-target-set, bmkp-replace-existing-bookmark:: Return the bookmark.
;;     bmkp-file-target-set:  Return bookmark.  Added arg MSGP: msg if no file yet.
;;     bmkp-autofile-set:
;;       Added DIR arg and MSGP arg: msg if no file yet.  Return the bookmark.
;;       If read absolute file name, create bmk in its dir, not in default-directory.  Else use DIR.
;;       Use bmkp-get-autofile-bookmark, so uses bmkp-same-file-p for each file part (not equal).
;;     bmkp-marked-bookmark-p, bmkp-omitted-bookmark-p: Use bmkp-bookmark-name-member, not member.
;;     bookmark-location: Pass full bookmark to the various "get" functions.
;;     bmkp-choose-navlist-from-bookmark-list, bmkp-cycle-this-buffer:
;;       Use bmkp-sort-omit, not bmkp-sort-and-remove-dups.
;;     bmkp-bookmark-description, bmkp-describe-bookmark-internals: Add Bookmark `' to title.
;;     bmkp-make-bookmark-list-record: Use bmkp-maybe-unpropertize-bookmark-names on lists.
;;     bmkp-printable-p: Bind print-circle to t around prin1.
;;     bmkp-delete-autonamed(-this-buffer)-no-confirm:
;;       Do nothing if bookmarks not loaded.  Thx to Christoph Scholtes.
;; 2011/04/03 dadams
;;     Added: bmkp-make-record-for-target-file, bmkp-replace-existing-bookmark (not used).
;;     bmkp-file-this-dir-bookmark-p: Corrected it to compare directory to default-directory.
;;     bmkp-file-target-set: Added arg NO-OVERWRITE (pass to bookmark-store).
;;                           Use (new) bmkp-make-record-for-target-file.
;;     bmkp-autofile-set: Do nothing if bookmark with same name, file and dir exists.
;;                        Else create one, even if the bookmark name is the same.
;;                        You can have multiple autofile bookmarks with the same name (diff files).
;; 2011/04/02 dadams
;;     Added: bmkp-autofile-set, bmkp-file-this-dir-(all|some)-tags(-regexp)-jump(-other-window),
;;            bmkp-file-this-dir-(all|some)-tags(-regexp)-alist-only.
;; 2011/04/01 dadams
;;     Moved key and menu bindings to (new) bookmark+-key.el.
;;     Added: bmkp-(dired|file)-this-dir-alist-only, bmkp-(dired|file)-this-dir-bookmark-p,
;;            bmkp-file-this-dir-jump(-other-window).
;;     Renamed: bmkp-dired-jump-current(*) to bmkp-dired-this-dir-jump(*).
;;     bmkp-dired-this-dir-jump(-other-window): Use bmkp-dired-this-dir-alist-only.
;;     bmkp-types-alist: Added (dired|file)-this-dir.
;;     Bound bmkp-(dired|file)-this-dir-jump to C-d and C-f in bookmark-jump(-other-window)-map.
;;     bmkp-jump-dired, bmkp-jump-man: Treat null bmkp-jump-display-function as display-buffer.
;; 2011/03/26 dadams
;;     Added: bmkp-file-(all|some)-tags(-regexp)-(alist-only|jump(-other-window)).
;;     bmkp-jump-menu: Added the new commands, but not Emacs 20, to avoid crash if byte-compiled.
;;     bmkp-bookmark-jump*-other-window: Simplified doc strings - refer to same-window version.
;; 2011/03/17 dadams
;;     bmkp-describe-bookmark: Added 10-pixel margin around thumbnail image.
;; 2011/03/11 dadams
;;     Protect use of mouse-wheel-*-event with boundp.  Thx to Chris Poole.
;; 2011/03/04 dadams
;;     bmkp-bookmark-description, bmkp-describe-bookmark: Added clickable thumbnail to the help.
;;     bmkp-bookmark-description: Split file name into dir & relname, so shorter line, in help.
;; 2011/03/03 dadams
;;     Added: bmkp-all-exif-data, bmkp-bookmark-image-bookmark-p.
;;     bmkp-bookmark-description: Handle image EXIF data.
;; 2011/01/03 dadams
;;     Removed autoload cookies from non def* sexps and from define-key and define-prefix-command.
;;     Added some missing autoload cookies for commands, in particular redefined standard commands.
;; 2010/12/10 dadams
;;     Added defalias for bookmark-name-from(-full)-record, to fix gratuitous Emacs name change.
;; 2010/10/22 dadams
;;     Uncommented key bindings for mouse wheel, since Emacs bug #6256 has now been fixed.
;;     bmkp-repeat-command: Don't bother to let-bind repeat-previous-repeated-command,
;;                          and use setq, not let, for last-repeatable-command. Thx to Stefan Monnier.
;; 2010/09/28 dadams
;;     Added: bmkp-delete-autonamed(-this-buffer)-no-confirm.
;; 2010/09/25 dadams
;;     Added: option bmkp-default-bookmark-name, bmkp-annotated-alist-only.
;;     Added: bmkp-(next|previous)-*(-repeat), using macro bmkp-define-next+prev-cycle-commands.
;;     bmkp-default-bookmark-name: Respect option.
;;     bookmark-edit-annotation-mode, bookmark-edit-annotation:
;;       Use bmkp-annotated-alist-only (and new bmkp-default-bookmark-name).
;;     bookmark-send-edited-annotation:
;;       End in orig buffer, not bmenu buffer.  Delete edit window.  Thx to Joe Bloggs.
;; 2010/09/24 dadams
;;     Added: bmkp-autonamed(-this-buffer)-jump(-other-window).  Bound to C-x j # (#|.) and menus.
;;     Added, using bmkp-define-cycle-command:
;;       bmkp-cycle-(autonamed|bookmark-list|desktop|dired|gnus|info|lighted|(local-|remote-)file|
;;                   man|non-file|remote-file|specific-(buffers|files)|variable-list|url)
;;                   (-other-window).
;;     Added redefinitions: bookmark-edit-annotation(-mode).
;;     Renamed: *varlist* to *variable-list*.
;;     bmkp-autoname-format: Added ^ to anchor numeral at beginning.
;;     bookmark--jump-via: Don't update autonamed if using w32 association.
;;     bmkp-update-autonamed-bookmark: bmkp-refresh-menu-list only if buffer list is displayed.
;;     *-(relocate|rename), *-update-autonamed-bookmark, *-remove-all-tags, *-(add|remove)-tags:
;;       Don't create bookmark-list buffer if doesn't exist.
;;     bookmark-show-(annotation|all-annotations): Restore selected window and frame focus.
;;     bmkp-completing-read-(buffer|file)-name: Added optional NO-DEFAULT-P arg.
;;     bmkp-describe-bookmark: Default to highlighted bookmarks on line, if there are any.
;;     bmkp-specific-(buffers|files)-jump(-other-window): Allow empty input, to end loop.
;;     bmkp-cycle: Ensure bmkp-current-nav-bookmark is a bookmark, else redefine.  Use %9d, not %d.
;;     bmkp-cycle-other-window: Added optional STARTOVERP arg here too.
;; 2010/09/20 dadams
;;     bmkp-choose-navlist-of-type: Empty input means "any".
;; 2010/09/16 dadams
;;     bmkp-read-bookmark-file-name:
;;       Removed extra default-filename in call to read-file-name.  Thx to Pedro Insua.
;; 2010/08/22 dadams
;;     Added: bmkp-regexp-filtered-annotation-alist-only.
;; 2010/08/20 dadams
;;     Added: bmkp-read-bookmark-file-name.
;;     bookmark-save, bookmark-load, bmkp-switch-bookmark-file, bmkp-use-bookmark-file-create:
;;       Use bmkp-read-bookmark-file-name.
;; 2010/08/19 dadams
;;     Require gnus-sum.el when compile (for macro).  Thx to S. Nemec.
;; 2010/08/18 dadams
;;     Removed eval-when-compile for bookmark+-lit.el.
;;     Replaced defvar of bmkp-edit-bookmark-record-mode-map with a define-key after derived mode.
;; 2010/08/17 dadams
;;     bmkp-edit-bookmark: Made interactive.  Bound to C-x p E.  Added optional INTERNALP arg.
;;     bmkp-info-bookmark-p: Return nil if a different handler.
;; 2010/08/15 dadams
;;     Moved bmkp-define-file-sort-predicate, bmkp-menu-bar-make-toggle to bookmark+-mac.el.
;;     Require: bookmark.el, bookmark+-mac.el.
;;     Require for compile: bookmark+-bmu.el, bookmark+-lit.el (soft).
;;     Ensure this file is loaded before compiling.
;;     bmkp-set-bookmark-file-bookmark: Added missing arg for error format string.
;; 2010/08/08 dadams
;;     bookmark-jump: Added optional arg DISPLAY-FUNCTION (Emacs 24).
;;     bookmark-handle-bookmark:
;;       Move non-default handler call outside condition-case.
;;       Updated for Emacs 24: Use error condition bookmark-error-no-filename.  Added props for it.
;;     bookmark-default-handler: Updated for Emacs 24:
;;       Signal condition bookmark-error-no-filename, not file-error, and pass (stringp FILE).
;;     bookmark-make-record-default: Added optional args NO-CONTEXT, POSITION (Emacs 24), and VISITS.
;;     bookmark-load: Updated for Emacs 24: Wrap with abbreviate-file-name.
;;     bmkp-jump-1: Allow arg to be a bookmark or its name.
;;     bmkp-gnus-bookmark-p: Updated for Emacs 24: Added gnus-summary-bookmark-jump.
;;     bmkp-jump-gnus: Different gnus-fetch-group call for Emacs 20, 21.
;;     bmkp-make-(desktop|varlist|bookmark-(file|list))-record: Call *-record-default with NO-CONTEXT.
;;     w3m-current-title: Use w3m-current-title as bookmark name.
;;     bmkp-w3m-set-new-buffer-name, bmkp-jump-w3m*: Require w3m.
;;     bmkp-make-gnus-record: Get bookmark name from gnus-summary-article-header.
;;     Update for Emacs 24: Bypass bmkp specific Gnus, man, and woman code.
;; 2010/08/06 dadams
;;     Added (and bound the commands):
;;       bmkp-(compilation|occur)-target-set(-all), bmkp-(file|url)-target-set,
;;       bmkp-default-handler-associations, bmkp-compilation-file+line-at,
;;       bmkp-default-handler-(for-file|user), bmkp-sound-jump.
;;     bmkp-occur-create-autonamed-bookmarks: Do not define it  for Emacs < 22.  Protect wrt POS, BUF.
;;     Added to Bookmark menu: bmkp-(file|url)-target-set, bmkp-set-(bookmark-file|desktop)-bookmark.
;; 2010/08/04 dadams
;;     bmkp-edit-bookmark: Use new bookmark name for update of dired-directory.  Thx to Kai Tetzlaff.
;; 2010/08/03 dadams
;;     bmkp-make-url-browse-record: Remove text properties from URL arg.
;; 2010/07/17 dadams
;;     Added: bmkp-url-jump-(other-window), bmkp-url(-browse)-(alist-only|bookmark-p), bmkp-url-cp,
;;            bmkp-url-history, bmkp-make-url-browse-record, bmkp-jump-url-browse.
;;     bmkp-sort-comparer: Use bmkp-url-cp, not bmkp-w3m-cp.
;;     bmkp-types-alist: w3m -> url.
;;     bookmark-alist: Updated doc string to mention LOCATION.  W3M -> URL.
;;     bmkp-bookmark-description: Treat URL.  Set no-position-p depending on start.
;;     Bind bmkp-url-jump*.  Replace W3M by URL in menu items.
;; 2010/07/14 dadams
;;     Created from bookmark+.el code.
 
;;;(@* "CHANGE LOG FOR `bookmark+-bmu.el'")
;;
;; 2013/05/15 dadams
;;     Moved here from bookmark+-1.el: bmkp-string-match-p.
;;     Use bmkp-string-match-p instead of string-match wherever appropriate.
;; 2013/04/10 dadams
;;     bmkp-bmenu-make-sequence-from-marked: Redefine using bmkp-set-sequence-bookmark (new).
;; 2013/01/07 dadams
;;     bookmark-bmenu-mode:
;;       Added: bmkp-bmenu-set-tag-value-for-marked, bmkp-bmenu-paste-(add|replace)-tags-for-marked.
;;       Mention C-u = all, for marked.
;; 2013/01/04 dadams
;;     bmkp-bmenu-show-only-tagged: Corrected filter function.
;; 2012/11/14 dadams
;;     bmkp-bmenu-mode-line: Added mode-line-buffer-identification.
;; 2012/11/12 dadams
;;     Added: bmkp-bmenu-marked-or-this-or-all.
;;     bmkp-bmenu-isearch-marked-bookmarks(-regexp), bmkp-bmenu-search-marked-bookmarks-regexp,
;;       bmkp-bmenu-query-replace-marked-bookmarks-regexp, bmkp-bmenu-set-tag-value-for-marked,
;;       bmkp-bmenu-add-tags-to-marked, bmkp-bmenu-remove-tags-from-marked,
;;       bmkp-bmenu-paste-(add|replace)-tags-(to|for)-marked, bmkp-bmenu-edit-marked,
;;       bmkp-bmenu-describe-marked:
;;         Make it work for current bookmark if none marked.
;;     bmkp-bmenu-isearch-marked-bookmarks(-regexp), bmkp-bmenu-search-marked-bookmarks-regexp,
;;       bmkp-bmenu-set-tag-value-for-marked, bmkp-bmenu-add-tags-to-marked,
;;       bmkp-bmenu-remove-tags-from-marked, bmkp-bmenu-paste-(add|replace)-tags-(to|for)-marked,
;;       bmkp-bmenu-edit-marked:
;;         Make it work for all bookmarks if use prefix arg.
;;     Protect all calls to bmkp-bmenu-mode-line with fboundp, for Emacs 20.
;; 2012/11/11 dadams
;;     Added: bmkp-bmenu-mode-line, bmkp-bmenu-mode-line-string.
;;     Removed: bmkp-bmenu-nb-marked-in-mode-name (replaced by bmkp-bmenu-mode-line - shows more).
;;     Removed faces bmkp-mode-line-marked, bmkp-mode-line-flagged.
;;     bookmark-bmenu-(delete|(un)mark), bmkp-bmenu-list-1: Call bmkp-bmenu-mode-line.
;;     bookmark-bmenu-execute-deletions: Inhibit saving until all are deleted, then save.
;;     bmkp-bmenu-mode-status-help: Show > and D using their faces, bmkp->-mark, bmkp-D-mark.
;;                                  Use "" if bmkp-current-sort-order (new version) returns nil.
;; 2012/10/09 dadams
;;     Made all autoload cookies explicitly load bookmark+.el(c).  Should help ELPA (e.g. MELPA).
;; 2012/09/29 dadams
;;     Added: bmkp-maybe-unpropertize-string.
;;     bmkp-maybe-unpropertize-bookmark-names: Added optional arg COPY.
;;     bmkp-bmenu-define(-jump-marked|-full-snapshot|-tags-sort)-command:
;;       Bind print-circle, version-control, require-final-newline.
;;       Use find-file-noselect & write-file, not write-region.
;;     bmkp-bmenu-define-jump-marked-command: Use bmkp-maybe-unpropertize-bookmark-names on bookmarks.
;;     bmkp-bmenu-define-full-snapshot-command:
;;       Copy shared bookmark lists and single strings, to avoid circular refs.
;;       Expand file names and use convert-standard-filename, for bookmark file names.
;; 2012/09/28 dadams
;;     Added: bmkp-bmenu-jump-to-marked.
;;     Renamed: bmkp-bmenu-w32-open-select to bmkp-bmenu-w32-jump-to-marked.
;;     Replace bookmark-bmenu-select with bmkp-bmenu-jump-to-marked, everywhere.
;;     bmkp-bmenu-w32-open-with-mouse:
;;       Rewrote to directly call bookmark-handle-bookmark, jump-fn, and show annotations.
;; 2012/09/03 dadams
;;     bookmark-bmenu-toggle-filenames: Added missing nil FORCE arg.
;;     bmkp-bmenu-list-1: Call bookmark-bmenu-toggle-filenames with NO-MSGP arg.
;;     Removed: bmkp-bmenu-filter-prompt.  bmkp-bmenu-read-filter-input: hard-code the prompt.
;; 2012/06/26 dadams
;;     Moved here from bookmark+-mac.el: bmkp-assoc-delete-all, bmkp-replace-regexp-in-string.
;;     Wrapped require of bookmark+-mac.el in eval-when-compile.
;; 2012/06/21 dadams
;;     Added: bmkp-bmenu-nb-marked-in-mode-name.  Added to bookmark-bmenu-mode-hook.
;;     Try to load-library bookmark+-mac.  Require it only if cannot load-library.
;; 2012/06/15 dadams
;;     bookmark-bmenu-mode, bmkp-bmenu-mode-status-help: Improved doc string.
;;     bmkp-bmenu-show-or-edit-annotation: Corrected doc string: bookmark, not buffer.
;; 2012/06/14 dadams
;;     Added face bmkp-no-local.
;;     Redefined defaults for faces bmkp-non-file and bmkp-variable-list.
;;     bmkp-bmenu-mode-status-help: Added legend for no such local file.
;;     bmkp-bmenu-propertize-item: Distinguish no such local file from no such existing buffer.
;; 2012/06/13 dadams
;;     bookmark-bmenu-bookmark: forward-char bmkp-bmenu-marks-width, not 1+ that.
;;     bmkp-bmenu-propertize-item: Allow a file bookmark to get buffer prop if file not yet saved.
;;                                 Do not require buffer-name attribute for bmkp-non-file face.
;; 2012/06/11 dadams
;;     bmkp-bmenu-propertize-item: Use bmkp-non-file-filename also if filename is missing from bmk.
;; 2012/05/05 dadams
;;     bookmark-bmenu-(un)mark(-all), bmkp-bmenu-regexp-mark, bmkp-bmenu-toggle-marks,
;;       bmkp-bmenu-mark-bookmarks-satisfying, bmkp-bmenu-toggle-marked-temporary/savable,
;;       bmkp-bmenu-(un)mark-bookmarks-tagged-regexp:
;;         Added optional arg MSG-P.
;;     bookmark-bmenu-(un)mark(-all), bookmark-bmenu-execute-deletions, bmkp-bmenu-regexp-mark,
;;       bmkp-bmenu-toggle-show-only-(un)marked, bmkp-bmenu-mark-bookmarks-satisfying,
;;       bmkp-bmenu-toggle-marks, bmkp-bmenu-toggle-marked-temporary/savable,
;;       bmkp-bmenu-toggle-temporary, bmkp-bmenu-make-sequence-from-marked,
;;       bmkp-bmenu-(un)omit(-marked), bmkp-bmenu-(un)mark-bookmarks-tagged-regexp,
;;       bmkp-bmenu-mark/unmark-bookmarks-tagged-*, bmkp-bmenu-change-sort-order,
;;       bmkp-reverse(-multi)-sort-order:
;;         Pass NO-MSG-P to *-refresh/rebuild-menu-list, *-surreptitiously-rebuild-list, *-store.
;;     bmkp-bmenu-mark/unmark-bookmarks-tagged-(all/none|some/not-all):
;;       Swapped last two args, so consistent order.
;;     bmkp-bmenu-(un)mark-bookmarks-tagged-*: Updated arg order in calls to b-b-m/u-b-t-(a/n|s/n-a).
;;     bmkp-bmenu-(un)mark-bookmarks-tagged-regexp, bmkp-bmenu-mark/unmark-bookmarks-tagged-*:
;;       Added status message.
;; 2012/05/01 dadams
;;     Added redefinition of bookmark-bmenu-delete-backwards (they broke its movement).
;;     Added aliases: bmkp-bmenu-flag-for-deletion(-backwards).  Bind to d, k, C-d (same as aliases).
;;     bmkp-bmenu-(add|remove)-tags, bmkp-bmenu-(add|remove)-tags-(to|from)-marked:
;;         Automatically re-sort if # tagged bmks changed and sort order is tagged first/last (s t).
;;     Added: bmkp-bmenu-sort-tagged-before-untagged.
;;     Bind bmkp-bmenu-sort-tagged-before-untagged to s t.
;;     Bind bmkp-bmenu-sort-by-last-bookmark-access to s d, not s t.
;;     Bind bmkp-bmenu-sort-by-last-local-file-access to s f d, not s f t.
;;     Bind bmkp-bmenu-sort-by-local-file-type to s f k, not s f d.
;; 2012/04/28 dadams
;;     bookmark-bmenu-(un)mark(-all), bmkp-bmenu-regexp-mark, bmkp-bmenu-mark-bookmarks-satisfying,
;;       bmkp-bmenu-toggle-marks, bmkp-bmenu-(un)mark-bookmarks-tagged-regexp,
;;       bmkp-bmenu-mark/unmark-bookmarks-tagged-(all/none|some/not-all):
;;         Added optional arg NO-RE-SORT-P.
;;         Automatically re-sort if marks changed and if sort order is marked first/last (s >).
;;     Changed all non-interactive calls of bookmark-bmenu-(un)mark to pass non-nil NO-RE-SORT-P.
;;     bmkp-bmenu-toggle-marks: Call bookmark-bmenu-ensure-position at start.
;; 2012/04/27 dadams
;;     bmkp-bmenu-edit-marked: Use bmkp-with-output-to-plain-temp-buffer.
;; 2012/04/13 dadams
;;     Added: bmkp-bmenu-sort-(flagged|modified)-before-un(flagged|modified), bmkp-flagged-bookmarks.
;;     Bound bmkp-bmenu-sort-(flagged|modified)-before-un(flagged|modified) to s D, s *.
;;     bookmark-bmenu-(un)mark: Delete bookmark from bmkp-flagged-bookmarks.
;;     bookmark-bmenu-mark: Use (equivalent of) eq version of add-to-list.
;;     bookmark-bmenu-delete: Add bookmark to bmkp-flagged-bookmarks.
;;     bmkp-bmenu-list-1: Always reset bmkp-(flagged|modified)-bookmarks.
;;                        Flag bookmarks if bmkp-flagged-bookmark-p.
;;     bmkp-bmenu-refresh-menu-list: C-u resets bmkp-flagged-bookmarks too.
;; 2012/04/10 dadams
;;     bmkp-bmenu-load-marked-bookmark-file-bookmarks:
;;       Use bmkp-refresh-menu-list, not bmkp-refresh/rebuild-menu-list.
;;     bmkp-bmenu-(add|remove)-tags-(to|from)-marked, bmkp-bmenu-paste-(add|replace)-tags-to-marked:
;;       Corrected bookmark-save to bookmark-save-flag in bindings to nil.
;;       Use bmkp-count-multi-mods-as-one-flag for the binding.
;;       Call bmkp-refresh-menu-list.
;; 2012/04/09 dadams
;;     bmkp-bmenu-set-tag-value, bmkp-bmenu-remove-tags, bmkp-bmenu-paste-(add|replace)-tags:
;;       Added nil NO-UPDATE-P arg in calls to bmkp-set-tag-value, bmkp-remove-tags,
;;       bmkp-paste-(add|replace)-tags.
;;     bmkp-bmenu-add-tags-to-marked, bmkp-bmenu-remove-tags-from-marked,
;;       bmkp-bmenu-paste-(add|replace)-tags-to-marked:
;;         Bind bookmark-save to nil around iteration, to inhibit saving until finished.
;;         New arg order for calls to bmkp-(add|remove)-tags.
;;         Pass non-nil NO-UPDATE-P arg to bmkp-paste-(add|replace)-tags.
;; 2012/04/03 dadams
;;     Moved here from bookmark+-1.el: bmkp-face-prop.
;; 2012/03/19 dadams
;;     Added: bmkp-*-mark.
;;     bmkp-bmenu-list-1, bmkp-bmenu-mode-status-help: Use bmkp-*-mark for *.
;; 2012/03/18 dadams
;;     bookmark-bmenu-delete: Remove bookmark from bmkp-modified-bookmarks also.
;;     bmkp-bmenu-list-1: RESET-P resets bmkp-modified-bookmarks also.  Insert modified marks (*).
;;     bmkp-bmenu-refresh-menu-list:
;;       When revert from file: Reset *-marked-bookmarks, *-modified-bookmarks, *-omitted-bookmarks.
;;                              Bind bmkp-bmenu-filter-function to nil for bmkp-refresh-menu-list.
;;     bmkp-bmenu-toggle-show-only-(un)marked:
;;       Save display, so bmkp-bmenu-before-hide-marked-alist is up-to-date.
;;     bmkp-bmenu-mode-status-help: Added legend for markings.
;;     bmkp-bmenu-edit-marked: Use (shallow) copies of bookmarks, not originals.
;;     Added bmkp-save-menu-list-state to Bookmark+ menu.
;; 2012/03/13 dadams
;;     bmkp-bmenu-read-filter-input:
;;       If C-g then restore previous display.
;;       Use only one catch and test while condition.
;;       Do not try to pop an empty list.
;;     bmkp-bmenu-filter-((bookmark|file)-name|annotation|tags)-incrementally:
;;       Use run-with-idle-timer, not run-with-timer
;; 2012/03/11 dadams
;;     Added Revert to Saved (bmkp-revert-bookmark-file) to menu.
;; 2012/03/07 dadams
;;     bmkp-bmenu-load-marked-bookmark-file-bookmarks: Use bmkp-sorted-alist to load in display order.
;; 2012/03/06 dadams
;;     bookmark-bmenu-mode: Reorg.
;;     bmkp-bmenu-refresh-menu-list:
;;       Call bmkp-refresh-menu-list also when revert file.  Use yes-or-no-p, not y-or-n-p.
;; 2012/03/05 dadams
;;     bmkp-bmenu-mode-status-help: Added Autosave bookmarks and Autosave list display to info at top.
;; 2012/03/04 dadams
;;     Added: bmkp-bmenu-load-marked-bookmark-file-bookmarks.
;;     Bind bmkp-toggle-saving-menu-list-state to C-M-~, not M-l.
;;     Bind bmkp-bmenu-load-marked-bookmark-file-bookmarks to M-l.  Add it to menu.
;; 2012/03/02 dadams
;;     bookmark-bmenu-list: Reset marked and omitted lists to () if a name is not a current bmk.
;; 2012/02/28 dadams
;;     Added face bmkp-file-handler.
;;     bmkp-bmenu-mode-status-help: Added bmkp-file-handler to face legend.
;;     bmkp-bmenu-propertize-item: Propertize file-handler bookmarks, with bmkp-file-handler.
;; 2011/12/31 dadams
;;     Define macro with-buffer-modified-unmodified for Emacs 23.1, in addition to Emacs < 23.
;; 2011/12/30 dadams
;;     Added aliases: bmkp-bookmark-(data|name)-from-record.
;;     Added: bmkp-bmenu-show-or-edit-annotation, bmkp-bmenu-edit-bookmark-record,
;;            bmkp-bmenu-edit-marked.
;;     Renamed bmkp-bmenu-edit-bookmark to bmkp-bmenu-edit-bookmark-name-and-file.
;;     bookmark-bmenu-mark: Propertize bookmark name with bmkp-full-record before adding to list.
;;     bookmark-bmenu-list:
;;       Added optional arg MSGP.  Show status messages.
;;       Propertize bookmark names if not already propertized, in marked and omitted lists.
;;     bookmark-bmenu-mode: Updated doc string.
;;     bmkp-bmenu-make-sequence-from-marked:
;;       Use bmkp-get-bookmark-in-alist, not bookmark-get-bookmark.
;;     Bind bmkp-bmenu-show-or-edit-annotation (not *-show-annotation) to a.
;;     Bind bmkp-bmenu-edit-bookmark-name-and-file to r now, not E.
;;     Bind bmkp-bmenu-edit-marked to E and T > e.
;;     Bind bmkp-bmenu-edit-bookmark-record to e.
;;     bmkp-bmenu-quit: Show progress messages.
;;     bmkp-bmenu-tags-menu: Added bmkp-bmenu-edit-marked.
;;     bmkp-bmenu-mouse-3-menu:
;;       Added: bmkp-bmenu-edit-tags.
;;       Replaced *-rename and *-relocate with bmkp-bmenu-edit-bookmark-name-and-file.
;; 2011/12/24 dadams
;;     Added: bookmark-bmenu-toggle-filenames, with optional arg NO-MSG-P.
;;     bookmark-bmenu-surreptitiously-rebuild-list, bookmark-bmenu-(show|hide)-filenames:
;;       Added progress messages and optional arg NO-MSG-P.
;;     bookmark-bmenu-(show|hide)-filenames, bookmark-bmenu-toggle-filenames:
;;       Correct FORCE behavior and doc strings.
;;     bmkp-bmenu-refresh-menu-list: Pass (not) MSG-P to bmkp-refresh-menu-list.
;; 2011/12/21 dadams
;;     Added: bmkp-bmenu-mark-orphaned-local-file-bookmarks,
;;            bmkp-bmenu-show-only-orphaned-local-files, bmkp-bmenu-mark-variable-list-bookmarks.
;;     bmkp-bmenu-refresh-menu-list: Added optional args ARG and MSGP, so you can revert from file.
;;     bookmark-bmenu-mode: Updated and reordered doc string.
;;     Bind O M, O S to orphaned commands, not omit commands.  Changed omit bindings to use -, not O.
;;     Bind bmkp-bmenu-mark-variable-list-bookmarks to V M.
;;     bmkp-bmenu-show-menu: Reordered.  Added: *-w3m-urls, *-variable-lists, *-orphaned-local-files.
;;     bmkp-bmenu-mark-menu: Reordered.  Added: *-w3m-*, *-variable-list-*, *-orphaned-local-file-*.
;; 2011/12/19 dadams
;;     Added: with-buffer-modified-unmodified.
;;     bookmark-bmenu-((un)mark|delete), bookmark-bmenu-(show|hide)-filenames:
;;       Use with-buffer-modified-unmodified.
;;     bookmark-bmenu-show-filenames, bmkp-bmenu-mouse-3-menu: Use line-(beginning|end)-position.
;; 2011/12/15 dadams
;;     bmkp-bmenu-propertize-item: Use bmkp-local-directory face also for Dired (e.g. with wildcards).
;;     bmkp-bmenu-mode-status-help: Clarify legend for remote and local dirs/Dired.
;; 2011/12/08 dadams
;;     bmkp-bmenu-mouse-3-menu: Use easymenu to build the menu.  Conditionalize some items.
;;     Bind down-mouse-3, not mouse-3, to bmkp-bmenu-mouse-3-menu.  (bind mouse-3 to ignore).
;;     Added eval-when-compile for easymenu.el.
;; 2011/12/05 dadams
;;     bmkp-bmenu-menubar-menu: Reordered items regarding bookmark files.
;;     bmkp-bmenu-mode-status-help: Correct intro text, reorder, use marker for position TOP.
;;     bookmark-bmenu-mode: Changed intro text slightly.
;; 2011/12/03 dadams
;;     bmkp-bmenu-list-1: Print current bookmark file at top of display.
;;     Increased bmkp-bmenu-header-lines to 5.
;;     bookmark-bmenu-mode: Updated doc string for binding changes and new option.
;;     bmkp-bmenu-regexp-mark: Mention right-padding of bookmark names in doc string.
;;     bmkp-bmenu-mode-status-help: Reorder Current Status items, to put bookmark file first.
;;     Bind L to bmkp-switch-bookmark-file-create, not bmkp-switch-bookmark-file.
;; 2011/11/19 dadams
;;     bmkp-bmenu-image-bookmark-icon-file: Default to an existing Emacs image file, not nil.
;; 2011/11/18 dadams
;;     Added: bmkp-bmenu-mark-image-bookmarks, bmkp-bmenu-show-only-image-files,
;;            bmkp-bmenu-image-bookmark-icon-file.
;;     bmkp-bmenu-list-1: Show icon image for image-file bookmarks.
;;     bookmark-bmenu-mode: Add to doc string: bmkp-image-jump, bmkp-bmenu-mark-image-bookmarks,
;;                                             bmkp-bmenu-show-only-image-files.
;;     bmkp-bmenu-mode-status-help: Added image icon to legend.
;;     Bound keys: M-I M-M, M-I M-S to *-mark-image-bookmarks *-show-only-image-files.
;;     Added to menus (Mark, Show): bmkp-bmenu-mark-image-bookmarks, bmkp-bmenu-show-only-image-files.
;; 2011/11/01 dadams
;;     bookmark-bmenu-mode: Changed mode-name var for mode line: Bookmarks, not Bookmark Menu.
;;                          Updated doc string for autofile & temporary jump commands.
;; 2011/10/31 dadams
;;     bookmark-bmenu-mode: Updated doc string with bmkp-toggle-autotemp-on-set.
;;     bmkp-bmenu-menubar-menu: Added: bmkp-toggle-autotemp-on-set.
;; 2011/10/27 dadams
;;     Added: bmkp-X-mark, bmkp-bmenu-toggle-marked-temporary/savable, bmkp-bmenu-toggle-temporary,
;;            bmkp-bmenu-mark-autonamed-bookmarks, bmkp-bmenu-show-only-temporary,
;;            bmkp-bmenu-mark-temporary-bookmarks.
;;     bmkp-bmenu-list-1: Mark with X in place of a, if bookmark is temporary.
;;     bookmark-bmenu-mode: Mode-line major-mode name indicates when in temporary bookmarking mode.
;;                          Updated doc string with temporary bookmark commands.
;;     bmkp-t-mark: Changed default attributes.
;;     Bind: M-L to bmkp-temporary-bookmarking-mode, M-X to bmkp-bmenu-toggle-marked-temporary/savable
;;           X M to bmkp-bmenu-mark-temporary-bookmarks, X S to bmkp-bmenu-show-only-temporary,
;;           C-M-X to bmkp-bmenu-toggle-temporary.
;;     bmkp-bmenu-show-only-bookmark-files: Bind to Y S, not X S.
;;     bmkp-bmenu-mark-bookmark-file-bookmarks: Bind to Y M, not X M.
;; 2011/07/01 dadams
;;     bmkp-bmenu-change-sort-order, bmkp(-multi)-reverse-sort-order: Handle null CURRENT-BMK.
;; 2011/04/24 dadams
;;     Added to Tags menu: Purge Autofiles with No Tags.
;; 2011/04/23 dadams
;;     Bound bmkp-bmenu-set-tag-value-for-marked to T > v and added to bmkp-bmenu-tags-menu.
;;     bmkp-bmenu-mouse-3-menu: Added bmkp-rename-tag.
;; 2011/04/22 dadams
;;     Bound *-copy-tags to T c, T M-w, *-paste(-add|replace)-tags to T p, T C-y, T q.
;; 2011/04/21 dadams
;;     Added:  bmkp-bmenu-copy-tags, bmkp-bmenu-paste-add-tags(-to-marked),
;;             bmkp-bmenu-paste-replace-tags(-for-marked).
;;     Bound and added to menus: bmkp-bmenu-paste-add-tags-to-marked,
;;                               bmkp-bmenu-paste-replace-tags-for-marked.
;;     Added to This Bookmark menu: bmkp-bmenu-copy-tags, bmkp-bmenu-paste(-add|replace)-tags.
;; 2011/04/19 dadams
;;     Added: bmkp-bmenu-unmark-bookmarks-tagged-regexp.  Bound it to T u %.  Added it to menu.
;; 2011/04/16 dadams
;;     Added: bmkp-edit-tags-send.  Bound it to T e in bookmark-bmenu-mode-map.
;;     bookmark-bmenu-mode: Updated help text for tags editing.
;;     bmkp-maybe-unpropertize-bookmark-names:
;;       Test emacs-major-version, not just (boundp 'print-circle).
;; 2011/04/15 dadams
;;     Added: bmkp-bmenu-mark-autofile-bookmarks, bmkp-bmenu-show-only-autofiles.
;;       And added them to menus.
;;     bookmark-bmenu-mode-map:
;;       Bind bmkp-bmenu-mark-autofile-bookmarks, bmkp-bmenu-show-only-autofiles to A M, A S.
;;       Bind bookmark-bmenu-show-all-annotations to M-a, not A.
;;       Bind bmkp-bmenu-search-marked-bookmarks-regexp to M-s a M-s, not M-a.
;;       Bind *-mark-url-bookmarks, *-show-only-urls to M-u M-m, M-u M-s, not M-u M, M-u S.
;;     bookmark-bmenu-mode: Updated help to reflect latest bindings.
;; 2011/04/13 dadams
;;     bmkp-bmenu-tags-menu: Added: bmkp-(un)tag-a-file.
;; 2011/04/12
;;     Added: bmkp-propertize-bookmark-names-flag, bmkp-maybe-unpropertize-bookmark-names,
;;            bmkp-bmenu-get-marked-files.
;;     Renamed: bmkp-bmenu-omitted-list to bmkp-bmenu-omitted-bookmarks.
;;     bmkp-bmenu-define-full-snapshot-command:
;;       Bind print-circle to t around pp.  Use bmkp-maybe-unpropertize-bookmark-names on lists.
;;     bookmark-bmenu-(show|hide)-filenames, bmkp-bmenu-toggle-show-only-(un)marked,
;;       bmkp-bmenu-(un)omit-marked:
;;         Fit one-window frame only if selected window is *Bookmark List*.
;;     bookmark-bmenu-bookmark: Added optional arg FULL.  Non-nil means return full bookmark record.
;;     bookmark-bmenu-unmark, bookmark-bmenu-delete, bmkp-bmenu-unomit-marked:
;;       Use bmkp-delete-bookmark-name-from-list, not delete.
;;     bookmark-bmenu-execute-deletions: Pass full bookmark, not name, to delete, and don't use assoc.
;;     bookmark-bmenu-rename: Use bmkp-bmenu-goto-bookmark-named instead of just searching for name.
;;     bmkp-bmenu-toggle-marks, bmkp-bmenu-unomit-marked, bmkp-bmenu-define-jump-marked-command,
;;       bmkp-bmenu-mouse-3-menu:
;;         Use bmkp-bookmark-name-member, not member.
;;     bmkp-bmenu-make-sequence-from-marked: Do not invoke bookmark-bmenu-list when no displayed list.
;;     bmkp-bmenu-define-command: Use bmkp-maybe-unpropertize-bookmark-names on *-omitted-bookmarks.
;;     bmkp-bmenu-list-1: Use bmkp-sort-omit, not bmkp-sort-and-remove-dups.
;;                        Pass full bookmark to bmkp-bmenu-propertize-item.
;;     bmkp-bmenu-propertize-item:
;;       First arg is now a full bookmark, not a bookmark name.  Get bookmark name from it.
;;       Put prop bmkp-bookmark-name on buffer text with propertized bookmark-name string as value.
;;       String has property bmkp-full-record with value the full bookmark record, with string as car.
;;       Return propertized bookmark-name string.
;;     bmkp-bmenu-isearch-marked-bookmarks(-regexp), bmkp-bmenu-dired-marked,
;;       bmkp-bmenu-(search|query-replace)-marked-bookmarks-regexp:
;;         Use bmkp-sort-omit, not bmkp-sort-and-remove-dups.
;;     bmkp-bmenu-goto-bookmark-named:
;;       If NAME has property bmkp-full-record then go to the bookmark it indicates.  Otherwise, just
;;       go to the first bookmark with the same name.
;;     bookmark-bmenu-mode: Added bmkp-save-menu-list-state (now a command) to the mode help.
;; 2011/04/02 dadams
;;     bookmark-bmenu-mode: Added to mode help: bmkp-file-this-dir-(all|some)-tags(-regexp)-jump.,
;;                                              Create/Set section, with bmkp-autofile-set.
;; 2011/04/01 dadams
;;     bookmark-bmenu-mode: Added to mode help: bmkp-(dired|file)-this-dir-jump.
;; 2011/03/26 dadams
;;     bookmark-bmenu-mode: Added new file-with-tags jump commands to the help.
;; 2011/03/05 dadams
;;     bmkp-bmenu-edit-bookmark: Use bmkp-refresh-menu-list, not *-surreptitiously-rebuild-list.
;; 2011/02/11 dadams
;;     Faces: Better defaults for dark background.
;; 2011/01/03 dadams
;;     Removed autoload cookies from non def* sexps and from define-key.
;;     Added missing autoload cookies for commands, in particular redefined std commands & defalias.
;; 2010/12/10 dadams
;;     Added defalias for bookmark-name-from(-full)-record, to fix gratuitous Emacs name change.
;; 2010/09/24 dadams
;;     Added: bmkp-bmenu-show-only-autonamed.  Bound to # S.  Added to bmkp-bmenu-show-menu.
;;     bookmark-bmenu-mode: Updated doc string for autonamed jumps, show.
;;     Renamed varlist to variable-list everywhere.
;; 2010/08/22 dadams
;;     Added: bmkp-bmenu-filter-annotation-incrementally, bookmark-bmenu-relocate (Emacs 20, 21),
;;            bmkp-bmenu-filter-alist-by-annotation-regexp.  Bound, added to menus and help.
;; 2010/08/18 dadams
;;     Removed eval-when-compile for bookmark+-(lit|1).el.
;;     bmkp-bmenu-propertize-item: Inconsequential simplification.
;; 2010/08/17 dadams
;;     bmkp-bmenu-edit-bookmark: Added optional arg INTERNALP (prefix arg), for editing record.
;; 2010/08/15 dadams
;;     Moved to bookmark+-mac.el:
;;       bmkp-define-sort-command, bmkp-replace-regexp-in-string, bmkp-assoc-delete-all.
;;     Renamed: bmkp-barf-if-not-in-menu-list to bmkp-bmenu-barf-if-not-in-menu-list.
;;     Require bookmark.el, bookmark+-mac.el.
;;     Require when compile: bookmark+-1.el, bookmark+-lit.el (soft).
;; 2010/07/17 dadams
;;     Added: bmkp-bmenu-mark-url-bookmarks, bmkp-bmenu-show-only-urls, bmkp-bmenu-sort-by-url.
;;     Removed: bmkp-bmenu-sort-by-w3m-url.
;;     Replaced face bmkp-w3m by bmkp-url.
;;     bookmark-bmenu-mode: Added mark and show URL commands.
;;     bookmark-bmenu-mode, *-status-help, *-sort-by-bookmark-type, *-define-sort-command: w3m -> url.
;;     Bind bmkp-bmenu-sort-by-url, not bmkp-bmenu-sort-by-w3m-url.
;;     Bind bmkp-bmenu-mark-url-bookmarks, bmkp-bmenu-show-only-urls.
;;     Replace W3M by URL in menu items.
;; 2010/07/14 dadams
;;     Created from bookmark+.el code.
 
;;;(@* "CHANGE LOG FOR `bookmark+-key.el'")
;;
;; 2013/04/15 dadams
;;     In bmkp-set-map: Bind F to bmkp-make-function-bookmark (C-x p c F).
;;                      Bind C-k to bmkp-wrap-bookmark-with-last-kbd-macro (C-x p c C-k).
;;                      Bind s to bmkp-set-sequence (C-x p c s).
;; 2012/08/31 dadams
;;     Do not bind bmkp-compilation-target-set(-all) unless defined.
;; 2012/06/26 dadams
;;     Wrapped require of bookmark+-mac.el in eval-when-compile.
;; 2012/06/21 dadams
;;     Try to load-library bookmark+-mac, for bmkp-menu-bar-make-toggle.
;; 2012/02/26 dadams
;;     Bind:
;;       bmkp-this-file/buffer-bmenu-list to C-x p , not C-x p ..
;;       bmkp-(file|dired)-this-dir-jump* to C-x j . f|d not C-x j C-f|C-d.
;;       bmkp-file-this-dir-*-tags(-regexp)-jump* to C-x j t . [%][*+] not C-x j t C-f [%][*+].
;;       bmkp-this-buffer-jump* to C-x j , , not C-x j ..
;;       bmkp-autonamed-this-buffer-jump* to C-x j , # not C-x j # ..
;;       bmkp-autonamed-jump* to C-x j # not C-x j # #.
;;       bmkp-autofile-jump* in all Emacs versions.
;;       bmkp-find-file(-other-window), which is new, to C-x j C-f.
;;       new autofile tags jump commands bmkp-autofile-(all|some)-tags(-regexp)-jump* to
;;         C-x j t a [%][*+], which was for bmkp-find-file-*-tags*.
;;       bmkp-find-file-(all|some)-tags(-regexp)* to C-x j t C-f [%] [*+] not C-x j t a [%] [*+].
;;     Add to menus: bmkp-autofile-*.  Rename menu items for bmkp-find-file: Find Autofile....
;;     Rename menu Bookmarked File to Find File or Autofile.  For Emacs 20-21, make it a single item.
;;     bmkp-jump-tags-menu, bmkp-find-file-menu: Do not add Autofile tags items for Emacs 20.
;; 2012/02/21 dadams
;;     Added bindings for: bmkp-autofile-(all|some)-tags(-regexp)-jump(-other-window),
;;                         bmkp-find-file(-other-window) (was same as *autofile*).
;;     Changed bindings:
;;       *-this-dir*: . [df] (was C-d/C-f), *this-buffer*: , (was .), *find-file*tags*: C-f (was a).
;;     Define *autofile* for all Emacs versions.  Separate bindings from *find-file* cmds.
;; 2011/12/30 dadams
;;     Added aliases: bmkp-bookmark-(data|name)-from-record.
;;     Bind E to bmkp-edit-bookmark-record, not bmkp-edit-bookmark.
;;     Bind r to bmkp-edit-bookmark-name-and-file, not bookmark-rename.  Ditto in menu.
;;     Use bmkp-get-bookmark-in-alist, not bookmark-get-bookmark in :visible conditions.
;;     menu-bar-bookmark-map: Added bmkp-edit-bookmark-record.
;;     bmkp-tags-menu: Added bmkp-edit-tags.
;; 2011/12/14 dadams
;;     Removed conditions :enable bookmark-alist.
;; 2011/12/09 dadams
;;     Commented out menu items with complex :enable conditions, replacing them with simple ones.
;;       Reason: too slow, especially in Emacs 20.
;; 2011/12/05 dadams
;;     menu-bar-bookmark-map: Reordered items regarding bookmark files.
;; 2011/12/03 dadams
;;     Bind C-x p L to bmkp-switch-bookmark-file-create, not bmkp-switch-bookmark-file.
;;     Reordered bookmark-file items in menu-bar-bookmark-map.
;; 2011/11/18 dadams
;;     Bind bmkp-image-jump(-other-window) to C-x (4) j M-i.
;;     bmkp-jump-menu: Add bmkp-image-jump-other-window.
;; 2011/11/15 dadams
;;     Bind *-this-file/buffer*, not *-this-buffer*.
;; 2011/11/01 dadams
;;     Bind alias bmkp-autofile-jump(-*), not bmkp-find-file(-*) to C-x j a, so Icicles picks up key.
;;     Bind bmkp-bookmark-file-jump to C-x j y, not C-x j x.  Bind bmkp-temporary-jump(-*) to C-x j x.
;;     bmkp-jump-menu: Bind bmkp-(autofile|temporary)-jump-other-window.
;; 2011/10/31 dadams
;;     Bind bmkp-toggle-autotemp-on-set to C-x p x.  Move bmkp-set-bookmark-file-bookmark to C-x p y.
;;     menu-bar-bookmark-map: Added: bmkp-toggle-autotemp-on-set.
;; 2011/10/28 dadams
;;     menu-bar-bookmark-map:
;;       Added: bmkp-delete-all-temporary-bookmarks, bmkp-temporary-bookmarking-mode.  Reordered.
;;     bmkp-options-menu: Added: bmkp-toggle-saving-menu-list-state, bmkp-toggle-saving-bookmark-file.
;; 2011/04/24 dadams
;;     Added to Bookmarks menu and its Tags submenu: Purge Autofiles with No Tags.
;; 2011/04/23 dadams
;;     bmkp-tags-menu:
;;       Added bmkp-set-tag-value, bmkp-(add|remove|copy)-tags, bmkp-paste-(add|replace)-tags.
;; 2011/04/21 dadams
;;     Bound: bmkp-copy-tags, bmkp-paste-add-tags, bmkp-paste-replace-tags.
;; 2011/04/16 dadams
;;     Added: bmkp-tags-map.  Bound tag commands to prefix C-x p t.
;; 2011/04/14 dadams
;;     Renamed menu Jump To Bookmark to just Jump To, in menu-bar-bookmark-map.
;; 2011/04/13 dadams
;;     Added:
;;       bmkp-find-file-menu (bmkp-find-file(-(all|some)-tags(-regexp)(-other-window)),
;;       bmkp-jump-tags-menu (what was in main, plus bmkp-find-file-*-tags-regexp*),
;;       bmkp-tags-menu (list all, rename, remove from all, (un)tag a file).
;;     bmkp-jump(-other-window)-map:
;;       Added bmkp-find-file(-other-window) to menu.
;;       Bound keys for bmkp-find-file-(all|some)-tags(-regexp)(-other-window): C-x (4) j t a...
;; 2011/04/02 dadams
;;     Added bindings for (new) bmkp-autofile-set,
;;                              bmkp-file-this-dir-(all|some)-tags(-regexp)-jump(-other-window).
;; 2011/04/01 dadams
;;     Added to bmkp-jump-menu: bmkp-(dired|file)-this-dir-jump-other-window.
;;     Created from code in bookmark+-1.el.
 
;;;(@* "CHANGE LOG FOR `bookmark+-lit.el'")
;;
;; 2013/05/15 dadams
;;     Use bmkp-string-match-p instead of string-match wherever appropriate.
;; 2012/10/09 dadams
;;     Made all autoload cookies explicitly load bookmark+.el(c).  Should help ELPA (e.g. MELPA).
;; 2012/09/22 dadams
;;     bmkp-light-bookmark(s): Put full bookmark, not name, on overlay as its bookmark property.
;;     bmkp-unlight-bookmark: Test using eq against full bookmark, not using equal against name.
;;     bmkp-a-bookmark-lighted-at-pos: overlay-get now returns full bookmark, so get name if needed.
;;     bmkp-overlay-of-bookmark: Use bookmark, not its name, like overlay-get does now.  Test with eq.
;;     bmkp-light-bookmarks: Use add-to-list instead of unconditionally adding ov to ov-symb.
;; 2012/04/28 dadams
;;     bmkp-make/move-overlay-of-style, bmkp-make/move-fringe: Use FRONT-ADVANCE arg for make-overlay.
;; 2011/12/30 dadams
;;     Added aliases: bmkp-bookmark-(data|name)-from-record.
;;     bmkp-bookmarks-lighted-at-point: Include only bookmarks in bookmark-alist.
;;     bmkp-light-bookmark: Do nothing if BOOKMARK is not a bookmark or bookmark name.
;;     bmkp-a-bookmark-lighted-at-pos: Return nil if no bookmark (at POS) in bookmark-alist.
;; 2011/11/15 dadams
;;     Applied renaming: bmkp-this-buffer-cycle-sort-comparer to *-this-file/buffer*.
;; 2011/08/09 dadams
;;     Bind icicle-unpropertize-completion-result-flag to t for all calls to completing-read.
;; 2011/04/12
;;     bmkp-cycle-lighted-this-buffer: Use bmkp-sort-omit, not bmkp-sort-and-remove-dups.
;; 2011/04/01 dadams
;;     bmkp-light-bookmark(s): Don't call bookmark-handle-bookmark.  Wrap with with-current-buffer.
;; 2011/01/03 dadams
;;     Added autoload cookies: defcustoms and commands.
;; 2010/12/10 dadams
;;     Added defalias for bookmark-name-from(-full)-record, to fix gratuitous Emacs name change.
;; 2010/09/25 dadams
;;     Added: bmkp-set-lighting-for(bookmarks|(-this)-buffer).  Requested by Joe Bloggs.
;;     bmkp-set-lighting-for-bookmark: Added LIGHT-NOW-P arg (from prefix arg).
;; 2010/09/11 dadams
;;     Removed eval-when-compile for bookmark+-bmu, bookmark+-1.
;; 2010/08/15 dadams
;;     Require: bookmark.el.
;;     Require when compile: bookmark+-bmu.el, bookmark+-1.el, pp+.el (soft).
;;     Applied renaming of bmkp-barf-if-not-in-menu-list to bmkp-bmenu-barf-if-not-in-menu-list.
;;     bmkp-light-bookmark(s): Added missing arg to throw call.
;;     bmkp-light-bookmarks: Use bmkp-remove-if, not remove-if.
;;     bmkp-light-bookmarks-in-region, bmkp-light-non-autonamed-this-buffer:
;;       Use bmkp-remove-if-not, not remove-if-not.
;;     bmkp-read-set-lighting-args: Use pp-read-expression-map only if bound (pp+.el).
;; 2010/07/03 dadams
;;     bmkp-set-lighting-for-bookmark, bmkp-bmenu-set-lighting-for-marked:
;;       Use *-refresh-menu-list, not *-surreptitiously-*.
;; 2010/07/01 dadams
;;     Created.
 
;;;(@* "CHANGE LOG FOR `bookmark+-mac.el'")
;;
;; **************************************************************************************************
;; NOTE: If you byte-compile Bookmark+ (recommended), then WHENEVER `bookmark+-mac.el' is updated,
;;       you      must load `bookmark+-mac.el' (not just `bookmark+-mac.elc'), then compile it, then
;;       RECOMPILE *ALL* of the other Bookmark+ source files as well.  This is normal for Lisp: code
;;       that depends on macros needs to be byte-compiled anew after loading the updated macros.
;; **************************************************************************************************
;;
;; 2013/04/26 dadams
;;     Added: bmkp-with-bookmark-dir.  (Not used currently.  For user code.)
;; 2012/10/09 dadams
;;     Made all autoload cookies explicitly load bookmark+.el(c).  Should help ELPA (e.g. MELPA).
;; 2012/06/26 dadams
;;     Moved bmkp-assoc-delete-all, bmkp-replace-regexp-in-string to bookmark+-bmu.el.
;; 2012/04/27
;;     Added: bmkp-with-output-to-plain-temp-buffer.
;; 2012/04/12 dadams
;;     bmkp-define-sort-command: Do not bmkp-bmenu-goto-bookmark-named unless current-bmk (play safe).
;; 2012/04/11 dadams
;;     bmkp-define-sort-command: In function def, change order to: fn, reverse-fn, unsorted.
;; 2011/12/30 dadams
;;     bmkp-define-cycle-command: Applied renaming of bmkp-sort-and-remove-dups to bmkp-sort-omit.
;;     bmkp-define-file-sort-predicate: Updated doc string of generated functions.
;;     Added renamings of bookmark-name-from(-full)-record, bookmark-get-bookmark-record.
;; 2011/04/12
;;     bmkp-define-cycle-command: Use bmkp-sort-omit, not bmkp-sort-and-remove-dups.
;; 2011/01/03 dadams
;;     Added autoload cookies: defmacro.
;; 2010/09/25 dadams
;;     Added: bmkp-define-next+prev-cycle-commands.
;; 2010/09/24 dadams
;;     Added: bmkp-define-cycle-command.
;; 2010/08/18 dadams
;;     Removed eval-when-compile for bookmark+-(bmu|1).el.
;; 2010/08/15 dadams
;;     Created, from code in other Bookmark+ files.
 
;;;(@* "CHANGE LOG FOR `bookmark+.el'")
;;
;; 2013/04/14 dadams
;;     Added Version entry to header.  Updated bmkp-version-number to the same thing.
;; 2012/10/09 dadams
;;     Made all autoload cookies explicitly load bookmark+.el(c).  Should help ELPA (e.g. MELPA).
;; 2012/06/26 dadams
;;     Wrapped require of bookmark+-mac.el in eval-when-compile.
;; 2012/06/21 dadams
;;     Try to load-library bookmark+-mac.  Require it only if cannot load-library.
;; 2012/02/26 dadams
;;     Version 3.4.0.
;; 2011/12/30 dadams
;;     Version 3.3.0.
;; 2011/04/12 dadams
;;     Version 3.2.2.
;; 2011/04/01 dadams
;;     Require bookmark+-key.el (new).  Version 3.2.1.
;; 2011/01/03 dadams
;;     Added autoload cookies: defconst, command.
;; 2010/08/19
;;     bmkp-version-number: Version 3.2.0.
;; 2010/08/15 dadams
;;     Require bookmark+-mac.el.
;;     Do not ensure loaded before compile (not needed here now).
;; 2010/07/14 dadams
;;     Version 3.1.1.
;;     Moved main content of bookmark+.el to new files bookmark+-1.el and bookmark+-bmu.el.
;; 2010/07/13 dadams
;;     Version 3.1.0.
;;     Added redefinitions: bookmark-bmenu-(1|2)-window, bookmark-bmenu-other-window-with-mouse,
;;                          bookmark-bmenu-this-window, bookmark-bmenu-switch-other-window.
;;     Added: bmkp-last-bookmark-file, bmkp-switch-to-last-bookmark-file.
;;     Removed pre-23 version of bookmark-bmenu-switch-other-window.
;;     bookmark-load: Use bmkp-last-bookmark-file when read file name.  Added missing prefix arg.
;;                    Save old current as bmkp-last-bookmark-file.
;;     bookmark-bmenu-list: If bookmark file has changed do not restore state saved from other file.
;;                          Save old current as bmkp-last-bookmark-file.
;;     bmkp-bmenu-list-1: Do not use bmkp-bmenu-title if it is empty ("").
;;     bookmark-bmenu-mode: Added to doc string: bmkp-switch-bookmark-file.
;;     bookmark-bmenu-other-window: Do not bind bookmark-automatically-show-annotations (per vanilla).
;;     bookmark-bmenu-show-annotation: Ensure in bmenu list and on a bookmark line.
;;     bmkp-switch-bookmark-file: Use bmkp-last-bookmark-file when read file name.
;;     bmkp-bmenu-define-full-snapshot-command: Set bmkp-last-bookmark-file.
;;     bmkp-bookmark-description: Fixed typo: bmkp-bookmark-file-bookmark-p (not desktop).
;;     bmkp-make-bookmark-file-record: Use arg file (not bmkp-non-file-filename) as filename entry.
;;
;;     Added more autoload cookies.
;; 2010/07/09 dadams
;;     Added: bmkp-bmenu-mark-bookmark-file-bookmarks, bmkp-bmenu-show-only-bookmark-files,
;;            bmkp-bookmark-file-jump, bmkp-set-bookmark-file-bookmark, bmkp-bookmark-file-history,
;;            bmkp-use-bookmark-file-create, bmkp-bookmark-file, bmkp-bookmark-file-alist-only,
;;            bmkp-bookmark-file-bookmark-p, bmkp-jump-bookmark-file, bmkp-make-bookmark-file-record.
;;     bmkp-types-alist, bmkp-buffer-names, bmkp-bmenu-mode-status-help, bmkp-bmenu-propertize-item,
;;       bmkp-this-buffer-p, bmkp-last-specific-buffer-p, bmkp-specific-buffers-alist-only,
;;       bmkp-bookmark-description, bookmark-bmenu-mode:   Updated for bookmark-file bookmarks.
;;     bookmark--jump-via: Added a catch, so a handler can skip all other processing when it's done.
;;     bookmark-load: Final msg says whether overwritten.
;;     Bound and added to menus: bmkp-set-bookmark-file-bookmark,
;;                               bmkp-bmenu-mark-bookmark-file-bookmarks,
;;                               bmkp-bmenu-show-only-bookmark-files, bmkp-bookmark-file-jump.
;; 2010/07/07 dadams
;;     bookmark-handle-bookmark: Bind use-dialog-box, use-file-dialog to nil.
;;     bookmark-location: From Emacs 23: Use location property and -- Unknown location --.
;;     bmkp-switch-bookmark-file: Bind insert-default-directory to nil.
;;     bmkp-empty-file: Expand FILE.  Return FILE.
;; 2010/07/03 dadams
;;     Added: bmkp-bmenu-describe-marked, bmkp-bookmark-description.
;;     bmkp-describe-bookmark: Rewrote to use bmkp-bookmark-description.
;;     Bound bmkp-bmenu-describe-marked to C-h >.
;;     bmkp-bmenu-menubar-menu: Added bmkp-bmenu-describe-(marked|bookmark).
;;     Updated doc string of bookmark-alist.
;; 2010/07/01 dadams
;;     Added: bmkp-bmenu-mark-lighted-bookmarks, bmkp-bmenu-set-tag-value-for-marked,
;;            bmkp-bmenu-show-only-tagged, bmkp-occur-create-autonamed-bookmarks,
;;            bmkp-set-autonamed-bookmark, bmkp-set-autonamed-bookmark-at-line,
;;            bmkp-set-autonamed-regexp-buffer, bmkp-set-autonamed-regexp-region,
;;            bmkp-set-tag-value-for-navlist, bmkp-prompt-for-tags-flag, bmkp-menu-bar-make-toggle,
;;            bmkp-same-creation-time-p, bmkp-set-tag-value-for-bookmarks,
;;            bmkp(-bmenu)-highlight-menu, bmkp-options-menu.
;;     Renamed: bmkp-use-region-flag to bmkp-use-region,
;;              bmkp-bmenu-jump-menu to bmkp-jump-menu.
;;     Removed: bmkp-cycle-this-buffer-buff (unused).
;;     Soft-require new library bookmark+-lit.el.
;;     Split off new file bookmark+-chg.el from bookmark+-doc.el.
;;     Changed default values of faces bmkp->-mark, bmkp-t-mark.
;;     bmkp-crosshairs-flag: Added :set instead of add-hook at top level.
;;     bmkp-use-region: Changed from boolean to choice - added cycling-too value.
;;     bookmark-set: Added INTERACTIVEP arg.  Prompt for tags when bmkp-prompt-for-tags-flag.
;;                   Auto-highlight when set, per bmkp-auto-light-when-set.
;;     bookmark--jump-via: Auto-highlight when jump, per bmkp-auto-light-when-jump.
;;                         Set BOOKMARK to result of bmkp-update-autonamed-bookmark.
;;                         Bind orig-buff when running hook.
;;     bookmark-default-handler: Pass the bookmark too as an arg to bmkp-goto-position.
;;     bookmark-relocate, bookmark-rename, bmkp-bmenu-list-1, bmkp-remove(-all)-tags, bmkp-add-tags:
;;       Add 0 as FRAME arg to get-buffer-window.
;;     bookmark-delete: Remove any highlighting on bookmark.
;;     bmkp-bmenu-list-1: Add highlight-overrides indicator.
;;     bmkp-completing-read-1: Added (not laxp) guard for first branch of main if.
;;     bmkp-crosshairs-highlight: Assign a priority.  Make the cmd a no-op for Emacs 20-21.
;;     bmkp-choose-navlist-*, bmkp-navlist-bmenu-list, bmkp-jump-in-navlist*,
;;       bmkp-cycle(-this-buffer*):
;;         Set bmkp-current-nav-bookmark to bookmark, not to its name.
;;     bmkp-update-autonamed-bookmark: Do not set bmkp-current-nav-bookmark to the name.
;;                                     Call bmkp-refresh-menu-list even if menu list is not displayed.
;;                                     Pass the bookmark name to bmkp-refresh-menu-list.
;;                                     Return the updated BOOKMARK.
;;     bmkp-refresh-menu-list: Set window point also.
;;     bmkp-goto-position:
;;       Added BOOKMARK arg.  When bmkp-save-new-location-flag, update BOOKMARK.  Return indicator.
;;     bmkp-create-varlist-bookmark: Call bookmark-set with INTERACTIVEP arg.
;;     bmkp-cycle(-this-buffer*): Added STARTOVERP arg. Pass OTHER-WINDOW, STARTOVERP to bmkp-cycle-1.
;;     bmkp-cycle-1: Added STARTOVERP arg.  If non-nil pop-up-frames, then inhibit showing annotation.
;;                   Use region only if bmkp-use-region value is cycling-too.
;;                   Use eq for *-list-position test.  If *-list-position returns nil, then reset.
;;                   Use save-selected-window, unlesl OTHER-WINDOW.
;;     bmkp-(next|previous)-bookmark(-this-buffer|-w32): Added STARTOVERP arg.  C-u: start over at 1.
;;     Bind highlight cmds: *-map: h,H,u,U,C-u,=,C-up|down.  *-bmenu-*map: H+,H>+,H>H,HH,HS,H>U,HU.
;;                          *-jump-map: h.  Bind TS in *-bmenu-*map.
;;     Add bmkp-occur-create-autonamed-bookmarks to occur-mode-map as C-c b.
;;     Menus: Added Highlight, Toggle Option.  Added light to Jump To, Show, Mark, mouse.  Reorder.
;; 2010/06/23 dadams
;;     Split the change log off from file bookmark+-doc.el to new file bookmark+-chg.el.
;; 2010/06/21 dadams
;;     Renamed: bmkp-toggle-autoname-bookmark-set/delete to bmkp-toggle-autonamed-bookmark-set/delete,
;;              bmkp-autonamed-bookmarks-alist-only to bmkp-autonamed-this-buffer-alist-only,
;;              bmkp-bookmark-autoname-p to bmkp-autonamed-bookmark-for-buffer-p,
;;     Added: bmkp-autonamed-alist-only, bmkp-non-autonamed-alist-only, bmkp-autonamed-bookmark-p,
;;     bmkp-completing-read-1: Use DEFAULT as default.  Use just (not lax) - no non-t.
;;                             Use DEFAULT if empty input only if DEFAULT is non-nil.
;;     bmkp-choose-navlist-of-type: Added pseudo-type "any".
;;     bmkp-specific-buffers-alist-only: Exclude desktop etc. bookmarks.
;;     bmkp-update-autonamed-bookmark: Arg can be a bookmark (not just name).
;; 2010/06/19 dadams
;;     RENAMED bookmarkp* TO bmkp*.  ***** THIS IS AN INCOMPATIBLE CHANGE ******
;;
;;       If you have existing customizations, or if you have bookmarks that have the (internal) tag
;;       "bmkp-jump", then YOU MUST REPLACE occurrences of "bookmarkp" by "bmkp" EVERYWHERE.  This
;;       includes replacing occurrences in (1) your bookmarks file (bookmark-default-file), (2) your
;;       state file (bmkp-bmenu-state-file), and (3) your command file (bmkp-bmenu-commands-file).
;;
;;     Changed *-bmenu-w32-open-select binding to M-o from M-v.
;; 2010/06/11 dadams
;;     Wrap all (require '* nil t) in condition-case.
;; 2010/06/07 dadams
;;     Fix deskstop bookmarks for Emacs < 22.  Protect:
;;       *-release-lock with fboundp, *-buffer-args-list with boundp, *-dir with Emacs version #,
;; 2010/05/30 dadams
;;     Added: bookmarkp-(next|previous)-bookmark-w32(-repeat).  Bound to C-x p (next|prior).
;; 2010/05/29 dadams
;;     *-bmenu-list, *-choose-navlist-from-bookmark-list, *-bmenu-define(-full-snapshot)-command,
;;       *-save-menu-list-state, -make-bookmark-list-record:
;;         Add/restore bookmarkp-bmenu-filter-pattern to/from state.
;;     *-jump-bookmark-list: Set bookmarkp-latest-bookmark-alist to  bookmark-alist.
;;     Reordered Bookmark menu and added items:
;;       Set Bookmark, Delete Autonamed Bookmark, Delete All Autonamed Bookmarks Here,
;;       Delete Bookmarks Here, Delete Bookmark, Rename Bookmark, Bookmark List for This Buffer,
;;       Bookmark List for Navlist, Set Navlist to Bookmarks of Type,
;;       Set Navlist from Bookmark-List Bookmark, Insert Bookmark Contents, Insert Bookmark Location.
;;     Added to Bookmark+ menu: Set Navlist *.
;;     Added to bookmarkp-bmenu-jump-menu: In Navigation List.
;;     Added :enable entries for menu items.
;;     Updated bookmark-bmenu-mode doc string for cycling, navlist, and options.
;;     Corrected bindings of bookmarkp-jump-in-navlist(-other-window).
;; 2010/05/26 dadams
;;     Added:
;;       bookmarkp-choose-navlist-(from-bookmark-list|of-type), bookmarkp-crosshairs-highlight,
;;       bookmarkp-cycle(-this-buffer)(-other-window), bookmarkp-delete-bookmarks,
;;       bookmarkp-jump-in-navlist(-other-window), bookmarkp-navlist-bmenu-list,
;;       bookmarkp-(next|previous)-bookmark(-this-buffer)(-repeat),
;;       bookmarkp-toggle-autoname-bookmark-set/delete, bookmarkp-autoname-bookmark(-function),
;;       bookmarkp-autonamed-bookmarks-alist-only, bookmarkp-autoname-format,
;;       bookmarkp-bookmark-autoname-p, bookmarkp-crosshairs-flag,
;;       bookmarkp-this-buffer-cycle-sort-comparer, bookmarkp-current-bookmark-list-state,
;;       bookmarkp-cycle-1, bookmarkp-list-position, bookmarkp-position-cp,
;;       bookmarkp-current-nav-bookmark, bookmarkp-cycle-this-buffer-buff, bookmarkp-nav-alist,
;;       bookmarkp-update-autonamed-bookmark, bookmarkp-delete-all-autonamed-for-this-buffer.
;;    Bound:
;;       bookmarkp-choose-navlist-from-bookmark-list, bookmark-insert-location,
;;       bookmarkp-navlist-bmenu-list, bookmarkp-choose-navlist-of-type, bookmarkp-delete-bookmarks,
;;       bookmarkp-toggle-autoname-bookmark-set/delete, bookmarkp-jump-in-navlist(-other-window),
;;       bookmarkp-(next|previous)-bookmark(-this-buffer)-repeat.
;;    bookmark--jump-via: Update the name and position of an autonamed bookmark.
;; 2010/05/22 dadams
;;     *-this-buffer-p: Return nil for bookmarks not really associated with a buffer.
;;     *-default-handler, *-goto-position: Forgot comma to eval file-name when no-such-file error.
;;     *-show-annotation: Bind buffer-read-only to nil for updating.
;; 2010/05/19 dadams
;;     Added: bookmarkp-this-buffer-bmenu-list.  Bound to `C-x p .'.
;;     menu-bar-bookmark-map:
;;       Added bookmarkp-this-buffer-bmenu-list.  Added separators.
;;       Added vanilla items edit, write, load, to impose order.  Renamed item edit.
;; 2010/05/16 dadams
;;     bookmark-set: Quoted history arg.  Thx to S. Nemec.
;;     bookmarkp-bmenu-define-full-snapshot-command: Use quote comma, not quote, for *-specific-*.
;; 2010/05/15 dadams
;;     Replace *same-(buffer|file)-jump* by *specific-(buffers|files)-jump*: read multiple buff/files.
;;     Renamed: *same-(buffer|file)* to *-last-specific-(buffer|file)* for pred, alist, and var.
;;     Renamed: *same-(buffer|file)* to *specific-(buffer|file)* for hist, *types*, mark/show cmds.
;;     Renamed: *-selected-buffers-alist* to *-specific-buffers-alist*.
;;     Added: *-specific-files-alist*, *-(all|some)-tags(-regexp)-alist-only.
;;     *-completing-read-(buffer|file)-name: Use (buffer|file)-name-history, not *-same-*-history.
;;     *-read-tags-completing: Rewrote to correctly handle cons and string tags, error handling, etc.
;;     *-bmenu-(add|remove)-tags-*-marked: Error handling.
;;     *(all|some)-tags(-regexp)-jump*: Use *-(all|some)-tags(-regexp)-alist-only.
;; 2010/05/11 dadams
;;     Added: bookmarkp-bmenu-mark-same-(buffer|file)-bookmarks, bookmarkp-this-(buffer|file)-p,
;;            bookmarkp-this-(buffer|file)-alist-only, bookmarkp-bmenu-show-only-same-(buffer|file),
;;            bookmarkp-completing-read-(buffer|file)-name, bookmarkp-same-(buffer|file)-history,
;;            bookmarkp-(same|this)-(buffer|file)-alist-only, bookmarkp-last-same-(buffer|file),
;;            bookmarkp-(same|this)-(buffer|file)-jump(-other-window), bookmarkp-(buffer|file)-names,
;;            bookmarkp-same-(buffer|file)-as-last-p, bookmarkp-other-window-pop-to-flag,
;;            bookmarkp-select-buffer-other-window.
;;     Use bookmarkp-select-buffer-other-window instead of switch-to-buffer-other-window everywhere.
;;     Bound = (b|f) (M|S), C-x j (=|.) (b|f) to (same|current)-(buffer|file) commands.
;;     *-types-alist: Handle same-(buffer|file) too.
;;     *-bmenu-list, *-bmenu-define-full-snapshot-command, *-save-menu-list-state:
;;       Handle bookmarkp-last-same-(buffer|file) as part of state.
;; 2010/05/05 dadams
;;     bookmarkp-create-varlist-bookmark, bookmarkp-make-varlist-record:
;;       Added optional arg BUFFER-NAME.
;;     bookmark-alist: Corrected doc string wrt BUFFER-NAME and region context strings.
;; 2010/05/04 dadams
;;     Added: bookmarkp-create-varlist-bookmark.
;;     bookmarkp-jump-varlist: If bookmark's buffer doesn't exist, use current buffer and show msg.
;; 2010/04/24 adams
;;     Added: bookmarkp-bmenu-show-only-varlists, bookmarkp-set-restrictions-bookmark,
;;            bookmarkp-set-varlist-bookmark, bookmarkp-varlist-jump, bookmarkp-varlist,
;;            bookmarkp-jump-varlist, bookmarkp-make-varlist-record, bookmarkp-printable-p,
;;            bookmarkp-printable-vars+vals, bookmarkp-read-variables-completing,
;;            bookmarkp-read-variable, bookmarkp-varlist-alist-only, bookmarkp-varlist-bookmark-p,
;;            bookmarkp-varlist-history.
;;     Bound bookmarkp-bmenu-show-only-varlists to V S, bookmarkp-varlist-jump to C-x j v (and menu).
;;     *-types-alist: Added bookmarkp-varlist-history.
;;     *-bmenu-mode-status-help, *-bmenu-propertize-item, *-describe-bookmark: Handle varlist bmks.
;;     *-bmenu-w32-open-select: Changed binding to M-v from V.
;;     *-bmenu-mode: Updated doc string.
;; 2010/04/17 dadams
;;     bookmark-set: Numeric prefix arg means use all bookmarks as completion candidates.
;;                   Simplified the prompt.
;;     bookmarkp-completing-read-1:
;;       Use icicle-transform-multi-completion in icicle-delete-candidate-object
;;     Ensure loaded before byte-compile (put a require after provide).
;;     Move bookmarkp-replace-regexp-in-string before macro bookmarkp-define-sort-command (uses it).
;;     bookmarkp-bmenu-w32-open-with-mouse, bookmarkp-bmenu-mouse-3-menu:
;;       Use with-current-buffer, not save-excursion of set-buffer.
;;     bookmarkp-make-dired-record, bookmarkp-jump-dired: Use dolist, not mapcar (just side effect).
;;     bookmarkp-(some|all)-tags-jump(-other-window): Removed extraneous arg in error call.
;; 2010/04/16 dadams
;;     Added: bookmarkp-completing-read-1, bookmarkp-completing-read-lax,
;;            bookmarkp-selected-buffers-alist-only.
;;     bookmark-set: Use bookmark-completing-read-lax w/ buffer's bookmarks, not read-from-minibuffer.
;;     bookmark-completing-read: Define using bookmarkp-completing-read-1.
;; 2010/04/09 dadams
;;     bookmarkp-edit-bookmark: Update dired-directory property along with filename property.
;; 2010/03/28 dadams
;;     bookmarkp-goto-position: Don't funcall bookmarkp-jump-display-function if it is nil.
;; 2010/03/28 dadams
;;     bookmark-default-handler: Don't funcall bookmarkp-jump-display-function if it is nil.
;; 2010/03/27 dadams
;;     Changed the customization group from bookmarkp to bookmark-plus.
;;     Moved doc and change history from bookmark+.el to this new file, bookmark+-doc.el.
;;     bookmarkp-commentary-button: Use bookmark+-doc.el, not bookmark+.el.
;; 2010/03/17 dadams
;;     Added: bookmarkp-toggle-bookmark-set-refreshes, bookmarkp-refresh-latest-bookmark-list,
;;            bookmarkp-after-set-hook.
;; 2010/03/16 dadams
;;     Fixed parens placement (typo) for last change to define *-jump-woman for Emacs 20.
;; 2010/03/11 dadams
;;     Define bookmarkp-jump-woman also for Emacs 20 (just raise an error).
;;     *-show-annotation: Typo: bookmark -> bmk-name.
;; 2010/03/10 dadams
;;     Added: bookmarkp-bookmark-creation-cp, bookmarkp-bmenu-sort-by-creation-time (bind: s0, menu).
;;     *-make-record-default: Add entry: created.
;;     *-describe-bookmark: Add creation time to description.
;; 2010/03/03 dadams
;;     *-sort-and-remove-dups: Do not set bookmarkp-sorted-alist to the result.
;;     *-bmenu-list-1: Set bookmarkp-sorted-alist to the result of calling *-sort-and-remove-dups.
;; 2010/03/02 dadams
;;     Added: bookmarkp-sorted-alist.
;;     *-bmenu-list-1: Use bookmarkp-sorted-alist.
;;     *-sort-and-remove-dups: Set bookmarkp-sorted-alist to the result.
;;     All *-cp (and hence *-define-file-sort-predicate):
;;       Accept bookmark names as args, in addition to bookmarks.
;;     bookmark-alpha-p: Don't use bookmarkp-make-plain-predicate, to avoid infinite recursion.
;; 2010/02/28 dadams
;;     Added: bookmarkp-send-bug-report.
;;     bookmarkp-bmenu-mode-status-help: Rewrote to provide only Bookmark+ help.  Added help buttons.
;;     Fixed Commentary typos.
;; 2010/02/26 dadams
;;     Added: bookmarkp-desktop-change-dir, bookmarkp-desktop-kill, bookmarkp-desktop-delete.
;;     *-jump-desktop: Call *-desktop-change-dir.
;;     *-read-bookmark-for-type: Added optional arg ACTION.
;; 2010/02/24 dadams
;;     *-bmenu-list: Handle case null last-bookmark-file (due to old file format).  Thx to Seb Luque.
;;     *-make-record-default: protect dired-buffers with boundp.  Thx to Janek Schwarz.
;; 2010/02/16 dadams
;;     bookmarkp-define-sort-command: Add msg suffix about repeating.
;;     bookmarkp-msg-about-sort-order: Added optional arg SUFFIX-MSG.
;; 2010/02/15 dadams
;;     Added: bookmark-bmenu-switch-other-window (redefinition for Emacs 20-22).
;;     *-bmenu-mode: Added redefinition, instead of advising.
;;     *-send-edited-annotation, *-relocate, *-rename, *-bmenu-refresh-menu-list,
;;       *-remove(-all)-tags, *-add-tags:
;;         Refresh the menu list, to pick up changes.
;;     *-refresh-menu-list: Added optional arg BOOKMARK: go to it.
;;     Do not bind bookmark-bmenu-relocate unless it's defined.
;;     *-handler-cp: Respect case-fold-search.
;; 2010/02/14 dadams
;;     Renamed bookmark-bmenu-list-1 to bookmarkp-bmenu-list-1.
;;     Added faces: bookmarkp-(a|t|>|D)-mark, bookmarkp-heading (don't use bookmark-menu-heading).
;;     Added redefinitions: bookmark-send-edited-annotation, bookmark(-bmenu)-show-annotation,
;;                          bookmark-show-all-annotations.
;;     *-bmenu-mark, *-bmenu-delete, *-bmenu-list-1: Add faces to marks.
;;     *-bmenu-list-1 and everywhere: Get rid of "% " before menu-list title.
;;     *-bmenu-list-1: Use "a", not "*", as annotation mark.
;;                     Add "t" mark for tags.  Add an extra space before bookmark name.
;;     *-bmenu-marks-width: change value from 2 to 4, for the tags column and the extra space.
;; 2010/02/13 dadams
;;     Added: bookmarkp-desktop-history,
;;            bookmarkp-desktop-jump (bound to C-x j K; added to menu),
;;            bookmarkp-bookmark-list-jump (bound to C-x j B; added to menu),
;;            bookmarkp-bookmark-list-alist-only, bookmarkp-bookmark-list-history.
;;     *-types-alist: Added entries for desktops and bookmark-lists.
;;     *-describe-bookmark: Added optional arg, to show full (internal) info.
;;                          Bind it to ? in bookmark-map.
;;     *-jump-bookmark-list: Pop to the bookmark-list (to show it).
;;     *-bmenu-mark-w3m-bookmarks: Typo: wrong predicate.
;;     *(-bmenu)-remove-all-tags: Raise error if no tags to remove.
;;     *-bmenu-remove-all-tags: Require confirmation if interactive.
;;     *-bmenu-remove-tags: Added optional arg MSGP.
;;     Menus: Added "..." as needed.
;;     *-bmenu-mouse-3-menu: Guard bookmark-bmenu-relocate with fboundp.
;; 2010/02/12 dadams
;;     Added: bookmarkp-bmenu-define-jump-marked-command.  Bound to M-c and added to menu.
;;     Changed bookmarkp-toggle-saving-bookmark-file binding to M-~ (M-s conflicts w isearch-multi).
;;     Updated bookmark-bmenu-mode doc string.
;; 2010/02/11 dadams
;;     Added: bookmarkp-types-alist,
;;            bookmarkp-(dired|gnus|info|man|region|w3m|(non-|local-|remote-)file)-history.
;;     bookmark-completing-read: Added optional HIST arg.
;;     *-(relocate|rename|insert(-location)): Added bookmark default for interactive use.
;;     *-jump-dired: Handle bookmarkp-jump-display-function.
;;     *-read-bookmark-for-type: Added optional HIST arg.
;;     *-jump-to-type(-other-window),
;;       *-(dired|file|gnus|info|man|region|w3m|(local-|non-|remote-)file)-jump*(-other-window):
;;         Use type-specific history var.
;; 2010/02/09 dadams
;;     Added: bookmarkp-get-tag-value.
;;     bookmark--jump-via: Handle special bookmark tag bookmarkp-jump.
;; 2010/02/08 dadams
;;     Renamed: bookmarkp-bmenu-dired-marked-local to bookmarkp-bmenu-dired-marked.
;;     bookmarkp-bmenu-dired-marked: Handle remote bookmarks if Emacs > 23.1.
;;     Support tags with values.
;;       Added: bookmarkp-tag-name, bookmarkp-full-tag, bookmarkp(-bmenu)-set-tag-value.
;;       Renamed variable (not fn) bookmarkp-tags-list to bookmarkp-tags-alist.
;;       Use bookmarkp-full-tag everywhere for tag completion.
;;       *-has-tag-p: Use assoc-default, not member.
;;       *-read-tag(s)-completing: CANDIDATE-TAGS is now an alist.
;;       *-list-all-tags: Added optional arg FULLP (prefix arg).
;;       *-tags-list: Added optional arg NAMES-ONLY-P.
;;       *-(add|remove|rename)-tags: Use copy-alist, not copy-sequence.  Alist, not list, membership.
;;       *-rename-tag: Raise error if no tag with old name.
;;       *-bmenu-mark-bookmarks-tagged-regexp, *-regexp-filtered-tags-alist-only, *-describe-bookmark,
;;         *-(all|some)-tags-regexp-jump(-other-window):
;;           Use bookmarkp-tag-name.
;;       *-bmenu-mark/unmark-bookmarks-tagged-(all|some)/(none|not-all), *-define-tags-sort-command:
;;         Use assoc-default, not member.
;;     Added: bookmarkp-bmenu-add-tags, bookmarkp-bmenu-remove(-all)-tags.
;;     *-bmenu-mouse-3-menu: Use bookmarkp-bmenu-add-tags, bookmarkp-bmenu-remove(-all)-tags.
;;                           Added bookmarkp-bmenu-set-tag-value.
;;     *-bmenu-mark-bookmarks-satisfying: Made it a command (interactive).
;; 2010/02/07 dadams
;;     *-write-file: Corrected handling of ALT-MSG.
;;     Cleanup.
;;       *-remove-tags: Don't call *-get-tags twice.
;;       *-bmenu-(un)mark-bookmarks-tagged(-not)-(all|none|some):
;;         Don't duplicate what bookmarkp-read-tags-completing does.
;;       *-add-tags, *-remove-tags(-from-all): TAGS arg must be a list from the beginning.
;;       *-remove-tags-from-all, *-rename-tag: Use bookmark-all-names - don't mapcar car over alist.
;;       *-all-tags-regexp-jump: Corrected to use same pred as *-all-tags-regexp-jump-other-window.
;;       *-(some|all)-tags-jump(-other-window): Use bookmarkp-has-tag-p - don't repeat the definition.
;;       *-read-tag(s)-completing: Removed unnecessary or.
;; 2010/02/06 dadams
;;     *-write-file, *-empty-file: Corrected handling of ALT-MSG.
;; 2010/02/05 dadams
;;     Added: bookmarkp-same-file-p, bookmarkp-empty-file.
;;     Bound bookmarkp-empty-file to C-x p 0, and added it to menus.
;;     *-bmenu-list, *-switch-bookmark-file: Use bookmarkp-same-file-p.
;;     bookmark-write-file: Added optional ALT-MSG arg.
;; 2010/02/04 dadams
;;     Added: bookmarkp-bmenu-omit, bookmarkp-list-all-tags.  Added to mouse-3 menu, Tags menus.
;; 2010/02/01 dadams
;;     Added: bookmarkp-current-bookmark-file, bookmarkp-switch-bookmark-file,
;;            (redefinition of) bookmark-load, (redefinition of) bookmark-save,
;;            bookmarkp-toggle-saving-bookmark-file, bookmarkp-last-save-flag-value.
;;     *-bmenu-list: Restore bookmarkp-current-bookmark-file if appropriate.
;;     *-bmenu-mode-status-help: Show bookmarkp-current-bookmark-file.
;;     *-bmenu-define-full-snapshot-command, *-save-menu-list-state:
;;       Save bookmarkp-current-bookmark-file.
;;     Bound bookmarkp-switch-bookmark-file to L and C-x r L.  Added both load commands to both menus.
;;     *-toggle-saving-menu-list-state: Changed binding to M-l.  Error if init value is nil.
;;     Bound *-toggle-saving-bookmark-file to M-s and added to menu.
;;     Added bookmark-write to bookmarkp-bmenu-menubar-menu (Save As).
;;     bookmarkp-bmenu-menubar-menu: Added :help strings everywhere.
;;     bookmarkp-bmenu-mode-status-help: Added face legend.
;; 2010/01/31 dadams
;;     Added: bookmarkp-tags-list, bookmarkp-read-tag-completing, bookmarkp-use-w32-browser-p,
;;            bookmarkp-bmenu-w32-open(-select|-with-mouse).  Bind *-w32* to M-RET, V, M-mouse-2.
;;     *-default-handler: Call w32-browser if bookmarkp-use-w32-browser-p.
;;     *-bmenu-unomit-marked: Don't try to return to original position (duh).
;;     *-bmenu-goto-bookmark-named: Use eobp as loop condition.  Call bookmark-bmenu-ensure-position.
;;     *-read-tags-completing:
;;       Added arg UPDATE-TAGS-LIST-P.  Call bookmark-maybe-load-default-file.
;;       Use bookmarkp-tags-list if CANDIDATE-TAGS is nil.  Update that var if UPDATE-TAGS-LIST-P.
;;     *-(add|remove)-tags: Added arg NO-CACHE-UPDATE-P.  If nil, call bookmarkp-tags-list.
;;     *-remove-tags-from-all, *-rename-tag, *-bmenu-(add|remove)-tags-(to|from)-marked:
;;       Call bookmarkp-tags-list.
;;     *-remove-tags-from-all: Pass nil as tags arg to bookmarkp-read-tags-completing.
;;     *-rename-tag: Use bookmarkp-read-tag-completing, not read-string.
;; 2010/01/29 dadams
;;     bookmarkp-describe-bookmark: Handle desktop bookmarks specifically.
;;     Added: bookmarkp-menu-popup-max-length.
;;     bookmark-completing-read: Use bookmarkp-menu-popup-max-length.
;;     bookmarkp-bmenu-state-file: Added missing default value for const.
;;     Don't add jump-other entry to menu-bar-bookmark-map (just use Jump To submenu).
;; 2010/01/28 dadams
;;     bookmarkp-(all|some)-tags(-regexp)-jump(-other-window): Error if no bookmarks with the tags.
;;     bookmarkp-(all|some)-tags-jump(-other-window): Handle case where user enters no tags.
;;     Use :advertised-binding property for bookmark-jump(-other-window).
;;     Added: bookmarkp-bmenu-jump-menu.
;;     Added bookmarkp-bmenu-jump-menu to menu-bar-bookmark-map and bookmarkp-bmenu-menubar-menu.
;; 2010/01/27 dadams
;;     Added: bookmarkp-every, bookmarkp-(all|some)-tags(-regexp)-jump(-other-window).
;; 2010/01/26 dadams
;;     Added: bookmarkp-bmenu-dired-marked-local.  Bound to M-d >.
;; 2010/01/23 dadams
;;     Added: bookmarkp-handler-cp, bookmarkp-desktop-no-save-vars, bookmarkp-set-desktop-bookmark,
;;            bookmarkp-make-desktop-record, bookmarkp-jump-desktop, bookmarkp-desktop-read,
;;            bookmarkp-desktop-alist-only, bookmarkp-desktop-bookmark-p,
;;            bookmarkp-bmenu-mark-desktop-bookmarks, bookmarkp-bmenu-show-only-desktops,
;;            face bookmarkp-desktop.
;;     bookmarkp-bmenu-sort-by-bookmark-type: Add bookmarkp-handler-cp to the list (last).
;;     bookmarkp-bmenu-propertize-item: Add face bookmarkp-desktop for desktop bookmarks.
;;     Bound: bookmarkp-set-desktop-bookmark to C-x p K, C-x r K,
;;            bookmarkp-bmenu-mark-desktop-bookmarks to K M (and Mark menu),
;;            bookmarkp-bmenu-show-only-desktops to K S (and Show menu).
;;     bookmark-bmenu-mode doc string: Updated for new commands.
;;     Added autoload cookies for all defcustoms.
;; 2010/01/20 dadams
;;     Added: bookmarkp-bmenu-mode-status-help.  Bound to C-h m, ?.
;; 2010/01/19 dadams
;;     bookmarkp-remote-file-bookmark-p: Include remote Dired bookmarks.  Thx to Simon Harrison.
;;     Added: bookmarkp-describe-bookmark-internals, bookmarkp-bmenu-describe-this+move-(down|up),
;;            defalias for list-bookmarks.
;;     bookmarkp-describe-bookmark: Reformatted help output.  Added more info about Dired bookmarks.
;;     bookmarkp-bmenu-describe-this-bookmark:
;;       C-u calls bookmarkp-describe-bookmark-internals.  Bound also to C-h C-RET.
;; 2010/01/18 dadams
;;     Added: bookmarkp-dired-subdirs.
;;     bookmarkp-make-dired-record, bookmarkp-jump-dired: Handle inserted and hidden dirs.
;;     bookmarkp-jump-dired: Use expand-file-name, not concat.
;; 2010/01/17 dadams
;;     Added:
;;       bookmarkp-jump(-other-window)-map, bookmarkp-jump-1, bookmark-all-names (redefined),
;;       bookmarkp-read-bookmark-for-type, bookmarkp-dired-jump-current(-other-window),
;;       bookmarkp-(dired|(local-|remote-|non-)file|gnus|info|man|region|w3m)-jump(-other-window),
;;       bookmarkp-jump-to-type(-other-window).
;;     bookmark-jump(-other-window): Use bookmarkp-jump-1.
;;     bookmark-completing-read: Added optional args ALIST and PRED.
;;     bookmarkp-default-bookmark-name: Added optional arg ALIST.
;; 2010/01/14 dadams
;;     bookmark-bmenu-surreptitiously-rebuild-list: Put back save-excursion & save-window-excursion.
;; 2010/01/02 dadams
;;     Renamed *-bmenu-check-position to *-bmenu-ensure-position, per Emacs 23.2.  Added defalias.
;; 2010/01/01 dadams
;;     *-bmenu-(un)mark, *-bmenu-other-window, *-bmenu-rename: Call bookmark-bmenu-check-position.
;;     *-bmenu-delete: Don't call bookmark-bmenu-check-position again at end.
;;     *-bmenu-edit-bookmark: Call bookmark-bmenu-check-position at beginning, not end.
;; 2009/12/30 dadams
;;     Added: bookmarkp-bmenu-header-lines, bookmarkp-bmenu-marks-width.  Use everywhere.
;; 2009/12/29 dadams
;;     Added: bookmarkp-make-bookmark-list-record, bookmarkp-jump-bookmark-list, face
;;            bookmarkp-bookmark-list.
;;     *-bmenu-propertize-item: Highlight bookmark-list bookmarks.
;;     *-bmenu-refresh-menu-list: Set bookmarkp-latest-bookmark-alist to refreshed list.
;;     Face *-local-directory: Made dark background version the inverse of light.
;;     *-bmenu-list-1: Use eq, not equal, test for bookmarkp-omitted-alist-only as filter fn.
;;     *-bmenu-define(-full-snapshot)-command: Include bookmarkp-bmenu-omitted-list in saved state.
;; 2009/12/26 dadams
;;     Added: bookmarkp-bmenu-omitted-list, bookmarkp-bmenu-show-only-omitted, bookmarkp-unomit-all,
;;            bookmarkp-bmenu-omit/unomit-marked, bookmarkp-bmenu-(un-)omit-marked,
;;            bookmarkp-omitted-alist-only.
;;            Bind *-bmenu-omit/unomit-marked, *-bmenu-show-only-omitted, *-unomit-all to O>,OS,OU.
;;     Added omit/un-omit stuff to Bookmark+ menu.
;;     bookmarkp-remove-assoc-dups, bookmarkp-sort-and-remove-dups: Added optional arg OMIT.
;;     bookmark-delete: Update bookmarkp-bmenu-omitted-list.
;;     bookmarkp-save-menu-list-state, bookmark-bmenu-list:
;;       Save/restore bookmarkp-bmenu-omitted-list as part of state.
;;     bookmark-bmenu-list-1: Treat omitted list when bookmarkp-omitted-alist-only.
;;     bookmarkp-marked-bookmark-p: Arg can now be a bookmark (or a bookmark name).
;;     bookmarkp-bmenu-unmark-all: Start by going forward 2 lines, not 1, if user hit RET.
;;     bookmarkp-bmenu-make-sequence-from-marked:
;;       Added optional arg DONT-OMIT-P.  If nil, omit marked bookmarks.
;;       If the seq bookmark already exists, prompt to add to it or replace it.
;;       Go to the new bookmark in the menu list.
;; 2009/12/15 dadams
;;     Added: bookmarkp-sequence-jump-display-function, bookmarkp-sequence, bookmarkp-function,
;;            bookmarkp-bmenu-make-sequence-from-marked, bookmarkp-jump-sequence,
;;            bookmarkp-sequence-bookmark-p, bookmarkp-make-function-bookmark,
;;            bookmarkp-jump-function, bookmarkp-function-bookmark-p.
;;     bookmarkp-describe-bookmark: Update for sequence and function bookmarks.
;;     bookmark-bmenu-list: Use condition-case when read from bookmarkp-bmenu-state-file.
;;                          Bind emacs-lisp-mode-hook to nil.
;;     bookmark-bmenu-surreptitiously-rebuild-list: Use save-current-buffer.
;;     bookmarkp-bmenu-propertize-item: Add faces to function and sequence bookmarks.
;;     bookmarkp-bmenu-menubar-menu: Add *-make-sequence-*-from-marked, *-make-function-bookmark.
;;     bookmark--jump-via: Call *-record-visit with BATCH arg, to preserver point in menu list.
;;     bookmark-bmenu-list-1: fit-frame only if buffer is *Bookmark List*.
;; 2009/12/13 dadams
;;     *-alist-only: Call bookmark-maybe-load-default-file.
;; 2009/12/11 dadams
;;     Added: bookmarkp-list-defuns-in-commands-file, bookmarkp-remove-dups.
;; 2009/12/06 dadams
;;     Added: bookmarkp-bmenu-mouse-3-menu (bound to mouse-3),
;;            bookmarkp-bmenu-(menubar|define-command|sort|show|tags|mark)-menu.
;;     bookmark-bmenu-delete: Remove newly flagged bookmark from bookmarkp-bookmark-marked-list.
;;     bookmarkp-define-tags-sort-command: Save macroexpanded definition in
;;                                         bookmarkp-bmenu-commands-file.
;; 2009/12/04 dadams
;;     Added: bookmarkp-bmenu-define-full-snapshot-command (bound to C),
;;            bookmarkp-define-tags-sort-command.
;;     bookmarkp-bmenu-mark-bookmarks-tagged-regexp: Removed extra forward-line if we mark line.
;; 2009/12/03 dadams
;;     Added: bookmarkp-bmenu-define-command (bound to c), bookmarkp-bmenu-commands-file.
;;     bookmark-bmenu-list: Read bookmarkp-bmenu-commands-file.
;;     bookmarkp-sort-and-remove-dups: Bug fix - return the list even when null sort function.
;; 2009/11/01 dadams
;;     Added: *-bmenu-check-position (redefinition), bmkext-jump-* defaliases.
;;     *-(w3m|man|gnus)-bookmark-p: Recognize the aliases.
;;     *-jump-man: Bind Man-notify-method.
;;     *-bmenu-goto-bookmark-named: Check the text property, instead of searching.
;;     *-bmenu-bookmark: Wrap in condition-case.
;; 2009/10/31 dadams
;;     Added: bookmark-bmenu-list-1. bookmarkp-toggle-saving-menu-list-state (C-t),
;;            bookmarkp-bmenu-state-file, bookmarkp-bmenu-first-time-p,
;;            bookmarkp-last-bmenu-(bookmark|state-file), bookmark-exit-hook-internal
;;            (redefinition), bookmarkp-save-menu-list-state.
;;     bookmark-bmenu-list: Restore menu-list state if appropriate.  Call bookmark-bmenu-list-1.
;;     bookmarkp-bmenu-quit: If *-bmenu-state-file is non-nil, save the state.
;;     bookmark-write-file: Use case, not cond.
;;     bookmark-set: Use command name as default for man-page bookmark name.
;;     bookmark-delete: Update bookmarkp-latest-bookmark-alist.
;; 2009/10/28 dadams
;;     Renamed: bookmarkp-bookmark-marked-p to bookmarkp-marked-bookmark-p
;;              bookmarkp-bmenu-sort-by-gnus-thread to bookmarkp-bmenu-sort-by-Gnus-thread.
;;     Added: bookmarkp-man, bookmarkp-make-(wo)man-record, bookmarkp-jump-(wo)man,
;;            bookmarkp-man-bookmark-p, bookmarkp-bmenu-mark-man-bookmarks,
;;            bookmarkp-bmenu-show-only-man-pages, bookmarkp-man-alist-only.
;;     *-bmenu-propertize-item: Handle (wo)man bookmarks.  Use bookmarkp-info-bookmark-p.
;;     *-regexp-filtered-*: Use bookmarkp-remove-if-not.
;;     *-write-file: Remove text properties from file name also.
;;     *-regexp-filtered-(tags|(bookmark|file)-name)-alist-only: Use *-remove-if-not.
;; 2009/10/26 dadams
;;     Added: bookmarkp-bmenu-mark-*-bookmarks, bmenu-mark-bookmarks-satisfying.
;;     Bound those and *-show-only-* accordingly.
;;     bookmarkp-file-alist-only: Redefined to just use *-file-bookmark-p.
;; 2009/10/25 dadams
;;     bookmarkp-bmenu-propertize-item: Put bookmark name on line as text property.
;;     bookmark-bmenu-bookmark: Get bookmark name from text property bookmarkp-bookmark-name.
;;     Removed: bookmarkp-latest-sorted-alist.
;;     bookmark-bmenu-list: Use bookmarkp-bmenu-title only if defined.
;; 2009/10/21 dadams
;;     Added: bookmarkp-barf-if-not-in-menu-list.  Use in place of its body.
;;     Added: bookmarkp-bmenu-mark-bookmarks-tagged-regexp.  Bound to T m %.
;;     Added: bookmarkp-record-visit.  Use in *--jump-via.  Replaces next two removals.
;;     Removed: bookmarkp-add-or-update-time, bookmarkp-increment-visits.
;;     Renamed: *-record-(end|front|rear)-context(-region)-string'.
;;              New names: bookmarkp-(end-)position-(pre|post)-context(-region).
;;     *-bmenu-describe-this-bookmark: Added *-barf-if-not-in-menu-list.
;;     *-bmenu-(un)mark-all, *-bmenu-regexp-mark, *-bmenu-toggle-marks:
;;       Removed with-current-buffer.
;; 2009/10/20 dadams
;;     Added: bookmarkp-bmenu-filter-function, bookmarkp-bmenu-title.
;;     Removed: bookmarkp-bmenu-called-from-inside-p.
;;     *-bmenu-list:
;;       Removed TITLE arg.  Get title from bookmarkp-bmenu-title or default.
;;       Use interactive-p and absence of menu list, not *-bmenu-called-from-inside-p, as the
;;         criterion for removing marks.  Fixes bugs such as bookmark creation removing marks.
;;     *-define-sort-command, *-bmenu-execute-deletions, *-increment-visits,
;;       *-add-or-update-time, *-bmenu-show-only-*, *-bmenu-show-all,
;;       *-bmenu-refresh-menu-list, *-bmenu-toggle-show-only-(un)marked,
;;       *-bmenu-filter-alist-by-regexp, *-bmenu-reverse(-multi-sort)-order,
;;       *-bmenu-change-sort-order:
;;         Do not bind or set *-called-from-inside-p.
;;     *-bmenu-show-only-*, *-bmenu-show-all, *-bmenu-filter-alist-by-regexp:
;;       Set *-bmenu-filter-function, *-bmenu-title.
;;     *-bmenu-show-all:
;;       Set *-latest-bookmark-alist to bookmark-alist.
;;     *-bmenu-refresh-menu-list: Fix so that it in fact refreshes.
;;       Do not use *-bmenu-surreptitiously-rebuild-list and *-bmenu-check-position.
;;       Bind bookmark-alist to last alist (filtered or not), and call *-bmenu-list.
;;     *-bmenu-surreptitiously-rebuild-list:
;;       Do not use save*-excursion.  Do not get current title and pass it to *-bmenu-list.
;;     *-file-alist-only:
;;       Removed optional arg.  We have *-local-file-alist-only for that.
;;     *-regexp-filtered-alist-only, *-bmenu-filter-alist-by-regexp:
;;       Remove REGEXP arg - use bookmarkp-bmenu-filter-pattern.
;;     *-bmenu-filter-incrementally:
;;       Raise error if not in *Bookmark List*.
;;       Use just bookmarkp-bmenu-filter-alist-by-regexp in timer - pass no regexp arg.
;;     Added: bookmarkp-some, *-bmenu-filter-(file-name|tags)-incrementally,
;;            *-bmenu-filter-alist-by-(file-name|tags)-regexp,
;;            *-regexp-filtered-(file-name|tags)-alist-only.
;;     Renamed: *-bmenu-filter-incrementally to *-bmenu-filter-bookmark-name-incrementally,
;;              *-bmenu-filter-alist-by-regexp to *-bmenu-filter-alist-by-bookmark-name-regexp,
;;              *-regexp-filtered-alist-only to *-regexp-filtered-bookmark-name-alist-only.
;;     Bound these commands to P B, P F, and P T.  Updated bookmark-bmenu-mode doc string.
;; 2009/10/18 dadams
;;     Added: *-bmenu-filter-(incrementally|delay|prompt|pattern|timer|alist-by-regexp),
;;            *-bmenu-read-filter-input, *-regexp-filtered-alist-only,
;;            *-bmenu-cancel-incremental-filtering.
;;     *-bmenu-execute-deletions: Don't update menu list if this is a no-op.
;;     Updated Commentary.
;;     Thx to Thierry Volpiatto.
;;     Added: *-marked-cp, *-bmenu-sort-marked-before-unmarked.  Bound to s >.
;;     *-define-sort-command: Use copy-sequence for default value.
;; 2009/10/17 dadams
;;     Added: *-read-tags-completing, *-set-union, *-tag-history, *-describe-bookmark,
;;            *-bmenu-describe-this-bookmark.  Bound *-bmenu-describe-this-bookmark to C-h RET.
;;     Use *-read-tags-completing instead of *-read-tags.
;;     *-sort-orders-for-cycling-alist: Use copy-sequence.
;;     *-bmenu-change-sort-order: Use member, not memq.
;;     *-get-bookmark: Handle case of non-string, non-cons. Document NOERROR in doc string.
;;     *-bmenu-execute-deletions: Fix so marks aren't removed if when delete.  Thx to Thierry.
;;     Convert recorded time to an Emacs time spec:
;;       *-make-record-default, -add-or-update-time: Use current-time, not bookmark-float-time.
;;       *-get-visit-time: Convert a deprecated time entry to an Emacs time spec.
;;       *-bookmark-last-access-cp: Convert recorded time to a number for comparison.
;;     Added: *-bmenu-show-filenames (redef of vanilla: put props on whole line, fit frame).
;;     Removed: old-bookmark-insert-location.
;;     *-insert-location: Do not call original.  Redefined: do not add text properties.
;;     *-bmenu-list, *-bmenu-hide-filenames: Put properties on line up to max width.
;;     *-bmenu-goto-bookmark-named: Allow trailing whitespace, since we use the whole line now.
;;     *-bmenu-list: Use pop-to-buffer, not switch-to-buffer.  Use do-list, not mapcar.
;;     *-bmenu-hide-filenames: fit-frame-if-one-window.
;;     *-bmenu-propertize-item: Better help-echo text.
;;     Updated bookmark-alist doc string to mention visits, time, and tags entries.
;; 2009/10/16 dadams
;;     Added tags feature.
;;       Added: *-(get|read)-tags, *-has-tag-p, *-remove(-all)-tags(-from-all),
;;              *-bmenu-remove-tags-from-marked, *-add-tags(-to-marked), *-rename-tag,
;;              *-bmenu-(un)mark-bookmarks-tagged-(all|none|some|not-all),
;;              *-bmenu-mark/unmark-bookmarks-tagged-(all/none|some/not-all).
;;       Bound to prefix key T.
;;       *-bmenu-mode: Updated doc string.
;;     Added: bookmarkp-default-bookmark-name.  Use as default instead of *-current-bookmark.
;;     Renamed: *-maybe-save-bookmark to *-maybe-save-bookmarks.
;;     Menu-list commands: Raise an error if command is used outside the menu list.
;; 2009/10/15 dadams
;;     Added: *-bmenu-(search|query-replace)-marked-bookmarks-regexp.  Bound to M-a, M-q.
;;     Renamed: *-non-marked-bookmarks-only to *-unmarked-bookmarks-only,
;;              *-bookmark-marked-alist to *-bmenu-marked-bookmarks.
;;     *-increment-visits, *-add-or-update-time:
;;       Set *-bmenu-called-from-inside-p to t, so we don't remove marks.
;;     Redefined *-bmenu-bookmark to get name from *-latest-sorted-alist.  Thx to Thierry V.
;;       *-bmenu-surreptitiously-rebuild-list, *-bmenu-list:
;;         Removed optional arg DONT-TOGGLE-FILENAMES-P.
;;       *-bmenu-execute-deletions, *-bmenu-toggle-show-only-(un)marked, *-bmenu-(un)mark-all,
;;         *-bmenu-regexp-mark, *-bmenu-toggle-marks:
;;           Do not bother with *-bmenu-toggle-filenames and rebuilding the menu list.
;; 2009/10/14 dadams
;;     Added: *-bmenu-delete (redefinition), *-isearch-bookmarks,
;;            *-bmenu-isearch(-marked)-bookmarks(-regexp), *-isearch-next-bookmark-buffer.
;;            Bound multi-isearch commands to M-s a C(-M)-s.
;; 2009/10/13 dadams
;;     Added: *-make-dired-record, *-jump-dired, *-dired-bookmark-p, *-dired-alist-only,
;;            *-bmenu-show-only-dired.  Bound *-bmenu-show-only-dired to M-d.
;;     bookmarkp-file-bookmark-p: Include bookmarks that have the Dired handler.
;;     Moved *-sort-orders-for-cycling-alist defcustoms after *-define-sort-command calls.
;;     Call bookmarkp-msg-about-sort-order only when interactive.
;;     *-add-or-update-time, *-increment-visits: Do not save each time we access a bookmark.
;;     Updated doc string of bookmark-alist and Commentary.
;; 2009/10/09 dadams
;;     Added: bookmarkp-bmenu-delete-marked.  Bound it to D.
;;            bookmarkp-sort-orders-for-cycling-alist.
;;     Renamed: bookmarkp-sort-functions-alist to bookmarkp-sort-orders-alist,
;;              bookmarkp-sort-function to bookmarkp-sort-comparer.
;;     bookmark-bmenu-execute-deletions: Added optional arg, for *-bmenu-delete-marked.
;;     *-sort-function: Changed default value to sorting by bookmark type (`s k').
;;     *-bmenu-change-sort-order: Use *-sort-orders-for-cycling-alist, not all sort orders.
;;     Updated Commentary and doc string (bookmark-bmenu-mode).
;; 2009/10/08 dadams
;;     Added: *-bmenu-sort-by-(w3m-url|gnus-thread), *-(gnus|w3m)-cp, *-cp-not,
;;            *-local-file-(accessed|updated)-more-recently-cp, *-bmenu-sort-by-bookmark-type.
;;     Renamed: *-bmenu-sort-by(-last)-file-(size|type|access|update) to
;;              *-bmenu-sort-by(-last)-local-file-(size|typeaccess|update),
;;              *-file-visited-more-recently-cp to *-local-file-accessed-more-recently-cp,
;;              *-file-(size|type)-cp to *-local-file-(size|type)-cp.
;;     Removed: *-file-(device|gid(-chg)|inode|last-(access|update|status-change)|links|modes
;;                            |uid)-cp.
;;     Bound *-bmenu-sort-by-bookmark-type to `s k'.
;;     *-define-file-sort-predicate: Use *-file-bookmark-p, not *-local-file-bookmark-p.
;;     *-msg-about-sort-order: Added optional arg PREFIX-ARG.  Use in: *-show-(all|only-*).
;; 2009/10/07 dadams
;;     Renamed: *-bmenu-sort-by-last-visit-time to *-bmenu-sort-by-last-bookmark-access,
;;              *-bmenu-sort-by-visit-frequency to *-bmenu-sort-by-bookmark-visit-frequency,
;;              *-visited-more-recently-cp to *-bookmark-last-access-cp.
;; 2009/10/06 dadams
;;     Added: bookmarkp-msg-about-sort-order.
;;     bookmark-completing-read: Simple sort when use menu-bar menu.
;; 2009/10/05 dadams
;;     Added: *-make-plain-predicate, *-reverse-multi-sort-order, *-multi-sort,
;;            *-define-file-sort-predicate, *-bmenu-sort-by-file-*, *-file-attribute-*-cp,
;;            and aliases *-file-*-cp, *-current-sort-order.
;;     Redefined sorting to allow multi-predicates:
;;       Redefined: *-sort-function, *-sort-and-remove-dups, *-define-sort-command,
;;                  *-sort-functions-alist.
;;     Bound keys with `s f' prefix to file-sorting commands
;;     *-current-sort-order: Use rassoc instead of rassq now.
;;     Swap keys s and S.  S is now bookmark-bmenu-save.  s is not the sorting prefix key.
;;     bookmark-bmenu-mode: Mention S key explicitly here (even though it is also
;;                          mentioned in the vanilla part of the doc string).
;; 2009/10/04 dadams
;;     *-bmenu-change-sort-order-repeat: Require repeat.el.
;;     Renamed: bookmarkp-current-sec-time to bookmarkp-float-time.
;;     *-float-time: Added arg, so it's the same as float-time (for Emacs 20).
;;     Bind *-reverse-sort-order to `S R'.
;;     *-remote-file-bookmark-p: Removed extra rem-file in last and.
;;     *-non-file-bookmark-p: Ensure it's not a remote file, before calling file-exists-p.
;; 2009/10/03 dadams
;;     Added: bookmarkp-file-remote-p, bookmarkp-buffer (face).
;;     bookmarkp-non-file (face): Changed to gray.
;;     *-default-handler, *-bmenu-propertize-item, *-(info|file)-bookmark-p:
;;       Support Emacs 20-21 Info-node bookmarks.
;;     bookmarkp-bmenu-propertize-item: Use different face for existing buffers.
;;                                      Use bookmarkp-non-file-filename.
;;     bookmarkp-non-file-bookmark-p: Include buffer bookmarks for nonexistent buffers.
;;     bookmarkp-remote-file-bookmark-p: Use bookmarkp-file-remote-p.
;;     bookmark-handle-bookmark:
;;       Redefine for all Emacs versions.  Handle buffer (non-file) bookmarks.
;;     Reordered some function definitions.
;; 2009/10/02 dadams
;;     Added: bookmarkp-bmenu-goto-bookmark-named, bookmarkp-latest-sorted-alist.
;;     *-sort-and-remove-dups: Set *-latest-sorted-alist (not used yet).
;;     *-define-sort-command, *-bmenu-change-sort-order, *-reverse-sort-order:
;;       Bind *-bmenu-called-from-inside-p to t, to prevent losing marks.
;;       Restore cursor position to same bookmark after sorting - use *-goto-bookmark-named.
;;     *-bmenu-surreptitiously-rebuild-list, *-bmenu-list: Added arg DONT-TOGGLE-FILENAMES-P.
;;     *-bmenu-execute-deletions, *-bmenu-toggle-show-only-(un)marked:
;;       Call *-surreptitiously-* with arg DONT-TOGGLE-FILENAMES-P.
;;     *-bmenu-hide-filenames: Simplify - don't get to position by searching backward.
;;     *-handle-region-default: Use forward-line, not goto-line.
;;     Thx to Thierry V.
;; 2009/10/01 dadams
;;     Added: bookmarkp-some-unmarked-p.
;;     Renamed: *-bmenu-toggle-show-only-<TYPE> to *-bmenu-show-only-<TYPE>,
;;              *-bmenu-called-from-inside-flag to *-bmenu-called-from-inside-p.
;;     bookmarkp-some-marked-p: Do not test bookmarkp-bookmark-marked-alist.
;;                              Arg must be required (explicit).  Changed calls accordingly.
;;     bookmark-bmenu-mode: Cleaned up doc string.
;;     bookmark-bmenu-((un)mark|rename|edit-*|toggle-marks|surreptitiously-rebuild-list),
;;       bookmarkp-root-or-sudo-logged-p, bookmarkp-jump-w3m-(new-session|only-one-tab),
;;       bookmarkp-some-marked-p:
;;         Inline let vars used only once.
;;     bookmarkp-bmenu-toggle-show-only-marked:
;;       Test bookmarkp-some-unmarked-p, not bookmarkp-some-marked-p,
;;            and include *-before-hide-unmarked in the test.
;;     bookmarkp-bmenu(-toggle)-show-only-*: Display status message.
;;     bookmarkp-bmenu-toggle-show-only-(un)marked: Fit frame.
;;     bookmark-prop-set: Fixed, so it handles old bookmark format also.
;; 2009/10/01 Thierry Volpiatto
;;     Removed: bookmarkp-bmenu-restore-marks.
;;     bookmark-bmenu-list:
;;       Do the mark restoration in line, at the same time as the annotation * restoration.
;;       Simplify use of START and END.
;; 2009/09/30 dadams
;;     bookmarkp-bmenu-regexp-mark: Remove binding of bookmark-alist.
;;     bookmark-bmenu-(un)mark, bookmarkp-bmenu-edit-bookmark (remove first call only),
;;       bookmark-bmenu-other-window, bookmark-bmenu-rename, bookmarkp-bmenu-restore-marks:
;;         Remove bookmark-bmenu-check-position (done by bookmark-bmenu-bookmark anyway).
;;     bookmark-insert-location: Fix interactive spec for Emacs < 22.
;;     bookmark-location: Return "" instead of raising error, if no location found.
;;     bookmarkp-current-sec-time: Move the let: do not call current-time unless we need to.
;;     bookmarkp-bmenu-unmark-all: forward-line only 1, not 2.  Thx to Thierry.
;;     bookmark-bmenu-mode: Updated doc string - bindings and mention options.
;;     bookmarkp-bmenu-propertize-item: For buffer, check also against "   - no file -".
;; 2009/09/29 dadams
;;     bookmark-bmenu-unmark: Use delete, not remove.
;;     Removed: bookmark-bmenu-check-position, bookmarkp-maybe-sort.
;;     Added: bookmarkp-sort-and-remove-dups, bookmarkp-remove-assoc-dups,
;;            bookmarkp-face-prop, bookmarkp-bad-bookmark, bookmark-menu-heading (Emacs 20,21),
;;            bookmark-bmenu-bookmark (redefinition).
;;     *-bmenu-toggle-show-only-*: Do not call-interactively.
;;     bookmarkp-bmenu-(un)mark-all:
;;       Handle bookmark-bmenu-toggle-filenames (wrapper).
;;       Remove bookmark-bmenu-check-position - just ensure within menu list.
;;     bookmarkp-bmenu-mark-all: Move save-excursion so it applies to all movements.
;;                               Message stating number marked.
;;     bookmarkp-bmenu-unmark-all: Use with-current-buffer ensure in menu list.
;;                                 Use bookmark-bmenu-unmark.
;;     Fixed U bindings for bookmarkp-bmenu-unmark-all.
;;     bookmarkp-bmenu-regexp-mark:
;;       Remove bookmark-bmenu-check-position - just ensure in menu list.
;;     bookmarkp-bmenu-toggle-marks: Use forward-line 2, to ensure in menu list.
;;                                   Message stating number marked.
;;     bookmark-bmenu-list, bookmarkp-bmenu-propertize-item: Use bookmarkp-face-prop.
;;     bookmark-bmenu-list: Don't start applying the faces until column 2.
;;     Removed key bindings in bookmark-map for *-toggle-show-only-*.
;;     Redefined faces, esp. for a light background.
;;     Use font-lock-face or face property, depending on Emacs version.
;;
;; 2009-06-09 to 2009-09-27 Thierry Volpiatto and dadams
;;     New features, as follows.
;;       See also the change log at
;;         http://mercurial.intuxication.org/hg/bookmark-icicle-region/.
;;       2090-09-27 Rewrote sorting and unmarking code.  (+ Updates to doc, names.)
;;                    Unmarking is now like Dired & query-replace.
;;                    Sorting is via one sort function; sort predicates do all the sorting.
;;                    Can now cycle sort orders with S S S...
;;                    Sort cmds now cycle among normal, reverse, off.
;;                    Add: *-define-sort-command (macro), *-assoc-delete-all, *-upcase,
;;                         *-get-visits-count, *-get-visit-time, *-sort-functions-alist.
;;                  Remove docstring from defalias (for Emacs 20).
;;       2009-09-26 Fix *-bmenu-mode doc (defadvice).
;;       2009-09-25 *-bmenu-edit, *-bmenu-sort-1: Fix bmk retrieval code.
;;                  Redefine *-bmenu-unmark.  Add: *-bmenu-toggle-marks.
;;                  Bind *-bmenu-unmark-all-bookmarks to M-DEL.  Reorder code.
;;                  Rename: *-bmenu-unmark-all-(bookmarks|(delete|mark)-flag)',
;;                          *-bmenu-unmark-all-bookmarks-1.
;;                  Change sort predicates in defalias.  Rename bmk entry visit to visits.
;;                  Remove: *-bmenu-show-number-of-visit.
;;       2009-09-22 Rewrote sorting code.  Renamed unmarking fns.
;;       2009-09-21 Rename mark/unmark cmds to have -bmenu.
;;                  Add: *-bmenu-called-from-inside-flag - set it in (un)hide marks fns.
;;       2009-09-20 *-write-file: Remove text properties before saving.
;;                  Remove all marks only in current display.
;;       2009-09-19 *-current-sec-time: Protect with fboundp for Emacs 20.
;;                  *-bmenu-sort-1: Add msg showing sort method.
;;                  Change key S-A to S-S (A is annotations).
;;       2009-09-18 Improve sorting by visit frequency.  Always increment when jump.
;;                  Fix increment visit fn.  Allow sorting by last visited.
;;                  When visit values are equal, sort with string-lessp.
;;                  Add TIME bookmark-alist entry.  *-make-record-default: Add time entry.
;;                  Fix: bad parens, errors in sorting predicate.  Rename fns.  
;;                  Use single fn to sort using diff methods.
;;                  Add: *-bmenu-refresh-alist (bind to g).
;;       2009-09-16 Add: *-toggle-sorting-by-most-visited, *-reset-visit-flag,
;;                       *-bmenu-show-number-of-visit.
;;                  Redefine *-prop-set.  Improve *-toggle-sorting-by-most-visited.
;;                  Add auto-doc to header.  *-bmenu-mode: Add missing key.
;;                  Update menu-list after jumping.
;;                  Increment save counter when jump with visit flag.
;;       2009-09-15 Record number of visits.  Added sorting by most visits.
;;       2009-09-14 Add doc string.  Update defadvice doc string wrt keys.
;;       2009-09-12 Add: fns to mark all, unmark D or > or all, *-bmenu-reset-alist.
;;                  Fix keymap (Emacs 20).  *-unmark-all-bookmarks1: Move the save-excursion.
;;       2009-09-11 Add: *-bmenu-check-position (redef to improve performance),
;;                       *-unmark-all-bookmarks, *-current-list-have-marked-p,
;;                       *-bookmark-marked-p, *-(non-)marked-bookmarks-only.
;;                  *-bmenu-hide-unmarked: Add toggling.  Restore lost fn.
;;                  Reorder code.  Bind cmds in *-bmenu-mode-map.
;;                  *-bmenu-hide-marked: Do not hide if no marked in current filter.
;;                  Improve: *-bmenu-hide(-not)-marked-bookmark, (un)hide marked fns.
;;       2009-09-10 Fix *--restore-all-mark, *-bmenu-regexp-mark.
;;                  *-bmenu-list: Add *-restore-all-mark.
;;                  *-bmenu-mark: Push marked bmk to marked list.
;;                  Add: bookmarkp-bookmark-marked-list, *-bmenu-quit.
;;       2009-09-09 *-maybe-sort-alist: Use copy-sequence.
;;                  So remove fixes for *-rename, *-edit-bookmark.
;;                  *-yank, *-rename', *-set: Fix yanking.
;;                  Remove non-file bmks from file-only list.
;;                  Add: *-bmenu-list-only-non-file-bookmarks, *-maybe-message (Emacs 20),
;;                       *-bmenu-mark-bookmark-matching-regexp, *-bmenu-hide-marked-bookmark,
;;                       *-bmenu-hide-not-marked-bookmark, *-bmenu-mark (redefinition).
;;                  *-write-file: Improve performance.
;;                  *-non-file-alist-only: Remove unused def.
;;                  Fix: hide marked/unmarked with toggle-filenames, keymap for Emacs 20.
;;                  Improve comments, doc strings.
;;                  *-bmenu-mark-bookmark-matching-regexp: Fix while loop.
;;       2009-09-08 bookmark-store: Remove duplicate setq of *-current-bookmark.
;;       2009-09-07 Reorganize (reorder), add comments, improve doc strings.
;;                  Change binding of *-bmenu-relocate from R to M-r.
;;       2009-09-06 bookmark-rename: Redefine with new arg BATCH.
;;                  *-bmenu-rename: Go to new pos, not old.
;;                  *-edit-bookmark, bookmark-rename: Fix display update for Emacs 20.
;;       2009-09-05 Add: *-edit-bookmark, *-bmenu-edit-bookmark, *-maybe-save-bookmark.
;;       2009-09-04 Require cl.  Allow RET in Emacs 20.  Add doc string.
;;                  *-fix-bookmark-alist-and-save:
;;       2009-09-03 Fix *-fix-bookmark-alist-and-save:
;;                    Use error, not message.  Change value for setcdr.
;;                    Do not use push with non-var (cl).
;;                  bookmark-delete:
;;                    Redefine, to fix vanilla bug: increment count even when BATCHP is non-nil.
;;                  *-non-file-name: Change to - no file -.  *-bmenu-list: Add arg FILTER-ON.
;;                  *-bmenu-execute-deletions: Use delete, not remove.
;;                  Add: *-replace-regexp-in-string.
;;                  bookmark-set: Fix *-yank-point for region case.  Fix bad parens.
;;       2009-09-02 Add: *-non-file-filename.  *-fix-bookmark-alist-and-save: Fix msg.
;;                  Require cl (gensym).  *-at-bol/eol' -> line-*-position (for Emacs 20).
;;                  Redefine *-bmenu-execute-deletions,
;;                           *-bmenu-surreptitiously-rebuild-list. 
;;                  Update current filtered display - do not reload & display all bmks.
;;                  Add redefinitions of *-bmenu-rename', *-yank-word to fix vanilla bugs:
;;                    *-bmenu-rename: Do not call *-bmenu-list twice.
;;                  *-yank-word: Do not insert whitespace.
;;                  Rename *-last-bookmark-alist-in-use to *-latest-bookmark-alist.
;;       2009-09-01 Fix: Loading of new doc for bookmark-alist (add vacuous defvar).
;;                       *-bmenu-(list|hide-filenames): start -> end, end -> start.
;;                  Removed extraneous quote mark that caused problems.
;;                  Save only if condition-case exits OK.
;;       2009-08-31 Fixes: Test for non-file bmk.  Filename for Gnus bmks.
;;                         Compatibility of bookmark-alist with vanilla Emacs.
;;                         Require info.el and ffap.el when needed.
;;                  Add: *-line-number-at-pos (for Emacs 20),
;;                       *-bmenu-other-window (redefinition).
;;                  Rename *-propertize-bookmark-list to *-propertize-bmenu-item.
;;       2009-08-30 Fix: Increment *-alist-modification-count when relocate region,
;;                       and maybe save.
;;                  Move code adding properties to bookmarks out of *-bmenu-list.
;;                  mapc -> mapcar.  *-bmenu-hide-filenames: Redefine.
;;       2009-08-29 Remove refresh code.
;;       2009-08-27 Added: *-local-directory-bookmark-p, *-local-file-alist-only,
;;                         *-non-file-alist-only.
;;                  *-file-bookmark-p: Redefined to exclude bmks with handlers.
;;                  Renamed fns and faces.
;;       2009-08-25 Fit frame after display menu list.
;;                  Refresh list when toggle filename visibility.
;;       2009-08-24 Fix: *-bmenu-list for remote files, bookmark-set, *-remote-file-bookmark-p.
;;                  Ensure arg to file-remote-p is not nil.
;;                  Recenter region only if it is visible.
;;       2009-08-23 Remove old *-location.  *-bmenu-list: Add isw3m.
;;                  bookmark-set:
;;                    Redefine for older Emacs. Use a default prompt for gnus, w3m.
;;                    Use *-name-length-max for title when region is active.
;;                    Ensure bookmark is on one line.
;;       2009-08-22 Try to handle tramp ftp files.
;;                  Do not fail if bookmark has empty filename entry.
;;                  Show region end pos using exchange-point-and-mark.
;;       2009-08-21 Remove all cl stuff (list*, loop, etc.).  Add *-remove-if(-not).
;;                  Remove compile-time require of cl.
;;                  Add predicates *-(region|gnus|w3m|info|(remote-|local-)file)-bookmark-p.
;;                  Redefine alist-only functions to optimize and use new preds.
;;       2009-08-20 *--jump-via: Fix to show relocated region before ask whether to save.
;;                  *-relocate-region: Fix ar-str.  Rename a var.  Add: *-region-activated-p.
;;                  Revert chgs.
;;       2009-08-19 Update/fix commentary: bookmark-alist, linkd.
;;                  *-default-handler, *-handle-region-default:
;;                    Get bmk record from name only once.
;;                  *-save-new-region-location: Move t inside progn.
;;       2009-08-16 Use prefix bookmarkp where appropriate.
;;       2009-08-15 Improve comments, doc strings.  Rename fns, vars.
;;                  Add :group with prefix bookmarkp.
;;       2009-08-09 Fix doc strings.
;;       2009-08-08 bookmark-set: Update doc string.  Show keys in C-h m.
;;       2009-08-07 *-jump: Fix to jump in same window (thx to Henry Atting).
;;                  *-at-bol/eol' -> line-*-position.
;;       2009-08-01 bookmark-store: Fix for Emacs 20.
;;       2009-07-27 Ensure we start on an empty w3m buffer.  Add: *-w3m-allow-multi-tabs.
;;       2009-07-24 *-bmenu-mode-map: Define some new keys.
;;       2009-07-23 *-bmenu-list: Add path to file in help-echo.
;;       2009-07-19 Fix title underline.  Highlight bookmark if root logged with tramp.
;;                  Add face for sudo.
;;       2009-07-18 Add: filter functions, option for bookmark-bmenu-list.
;;                  Remove toggle region.
;;                  *-bmenu-list-only-files-entries: Add prefix arg to show remote.
;;       2009-07-14 Add a forgotten test.
;;       2009-07-13 Fix errors.  Give pos in msg even if no search.
;;                  *-from-bob/eob: Fixed like old strict.
;;                  Remove *-relocate-region-(method|from-limits).
;;                  Remove unused code in record fns.  Add: *-relocate-region-function.
;;       2009-07-12 Do not pass args to relocation routines.  Remove use of flet.
;;                  Use skip-chars-*ward.  Use forward-line, not beginning-of-line.
;;                  Remove save-excursion around message.  Correct typo f(ree var BMK).
;;       2009-07-11 Fix *-relocate-region-strict.  Rename fns, adjust defcustom.
;;                  Save relocated region after pushing mark.  Add comments.
;;       2009-07-10 New retrieve fn.  Add looking-* fns.
;;       2009-07-08 Simplify record fns.  Add doc strings.  Add: *-save-relocated-position.
;;                  Fix: updating when relocate (wrt new record fns), string closing,
;;                       free vars, parens, names.
;;       2009-07-06 Fix: *-bmenu-list wrt windows, Info colors.
;;       2009-07-04 Rename fns to record, vars, args of retrieve fns.  Big changes, fixes.
;;       2009-07-01 Fix comments.  *-retrieve-region-strict: improve when out of context.
;;       2009-06-30 Fix: free vars, *-retrieve-region, provide (name).
;;       2009-06-29 Fix: w3m handler, file name for non-file, *-simple-retrieve-position.
;;                  Add: *-retrieve-region-strict.
;;       2009-06-28 Add: *-retrieve-region-method-is, *-retrieve-region-lax,
;;                       fns to retrieve regions.
;;                  Use buffer again, not buffer-name.
;;       2009-06-27 Fix wrong-type error no such file.  Renamed faces.  Add: *-prop-set.
;;                  Load gnus at compile time.  Protect tramp-file-name-regexp with boundp.
;;       2009-06-25 Fixes for older Emacs compatibility.
;;       2009-06-24 Improve *-default-handler.
;;                  Add: *-always-save-relocated-position, *-prop-get.
;;       2009-06-23 Use search-regexp, not re-search-regexp.  Add Gnus bmks.  Add doc.
;;                  Fix *-bmenu-list.
;;       2009-06-21 Fix: *-default-handler for Info.  Improve doc strings, commentary.
;;                  Fixes to be compatible with Emacs 20-22.
;;                  Use defcustom for *-list-only-regions-flag.
;;                  *jump: Put prefix arg in interactive spec.  Use buffer-name, not buffer.
;;                  Remove require of Tramp and inline Tramp fns.
;;                  Remove tests for display-(color|mouse)-p.
;;                  w3m-bookmark-(jump|make-record): require w3m.
;;       2009-06-20 Update context strings when relocate.
;;                  Fix: bookmark-get-*: search from point-min.
;;       2009-06-19 Fix: *-make-record-default, *-toggle-use-only-regions, *-default-handler,
;;                       bookmarking Dired.
;;                  Handle 4 positions in *-default-handler.
;;       2009-06-17 Fix: case where some bookmarked text was removed, *-use-region.
;;       2009-06-15 Fix *-region-alist-only, *-get-buffername, *-location,
;;                      non-file (buffer) bookmarks.
;;                  Support w3m similar to Info.
;;       2009-06-14 Fix bookmark+version, region relocation.  Info support.  Error handling.
;;       2009-06-13 Fix: *-list-only-regions, *-region-handler, *-make-record, keymap, faces.
;;                  Put region & info handling in *-default-handler, not separate handlers.
;;                  Merge *-make-record-region to *-make-record-default.
;;                  *-jump now negates *-use-region if prefix arg.  Raise error if bad bmk.
;;       2009-06-12 Add: *-get-endposition, *-region-alist-only-names.
;;                  Add filter to show only region bookmarks.
;;                  Faces for menu list.  Change region color.
;;       2009-06-11 Add: *-region-search-size, *-get-buffername, *-use-region.
;;                  Redefine *-handle-bookmark, *-jump, to fit bookmark-use-region.
;;                  Add condtions to bookmark-make-record.  Support w3m.  Support t command.
;;       2009-06-10 Fix search regexp.  Fix region in Info. Save bookmark if region moves.
;;       2009-06-09 Added: bookmark-make-record(-region), bookmark-region-handler.
;;                  Relocation.
;; 2009/05/25 dadams
;;     Added redefinition of bookmark-get-bookmark-record.
;; 2008/10/16 dadams
;;     bookmark-jump-other-window: Don't define it for Emacs 23+ (not needed).
;; 2008/04/04 dadams
;;     bookmark-jump-other-window: Updated wrt Emacs 22.2.
;; 2007/10/07 dadams
;;     Added: bookmark-completing-read, bookmark-delete, bookmark-insert(-location),
;;            bookmark-jump, bookmark-relocate, bookmark-rename.
;;     bookmark-jump-other-window: Use new bookmark-completing-read.
;; 2007/07/13 dadams
;;     Replaced Emacs version tests to reflect Emacs 22 release.
;; 2006/03/08 dadams
;;     bookmark-jump-other-window: Handle nil arg.
;; 2005/05/17 dadams
;;     Updated to work with Emacs 22.x.
;; 2004/11/20 dadams
;;     Refined to deal with Emacs 21 < 21.3.50 (soon to be 22.x)
;; 2004/10/26 dadams
;;     Different menu-bar command, depending on Emacs version.
;; 2004/09/21 dadams
;;     Only define bookmark-menu-jump-other-window if < Emacs 22.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 3, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Code:

;; You need not load this file.  It contains only documentation.

(provide 'bookmark+-chg)                ; Not used.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; bookmark+-chg.el ends here