Mercurial > emacs
changeset 26466:b32572666174
(with-syntax-table): New.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Tue, 16 Nov 1999 13:29:51 +0000 |
parents | b9ad44d699ec |
children | fe1632dc5fb3 |
files | lisp/simple.el |
diffstat | 1 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Tue Nov 16 13:27:36 1999 +0000 +++ b/lisp/simple.el Tue Nov 16 13:29:51 1999 +0000 @@ -27,6 +27,10 @@ ;;; Code: +(eval-when-compile + (require 'cl)) + + (defgroup killing nil "Killing and yanking commands" :group 'editing) @@ -4132,4 +4136,21 @@ (if display-flag (pop-to-buffer new)) new)) + +(defmacro with-syntax-table (table &rest body) + "Evaluate BODY with syntax table of current buffer set to a copy of TABLE. +Point, mark, current buffer, and syntax table are saved, BODY is +evaluated, and the saved values are restored, even in case of an +abnormal exit. Value is what BODY returns." + (let ((old-table (gensym))) + '(let ((,old-table (syntax-table))) + (unwind-protect + (save-excursion + (set-syntax-table (copy-syntax-table ,table)) + ,@body) + (set-syntax-table ,old-table))))) + +(put 'with-syntax-table 'lisp-indent-function 1) +(put 'with-syntax-table 'edebug-form-spec '(form body)) + ;;; simple.el ends here