diff options
| author | Richard M. Stallman | 1995-10-22 05:20:37 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1995-10-22 05:20:37 +0000 |
| commit | a43944b5b80a5da493f533949de6d104a35bac91 (patch) | |
| tree | 5e08708f20460e7736843ffc6da769bdfe592f88 | |
| parent | 1fc93d49d9194d87a2288f9c398bad6cd1c84af7 (diff) | |
| download | emacs-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.el | 16 |
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. |
| 329 | Where the new table already has an entry, nothing is copied from the old one." | 332 | Where 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, |