Как мне заставить hs-minor-mode автоматически загружаться в php-mode в emacs?

Для моих любимых режимов я использую следующий фрагмент для загрузки hs-minor-mode при запуске:

(add-hook '____-mode-hook 'hs-minor-mode)

Пока что он работает с css-mode, perl-mode, sh-mode (bash) и lisp-mode. Но по какой-то причине он не загружается для php-режима, даже если я могу загрузить его вручную.

Вот мои настройки режима php:

(defun php-overload-keys ()
 (let ((map php-mode-map))
  (define-key map "\t" 'dumb-indent-relative)
  (define-key map "\177" 'backward-delete-char)
  (define-key map "," nil)
  (define-key map ";" nil)
  (define-key map ":" nil)
  (define-key map "*" nil)
  (define-key map "{" nil)
  (define-key map "}" nil)
  (define-key map "(" nil)
  (define-key map ")" nil)
  (define-key map "/" nil)
  (use-local-map map)))

(add-hook 'php-mode-hook 'php-overload-keys)
(add-hook 'php-mode-hook 'hs-minor-mode)

Я делаю что-то не так? Я попытался обернуть hs-minor-mode в функцию, но она все равно не загружается. Мои перегруженные ключи, однако, делают. В чем дело?

2 ответа

Решение

Функции режима обычно принимают числовой аргумент для их включения / выключения и действуют как переключатели, если аргумент не указан, поэтому в качестве общего правила вы должны использовать:

(add-hook 'php-mode-hook (lambda () (hs-minor-mode 1)))

В общем я бы порекомендовал

(add-hook 'prog-mode-hook #'(lambda () (hs-minor-mode t)))

поскольку hideshow это не какой-то специфичный для PHP режим.

Другие вопросы по тегам