Emacs lisp - 自动填充书签名称

Tre*_*ent 5 emacs bookmarks elisp

我是elisp的新手.http://www.gnu.org/s/emacs/manual/html_node/elisp/Interactive-Codes.html#Interactive-Codes列出交互式参数的"代码字符",AFAIK在提示时修改输入机制的行为用户输入(例如:如果您指定输入是存在的文件名,emacs的自动完成功能将查找存在的文件名).

我试图找到一个已经存在的书签名称的代码 - 即:Emacs会提示用户输入一个书签名称,并在压片Emacs会显示可能的书签名称的完成.

这样的代码存在吗?

Tho*_*mas 1

用于completing-read此。您可以编写一个函数来提示用户输入书签,如下所示:

(defun my-function ()
  (interactive)
  (let ((bookmark (completing-read "Bookmark: " (bookmark-all-names))))
    ...))
Run Code Online (Sandbox Code Playgroud)

如果您希望将提示作为其中的一部分interactive(以便结果将自动绑定到函数的参数),您可以使用以下替代方案:

(defun my-function (bookmark)
  (interactive (list (completing-read "Bookmark: " (bookmark-all-names))))
  ...)
Run Code Online (Sandbox Code Playgroud)

为了让 Emacs 找到该函数,bookmark-all-names您还必须将以下行添加到您的 .emacs 文件中:

(require 'bookmark)
Run Code Online (Sandbox Code Playgroud)