Я использую Emacs на Windows XP и каждый раз, когда я ввожу "~ /" он автоматически заменяет это каталогом в моем случае его "C:/Documents и Настройки//Данные приложения". Есть ли какой-либо путь, которым я могу заставить это указывать к другому каталогу как, скажем, мой каталог проектов на Рабочем столе? Каждый раз, когда я должен сделать новый файл там, я имею к C-x C-f + полный путь, и хотя заполнение клавишей Tab делает его быстрее, чем это обычно было бы, будет хорошо связать тот один каталог с чем-то как "~ /" для легкого доступа. Есть ли какой-либо путь, который мог быть сделан?
Все, что необходимо сделать, должно установить %HOME%
переменная окружения.
Это может быть сделано путем движения в:
запустите-> настройки-> панель управления-> система
Нажмите на вкладку "Дополнительно". Внизу кнопка: "Переменные окружения".
Создайте новую названную переменную HOME
и помещенный путь Вы хотите там.
Так как большинство Windows-программ не заботится об этой переменной, она вряд ли будет влиять на что-либо еще для Вас.
Это может также быть сделано путем редактирования ключей реестра для emacs. Вот некоторая информация о переменных реестра: Ms Windows Registry.
~
кажется, обрабатывается expand-file-name
, и это не упоминает способа измениться, как это расширено. Но это действительно использует HOME
переменная среды. Вы могли указать новое значение для HOME
, но это могло бы перепутать другие вещи то использование HOME
как место, чтобы хранить файлы (customize
, и т.д. это могло бы хотеть читать из или записать в файлы под HOME
).
Как эксперимент, я описал некоторый совет find-file
это временно изменяет значение HOME
. Идея состоит в том, чтобы минимизировать количество времени, где альтернативное значение активно.
(defvar fake-HOME-value "/var/tmp"
"An alternate value to use for the HOME environment variable
while the 'fake-HOME' around advice is active.")
(defadvice find-file (around fake-HOME)
"Temporarily replace the HOME environment variable with
the value from 'fake-HOME-value'."
(let ((original-HOME-value (getenv "HOME")))
(unwind-protect
(progn
(setenv "HOME" fake-HOME-value)
ad-do-it)
(setenv "HOME" original-HOME-value))))
(defun disable-fake-HOME ()
"Disable the fake-HOME advice for find-file."
(interactive)
(progn
(ad-disable-advice 'find-file 'around 'fake-HOME)
(ad-update 'find-file)))
(defun enable-fake-HOME ()
"Enable the fake-HOME advice for find-file."
(interactive)
(progn
(ad-enable-advice 'find-file 'around 'fake-HOME)
(if (ad-is-active 'find-file)
(ad-update 'find-file)
(ad-activate 'find-file))))
(enable-fake-HOME)
;(disable-fake-HOME)
Вставьте его Ваш .emacs
(или .el
файл, и (load-file "/path/to/your.el")
). Я не могу протестировать его в Windows, но единственной вещью, которая является конкретной платформой, является использование HOME
, но я думаю, что Emacs преобразовывает эквивалентный Windows (комбинация нескольких переменных среды?) к HOME
.
~
очень старый и хорошо установленный синоним для 'корневого каталога пользователя' и что логика, вероятно, прокладывается под землей глубоко внутри emacs и вряд ли измениться, если Вы не готовы восстановить его из источника после нахождения соответствующего кода и изменения его. С другой стороны, Вы могли, вероятно, установить свой ярлык для запуска emacs для запуска в выбранном каталоге, позволив Вам сохранить и загрузить файлы, не указывая путь. Вероятно.