我编写了一个次模式,它定义了一些键绑定并进行了一些初始化。该模式正确设置了Navi模式和Navi模式映射。
如何在启用导航模式时增强此次模式以更改光标的颜色,并在禁用模式时将其更改回来?我可以使用钩子Navi-mode-hook吗?
答案 0 :(得分:4)
试试这个:
(define-minor-mode foo-mode "doodad" :lighter ""
(if foo-mode
(setq cursor-type 'bar)
(setq cursor-type (default-value 'cursor-type))))
或者,如果您预期cursor-type
已经具有非默认值,则可以在启用模式时保存它,并在禁用时恢复已保存的值。
答案 1 :(得分:2)
你可以完全控制次要模式(因为你写了它),并且你可以将这种行为直接嵌入你的次要模式函数中,如Dmitry的回答所述:
(define-minor-mode navi-mode
"Navi mode does wonderful things"
:lighter " Navi"
:global t
:init-value 0
(if navi-mode
(progn
(setq old-cursor-color (cdr (assoc 'cursor-color (frame-parameters))))
(set-cursor-color "red"))
(set-cursor-color old-cursor-color)))
或者您不控制次要模式定义,您将不得不使用钩子:
(defun navi-change-cursor-color ()
(if navi-mode
(progn
(setq old-cursor-color (cdr (assoc 'cursor-color (frame-parameters))))
(set-cursor-color "red"))
(set-cursor-color old-cursor-color)))
(add-hook 'navi-mode-hook 'navi-change-cursor-color)