Отключить режим ido для определенных команд?
Я использую ido-mode в течение нескольких месяцев, когда ido -where включен, и в целом доволен им. Есть одна вещь, которую я хотел бы изменить, хотя. Когда я набираю Cu Mx shell, чтобы создать новый буфер оболочки с определенным именем, ido предлагает мне список завершения всех моих открытых буферов. Если я выберу один, в этом буфере запускается новая оболочка, и она переводится в режим оболочки, независимо от того, что она содержит. Трудно представить полезный вариант использования для этого.
Есть ли способ отключить режим ido только для команды оболочки? (Конечно, как и любые другие подобные команды, с которыми я могу столкнуться в будущем).
1 ответ
Хех, оказывается, вы получите тот же выбор завершения, независимо от того, есть ли у вас ido-everywhere
включен.
Там нет встроенного способа делать то, что вы хотите. ido-mode
только предоставляет крючки для вас, чтобы иметь возможность переопределить независимо от того, find-file
поведение переходит ido
или нет. read-buffer
в настоящее время всегда отменяется ido-everywhere
,
К счастью, маленький Emacs-лисп может получить то, что вы хотите:
(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)