Commit ef6e365d authored by John Paul Wallington's avatar John Paul Wallington
Browse files

(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'.
parent 1a5f6e6a
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,
......
......@@ -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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment