我希望默认复制我访问的Emacs
任何不存在的文件缓冲区中某些定义文件的内容。.tex
我正在使用,AUCTeX
并且我相信通过编辑负责%%% Local Variables:
在新.tex
文件中附加行等的文件或变量来实现这一点,但我更喜欢通过改变.emacs
文件的方式来解决问题,以方便移植和可定制性。
在尝试研究它时,我确实遇到了这样的Emacs
钩子find-file[-noselect]-hook
,但我不确定如何指定钩子只针对空(不存在).tex
文件运行,或者哪个 Lisp 函数复制当前缓冲区中的文件内容。
笔记:使用该\input{...}
命令并不能解决我打算使用此方案的问题。举一个小例子,我试图让默认的.tex
“骨架”看起来有点像这样:
\documentclass[11pt]{article}
\input{$HOME/defaults} %$
\title{ enter title here }
\begin{document}
\maketitle
% document body %
\bibliography{ specify bib file here }
\end{document}
更新
感谢 Tom,我发现我可以通过使用Emacs
Skeleton 和 来获得上述默认内容(实际上也是更好的方法) auto-insert-mode
。因此,我将以下内容放入我的.emacs
文件中:
(define-skeleton latex-skeleton
"Default LaTeX file initial contents."
"Title: "
"\\documentclass[11pt]{article}\n\n"
"\\input{\$HOME/defaults} %\$\n"
"\\title{ "str | " ENTER TITLE HERE " "}\n\n"
"\\begin{document}\n"
"\\maketitle\n\n"
""_"\n\n"
"\\bibliography{" (skeleton-read "BIB-file: ") | " SPECIFY BIB FILE HERE " "}\n\n"
"\\end{document}\n")
(require 'autoinsert)
(add-hook 'find-file-hooks 'auto-insert)
(setq auto-insert-query nil)
(setq auto-insert-alist
'(("\\.tex$" . latex-skeleton)))
但是,这对文件不起作用.tex
,也不适用于latex-mode
(通过将上面的最后一行更改为 来指定'((latex-mode . latex-skeleton)))
)!
相反,如果我使用任何其他文件扩展名或主要模式,它就可以正常工作。因此,我认为这是由访问新文件时定义的默认操作Emacs
引起的,例如提示用户设置主文件、附加行等。AUCTeX
.tex
%%% Local Variables:
我怎么可能AUCTeX
将我的自定义设置合并到其默认设置中?或者还有其他解决方法吗?
答案1
你知道吗自动插入模式?