Ответ 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
посетить файл библиотеки, а затем прочитать комментарии вверху. Часто существует очень информативный раздел "Комментарий", и иногда это является основным источником документации для конечного пользователя и объясняет, как включить его функциональность.