我正在尝试开始使用 ENSIME 进行 SBT 的 Scala 开发。我应该如何管理许可证标头?我曾经在 Eclipse 中使用版权向导,这似乎很好。
2 回答
Emacs 有很多模板方法,这实际上取决于您的工作流程是什么。对于版权,您可能只想为每个打开的新文件添加版权信息。上次我这样做是使用骨架包——现在有更新的包。
也许是最容易设置的,但不是最灵活的。是将您的版权信息放入文件 scala.template 并将该文件名添加到自动插入列表中。
(setq auto-insert-directory "~/emacs.d/templates")
(add-to-list 'auto-insert-alist '(( "\\.scala\\'" . "Scala source" ) . "scala.template"))
scala.template 是您要插入到每个新的 scala 文件中的文件。要为新文件自动执行此操作,需要将自动插入功能添加到 find-file-hook。
(add-hook 'find-file-hook 'auto-insert)
这种机制非常强大,可以使用需要用户输入的函数或模板来代替简单的文件。例如对于 C++ 头文件:
(("\\.\\([Hh]\\|hh\\|hpp\\)\\'" . "C / C++ header")
(upcase
(concat
(file-name-nondirectory
(file-name-sans-extension buffer-file-name))
"_"
(file-name-extension buffer-file-name)))
"#ifndef " str n "#define " str "\n\n" _ "\n\n#endif")
见http://www.emacswiki.org/emacs/AutoInsertMode#toc1
可以手动删除版权并调用自动插入。这可以通过宏来完成,可能在您保存文件时调用。
对于更通用的版权信息自动更新,您可能需要查看版权包所采用的方法。使用此包检查版权可以使用 before-save-hook 在保存时执行。http://www.gnu.org/software/emacs/manual/html_node/autotype/Copyrights.html
请参阅http://www.emacswiki.org/emacs/AutomaticFileHeaders。还可以尝试使用谷歌搜索 auto-header.el,这也可能有所帮助。
我不认为 Emacs 有这样的东西,更不用说 ENSIME,但是您可以轻松地为许可证头定义一个缩写,并在需要时对其进行扩展。
这就是 Emacs 的伟大之处——它可能不完全符合您的要求,但它确实拥有您需要的一切。