我一直在尝试emacs的节拍模式,它似乎可以节省我大量的输入(总是一件好事),但我并没有让它完全按照我想要的方式工作。在wiki上,有一个类似于我想要做的事情的elisp示例,它可以按预期工作。下面是我测试过的完整.emacs:
(require 'tempo)
(setq tempo-interactive t)
(tempo-define-template "lambda"
'(> "(lambda (" p ")" n> r> ")">)
nil
"Insert a template for an anonymous procedure")
(define-abbrev lisp-mode-abbrev-table "lambda" "" 'tempo-template-lambda)这允许我输入"lambda“后跟一个空格,并让它自动插入
(lambda ( )
)在我的缓冲区中,第一个结束括号上的点。
然而,用以下代码替换最后两个sexp(通过Sebastien Varrette从Joachim Baumann窃取并由我修改):
(tempo-define-template "c-include"
'("#include <" r ".h>" > n)
nil
"Insert a #include <> statement")
(define-abbrev c-mode-abbrev-table "c-include" "" 'tempo-template-lambda)不会导致在键入"c-include“后跟一个空格后插入模板。这是在Ubuntu 9.04下运行的emacs 22.2.1上。在我深入研究节拍代码和/或(上帝禁止)C模式代码之前,有人知道为什么会出现这种情况吗?
发布于 2009-11-29 21:42:04
define-abbrev的最后一个参数应该是'tempo-template-c-include。此外,我不确定您是否可以在其中使用破折号,即它可能必须是cinclude而不是c-include
(define-abbrev c-mode-abbrev-table "cinclude" "" 'tempo-template-c-include)发布于 2009-11-29 23:46:45
tempo的另一种选择是yasnippet,我发现它更容易设置有趣的扩展。
https://stackoverflow.com/questions/1815490
复制相似问题