Commits

Anonymous committed 2931e75

Restore hide-copyleft.el

Comments (0)

Files changed (4)

+1998-03-09  SL Baur  <steve@altair.xemacs.org>
+
+	* hide-copyleft.el: restored.
+
 1998-03-03  Markus Linnala  <maage@cs.tut.fi>
 
 	* find-gc.el (trace-call-tree): Use make to make RTL's.
 
 # This XEmacs package contains independent single file lisp packages
 
-VERSION = 1.09
+VERSION = 1.10
 AUTHOR_VERSION =
 MAINTAINER = XEmacs Development Team <xemacs-beta@xemacs.org>
 PACKAGE = xemacs-devel
 CATEGORY = libs
 
 ELCS = bench.elc docref.elc eldoc.elc elp.elc find-func.elc find-gc.elc \
-	ielm.elc lisp-file-db.elc profile.elc pretty-print.elc regexp-opt.elc \
-	reposition.elc trace.elc
+	hide-copyleft.elc ielm.elc lisp-file-db.elc profile.elc \
+	pretty-print.elc regexp-opt.elc reposition.elc trace.elc
 
 include ../../XEmacs.rules
 
+;;; hide-copyleft.el --- hide obnoxious copyright prologs
+
+;; Copyright (C) 1997 Sun Microsystems.
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Commentary:
+
+;; Written by Jamie Zawinski <jwz@netscape.com>, 19-jan-91.
+;; Minor fixes by Martin Buchholz, 14-may-97.
+;; Last modified  14-may-97.
+;;
+;; I sometimes find it tiresome to have fifteen lines of copyright notice at
+;; the beginning of each file.  Meta-< does not take you to the beginning of
+;; the code, it takes you a windowfull or two away, which can be tedious on
+;; slow terminal lines.
+;;
+;; I know what the copyright notice says; so this code makes all but the first
+;; line of it be invisible, by using Emacs's selective-display feature.  The
+;; text is still present and unmodified, but it is invisible.
+;;
+;; Elide the copyright notice with "Meta-X hide-copyleft-region".  Make it
+;; visible again with "Control-U Meta-X hide-copyleft-region".  Or, if you're
+;; sure you're not gonna get sued, you can do something like this in your
+;; .emacs file:
+;;
+;;       (autoload 'hide-copyleft-region   "hide-copyleft" nil t)
+;;       (autoload 'unhide-copyleft-region "hide-copyleft" nil t)
+;;       (add-hook 'emacs-lisp-mode-hook 'hide-copyleft-region)
+;;       (add-hook 'c-mode-hook 'hide-copyleft-region)
+;;
+;; This code (obviously) has quite specific knowledge of the wording of the 
+;; various copyrights I've run across.  Let me know if you find one on which
+;; it fails.
+
+(defvar copylefts-to-hide
+  ;; There are some extra backslashes in these strings to prevent this code
+  ;; from matching the definition of this list as the copyright notice!
+  '(;; GNU
+    ("free software\; you can redistribute it" .
+     "notice must be\ preserved on all")
+    ("free software\; you can redistribute it" .
+     "copy of the GNU General Public License.*\n?.*\n?.*\n?.*\n?.*\\(02139,\\|02111-1307\\)")
+    ("distributed in the hope that it will be useful\," .
+     "notice must be\ preserved on all")
+    ("free software\; you can redistribute it" .
+     "General Public License for more details\\.")
+    ;; X11
+    ("Permission to use\, copy, modify," .
+     "WITH THE USE OR PERFORMANCE")
+    ("Permission to use\, copy, modify," .
+     "without express or implied warranty")
+    ;; Motif
+    ("Copyright.*OPEN\ SOFTWARE FOUNDATION" .
+     "X Window System is a trademark of the")
+    ("THIS SOFTWARE\ IS FURNISHED UNDER A LICENSE" .
+     "X Window System is a trademark of the")
+    ;; UPenn
+    ("Permission to use\, copy, and distribute" .
+     " provided \"as is\" without")
+    ;; Evans & Sutherland, Solbourne.
+    ("Copyright 19[0-9][0-9] by " .
+     "OR PERFORMANCE OF THIS SOFTWARE\\.")
+    ;; TI Explorer
+    ("RESTRICTED RIGHTS LEGEND" . "All rights reserved\\.\\(\n;;; ?$\\)?")
+    ("^%%BeginDocumentation" . "^%%EndDocumentation")
+    )
+  "An alist of pairs of regexps which delimit copyright notices to hide.
+The first one found is hidden, so order is significant.")
+
+
+;;;###autoload
+(defun hide-copyleft-region (&optional arg)
+  "Make the legal drivel at the front of this file invisible.  Unhide it again
+with C-u \\[hide-copyleft-region]."
+  (interactive "P")
+  (if arg
+      (unhide-copyleft-region)
+    (save-excursion
+     (save-restriction
+      (if selective-display (error "selective-display is already on."))
+      (catch 'Abort
+	(let ((mod-p (buffer-modified-p))
+	      (buffer-read-only nil)
+	      (rest copylefts-to-hide)
+	      pair start end)
+	  (widen)
+	  (goto-char (point-min))
+	  (while (and rest (not pair))
+	    (save-excursion
+	      (and (re-search-forward (car (car rest)) nil t)
+		   (setq start (point))
+		   (re-search-forward (cdr (car rest)) nil t)
+		   (setq end (point)
+			 pair (car rest))))
+	    (setq rest (cdr rest)))
+	  (setq x pair)
+	  (or pair
+	      (if (interactive-p)
+		  (error "Couldn't find a CopyLeft to hide.")
+		(throw 'Abort nil)))
+	  (goto-char end)
+	  (forward-line 1)
+	  ;; If the last line of the notice closes a C comment, don't
+	  ;; hide that line (to avoid confusion...)
+	  (if (save-excursion (forward-char -3) (looking-at "\\*/"))
+	      (forward-line -1))
+	  (setq end (point))
+	  (goto-char start)
+	  (forward-line 1)
+	  (while (< (point) end)
+	    (delete-char -1)
+	    (insert "\^M")
+	    (forward-line 1))
+	  (setq selective-display t)
+	  (set-buffer-modified-p mod-p)))))))
+
+;;;###autoload
+(defun unhide-copyleft-region ()
+  "If the legal nonsense at the top of this file is elided, make it visible again."
+  (save-excursion
+    (save-restriction
+      (widen)
+      (goto-char (point-min))
+      (let ((mod-p (buffer-modified-p))
+	    (buffer-read-only nil)
+	    end)
+	(or (search-forward "\^M" nil t) (error "Nothing hidden here, dude."))
+	(end-of-line)
+	(setq end (point))
+	(beginning-of-line)
+	(while (search-forward "\^M" end t)
+	  (delete-char -1)
+	  (insert "\^J"))
+	(set-buffer-modified-p mod-p)
+	(setq selective-display nil)))))
+
+(provide 'hide-copyleft)
+
+;;; hide-copyleft.el ends here
    filename FILENAME
    md5sum MD5SUM
    size SIZE
-   provides (docref eldoc elp find-func ielm regexp-opt trace)
+   provides (docref eldoc elp find-func hide-copyleft ielm regexp-opt trace)
    requires (REQUIRES)
    type single
 ))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.