如何使HS-Minor模式自动在Emacs中的PHP模式上加载?
题
对于我最喜欢的模式,我使用以下片段在启动时加载HS-Minor模式:
(add-hook '____-mode-hook 'hs-minor-mode)
到目前为止,它已经在CSS模式,Perl模式,SH模式(BASH)和LISP模式上工作。但是由于某种原因,即使我可以手动加载它,它也不会加载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模式包装在功能中,但仍不会加载。但是,我的钥匙超载。这是怎么回事?
解决方案
模式函数通常接受数字参数以启用/禁用它们,并在不提供参数的情况下用作切换,因此作为一般规则,您应该使用:
(add-hook 'php-mode-hook (lambda () (hs-minor-mode 1)))
其他提示
总的来说,我会推荐
(add-hook 'prog-mode-hook #'(lambda () (hs-minor-mode t)))
因为 hideshow
不是某些PHP特定模式。
不隶属于 StackOverflow