作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 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/
我是一名优秀的程序员,十分优秀!