如何向速度模板提供数据?

时间:2013-01-14 22:51:28

标签: templates emacs elisp

我正在尝试将自动插入和速度模板组合在一起,以自动填充包含正确内容的新文件。

我的目标是让自动插入调用一个速度模板,为它提供一些数据(例如一个类的名称)。

这样的事情:

(eval-after-load 'autoinsert
'(define-auto-insert
     (cons "\\.\\([Hh]\\|hh\\|hpp\\)\\'" "My C / C++ header")
     (lambda()
         (tempo-template-c++-class))))

我想为C ++类模板提供缓冲区的文件名,以便它可以很好地扩展。理想情况下,创建一个名为'foo.h'的文件会使用'foo'作为数据扩展模板,从而创建'foo'类。

我尝试按照in the Tempo Manual解释的“保存列表”,但到目前为止没有运气。

感谢您的帮助。

En passant,有没有比

更好的方法
(file-name-sans-extension (file-name-nondirectory buffer-file-name))

从文件中获取类名?

1 个答案:

答案 0 :(得分:0)

C-h f tempo-define-template RET给出了模板元素及其含义的列表:

A string: It is sent to the hooks in `tempo-insert-string-functions',
and the result is inserted.
...
Anything else: It is evaluated and the result is treated as an
element to be inserted.  One additional tag is useful for these
cases.  If an expression returns a list '(l foo bar), the elements
after `l' will be inserted according to the usual rules.  This makes
it possible to return several elements from one expression.

所以只需将(file-name-sans-extension (file-name-nondirectory buffer-file-name))放在您想要类名的模板中(是的,我认为这确实是从文件名中获取类名的最佳方法)。