Permalink
Cannot retrieve contributors at this time
Jump to Line
kill-a-lawyer/kill-a-lawyer.el
Fetching contributors…
| ;;; kill-a-lawyer.el --- hide legal verbiage at the start of programs | |
| ;;; For obvious reasons, this program has no copyright notice. | |
| ;;; Author: Ben Mesander <ben@piglet.cr.usgs.gov> | |
| ;;; Noah Friedman <friedman@prep.ai.mit.edu> | |
| ;;; Maintainer: ben@piglet.cr.usgs.gov | |
| ;;; Keywords: extensions | |
| ;;; Created: 1994-07-24 | |
| ;;; $Id: kill-a-lawyer.el,v 1.2 1994/10/28 16:47:37 ben Exp $ | |
| ;;; Commentary: | |
| ;;; I'm not a lawyer, Jim, I'm a hacker. | |
| ;;; Code: | |
| ;;;###autoload | |
| (defvar kill-a-lawyer-mode nil | |
| "*If non-`nil', narrow buffer to region excluding copyright message.") | |
| ;;;###autoload | |
| (defvar kill-a-lawyer-copyright-regexp-list | |
| '("Code:[ ]*$" ; new style GNU code | |
| "Cambridge, MA 02139, USA\\..*$" ; old style GNU code, pre June '95 | |
| "Boston, MA[ \t]+02111-1307, USA\\..*$" ; old style GNU code, post Jun '95 | |
| "SUCH DAMAGE\.[ ]*$" ; BSD (mighty appropriate) | |
| "\*\* or implied warranty\.[ ]*$") ; NCAR | |
| "List of regexps that match the last line of moby copyright blocks.") | |
| ;;;###autoload | |
| (defvar kill-a-lawyer-hook-list | |
| '(c-mode-hook emacs-lisp-mode-hook ksh-mode-hook) | |
| "List of modes to hunt down and kill legalese in.") | |
| ;;;###autoload | |
| (defun kill-a-lawyer-mode (&optional prefix) | |
| "Enable or disable kill-a-lawyer-mode. | |
| When enabled, newly-visited files which use mode hooks specified in | |
| `kill-a-lawyer-hook-list' are narrowed to hide the copyright message | |
| at the beginning of the buffer. The variable | |
| `kill-a-lawyer-copyright-regexp-list' is used to describe the end of | |
| copyright notices, so that the narrowed region can begin there. | |
| The command `kill-a-lawyer' will perform narrowing regardless of the mode. | |
| A negative prefix argument disables this mode. | |
| No argument or any non-negative argument enables it. | |
| Users may enable or disable this mode by setting the variable of the | |
| same name." | |
| (interactive "P") | |
| ;; make sure it's there. | |
| (mapcar '(lambda (hooksym) | |
| (add-hook hooksym 'kill-a-lawyer-setup)) | |
| kill-a-lawyer-hook-list) | |
| (setq kill-a-lawyer-mode (>= (prefix-numeric-value prefix) 0)) | |
| (and (interactive-p) | |
| (if kill-a-lawyer-mode | |
| (message "kill-a-lawyer-mode is enabled") | |
| (message "kill-a-lawyer-mode is disabled"))) | |
| kill-a-lawyer-mode) | |
| ;;;###autoload | |
| (defun kill-a-lawyer () | |
| (interactive) | |
| (let ((found nil) | |
| (regexp-list kill-a-lawyer-copyright-regexp-list)) | |
| (widen) | |
| (goto-char (point-min)) | |
| (push-mark) | |
| (while (and (not found) regexp-list) | |
| (setq found (re-search-forward (car regexp-list) nil t)) | |
| (setq regexp-list (cdr regexp-list)) | |
| (and found | |
| (narrow-to-region found (point-max))))) | |
| (pop-mark)) | |
| (defun kill-a-lawyer-setup () | |
| (and kill-a-lawyer-mode | |
| (kill-a-lawyer))) | |
| (provide 'kill-a-lawyer) | |
| ;; This installs the setup function on find-file-hooks without actually | |
| ;; enabling the mode, so that just setting the variable will work. | |
| (kill-a-lawyer-mode nil) | |
| ;;; kill-a-lawyer.el ends here |