如何仅为* .el文件启用Show-Paren模式?
我试过了
(add-hook 'emacs-lisp-mode-hook '(lambda()
(show-paren-mode 1)
))
但它仍然可以为所有情况启用Show-Paren模式。即使在*scratch*
缓冲区中,我也启用了Show-Paren模式。
答案 0 :(得分:9)
如前所述,show-paren-mode
是一种全局次要模式。也就是说,人们可能只能在某些缓冲区上运行它,例如:
(show-paren-mode) ;; activate the needed timer
(setq show-paren-mode ()) ;; The timer will do nothing if this is nil
(defun show-paren-local-mode ()
(interactive)
(make-local-variable 'show-paren-mode) ;; The value of shom-paren-mode will be local to this buffer.
(setq show-paren-mode t))
(add-hook 'emacs-lisp-mode-hook 'show-paren-local-mode)
它未经测试,可能无效。查看doc可能有用,但查看它可能有用的代码。这可能仅适用于某些版本的show-paren-mode。
答案 1 :(得分:4)
show-paren-mode
是一种全球性的小型模式。这意味着它听起来如何。
这非常符合设计,因为大多数人(包括我自己)都会发现这一点
minor-mode对所有缓冲区都有帮助。为什么要为任何禁用它
文件?
来自文档
显示Paren模式是一种全局次要模式。启用时,任何 匹配括号在Emacs空闲时间的
show-paren-style' after
show-paren-delay'秒中突出显示。
答案 2 :(得分:1)
您的代码是正确的。但是,你应该考虑这样一个事实:*scratch*
缓冲区的主要模式是lisp-interaction-mode
,它来自emacs-lisp-mode
(这大部分是不相关的)和模式的定义:
(define-minor-mode show-paren-mode
"Toggle visualization of matching parens (Show Paren mode).
With a prefix argument ARG, enable Show Paren mode if ARG is
positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
Show Paren mode is a global minor mode. When enabled, any
matching parenthesis is highlighted in `show-paren-style' after
`show-paren-delay' seconds of Emacs idle time."
:global t :group 'paren-showing
...)
:global t
是关键所在 - 模式是全局的,无论主要模式如何,都在所有缓冲区中启用。