Изменить mode-compile.el для обработки путей MS-Windows со встроенными пробелами? - PullRequest
1 голос
/ 04 июня 2009

Может кто-нибудь предложить модификацию mode-compile.el, которая улучшит его работу в Windows? Моя конкретная проблема заключается в обработке имен путей, которые содержат пробелы. Я работаю над кодом на Ruby, используя "GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600) от 2008-03-26 на RELEASE" с mode-compile.el версия: 2.29 (Последнее изменение: 2006/12 / 01 13:52:47)

Командная строка, генерируемая mode-compile.el для компиляции (запуска) моего буфера a.rb, выглядит так:

c: / ruby ​​/ bin \ ruby.exe -w c: / Документы и настройки / William / Мои документы / src / a.rb

, который генерирует эту ошибку:

c: / ruby ​​/ bin \ ruby.exe: нет такого файла или каталога - c: / Documents (LoadError)

Это прекрасно работает:

c: / ruby ​​/ bin \ ruby.exe -w "c: / Документы и настройки / William / Мои документы / src / a.rb"

В качестве обходного пути я могу просто переместить свое дерево каталогов, чтобы в пути не было встроенных пробелов. Глядя на код в mode-compile.el, он, кажется, уже существует функция для добавления кавычек, однако, поскольку я НЕ опытен в emacs-lisp, возможно, это на самом деле делает что-то совершенно другое (например, просто добавление почти пустого) пара двойных кавычек):

(если to-compile-fname (если mc - build-op-args (mc - build-output-args to-compile-fname) (concat "" to-compile-fname) ) ""))))

mode-compile.el приходит отсюда: http://perso.tls.cena.fr/boubaker/distrib/mode-compile.el

Заранее спасибо!

William

1 Ответ

0 голосов
/ 04 июня 2009

У меня нет времени, чтобы проверить это на самом деле, но мне кажется, что функцию mc--shell-compile необходимо обновить. Имя файла буфера извлекается следующими строками:

     (shfile  (or mc--remote-pathname (buffer-file-name)
                  (error "Compilation abort: Buffer %s has no filename"
                         (buffer-name))))

исправление должно заключаться в цитировании buffer-file-name:

     (shfile  (or mc--remote-pathname (shell-quote-argument buffer-file-name)
                  (error "Compilation abort: Buffer %s has no filename"
                         (buffer-name))))

Можете ли вы попробовать и сообщить, пожалуйста?

Cheers, Daniel

...