Я решил переписать свой .emacs с нуля, и я хочу установить что-то, что это является модульным для предотвращения страшного 1k + файл LoC init.el...
Я думаю, что существуют некоторые основные опасения, что каждая конфигурация должна обратиться:
В то время как я все еще связываю для продумывания структуры, я ищу некоторые указатели о том, как достигнуть этого.
Я посмотрел на некоторый .emacs на GitHub и таком, и, кажется, существуют подходы deifferent и никакой предпочтительный способ пойти с этим, которое немного сбивает с толку.
Я интересовался бы чтением некоторых идей относительно того, как структурировать такую установку, и особенно некоторые связали код elisp.
редактирование: нагнал с вещами и не имели большого количества времени для проигрывания с этим все же. Будет испытывать предложенные методы через несколько дней и видеть то, что является лучшим, между тем спасибо за все рекомендации!
edit2: я использовал грамотный init файл с org-режимом, и это является абсолютно потрясающим!
Я 'm еще не установленный на механизме удельной нагрузки, я использовал этот код, для рекурсивной загрузки моего elisp каталога, затем требую или независимо от того, что в инструкциях по установке говорится.
(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
(let* ((my-lisp-dir "~/.emacs.d/elisp/")
(default-directory my-lisp-dir))
(setq load-path (cons my-lisp-dir load-path))
(normal-top-level-add-subdirs-to-load-path)))
Я все еще должен полировать это, возможно, с помощью автозагрузки, и некоторый байт - перекомпилировал если измененные приемы; хотел бы услышать предложения на этом.
загрузка моего .emacs файла ~/.emacs.d/init. el, которая определяет следующие функции, написанные сначала для XEmacs, но достаточно хорошо работающие в Emacs в наши дни:
(defconst user-init-dir
(cond ((boundp 'user-emacs-directory)
user-emacs-directory)
((boundp 'user-init-directory)
user-init-directory)
(t "~/.emacs.d/")))
(defun load-user-file (file)
(interactive "f")
"Load a file in current user's configuration directory"
(load-file (expand-file-name file user-init-dir)))
Затем идет остальной файл и загружает множество отдельных файлов с такими формами:
(load-user-file "personal.el")
Мой текущий набор файлов следующий:
Некоторые из них, как следует из имен, гораздо более специфичны в намерениях, чем другие. Чем более мелкозернистые файлы, тем легче отключить кластер форм при переустановке пакета или библиотеки. Это особенно полезно при "переезде" в новую систему, когда вы перетаскиваете свои конфигурационные файлы, но ещё не установили все поддерживающие пакеты.
Взгляд на превосходное стартовый комплект , который очень красиво организован, а также включает в себя пакеты ELPA. Я использовал структуру как вдохновение для моей намного простых настроек.
То, что я сделал для каждой вещи, X, что я мог бы захотеть использовать, создать файл, называемый Configure-X, и поместить соответствующую
в .emcs. Отказ Эта функция затем может быть удалена, комментируя одну строку.
Например, чтобы выбрать простейший (если наиболее плохо называется), у меня есть настраиваемая картинка-артистка-режима. Этот файл очень прост:
(global-set-key (kbd "C-M-P")
'picture-mode)
(provide 'configure-picture-and-artist-mode)
и в .emacs:
(require 'configure-picture-and-artist-mode)
После сортировки этого у меня ничего нет в моих .emacs, за исключением большого списка , требуется
и несколько изменений в Путь нагрузки
, данный пакет может быть довольно легко удален, и вся конфигурация для каждого пакета находится в одном месте.
(У меня также есть файл Catch-All .el, который я использую для хранения вещей, которые не имеют никакого очевидного дома (мои глобальные ключевые ключи, функции помощника и т. Д.), Но все же идеально хочется остаться вне. Emacs. Этот бит не очень модульный, и может ввести неявные зависимости от пакетов, которые моя схема должна легко произносить бесчисленным, но на практике это не имеет большого значения.)
Что не так с использованием LOAD-файл
?
Некоторые дополнительные биты, которые вы можете найти полезными, включают
файл - P
Подстановочные знаки
Использование CH F <Функция>
Чтобы получить помощь, и вы можете найти Введение в программирование в Emacs Lisp Полезно (или Скачать PDF ))
Вы можете сделать (require 'foo)
и это загрузит первый "foo.el" elisp найденный в пути загрузки, или (require 'foo "/home/user/experimental/foo.el")
(require 'foo "/home/user/experimental/foo.el") для чего-то находящегося за пределами пути загрузки. Он сообщит об ошибке, если "foo.el" не содержит выражения (предоставить 'foo')
. В извращенной ситуации Вы могли бы сделать (потребовать 'foo "bar.el")
, и это работало бы до тех пор, пока в "bar.el" есть (предоставить 'foo)
выражение.
Чтобы разделить настраивания в разные файлы, вы можете использовать initsplit.el . Кроме того, у Wiki есть страница на модульной макете .emcs .