emacs - 在 Emacs Lisp 中屏蔽完成读取的输出

标签 emacs elisp ido

我正在使用文件系统路径列表进行完成读取,例如。 ("~/parent/child""/parent/child").

我想屏蔽completing-read/ido-completing-read的输出,以便它只显示child,但仍会返回完整路径。

这可能吗?

最诚挚的问候,老鼠

最佳答案

答案:不,这是不可能的,因为完成读取不会考虑字符串的任何语义。

这是可能的,但需要多次调用完成列表。

这个函数的想法是传递一个字符串列表,它可以帮助您从该列表中选择一个字符串。

Completing-list 无法控制字符串包含的内容。它不关心字符串的语义,就像路径一样。它只能看到字符串列表。

因此,为了达到您想要的效果,您可以使用当前目录中的文件列表调用它一次,如果您选择一个目录,首先将其更改为该目录,然后使用该目录中的文件列表等。

如果您想让 pwd 与初始值相同,那么当它返回时,您将再次更改为原始目录。

(cd (concat default-directory
            (completing-read "> " (directory-files default-directory ))))

关于emacs - 在 Emacs Lisp 中屏蔽完成读取的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698924/

相关文章:

emacs - 使用 ido 的组织重新文件,不使用 ido 作为完成引擎

emacs - *几乎*总是启用某些 emacs 模式或功能

emacs - 在组织模式下,如何降级一个区域中的所有标题?

emacs - 将执行属性添加到 elisp 中的文件

emacs - 在 Elisp 中将整数转换为 float

emacs - 如何使 Emacs 始终在左侧窗口中打开 .c 文件而在右侧窗口中打开 .h 文件?

emacs - 最新的CEDET版本无法加载语义包

emacs - 在 emacs 中,如何在不运行保存 Hook 的情况下进行保存?

emacs - 使用 ido 插入文件名