By default, Bookmark+ saves bookmarks in such a way that you can have multiple bookmarks with the same bookmark name, but with different data. Whether this happens is controlled by option bmkp-propertize-bookmark-names-flag
.
(Being able to have such bookmarks is handy for autofile bookmarks, that is, bookmarks whose names are automatically the same as the targeted file names, without the directory portion of the file name.)
For example, instead of a bookmark having a print (text) value like this in your bookmarks file:
("my-directory"
(end-position . 1)
(time 23761 39066 173375 0)
(visits . 5)
(tags "Directory")
(filename . "z:/usr/pooba/foobear/")
(position . 1)
(created 23659 36406 596255 0))
It will have a print value like this, which records the full bookmark - all of the data - as a property on the string bookmark name:
#1=(#("my-directory" 0 13 (bmkp-full-record #1#))
(end-position . 1)
(time 23761 39066 173375 0)
(visits . 5)
(tags "Directory")
(filename . "z:/usr/pooba/foobear/")
(position . 1)
(created 23659 36406 596255 0))
Somehow your saved bookmark list has gotten unreadable syntax due to improper circular references. Somewhere (perhaps in more than one place) you now have a #
character that does not introduce a readable expression.
Dunno what caused that, but the most likely culprit was going back and forth between using Bookmark+ and using vanilla Emacs. See the Compatibility section of the Bookmark+ doc, where it says this:
Bookmark+ is generally compatible with Gnu Emacs versions 20 and later.
You can use bookmarks with Bookmark+ regardless of whether they were
created using Bookmark+ or vanilla Emacs (i.e., library bookmark.el
).
But for best results, if you have bookmarks that you created using
Bookmark+ then use Bookmark+, not vanilla Emacs, to access them. This
section provides details.
Set user option bmkp-propertize-bookmark-names-flag
, depending on
your usage scenario:
Set it to nil
if you will often be going back and forth between
using Bookmark+ and using vanilla Emacs. (Do this also if you use
Emacs 20.) Set it to non-nil
if you instead always use only
Bookmark+ (with Emacs 21 or later), or you use vanilla Emacs only to
jump to bookmarks but never to update or create bookmarks.
This is VERY IMPORTANT. You can lose data if you do not respect it.
And this, soon after that passage:
Vanilla Emacs (21 and later) has no problem reading your bookmark file if it contains such circular structures. But if you then use it to save the file again, the Lisp code it writes has invalid Lisp read
syntax (because it does not remove the circularity but it also does not bind print-circle
to non-nil
).
If that happens, the result is a bookmark file that is unreadable. It cannot be loaded into either vanilla Emacs or Bookmark+. If you do not have an uncorrupted backup version of the file to revert to, then you will need to edit it by hand to clean it up.
So do not let that happen to you! For best results use only Bookmark+ to access bookmarks created using Bookmark+.
If you must use vanilla Emacs with your bookmarks, then make sure they are not saved by Bookmark+ with the option non-nil
: Using Bookmark+, set the option to nil
and then save the file.
You said "Until recently I used bookmark+...". If the intention is to use vanilla Emacs after having saved bookmarks using Bookmark+, set bmkp-propertize-bookmark-names-flag
to nil
and save your bookmarks, to get a bookmark file with no propertized bookmark names, before switching to vanilla Emacs.
What you need to do now, regardless of whether you want to use vanilla Emacs or Bookmark+:
AFTER FIRST BACKING IT UP, edit your bookmark file by hand, to change any occurrences such as #("<BOOKMARK-NAME>" 0 MM (bmkp-full-record #N#))
to just "<BOOKMARK-NAME>"
and remove any #N=
, where N and MM are integers.
But first set option bmkp-propertize-bookmark-names-flag
to nil
, to make things simpler for the time being. (If you don't need to have multiple bookmarks with the same name then you can just leave as nil
.)
Once you've cleaned up your bookmark file, back it up. And thereafter back it up occasionally. (If you had saved a backup recently then you would not now need to painfully edit it to fix the mess-up.)
If you have trouble when trying to follow these instructions, post here relevant parts of your bookmark file (alter or redact any personal info, of course), or follow up by email (see the bookmark+.el
file header).