Как я могу заставить emacs под окнами автоматически заполнять пути в буферах оболочки с помощью “\\” вместо “/”?

Я использую emacs для работы над Linux, окнами, osx, и все прекрасно кроме одной раздражающей проблемы с буферами оболочки под окнами.

Автоматическое заполнение имен файлов работало бы отлично (лучше, чем стандартные окна), но абсолютно бесполезно, потому что оно генерирует пути с разделителем наклонной черты вправо для каталогов. Это с окнами не работает так, я должен вынудить меня постараться не снабдить вкладками и вводить все в командной строке, или я должен сдаться с emacs и использовать поврежденное командное окно окон (где, например, трудно даже copy'n вставка обоснованно из-за проблем строки разделения).

Существует ли способ сказать emacs использовать "\" вместо "/" для завершения пути для окон?

6
задан 17.03.2011, 13:05

1 ответ

Короткий ответ: Используйте переменную comint-completion-addsuffix.

Более длинный ответ: поиск с помощью Google для "emacs окна завершения оболочки" получил меня на http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html, в котором говорится переменная comint-completion-addsuffix управляет символами завершения. Установка его к недостатки \ и SPACE делает то, что Вы хотите. Можно сделать это с

  1. Настраивать-переменная M-x RET comint-completion-addsuffix RET
  2. выберите Меню Значения
  3. выберите Суффиксную пару
  4. войти \ после суффикса Каталога:
  5. введите пробел после суффикса Файла:
  6. избранное Сохранение для будущих Сессий (или Сохраняют для текущей сессии),

Выполнение, которое добавляет строку

'(comint-completion-addsuffix (quote ("\\" . " ")))

к корректному месту в Вашем ~/.emacs файл.

(Протестированный с Emacs 22.3.)

Обновление:

Я вижу то, что Вы имеете в виду в своем комментарии, что с Emacs 23.3 ведущая обратная косая черта изменяется на наклонную черту. comint-dynamic-complete-filename был поврежден так часть описания except that it won't change parts of the filename already entered in the buffer больше не верно.

Замена 23.3's lisp/comint.el с 22.3's, кажется, работает. Делает замену трех строк того файла, запускающегося в строке 3062:

     (delete-region filename-beg filename-end)
     (if filedir (insert (comint-quote-filename filedir)))
     (insert (comint-quote-filename (directory-file-name completion)))

с этими строками (от 22,3):

     (insert (comint-quote-filename
          (substring (directory-file-name completion)
             (length filenondir))))

и выполнение M-x byte-recompile-directory.

4
ответ дан 07.12.2019, 16:21

Теги

Похожие вопросы