6

Я использую Emacs на Ubuntu 9.04.

У меня есть файл конфигурации emacs в каталоге ~/.emacs.d .

Мой файл Emacs называется .emacs .

У меня есть базовая конфигурация. Однако, когда я запускаю emacs, он никогда не загружает мою конфигурацию, и я должен продолжать делать это вручную, используя, например,

M-X Transient-mark-mode

Мой файл Emacs указан ниже:

;; Emac customization file path
(add-to-list 'load-path "~/emacs.d")

;; Use font lock mode
(global-font-lock-mode t)

;; Highlight cursor line
(global-hl-line-mode t)

;; Highlight selected region
(transient-mark-mode t)

Я хочу добавить в эту конфигурацию вместо добавления записей вручную.

6 ответов6

13

Ваш файл инициализации содержит персональный код EmacsLisp, который вы хотите выполнить при запуске Emacs.

  • Для GnuEmacs это ~/.emacs или _emacs или ~/.emacs.d/init.el
  • Для XEmacs это ~/.xemacs или ~/.xemacs/init.el
5

Ответ Торока Габора - это то, что вы ищете. Я только хочу указать на небольшую опечатку в вашем файле инициализации, это должно быть

(add-to-list 'load-path "~/.emacs.d")
4

Как сказал Тёрёк, возможно, вам нужно переименовать emacs в init.el

Одна вещь, которая на какое-то время сводила меня с ума, это то, что если существует ~/.emacs то emacs не загружает ~/.emacs.d/init.el Поэтому, если у вас есть ~/.emacs либо удалите его и переместите его содержимое в другой файл, либо (load "~/.emacs.d/init.el") внутри ~/.emacs .

2

Однако следует отметить, что только Emacs 22+ загружает ~/.emacs.d/init.el качестве альтернативного файла инициализации для каждого пользователя. В качестве новой, но совместимой с нисходящим компонентом приоритета ~/.emacs . Это организовано в lisp/startup.el .

После запуска переменная user-init-file содержит полный путь к файлу инициализации, например, /home/me/.emacs.elc или C:\Users\Me\.emacs.d\init.el и т.д. Чтобы просмотреть его значение в типе буфера *scratch* (insert user-init-file) за которым следует C-x C-e .

~/.emacs.d/ фактически является стандартным местом для дополнительных файлов для каждого пользователя. Путь определяется переменной Emacs user-emacs-directory . В Windows этот путь зависит от переменной HOME (не USERPROFILE). Например, если для HOME установлено значение C:\ , это будет C:\.emacs.d . Когда я запускаю Emacs переносимо, я использую это поведение, используя пакетный файл, который устанавливает HOME в каталог на жестком диске.

В этом каталоге есть не только файлы Lisp! Например, функция автосохранения по умолчанию сохраняет любой отредактированный файл в ~/.emacs.d/auto-save-list/ (см. Переменную auto-save-list-file-prefix ). Это вдохновило меня на сохранение резервных копий файлов там же:

(defvar --user-backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --user-backup-directory))
    (make-directory --user-backup-directory t))
(setq backup-directory-alist `(("." . ,--user-backup-directory)))
(setq make-backup-files t)

До Emacs 22 у меня также был каталог ~/elisp для моих личных файлов Lisp. Сейчас пользуюсь

(pushnew (expand-file-name "~/.emacs.d/elisp") load-path)

как советовано здесь.

Так что ~/.emacs.d на самом деле довольно полезен, хотя я нахожу идею ~/.emacs.d/init.el сомнительной. ~/.emacs.d/ является стандартным местом для дополнительных файлов для каждого пользователя. Разве не имеет смысла, когда Emacs читает ~/.emacs.d/init.el дополнение к ~/.emacs.el?

1

Еще одна вещь, которую стоит попробовать, если то, что сказали все остальные, не работает для вас, - это разбить файл и каталог .emacs и .emacs.d.

По некоторым причинам мои .emacs и .emacs.d принадлежали пользователю root, и emacs не загрузил бы его, если бы я не делал sudo emacs .

Простой sudo chown `whoami` .emacs сделал это.

0

У меня тоже была эта проблема при переходе в контейнер.

Оказалось, что среда не была настроена должным образом, и переменные USER и HOME прежнему указывали на пользователя root, хотя я вошел в систему как мой рабочий пользователь.

Выполнение su - <username> исправило это, потому что теперь среда была инициализирована, как и ожидалось.

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