gpt4 book ai didi

emacs - 禁用特定命令的 ido 模式?

转载 作者:行者123 更新时间:2023-12-04 12:24:23 25 4
gpt4 key购买 nike

我已经使用 ido-mode 几个月了,并且 ido-everywhere 已打开,而且总体上对它非常满意。不过,有一件事我希望我能改变。当我键入 C-u M-x shell 以创建具有特定名称的新 shell 缓冲区时,ido 为我提供了所有打开缓冲区的完成列表。如果我选择一个,则在该缓冲区中启动一个新的 shell 并进入 shell 模式,无论它包含什么。很难想象一个有用的用例。

有没有办法只为 shell 命令停用 ido 模式? (当然,还有我将来可能会偶然发现的任何其他类似命令。)

最佳答案

嘿,事实证明,无论您是否拥有 ido-everywhere,您都会得到相同的完成选择。启用。

没有内置的方法可以做你想做的事。 ido-mode仅提供 Hook 让您能够覆盖 find-file行为被 ido 接管或不。 read-buffer当前总是被 ido-everywhere 覆盖.

幸运的是,一点 Emacs lisp 可以得到你想要的:

(put 'shell 'ido 'ignore)
(defadvice ido-read-buffer (around ido-read-buffer-possibly-ignore activate)
"Check to see if use wanted to avoid using ido"
(if (eq (get this-command 'ido) 'ignore)
(let ((read-buffer-function nil))
(run-hook-with-args 'ido-before-fallback-functions 'read-buffer)
(setq ad-return-value (apply 'read-buffer (ad-get-args 0))))
ad-do-it))

对于任何其他您不希望遵循 ido-everywhere 的命令只需在 .emacs 中添加一个新表达式即可自定义用于缓冲区选择:
(put 'other-command-i-want-untouched 'ido 'ignore)

关于emacs - 禁用特定命令的 ido 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com