2013-06-18 31 views
0

我想设置轮廓小调模式init.el文件,当TAB按键上开始线;函数应该调用outline-toggle-children以折叠和展开子标题。本地键盘映射为Emacs勾勒小调模式

下面是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)))))))) 
+0

我建议你不设置'大纲regexp'和使用它的默认值(它将3个或更多分号作为标题和顶级Lisp代码作为“子子标题”处理)。 – Stefan

+0

将[lambda键绑定到键时出现错误类型参数:commandp错误]的可能重复(http://stackoverflow.com/questions/1250846/wrong-type-argument-commandp-error-when-binding-a-拉姆达到一个键) – legoscia

回答

0

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

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