;;; kill-a-lawyer.el --- hide legal verbiage at the start of programs ;;; For obvious reasons, this program has no copyright notice. ;;; Author: Ben Mesander ;;; Noah Friedman ;;; 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