Подтвердить что ты не робот

Как включить неглобальный второстепенный режим по умолчанию, при запуске emacs?

Я хочу включить rainbow-mode каждый раз, когда я запускаю emacs, вместо того, чтобы использовать M-x rainbow-mode.

Я думаю, есть некоторая команда, которую я вложил в файл .emacs.

Я пробовал все следующие, но никто из них не работал:

(require 'rainbow-mode)   

(rainbow-mode initialize)

(global-rainbow-mode)

Как правило, как автоматически загружать любой режим/пакет при запуске?

4b9b3361

Ответ 1

rainbow-mode не является глобальным второстепенным режимом, поэтому его необходимо включить для каждого буфера.

Я использую его только для CSS, поэтому у меня есть:

(add-hook 'css-mode-hook 'my-css-mode-hook)
(defun my-css-mode-hook ()
  (rainbow-mode 1))

Если вы действительно хотите, чтобы он был глобальным, везде, вы можете легко определить глобальный малый режим:

(define-globalized-minor-mode my-global-rainbow-mode rainbow-mode
  (lambda () (rainbow-mode 1)))

(my-global-rainbow-mode 1)

Вы можете добавить любую произвольную логику к этой функции (lambda () (rainbow-mode 1)) (которая будет оцениваться в каждом буфере), чтобы решить, действительно ли вызывать (rainbow-mode 1) для данного буфера, поэтому, если вам удобно с elisp то вы можете легко расширить этот подход, чтобы охватить ваши конкретные требования к рассматриваемому режиму.


Как правило, как автоматически загружать любой режим/пакет при запуске?

Он может меняться, но подходы, которые я показал, будут достаточными для большинства второстепенных режимов: либо вы хотите, чтобы они включались всякий раз, когда MODE включается (является некоторым конкретным другим именем режима), и в этом случае вы можете использовать MODE-hook переменная (которая всегда будет доступна) в соответствии с примером css-mode-hook; или вы хотите, чтобы режим был включен постоянно, и в этом случае глобальный второстепенный режим является хорошим подходом (поскольку вы можете включать и отключать его глобально). Некоторые второстепенные режимы являются глобальными по умолчанию (или предоставляют глобальные варианты), но при необходимости вы можете создать свои собственные, в соответствии с примером my-global-rainbow-mode.

Также имейте в виду, что режимы могут быть выведены из других режимов, и в этом случае будут выполняться все соответствующие MODE-hook перехватчики (подробнее см. fooobar.com/info/194255/...). Обычный вариант использования - использовать prog-mode-hook, чтобы включить функциональность, необходимую для всех режимов программирования, которые производятся от нее (что является большинством режимов программирования).

Помните, что многие (надеюсь, большинство) библиотеки и пакеты предоставят инструкции по использованию. Если вы не можете найти документацию, не забудьте попробовать M-x find-library посетить файл библиотеки, а затем прочитать комментарии вверху. Часто существует очень информативный раздел "Комментарий", и иногда это является основным источником документации для конечного пользователя и объясняет, как включить его функциональность.