我正在尝试将自动插入和速度模板组合在一起,以自动填充包含正确内容的新文件。
我的目标是让自动插入调用一个速度模板,为它提供一些数据(例如一个类的名称)。
这样的事情:
(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))
从文件中获取类名?
答案 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))
放在您想要类名的模板中(是的,我认为这确实是从文件名中获取类名的最佳方法)。