From: Stefan Monnier Date: Mon, 1 Dec 2014 04:07:19 +0000 (-0500) Subject: * lisp/progmodes/prog-mode.el (prettify-symbols--compose-symbol): Refine. X-Git-Tag: emacs-24.4.90~162 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e97b6e6f11ceb85f4f3cbe1ecbbc46aa0a8de48a;p=emacs.git * lisp/progmodes/prog-mode.el (prettify-symbols--compose-symbol): Refine. Fix handling of symbols with different syntax at beginning/end or with symbol rather than word syntax. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 726d9b02ac8..ac36c059bd3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2014-12-01 Stefan Monnier + + * progmodes/prog-mode.el (prettify-symbols--compose-symbol): + Fix handling of symbols with different syntax at beginning/end or with + symbol rather than word syntax. + 2014-11-30 Eli Zaretskii * simple.el (line-move): If noninteractive, call line-move-1, not diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index 407466932d9..e0e57462405 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -66,11 +66,13 @@ Regexp match data 0 points to the chars." ;; Check that the chars should really be composed into a symbol. (let* ((start (match-beginning 0)) (end (match-end 0)) - (syntaxes (if (eq (char-syntax (char-after start)) ?w) + (syntaxes-beg (if (memq (char-syntax (char-after start)) '(?w ?_)) + '(?w ?_) '(?. ?\\))) + (syntaxes-end (if (memq (char-syntax (char-before end)) '(?w ?_)) '(?w ?_) '(?. ?\\))) match) - (if (or (memq (char-syntax (or (char-before start) ?\s)) syntaxes) - (memq (char-syntax (or (char-after end) ?\s)) syntaxes) + (if (or (memq (char-syntax (or (char-before start) ?\s)) syntaxes-beg) + (memq (char-syntax (or (char-after end) ?\s)) syntaxes-end) ;; syntax-ppss could modify the match data (bug#14595) (progn (setq match (match-string 0)) (nth 8 (syntax-ppss)))) ;; No composition for you. Let's actually remove any composition