aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2000-03-21 15:28:44 +0000
committerStefan Monnier2000-03-21 15:28:44 +0000
commitc834b52cdce6b71d976bc1d1e1936c0896b6fbb5 (patch)
treec1945ba2f13bbd8995a80c1c52c677710222dff2
parent6c4bfdc0b738f865199859fbd4f7be88f21429cb (diff)
downloademacs-c834b52cdce6b71d976bc1d1e1936c0896b6fbb5.tar.gz
emacs-c834b52cdce6b71d976bc1d1e1936c0896b6fbb5.zip
(combine-run-hooks): New function.
-rw-r--r--lisp/subr.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/lisp/subr.el b/lisp/subr.el
index 9074d3bbd3e..ee6eadaa59f 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1089,6 +1089,35 @@ in BODY."
1089 . ,body) 1089 . ,body)
1090 (combine-after-change-execute))) 1090 (combine-after-change-execute)))
1091 1091
1092
1093(defvar combine-run-hooks t
1094 "List of hooks delayed. Or t if we're not delaying hooks.")
1095
1096(defmacro combine-run-hooks (&rest body)
1097 "Execute BODY, but delay any `run-hooks' until the end."
1098 (let ((saved-combine-run-hooks (make-symbol "saved-combine-run-hooks"))
1099 (saved-run-hooks (make-symbol "saved-run-hooks")))
1100 `(let ((,saved-combine-run-hooks combine-run-hooks)
1101 (,saved-run-hooks (symbol-function 'run-hooks)))
1102 (unwind-protect
1103 (progn
1104 ;; If we're not delaying hooks yet, setup the delaying mode
1105 (unless (listp combine-run-hooks)
1106 (setq combine-run-hooks nil)
1107 (fset 'run-hooks
1108 ,(lambda (&rest hooks)
1109 (setq combine-run-hooks
1110 (append combine-run-hooks hooks)))))
1111 ,@body)
1112 ;; If we were not already delaying, then it's now time to set things
1113 ;; back to normal and to execute the delayed hooks.
1114 (unless (listp ,saved-combine-run-hooks)
1115 (setq ,saved-combine-run-hooks combine-run-hooks)
1116 (fset 'run-hooks ,saved-run-hooks)
1117 (setq combine-run-hooks t)
1118 (apply 'run-hooks ,saved-combine-run-hooks))))))
1119
1120
1092(defmacro with-syntax-table (table &rest body) 1121(defmacro with-syntax-table (table &rest body)
1093 "Evaluate BODY with syntax table of current buffer set to a copy of TABLE. 1122 "Evaluate BODY with syntax table of current buffer set to a copy of TABLE.
1094The syntax table of the current buffer is saved, BODY is evaluated, and the 1123The syntax table of the current buffer is saved, BODY is evaluated, and the