4

См. Как я могу получить emacs под Windows для автозаполнения путей в буферах оболочки, используя "\" вместо "/"?

Я использую Emacs на Windows 7, при вызове оболочки Mx, Emacs открывает DOS-Shell. Подсказка отображает текущий каталог, используя обратную косую черту "\".

Когда я набираю путь, говорю «C:\Te» и нажимаю [TAB] для завершения, emacs завершает путь к «C:/Temp/». Это нормально для работы внутри emacs, но не для вызова команд DOS или выполнения двоичных или пакетных файлов в DOS.

Пример: Команда C:/Temp/a.bat не выполняется. C:\Temp\a.bat выполняется нормально.

Ситуация в emacs 24. * кажется еще хуже. Я думал, что буду опытным пользователем emacs, но не смог найти способ применить вышеупомянутый патч к emacs 24.*. Режим коминтов, похоже, сильно изменился.

2 ответа2

1

Попробуйте это взломать. Кажется, работает в Emacs 24.5:

(defun win-file-name-completion-advice (res)
  (if (stringp res) (replace-regexp-in-string "/" "\\\\" res) res))
(advice-add 'comint-completion-file-name-table
            :filter-return #'win-file-name-completion-advice)

(defun win-command-completion-advice ()
  (let ((filename (comint-match-partial-filename)))
    (and filename (not (string-match "\\\\" filename)))))
(advice-add 'shell-command-completion
            :before-while #'win-command-completion-advice)
-1

Тема 258683 описывает соответствующее решение:

  • в файле ~\.emacs
  • добавить строку (setq comint-completion-addsuffix (quote ("\\" . " ")))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .