【问题标题】:Hook for tab completion in emacs (interactive) file input?在 emacs(交互式)文件输入中为制表符完成挂钩?
【发布时间】:2011-08-22 07:10:17
【问题描述】:

在 emacs 中,以下将定义一个函数,当以交互方式调用该函数时,将向用户询问文件名:

(defun do-something (filename )
  (interactive "FFilename: ")
  ...
  )

当用户输入文件名时,他们可以使用制表符补全等。有谁知道该文件输入代码中是否有任何挂钩?特别是,我想修改我的 find-file 命令,以便 Windows 符号链接(显示为“foo.lnk”)在你点击 tab 时自动跟随到它们的目标。

我目前正在使用w32-symlinks,这意味着至少如果我在链接上按回车,那么它将在 diredit 中打开目标。但我更希望能够通过它对我正在查看的文件进行制表符补全,而不是打开 diredit 然后执行第二个 find-file 命令。

【问题讨论】:

    标签: emacs elisp symlink


    【解决方案1】:

    在重新发明轮子之前,也许将 (ido-mode t) 放入您的 .emacs 文件中,看看它是否符合您的要求。

    我不使用 windows,但我使用 ido,它比默认的要好得多。

    【讨论】:

    • 趣味模式;我将不得不玩它。不幸的是,在玩了一段时间之后,在我看来它并没有解决问题——即,它不理解 windows syminks。
    • 其实可以用 Ido-Make-Dir-List-Hook 或 Ido-Make-File_List-Hook 做一些事情。如果我有任何工作,我会告诉你的。
    【解决方案2】:

    一般来说,您的问题的答案是在interactive 规范中直接使用completing-read——不要使用字符串参数。 IOW,组成你自己的完成集。

    或者您可以将read-file-name-function 绑定到您自己的函数,该函数执行文件名完成(例如,包含标准行为)。请参阅标准库minibuffer.el

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2016-02-22
      • 1970-01-01
      相关资源
      最近更新 更多