Почему W32 Emacs вставляет "/ Application Data / Application Data /" в путь к файлу, начинающийся с ~ /, когда я использую Cx Cf? - PullRequest
1 голос
/ 02 сентября 2010

Я только что установил Emacs Speaks Statistics, когда эта ошибка начала появляться. Деинсталляция не исправила это.

Когда я использую C-x C-f, я могу нормально перемещаться, но когда я фактически нажимаю enter, кажется, что Emacs вставляет «/ Application Data / Application Data /» после «~» во все пути, например если я перейду к:

c: / Documents and Settings / admin / Мои документы / sig.html

И нажмите Enter, я открываю:

~ / Данные приложения / Данные приложения / Мои документы / sig.html

Есть идеи, какие переменные я могу изменить, чтобы это исправить?

Ответы [ 4 ]

0 голосов
/ 27 июня 2013

Вы можете изменить это поведение, используя M-x setenv.Например:

M-x setenv <RET> HOME <RET> c:/Documents and Settings/admin

Если это работает, вы можете добавить

(setenv "HOME" "c:/Documents and Settings/admin")

в файл инициализации для более постоянного решения.

0 голосов
/ 30 сентября 2010

Похоже, что это сбой между текущими и кэшированными значениями, связанными с $ HOME. Проблема в том, что шаблон используется для соответствия домашнему каталогу больше не то же самое.

В какой-то момент (установить имя файла (Файл-имя-сокращайте (развернуть имя файла имя файла))) портит имя.

Вот обходной путь, который я создал и добавил в .emacs, _emacs, .emacs.el или Приложение Data.emacs.d \ init.el чтобы вернуть сокращенный home-dir в форму:

Не забывайте: не не байт-компилируйте файл инициализации, иначе вы не синхронизированы.

;;; files.el mistakenly initializes abbreviated-home-dir just once
;;; not realizing that its value should change when HOME is redefined.
;;; Thus abbreviated-home-dir is "^c:/Documents and settings/USER/Application Data\\(/\\|\\'\\)"
;;; when it should, now, be "^c:/Documents and settings/USER\\(/\\|\\'\\)"
;;; Then when you try to open "^c:/Documents and settings/USER/Application Data/"
;;; The name is abbreviated to "~", but expanded back to "c:/Documents and settings/USER/"
;;; losing part of the name ("Application Data/")
;;; 
;;; Rather than explicitly re-initialize abbreviated-home-dir, it should be set to nil
;;; (setq abbreviated-home-dir "$foo") ;; Impossible pattern match.
;;; This causes the filepath to never match, and ~ is never abbreviated.
;;;
;;; We _could_ explicitly initialize it:
;;; (setq abbreviated-home-dir "^c:/Documents and settings/badgerb\\(/\\|\\'\\)")
;;; But this is a bad idea.  It is _highly_ dependent on the workings of files.el, and it
;;; seems better to me to just clear the value and let files.el re-initialize it.
(setq abbreviated-home-dir nil)
0 голосов
/ 29 октября 2011

Emacs изменил местоположение дома по умолчанию в последних выпусках - новое значение по умолчанию - это то, что вы видите. Явно установите env var HOME на то, что вы хотите, и все будет в порядке.

0 голосов
/ 03 сентября 2010

Проверьте вашу переменную HOME.Может быть, он указывает на c:/Documents and Settings/admin/Application Data

Функция, которая расширяет имена файлов: expand-file-name

...