From: hipster Date: 2002-04-12T17:54:36+09:00 Subject: Re: Idea for a new shorthand On Fri, 12 Apr 2002 16:22:57 +0900, Hal E. Fulton wrote: [snip] > > I know the problem you want to solve. I'm considering something like > > CLOS's method combination, or Emacs's defadvice for the matter. > > OK, I am glad it is a sensible idea... > > I know nothing of CLOS or of this defadvice thing, however. > > If anyone wishes to enlighten me, I would like to learn. defadvice is Aspect Oriented Programming, like aspectr (RAA). What you described is the before-part of an advice function (or aspect, if you will) From advice.el: ;; @ Introduction: ;; =============== ;; This package implements a full-fledged Lisp-style advice mechanism ;; for Emacs Lisp. Advice is a clean and efficient way to modify the ;; behavior of Emacs Lisp functions without having to keep personal ;; modified copies of such functions around. A great number of such ;; modifications can be achieved by treating the original function as a ;; black box and specifying a different execution environment for it ;; with a piece of advice. Think of a piece of advice as a kind of fancy ;; hook that you can attach to any function/macro/subr. ;; @ Highlights: ;; ============= ;; - Clean definition of multiple, named before/around/after advices ;; for functions, macros, subrs and special forms ;; - Full control over the arguments an advised function will receive, ;; the binding environment in which it will be executed, as well as the ;; value it will return. ;; - Allows re/definition of interactive behavior for functions and subrs ;; - Every piece of advice can have its documentation string which will be ;; combined with the original documentation of the advised function at ;; call-time of `documentation' for proper command-key substitution. ;; - The execution of every piece of advice can be protected against error ;; and non-local exits in preceding code or advices. ;; - Simple argument access either by name, or, more portable but as ;; efficient, via access macros ;; - Allows the specification of a different argument list for the advised ;; version of a function. ;; - Advised functions can be byte-compiled either at file-compile time ;; (see preactivation) or activation time. ;; - Separation of advice definition and activation ;; - Forward advice is possible, that is ;; as yet undefined or autoload functions can be advised without having to ;; preload the file in which they are defined. ;; - Forward redefinition is possible because around advice can be used to ;; completely redefine a function. ;; - A caching mechanism for advised definition provides for cheap deactivation ;; and reactivation of advised functions. ;; - Preactivation allows efficient construction and compilation of advised ;; definitions at file compile time without giving up the flexibility of ;; the advice mechanism. ;; - En/disablement mechanism allows the use of different "views" of advised ;; functions depending on what pieces of advice are currently en/disabled ;; - Provides manipulation mechanisms for sets of advised functions via ;; regular expressions that match advice names regards, Michel