首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让emacs tempo模式与C/C++的缩写一起工作?

如何让emacs tempo模式与C/C++的缩写一起工作?
EN

Stack Overflow用户
提问于 2009-11-29 21:02:50
回答 2查看 401关注 0票数 1

我一直在尝试emacs的节拍模式,它似乎可以节省我大量的输入(总是一件好事),但我并没有让它完全按照我想要的方式工作。在wiki上,有一个类似于我想要做的事情的elisp示例,它可以按预期工作。下面是我测试过的完整.emacs:

代码语言:javascript
复制
(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“后跟一个空格,并让它自动插入

代码语言:javascript
复制
(lambda ( )
  )

在我的缓冲区中,第一个结束括号上的点。

然而,用以下代码替换最后两个sexp(通过Sebastien Varrette从Joachim Baumann窃取并由我修改):

代码语言:javascript
复制
(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模式代码之前,有人知道为什么会出现这种情况吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-29 21:42:04

define-abbrev的最后一个参数应该是'tempo-template-c-include。此外,我不确定您是否可以在其中使用破折号,即它可能必须是cinclude而不是c-include

代码语言:javascript
复制
(define-abbrev c-mode-abbrev-table "cinclude" "" 'tempo-template-c-include)
票数 1
EN

Stack Overflow用户

发布于 2009-11-29 23:46:45

tempo的另一种选择是yasnippet,我发现它更容易设置有趣的扩展。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1815490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档