0

我想为init.el文件设置大纲次要模式,并在以;开头的行上按下TAB键时。应调用函数outline-toggle-children以折叠和展开子标题。

下面是钩子的代码。但它并不像预期的那样对“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))))))))
4

1 回答 1

0

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

 (lambda ()
   (interactive)
   (if (string-match outline-regexp (thing-at-point 'line))
       (outline-toggle-children)))
于 2013-06-18T15:53:44.247 回答