GNU bug report logs -
#16160
[PATCH] define-derived-mode clobbers syntax tables
Previous Next
Reported by: Daniel Colascione <dancol <at> dancol.org>
Date: Mon, 16 Dec 2013 11:14:02 UTC
Severity: normal
Tags: confirmed
Fixed in version 26.1
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Repro:
1) Visit shell script with comments. See comments fontified properly.
2) M-x find-library sh-script RET
3) M-x eval-buffer
4) Return to shell script buffer
5) C-x C-v RET
6) Observe that comments are no longer fontified as comments.
The define-derived-mode macro in sh-script.el emits code that clobbers
sh-mode-syntax-table because we don't have a :syntax-table argument. I
think the following patch changes the code to the expected behavior.
~/edev/trunk
$ bzr diff
=== modified file 'lisp/emacs-lisp/derived.el'
--- lisp/emacs-lisp/derived.el 2013-05-27 16:12:52 +0000
+++ lisp/emacs-lisp/derived.el 2013-12-16 11:09:41 +0000
@@ -206,11 +206,11 @@
,(if declare-syntax
`(progn
(unless (boundp ',syntax)
- (put ',syntax 'definition-name ',child))
- (defvar ,syntax (make-syntax-table))
- (unless (get ',syntax 'variable-documentation)
- (put ',syntax 'variable-documentation
- (purecopy ,(format "Syntax table for `%s'." child))))))
+ (put ',syntax 'definition-name ',child)
+ (defvar ,syntax (make-syntax-table))
+ (unless (get ',syntax 'variable-documentation)
+ (put ',syntax 'variable-documentation
+ (purecopy ,(format "Syntax table for `%s'."
child)))))))
,(if declare-abbrev
`(progn
(put ',abbrev 'definition-name ',child)
That is, we shouldn't touch the syntax table variable at all unless the
variable is unbound.
This bug report was last modified 8 years and 166 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.