求助:elisp如何在新建一个java、python或elisp文件之后插入展开snippets?

如题。elisp如何在新建一个java、python或elisp文件之后插入展开snippets?

虽然不是snippet, 但是有个叫auto-insert的功能可以看看

1 个赞

如楼上所说用 auto-insert 配合 yasnippet

或者自己实现,下面是我自用的一个实现

(add-hook 'find-file-hook
          #'(lambda ()
              (let* ((name (and (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))))))

将代码中的 ~/模板 替换成你自己的模板存放目录,每个模板文件的名字为 name.name ,比如 java 文件的模板就在 ~/模板 建立下一个名为 java.java 的文件。

每次建立新的 java 文件时 java.java 中的内容会被导入进新的 java 文件当中,被 yasnippet 处理。因为有用到 yasnippet ,所以确保该软件已经安装

2 个赞

感谢二位,auto-insert配合ysnippet可以满足需求