Emacs自动插入更新文件头——maple-header


一个简单的插件,可以在文件创建时自动插入文件头,或者文件更新时自动更新文件头信息,虽然已经用了好几年,这次把相关代码提取并精简一下做成了插件 maple-header

安装

使用quelpa

(use-package maple-header
  :quelpa (:fetcher github :repo "honmaple/emacs-maple-header")
  :hook (after-init . maple-header-mode))

克隆到本地

git clone https://github.com/honmaple/emacs-maple-header --depth=1 ~/.emacs/site-lisp/maple-header

配置

(use-package maple-header
  :ensure nil
  :hook (after-init . maple-header-mode))

基础配置

;; 更新文件头时搜索的文件函数, 9代表只会搜索前9行
(setq maple-header:lines 9)
;; 创建新文件时是否自动插入文件头信息
(setq maple-header:auto-insert t)
;; 更新文件时是否自动更新文件头信息
(setq maple-header:auto-update t)

自定义模版

比如我要自定义Python文件的文件头

(add-to-list 'maple-header:auto-insert-alist
             '((python-mode . "Python program") nil
               "#!/usr/bin/env python\n"
               "# -*- coding: utf-8 -*-\n"))

自定义更新

目前内置了 filename, email, modify 三个字段, 可以通过调用 maple-header:update-xxx 手动更新指定的字段, 如果需要增加新的或者覆盖原字段,可以使用

(add-to-list 'maple-header:auto-update-alist '(author . custom-update-author))

(defun custom-update-author(&optional current-line)
  (interactive)
  (maple-header:update-action
   ".*\\(Author:\\)\\(.*\\)"
   user-full-name current-line))

使用 maple-header:update 会更新所有字段(包括:filename,email,modify,author), 如果只需要更新部分,需要修改为

(setq maple-header:auto-update-alist
      '((filename . maple-header:update-filename)
        (modify . maple-header:update-modify)))

相关文章

作者: honmaple
链接: https://honmaple.me/articles/2021/10/Emacs自动插入更新文件头——maple-header.html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论