如何在新建的org文件中自动添加如#+LATEX_CLASS 和+# -- eval: (setq org-download-image-dir (file-name-sans-extension (buffer-name))); --等内容?就是相当于一个模板。
这个包可以。
用 Emacs 自带的 auto-insert
应该能达成要求,不过我对这个没怎么了解过。
我个人用的是自己写的一个比较简单的东西。
如果要用的话只要将两处 “~/模板” 改成自己模板的存放目录即可,模板文件名跟后缀名相同,比如 org 文件的模板文件名就是 org.org;然后需要安装 yasnippet。
打开一个文件时会查找 “~/模板” 目录下有没有相应的模板文件,有的话就将内容导入,然后使用 yas-expand-snippet 进行处理。
(advice-add 'find-file :after
#'(lambda (&rest _)
(let* ((name (and (buffer-file-name)
(not (file-exists-p (buffer-file-name)))
(file-name-extension
(concat "arbitrary"
(file-name-nondirectory
(buffer-file-name))))))
(realname (and name (concat name "." name))))
(and realname
(member realname (directory-files "~/模板"))
(insert-file-contents (concat "~/模板/" realname))
(yas-expand-snippet (buffer-string)
(point-min) (point-max))))))
你真的太厉害了,就要的这种效果。
C-c C-e #
可能有惊喜哦(
并没有任何惊喜。
人家需求不是 C-c C-e #
不是有find-file-hook吗,为啥要改掉find-file的处理逻辑呢
用你说的怎么实现?
这算是个elisp的入门测试吧
改成 (add-to-list 'find-file-hook (lambda xxxxxxxxxxxxxxxxxxx))
就行了。
另外还有个 find-file-not-found-functions
专门用来给没有找到文件时用的,lambda中都不用再判断文件是否存在了
额,我当初实现的时候应该也是先用的 find-file-hook
,至于为什么后来弃了,具体原因忘了,好久之前写的了
刚刚试过了,也可以实现!
皮肤好帅,分享一下可以吗?