mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-02 11:21:42 +00:00
(with-syntax-table): Save buffer explicitly instead of
using save-excursion.
This commit is contained in:
parent
5d7e4a2c3c
commit
aad9b36243
@ -4139,16 +4139,19 @@ after it has been set up properly in other respects."
|
||||
|
||||
(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)))
|
||||
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))
|
||||
(old-buffer (gensym)))
|
||||
'(let ((,old-table (syntax-table))
|
||||
(,old-buffer (current-buffer)))
|
||||
(unwind-protect
|
||||
(save-excursion
|
||||
(progn
|
||||
(set-syntax-table (copy-syntax-table ,table))
|
||||
,@body)
|
||||
(set-syntax-table ,old-table)))))
|
||||
(set-buffer ,old-buffer)
|
||||
(set-syntax-table ,old-table)))))
|
||||
|
||||
(put 'with-syntax-table 'lisp-indent-function 1)
|
||||
(put 'with-syntax-table 'edebug-form-spec '(form body))
|
||||
|
Loading…
Reference in New Issue
Block a user