书签+使用临时文件,尽管已经要求特定文件

问题描述 投票:4回答:3

键入C-x r l后,我得到一个名为*Bookmark List*的缓冲区。在这个缓冲区中我看到:

Bookmark file:
/tmp/bmkp-temp/19236bkt

如果我打开帮助(即按h),我看到:

Bookmark file:  /tmp/bmkp-temp-19236bkt
Sorted:         
Filtering:      none
Marked:         0
Omitted:        0
Autosave bookmarks: no
Autosave list display:  yes

即使我在.emacs文件中有以下内容:

(setq bookmark-file "~/.emacs.d/bookmarks")
(setq bookmark-default-file "~/.emacs.d/bookmarks")
(setq bmkp-default-bookmark-file "~/.emacs.d/bookmarks")
(setq bmkp-last-as-first-bookmark-file nil)

为什么它使用与我指定的书签文件不同的书签文件?

我还注意到当我加载Emacs时会发生以下情况:

Emptying bookmark file `/tmp/bmkp-temp-23808OMn'...
Saving file /tmp/bmkp-temp-23808OMn...
Wrote /tmp/bmkp-temp-23808OMn
Emptying bookmark file `/tmp/bmkp-temp-23808OMn'...done
...
Helm completion enabled
Emptying bookmark file `/tmp/bmkp-temp-23808bWt'...
Saving file /tmp/bmkp-temp-23808bWt...
Wrote /tmp/bmkp-temp-23808bWt
Emptying bookmark file `/tmp/bmkp-temp-23808bWt'...done
...

Emacs疯狂删除临时书签文件。 ?

emacs bookmarks
3个回答
1
投票

也许你试图使用“书签文件书签”?或者无论如何,意外地击中了C-x p x

据称这些在EmacsWiki: Bookmark Plus / Bookmark-File Bookmarks,他们说,“bmkp-set-bookmark-file-bookmark,绑定到C-x p x”。对于我的Emacs,这不是真的。

通过输入C-x p C-h,我可以检查以C-x p开头的键绑定。我发现

  • C-x p xbmkp-toggle-autotemp-on-set绑定,并且
  • C-x p ybmkp-set-bookmark-file-bookmark绑定。

然后,链接应该说C-x p y而不是。


1
投票

它看起来像某个地方(例如检查你的.emacs文件)已打开bmkp-temporary-bookmarking-mode。启用该模式后,您创建的任何书签都只适用于当前会话 - 它们不会保存到您的书签文件中。

这意味着您的书签文件位置设置将被忽略。 (注意,顺便说一句,bmkp-default-bookmark-file是一个函数,而不是变量 - 它不是你设置的东西。而且你不需要所有这些书签文件设置;有些是冗余的:来自旧版本的Emacs书签的旧名称。)

我不知道你为什么要获得多个临时书签文件创建和保存。你没有提供完整的食谱。你应该只得到一个。这就是我在*Messages*这方面所看到的,例如:

  Emptying bookmark file `c:/DOCUME~1/me/LOCALS~1/Temp/bmkp-temp-5348su1'...
  Saving file c:/Documents and Settings/me/Local Settings/Temp/bmkp-temp-5348su1...
  Wrote c:/Documents and Settings/me/Local Settings/Temp/bmkp-temp-5348su1
  Emptying bookmark file `c:/DOCUME~1/me/LOCALS~1/Temp/bmkp-temp-5348su1'...done

你似乎还有很多事情要发生(Helm等)。在尝试理解或调试问题时,有助于尽可能缩小范围。谁能说出这里可能涉及的其他互动?

所有这些说,我的建议是不要开始使用临时书签模式。在你非常熟悉Bookmark +之前,我不建议你使用它。您可以在不使用此模式的情况下使用临时书签。

这是关于使用临时书签的文档:http://www.emacswiki.org/cgi-bin/wiki/BookmarkPlus#toc55

最后,正如Stefan建议的那样,请通过电子邮件跟进。详细调试/讨论事情要容易得多。

Thx - 德鲁


更新2019-04-21:

我想可能发生的事情是你在启用bmkp-temporary-bookmarking-mode的情况下退出Emacs。尽管Bookmark +(正确)不保存临时书签文件,但它并未阻止bmkp-last-as-first-bookmark-file的记录被更新为指向临时文件。在你的下一个Emacs会话中,由于bmkp-last-as-first-bookmark-file而加载了临时文件(如果它仍然存在)。

现在应该没问题。启用bmkp-temporary-bookmarking-mode现在将bmkp-last-as-first-bookmark-file重置为nil,因此如果退出时仍然启用临时模式,那么当您在新会话中加载书签文件时,读取的文件是bookmark-default-file的值。 (bookmark-default-file的值永远不会更改,除非您的自定义。)


0
投票

这是一个很老的问题,但由于我遇到了同样的问题而其他答案对我没有帮助,我会发布我的解决方案:

我正在使用desktop.el中的桌面文件,并在桌面文件中设置了临时模式!从我的所有桌面文件中删除该设置修复了该问题。

这可能很方便:

find ~ -name .emacs.desktop -print0 | xargs -0 grep -l bmkp-temporary-bookmarking-mode
© www.soinside.com 2019 - 2024. All rights reserved.