1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-01 18:00:40 -08:00

(with-category-table): Use `make-symbol' to avoid variable capture.

Set table within `unwind-protect'.  Ensure table is restored in
correct buffer.  Add docstring.  Basically, copy `with-syntax-table'.
This commit is contained in:
John Paul Wallington 2003-03-29 02:57:19 +00:00
parent 1a5f6e6adf
commit ef6e365d09
2 changed files with 23 additions and 7 deletions

View file

@ -1,3 +1,9 @@
2003-03-29 John Paul Wallington <jpw@gnu.org>
* international/mule.el (with-category-table): Use `make-symbol'
to avoid variable capture. Set table within `unwind-protect'.
Ensure table is restored in correct buffer. Add docstring.
2003-03-29 Kenichi Handa <handa@etlken2>
* language/japan-util.el: If system-type is not for Windows,

View file

@ -593,7 +593,7 @@ character code range. Thus FUNC should iterate over [START, END]."
(make-char charset (+ i start) (+ start chars -1)))))))
(defun register-char-codings (coding-system safe-chars)
"This is an obsolete function.
"This is an obsolete function.
It exists just for backward compatibility, and it does nothing.")
(make-obsolete 'register-char-codings
"Unnecessary function. Calling it has no effect."
@ -1985,12 +1985,22 @@ the table in `translation-table-vector'."
(put 'with-category-table 'lisp-indent-function 1)
(defmacro with-category-table (category-table &rest body)
`(let ((current-category-table (category-table)))
(set-category-table ,category-table)
(unwind-protect
(progn ,@body)
(set-category-table current-category-table))))
(defmacro with-category-table (table &rest body)
"Evaluate BODY with category table of current buffer set to TABLE.
The category table of the current buffer is saved, BODY is evaluated,
then the saved table is restored, even in case of an abnormal exit.
Value is what BODY returns."
(let ((old-table (make-symbol "old-table"))
(old-buffer (make-symbol "old-buffer")))
`(let ((,old-table (category-table))
(,old-buffer (current-buffer)))
(unwind-protect
(progn
(set-category-table ,table)
,@body)
(save-current-buffer
(set-buffer ,old-buffer)
(set-category-table ,old-table))))))
(defun define-translation-hash-table (symbol table)
"Define SYMBOL as the name of the hash translation TABLE for use in CCL.