如何使hs-minor-mode在emacs的php-mode中自动加载?

3

对于我最喜欢的模式,我使用以下代码片段在启动时加载hs-minor-mode:

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

到目前为止,它已经在css-mode、perl-mode、sh-mode(bash)和lisp-mode上运作良好。但是由于某种原因,它无法加载php-mode,即使我可以手动加载。

这是我的php-mode设置:

(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个回答

6

模式函数通常接受数值参数以启用/禁用它们,如果没有提供参数,则作为切换开关。因此,一般情况下您应该使用:

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


1
一般来说,我会建议
(add-hook 'prog-mode-hook #'(lambda () (hs-minor-mode t)))

因为 hideshow 不是一种特定于 PHP 的模式。


这是一个很好的建议,但是不需要使用lambda。你可以写成(add-hook 'prog-mode-hook #'hs-minor-mode) - Student

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接