在调用我的节点后启用其他次要模式

时间:2013-10-07 05:19:50

标签: emacs elisp minor-mode

我想写一个次模式,在运行时切换其他几种模式。某种伞式模式。

现在我用最简单的任务堆叠 - 创建模式,启用单一其他模式。

我写了

(require 'whitespace)
(define-minor-mode
  myspace-mode
  "some doc"
  nil
  nil
  (if myspace-mode
    (whitespace-mode 1)
    (whitespace-mode -1)
 )
)

当我从M-x切换此模式时,没有任何反应。但是当我直接评估(空白模式±1)时,它按预期工作。

我想念什么?

1 个答案:

答案 0 :(得分:3)

您的定义中缺少一个参数。因此,您的(if ...)表单实际上被解释为keymap参数。

试试这个:

(define-minor-mode
  myspace-mode
  "some doc"
  nil
  nil
  nil
  (if myspace-mode
      (whitespace-mode 1)
      (whitespace-mode -1)))