emacs outline-minor-mode的本地键盘映射

时间:2013-06-18 15:40:11

标签: emacs elisp

我想为 init.el 文件设置 outline-minor-mode ,并在开头的行上按 TAB ; 应调用函数 outline-toggle-children 以折叠和展开子标题。

以下是hook的代码。但它不能像预期的那样对“TAB”键绑定起作用。

(add-hook 'emacs-lisp-mode-hook
      (lambda ()           
        (if (equal (buffer-name) "init.el")
        (progn
          (outline-regexp "^;+")
          (outline-minor-mode 1)
          (local-set-key (kbd "TAB") ; this does not work
                 (lambda ()
                   (if (string-match outline-regexp (thing-at-point 'line))
                       (outline-toggle-children))))))))

1 个答案:

答案 0 :(得分:0)

我认为你得到的错误是wrong-type-argument commandp。这是因为绑定到键的函数必须是“交互”函数。您需要向函数添加(interactive)声明,以便Emacs知道如何调用函数以响应事件:

 (lambda ()
   (interactive)
   (if (string-match outline-regexp (thing-at-point 'line))
       (outline-toggle-children)))