Как я могу переопределить файл режима по умолчанию в Emacs?
Я хотел бы переопределить Emacs по умолчанию cc-mode.el
с другим файлом. В моем .emacs
У меня есть следующая строка:
(add-to-list 'load-path "/usr/home/smooth/emacs" t)
Это работает правильно для загрузки локальных файлов конфигурации Emacs. Например
(require 'go-mode-autoloads)
работает, чтобы загрузить go-mode.el
из вышеуказанного каталога.
Я пытался разместить необходимые cc-mode.el
файл в указанный выше каталог в надежде, что он переопределит Emacs по умолчанию c-mode
, Тем не менее, он не загружал cc-mode.el
файл, который я положил в /usr/home/smooth/emacs
, Вместо этого он продолжал использовать по умолчанию.
Как я могу заставить Emacs использовать мой cc-mode.el
файл, а не по умолчанию? Я уже много раз искал в Google и пробовал Emacs Wiki, но не смог найти нужную страницу.
В качестве альтернативы, как я могу настроить Emacs на использование другого файла для c-mode
чем система по умолчанию? Я не против переименования текущего cc-mode.el
на другое имя.
Моя версия Emacs - 25.2.
2 ответа
Глядя на Emacs Wiki, я заметил, что в конце "пути загрузки" не было "t", поэтому я удалил его, и он начал работать. "Т" выше может быть источником проблемы. Что очень странно, так это то, что неправильное поведение в cc-mode, которое я пытался обойти, также исчезло. Вышеупомянутая буква "t" могла вызвать какие-то другие ошибки. Смотрите emacswiki.org/emacs/LoadPath для вики-страницы Emacs.
Я нашел эту страницу: gnu.org/software/emacs/manual/html_node/elisp/…. Обычно он говорит, что если элемент добавлен, он добавляется в начало символа, но если необязательный аргумент append не равен nil, он добавляется в конце. Кажется, я добавил в конце. Я не уверен, почему это так ужасно сломало cc-mode, так как он работал, пока я не переключился на emacs 25.2 несколько дней назад. Теперь это работает хорошо.
Ты можешь использовать load-library
(или же load
) для безоговорочной загрузки библиотеки, даже если предоставляемые ей функции уже предоставлены (например, другой библиотекой или другой версией той же библиотеки, которая уже была загружена).
Просто поместите библиотеку, которую вы хотите загрузить, в каталог, который находится в начале вашего load-path
а затем позвоните load-library
,
[Обратите внимание, однако, что загрузка (или перезагрузка) библиотеки НЕ отменяет defvars и defcustoms, которые, возможно, уже были оценены. Например, если библиотека foo.el
имеет специальную настройку для foo-option
и он был загружен, а затем вы загружаете свою собственную версию foo.el
который имеет такой defcustom, но с другим значением по умолчанию, ваш будет проигнорирован. Это часть поведения defvar
а также defcustom
.]