aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1995-10-22 05:20:37 +0000
committerRichard M. Stallman1995-10-22 05:20:37 +0000
commita43944b5b80a5da493f533949de6d104a35bac91 (patch)
tree5e08708f20460e7736843ffc6da769bdfe592f88
parent1fc93d49d9194d87a2288f9c398bad6cd1c84af7 (diff)
downloademacs-a43944b5b80a5da493f533949de6d104a35bac91.tar.gz
emacs-a43944b5b80a5da493f533949de6d104a35bac91.zip
(derived-mode-init-mode-variables): Make proper syntax-table.
(derived-mode-merge-syntax-tables): Rewrite using map-char-table.
-rw-r--r--lisp/derived.el16
1 files changed, 9 insertions, 7 deletions
diff --git a/lisp/derived.el b/lisp/derived.el
index 36bf1428125..85466f53899 100644
--- a/lisp/derived.el
+++ b/lisp/derived.el
@@ -221,7 +221,10 @@ the first time the mode is used."
221 (if (boundp (derived-mode-syntax-table-name mode)) 221 (if (boundp (derived-mode-syntax-table-name mode))
222 t 222 t
223 (eval (` (defvar (, (derived-mode-syntax-table-name mode)) 223 (eval (` (defvar (, (derived-mode-syntax-table-name mode))
224 (make-vector 256 nil) 224 ;; Make a syntax table which doesn't specify anything
225 ;; for any char. Valid data will be merged in by
226 ;; derived-mode-merge-syntax-tables.
227 (make-char-table 'syntax-table nil)
225 (, (format "Syntax table for %s." mode))))) 228 (, (format "Syntax table for %s." mode)))))
226 (put (derived-mode-syntax-table-name mode) 'derived-mode-unmerged t)) 229 (put (derived-mode-syntax-table-name mode) 'derived-mode-unmerged t))
227 230
@@ -327,12 +330,11 @@ be automatic inheritance."
327(defun derived-mode-merge-syntax-tables (old new) 330(defun derived-mode-merge-syntax-tables (old new)
328 "Merge an old syntax table into a new one. 331 "Merge an old syntax table into a new one.
329Where the new table already has an entry, nothing is copied from the old one." 332Where the new table already has an entry, nothing is copied from the old one."
330 (let ((idx 0) 333 (map-char-table
331 (end (min (length new) (length old)))) 334 (function (lambda (key value)
332 (while (< idx end) 335 (or (char-table-range new key)
333 (if (not (aref new idx)) 336 (set-char-table-range new key value))))
334 (aset new idx (aref old idx))) 337 old))
335 (setq idx (1+ idx)))))
336 338
337;; Merge an old abbrev table into a new one. 339;; Merge an old abbrev table into a new one.
338;; This function requires internal knowledge of how abbrev tables work, 340;; This function requires internal knowledge of how abbrev tables work,