changeset 6082:829b83e91e8b

(byte-compile-from-buffer, byte-compile-top-level): Removed advice. Byte-compilation problem is now taken care of directly by the compiler. (ad-advised-byte-compilers): Removed. (ad-enable-definition-hooks, ad-disable-definition-hooks): Removed activation of the advised byte-compiler entry points. (ad-lemacs-p): Removed variable. (ad-lemacs-p): New macro for compile-time conditionalization.
author Richard M. Stallman <rms@gnu.org>
date Fri, 25 Feb 1994 00:57:37 +0000
parents 65adb7b035fd
children a8abaa9116f1
files lisp/emacs-lisp/advice.el
diffstat 1 files changed, 29 insertions(+), 109 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/advice.el	Fri Feb 25 00:54:15 1994 +0000
+++ b/lisp/emacs-lisp/advice.el	Fri Feb 25 00:57:37 1994 +0000
@@ -4,7 +4,7 @@
 
 ;; Author: Hans Chalupsky <hans@cs.buffalo.edu>
 ;; Created: 12 Dec 1992
-;; Version: advice.el,v 2.10 1994/02/21 10:34:03 hans Exp
+;; Version: advice.el,v 2.11 1994/02/24 22:51:43 hans Exp
 ;; Keywords: extensions, lisp, tools
 
 ;; This file is part of GNU Emacs.
@@ -26,7 +26,7 @@
 ;; LCD Archive Entry:
 ;; advice|Hans Chalupsky|hans@cs.buffalo.edu|
 ;; Overloading mechanism for Emacs Lisp functions|
-;; 1994/02/21 10:34:03|2.10|~/packages/advice.el.Z|
+;; 1994/02/24 22:51:43|2.11|~/packages/advice.el.Z|
 
 
 ;;; Commentary:
@@ -1938,98 +1938,6 @@
 ;; from advising plain functions or subrs.
 
 
-;;; Change Log:
-
-;; advice.el,v
-;; Revision 2.10  1994/02/21  10:34:03  hans
-;; 	* Removed all support for Emacs-18 and associated conditional code.
-;; 	* Made some minor changes to the documentation which is now
-;; 	  slightly out-of-date.
-;;
-;; Revision 2.9  1994/02/21  08:03:39  hans
-;; 	* Lots of cosmetic changes to make documentation strings
-;; 	  conform to the standard conventions.
-;; 	* Some minor changes to the general documentation.
-;; 	* This version is the last one that still supports a v18 Emacs.
-;; 	  It will be made available as `advice18.el'.
-;;
-;; Revision 2.8  1994/02/20  01:46:02  hans
-;; 	* (ad-enable-definition-hooks): Disabled definition hooks for
-;; 	  the combination of a v18 Emacs with a v19 byte-compiler,
-;; 	  because it breaks the rather important `interactive-p'.
-;;
-;; Revision 2.7  1994/02/20  01:09:18  hans
-;; 	* Fixed the problematic interaction between the byte-compiler and
-;; 	  Advice when `ad-activate-on-definition' was t which
-;; 	  resulted in erroneous compilation of nested `defun/defmacro's:
-;; 	* (byte-compile-from-buffer, byte-compile-top-level): Now
-;; 	  advised to temporarily deactivate the advice of `defun/defmacro'.
-;; 	* (ad-advised-definers, ad-advised-byte-compilers): New variables.
-;; 	* (ad-execute-defadvices): Contains the new advices for the
-;; 	  byte-compiler entry points. Uses new variables to copy advice infos.
-;; 	* (ad-enable-definition-hooks, ad-disable-definition-hooks):
-;; 	  Additionally en/disable the advised byte-compiler entry
-;; 	  points. Uses new variables to do so.
-;;
-;; Revision 2.6  1994/02/18  11:02:00  hans
-;; 	* (defadvice): Implement jwz's idea of a `freeze' option which
-;; 	  expands the `defadvice' into a dumpable `defun/defmacro'
-;; 	  whose documentation can be written to the `DOC' file.
-;; 	* (ad-make-advised-docstring, ad-make-single-advice-docstring):
-;; 	  New STYLE option for `plain' and `freeze' styles. Slightly
-;; 	  changed the default formatting of advised docstrings.
-;; 	* (ad-make-plain-docstring, ad-make-freeze-docstring): New functions.
-;;
-;; Revision 2.5  1994/02/18  06:52:25  hans
-;; 	* Merged with version of Lemacs 19.9: Infinite recursion bug in jwz's
-;; 	  adaption of `ad-docstring' fixed with use of `ad-real-documentation'.
-;; 	* (ad-recover-all, ad-scan-byte-code-for-fsets): Removed
-;; 	  unused condition variable `ignore-errors'.
-;;
-;; Revision 2.4  1994/02/18  06:01:56  hans
-;; 	* (ad-save-real-definition): New macro to save real
-;; 	  definitions of functions used by Advice with all the
-;; 	  necessary byte-compile properties.
-;; 	* Now also save real definition of `documentation'.
-;; 	* (ad-subr-arglist, ad-docstring, ad-make-advised-docstring):
-;; 	  Use `ad-real-documentation' to avoid interference with
-;; 	  advised version.
-;;
-;; Revision 2.3  1994/01/25  05:25:00  hans
-;; 	* (ad-execute-defadvices): Copy advice infos to make sure they
-;; 	  are not allocated in pure space during preloading (otherwise
-;; 	  we cannot modify them later on).
-;;
-;; Revision 2.2  1993/12/23  02:32:34  hans
-;; 	* Merged with the version of the Emacs 19.22 distribution:
-;; 	  (ad-start-advice-on-load): Default is now t.
-;; 	  New value for `Keywords' header specification.
-;;
-;; Revision 2.1  1993/05/26  00:07:58  hans
-;; 	* advise `defalias' and `define-function' to properly handle forward
-;; 	  advice in Emacs-19.7 and later
-;; 	* fix minor bug in `ad-preactivate-advice'
-;; 	* merge with FSF installation of version 2.0
-;;
-;; Revision 2.0 1993/05/18 01:29:02 hans
-;;	* Totally revamped: Now also works with v19s, function indirection
-;;	  instead of body copying for original function calls, caching of
-;;	  advised definitions, en/disable mechanism, more and better
-;;        interactive functions, forward advice support for jwz's compiler,
-;;        definition hooks, portable argument access, argument list definition
-;;        for advised functions, preactivation mechanism, pretty comprehensive
-;;        docs (still no info file)
-;;
-;; Revision 1.8 1992/12/15 22:54:45 hans
-;;	* Replaced non-standard `member' with `memq'.
-;;
-;; Revision 1.7 1992/12/14 22:41:49 hans
-;;	* First publicly released version
-;;
-;; Revision 1.1 1992/12/12 05:37:33 hans
-;;	* Created
-
-
 ;;; Code:
 
 ;; @ Advice implementation:
@@ -2049,11 +1957,12 @@
 ;; @@ Variable definitions:
 ;; ========================
 
-(defconst ad-version "2.10")
-
-(defconst ad-lemacs-p
-  (string-match "Lucid" emacs-version)
-  "Non-nil if we run Lucid's version of Emacs-19.")
+(defconst ad-version "2.11")
+
+(defmacro ad-lemacs-p ()
+  ;;Expands into Non-nil constant if we run Lucid's version of Emacs-19.
+  ;;Unselected conditional code will be optimized away during compilation.
+  (string-match "Lucid" emacs-version))
 
 ;;;###autoload
 (defvar ad-start-advice-on-load t
@@ -4012,8 +3921,6 @@
 
 (defvar ad-advised-definers
   '(defun defmacro fset defalias define-function))
-(defvar ad-advised-byte-compilers
-  '(byte-compile-from-buffer byte-compile-top-level))
 
 (defadvice defun (after ad-definition-hooks first disable preact)
   "Whenever a function gets re/defined with `defun' all hook functions
@@ -4089,7 +3996,14 @@
 ;; Both advices are forward advices, hence, they will only be activated if
 ;; automatic advice activation is enabled, but since that is the actual
 ;; situation where we have a problem, we can be sure that the advices will 
-;; be active when we need it.
+;; be active when we need them.
+
+;; We only need this in Lemacs, because in Emacs it is
+;; now taken care of directly by the byte-compiler:
+(cond ((ad-lemacs-p)
+
+(defvar ad-advised-byte-compilers
+  '(byte-compile-from-buffer byte-compile-top-level))
 
 (defadvice byte-compile-from-buffer (around ad-deactivate-defun-defmacro
 					    first disable preact)
@@ -4107,11 +4021,14 @@
     (ad-with-originals (defun defmacro)
       ad-do-it)))
 
+)) ;; end of cond
+
 ;; Make sure advice-infos are not allocated in pure space 
 ;; (this might not be necessary anymore):
 (ad-dolist (advised-function (cons 'documentation
 				   (append ad-advised-definers
-					   ad-advised-byte-compilers)))
+					   (if (ad-lemacs-p)
+					       ad-advised-byte-compilers))))
   (ad-set-advice-info advised-function (ad-copy-advice-info advised-function)))
 
 
@@ -4266,9 +4183,10 @@
   (ad-dolist (definer ad-advised-definers)
     (ad-enable-advice definer 'after 'ad-definition-hooks)
     (ad-activate definer 'compile))
-  (ad-dolist (byte-compiler ad-advised-byte-compilers)
-    (ad-enable-advice byte-compiler 'around 'ad-deactivate-defun-defmacro)
-    (ad-activate byte-compiler 'compile))
+  (if (ad-lemacs-p)
+      (ad-dolist (byte-compiler ad-advised-byte-compilers)
+	(ad-enable-advice byte-compiler 'around 'ad-deactivate-defun-defmacro)
+	(ad-activate byte-compiler 'compile)))
   ;; Now redefine byte-code...
   (ad-real-fset 'byte-code (symbol-function 'ad-advised-byte-code)))
 
@@ -4278,9 +4196,10 @@
   (ad-dolist (definer ad-advised-definers)
     (ad-disable-advice definer 'after 'ad-definition-hooks)
     (ad-update definer))
-  (ad-dolist (byte-compiler ad-advised-byte-compilers)
-    (ad-disable-advice byte-compiler 'around 'ad-deactivate-defun-defmacro)
-    (ad-update byte-compiler 'compile)))
+  (if (ad-lemacs-p)
+      (ad-dolist (byte-compiler ad-advised-byte-compilers)
+	(ad-disable-advice byte-compiler 'around 'ad-deactivate-defun-defmacro)
+	(ad-update byte-compiler 'compile))))
 
 
 ;; @@ Starting, stopping and recovering from the advice package magic:
@@ -4339,3 +4258,4 @@
 (provide 'advice)
 
 ;;; advice.el ends here
+