如何配置emacs
生成一些代码框架?
例如,对于 C 文件:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv) {
return EXIT_SUCCESS;
}
或者 Python 中更动态的东西:
#!<insert result of `which python` here>
def main():
if __name__ == "__main__":
main()
我想定义两种插入模板的模式:
创建一个函数
insert-template
(或其他东西),将其绑定到特定的组合键 (C-c C-t
),该组合键将根据主要模式插入正确的模板。创建一个选项以在创建文件时自动插入模板,通过文件名后缀检测正确的类型(类似于检测主要模式的方式)。该选项应该可以在文件中轻松设置打开/关闭
.emacs
。
理想情况下,我想避免使用第三方模块/包。但我并不完全反对。
答案1
答案2
如果第三方 emacs 模式已经存在,为什么还要避免它们呢?这EmacsWiki 有一个很长的列表可以解决您的问题。其中,abbrev-mode
已经伴随我们数十年了。它可以被非常温和地滥用来完成您需要的事情。auto-insert-mode
更好,并且是 emacs 的一部分。
我怀疑您可能需要编写一点 emacs Lisp 来搜索 Python(或其他任何)解释器二进制文件的路径。
甚至还有功能强大的选项(查看 EmascWiki 页面 - 一定有一个可以满足您的所有需求)
答案3
为了在文件创建时自动插入这些,我认为您需要将挂钩添加到适当的模式。例如
(add-hook 'python-mode-hook '(lambda () (when (empty-buffer?) (insert-python-template))))
(defun empty-buffer? () (= (buffer-end 1) (buffer-end -1)))
(defun insert-python-template ()
(interactive)
(insert "Template stuff goes here"))
现在,每当您在 中打开一个新缓冲区时python-mode
,您都会自动使用该模板填充它。
如果您对第三方模块开放,并且想要将模板/部分模板添加到开放缓冲区,请查看yasnippet
小模式。我自己实际上还没有抽出时间使用它,但我不断听到有关它的好消息。
答案4
您可以使用内置的auto-insert-mode
.将以下内容添加到您的.emacs
文件中:
(auto-insert-mode)
(setq auto-insert-directory "~/.emacs.d/templates/") ;; trailing slash IMPORTANT
(define-auto-insert "\.py" "python-template.py")
然后将模板内容放入python-template.py
目录中~/.emacs.d/templates/
。
如果您不想每次都提示插入,那么您还可以将以下行添加到文件中.emacs
:
(setq auto-insert-query nil) ;; don't prompt before template insertion