Homepage: https://www.emacswiki.org/emacs/download/header2.el
Author: Drew Adams, Lynn Slater
Updated:
Support for creation and update of file headers
Support for creation and update of file headers. Some of this code and commentary were originally written by Lynn Slater as file `header.el'. Drew Adams updated it and maintains it as `header2.el'. The original is here: `https://www.emacswiki.org/emacs/download/OriginalHeaderEl'. Commands (interactive functions) defined here: `make-header', `make-revision', `make-divider', `make-box-comment', `make-box-comment-region', `update-file-header'. Other functions defined here: `auto-make-header', `auto-update-file-header', `delete-and-forget-line', `header-AFS', `header-author', `header-blank', `header-code', `header-commentary', `header-compatibility', `header-copyright', `header-creation-date', `header-date-string', `header-description', `header-doc-url',`header-end-line', `header-eof', `header-file-name', `header-free-software', `header-history', `header-keywords', `header-lib-requires', `header-maintainer', `header-mode-line', `header-modification-author', `header-modification-date', `header-multiline', `header-pkg-requires', `header-prefix-string', `header-rcs-id', `header-rcs-log', `header-sccs', `header-shell', `header-status', `header-title', `header-toc', `header-update-count', `header-url', `header-version', `headerable-file-p', `make-box-comment', `make-divider', `make-revision', `nonempty-comment-end', `nonempty-comment-start', `register-file-header-action', `section-comment-start', `true-mode-name', `uniquify-list', `update-file-name', `update-last-modified-date', `update-last-modifier', `update-lib-requires', `update-write-count'. User options (variables) defined here: `header-copyright-notice', `header-date-format', `header-history-label', `header-max', `make-box-comment-region-replace-prefix-flag', `make-header-hook'. Other variables defined here: `file-header-update-alist', `header-auto-update-enabled', `header-multiline', `header-prefix-string', `return-to'. To have Emacs update file headers automatically whenever you save a file, put this in your init file (~/.emacs): (autoload 'auto-update-file-header "header2") (add-hook 'write-file-functions 'auto-update-file-header) ; Emacs 20: write-file-hooks To have Emacs add a file header whenever you create a new file in some mode, put this in your init file (~/.emacs): (autoload 'auto-make-header "header2") (add-hook 'emacs-lisp-mode-hook 'auto-make-header) (add-hook 'c-mode-common-hook 'auto-make-header) ... From the original header.el text by Lynn Slater: This file is particularly useful with the file-declarations package also by Lynn Slater. Read the first 20% of this file to learn how to customize. From: eddie.mit.edu!think!ames!indetech.com!lrs (Lynn Slater) To: info-gnu-emacs@prep.ai.mit.edu Subject: Automatic header creation and maintenance Date: Wed, 1 Nov 89 09:33 PST Enclosed is code to automatically create and maintain file headers. This code is cleaner and mush more easily customized than any of my previous header postings. New in this release are customizations that allow headers to be created and maintained from the command line. This is good for projects with some vi die-hards or when headers are being added in mass for the first time. Example: cd $EMACS/lisp headers -make *.el I have found file headers to be very valuable in project development. I always know who has been where and how many times they were there. Most often, I also know what they did. The update count and last modified date are very useful in determining the proper version of a file to use. I have often thought that it would be easier to integrate patches from individuals to gnu tools such as gcc and g++ if I knew for certain what version of a particular file they were working from. If all had headers, I would see the update count and date in the "diff -c" output and would be able to find or recreate the file to patch accordingly. In this message are three files: header.el - Emacs header functions and instructions headers.1 - Man page for command line headers useage headers - Shell script for command-line headers. Text by Lynn Slater, updated as needed: Mode-specific headers: --------------------- Not all headers need look alike. Suppose that you have a unix script mode and want it to have a shell specifier line that all other headers do not have. To do this, Place the following line in a hook called when the mode is invoked or in the code that establishes the mode: (add-hook 'make-header-hook 'header-shell nil t) The header building blocks are sensitive to the different comment characters in different modes. Mode specific update actions: ---------------------------- Suppose something needs to be automatically maintained only in certain modes. An example is the .TH macro in man pages. You can create mode- specific update actions by placing code like the following in the mode creation function of the mode hook. (register-file-header-action "^\.TH[ \t]+[^\" \t]+[ \t]+[^\" \t]+[ \t]+\"\\([^\"]*\\)\"" 'update-last-modified-date-macro) Define individual header elements. These are the building blocks used to construct a site specific header. You may add your own functions either in this file or in your `.emacs' file. The variable `make-header-hook' specifies the functions that will actually be called. Note on change-control systems: If you use `header2.el' in a change-control system, such as RCS, you might need to leave it checked out. This is because any change-control keywords in the file will be expanded during check-in. Normally, you will want those keywords to be inserted in file headers unexpanded.