0

我写了一个次要模式,它定义了一些键绑定并进行了一些初始化。该模式正确设置了 Navi-mode 和 Navi-mode-map。

如何在启用导航模式时增强此次要模式以更改光标的颜色,并在禁用模式时将其更改回来?我可以使用 hook Navi-mode-hook 吗?

4

2 回答 2

4

试试这个:

(define-minor-mode foo-mode "doodad" :lighter ""
  (if foo-mode
      (setq cursor-type 'bar)
    (setq cursor-type (default-value 'cursor-type))))

或者,如果您预计cursor-type已经有一个非默认值,您可以在启用模式时保存它,并在禁用时恢复保存的值。

于 2013-01-03T18:58:16.520 回答
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)
于 2013-01-03T19:13:16.480 回答