Use add/remove-function to manipulate process-filters.
* lisp/emacs-lisp/nadvice.el (advice--where-alist): Add :override. (remove-function): Autoload. * lisp/comint.el (comint-redirect-original-filter-function): Remove. (comint-redirect-cleanup, comint-redirect-send-command-to-process): * lisp/vc/vc-cvs.el (vc-cvs-annotate-process-filter,vc-cvs-annotate-command): * lisp/progmodes/octave-inf.el (inferior-octave-send-list-and-digest): * lisp/progmodes/prolog.el (prolog-consult-compile): * lisp/progmodes/gdb-mi.el (gdb, gdb--check-interpreter): Use add/remove-function instead. * lisp/progmodes/gud.el (gud-tooltip-original-filter): Remove. (gud-tooltip-process-output, gud-tooltip-tips): Use add/remove-function instead. * lisp/progmodes/xscheme.el (xscheme-previous-process-state): Remove. (scheme-interaction-mode, exit-scheme-interaction-mode): Use add/remove-function instead. * lisp/vc/vc-dispatcher.el: Use lexical-binding. (vc--process-sentinel): Rename from vc-process-sentinel. Change last arg to be the code to run. Don't use vc-previous-sentinel and vc-sentinel-commands any more. (vc-exec-after): Allow code to be a function. Use add/remove-function. (compilation-error-regexp-alist, view-old-buffer-read-only): Declare.
This commit is contained in:
parent
806bda47dd
commit
bcd7a0a4c5
10 changed files with 101 additions and 95 deletions
|
@ -41,6 +41,7 @@
|
|||
'((:around "\300\301\302\003#\207" 5)
|
||||
(:before "\300\301\002\"\210\300\302\002\"\207" 4)
|
||||
(:after "\300\302\002\"\300\301\003\"\210\207" 5)
|
||||
(:override "\300\301\"\207" 4)
|
||||
(:after-until "\300\302\002\"\206\013\000\300\301\002\"\207" 4)
|
||||
(:after-while "\300\302\002\"\205\013\000\300\301\002\"\207" 4)
|
||||
(:before-until "\300\301\002\"\206\013\000\300\302\002\"\207" 4)
|
||||
|
@ -228,6 +229,7 @@ call OLDFUN here:
|
|||
`:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r))
|
||||
`:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r)))
|
||||
`:around' (lambda (&rest r) (apply FUNCTION OLDFUN r))
|
||||
`:override' (lambda (&rest r) (apply FUNCTION r))
|
||||
`:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r)))
|
||||
`:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r)))
|
||||
`:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r)))
|
||||
|
@ -263,6 +265,7 @@ is also interactive. There are 3 cases:
|
|||
(setf (gv-deref ref)
|
||||
(advice--make where function (gv-deref ref) props))))
|
||||
|
||||
;;;###autoload
|
||||
(defmacro remove-function (place function)
|
||||
"Remove the FUNCTION piece of advice from PLACE.
|
||||
If FUNCTION was not added to PLACE, do nothing.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue