From f612933b88509427a690ea1966eac533b8ef80e1 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 17 Jun 2013 03:09:13 +0200 Subject: [PATCH] lisp/progmodes/prog-mode.el: Force font-lock to deal with `composition' prop. (prog-prettify-install): Add `composition' to `font-lock-extra-managed-props' if any prettifying keyword is added. (prog--prettify-font-lock-compose-symbol): Use ?\s instead of ?\ . (prog-mode): Use `setq-local'. --- lisp/ChangeLog | 7 +++++++ lisp/progmodes/prog-mode.el | 13 ++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5d44b897b51..b64bcccacd1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2013-06-17 Juanma Barranquero + + * progmodes/prog-mode.el (prog-prettify-install): Add `composition' to + `font-lock-extra-managed-props' if any prettifying keyword is added. + (prog--prettify-font-lock-compose-symbol): Use ?\s instead of ?\ . + (prog-mode): Use `setq-local'. + 2013-06-17 Stefan Monnier * international/characters.el (standard-case-table): Set syntax of ?» diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index 03505051c1f..6498ba51e45 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -76,8 +76,8 @@ Regexp match data 0 points to the chars." (syntaxes (if (eq (char-syntax (char-after start)) ?w) '(?w) '(?. ?\\))) match) - (if (or (memq (char-syntax (or (char-before start) ?\ )) syntaxes) - (memq (char-syntax (or (char-after end) ?\ )) syntaxes) + (if (or (memq (char-syntax (or (char-before start) ?\s)) syntaxes) + (memq (char-syntax (or (char-after end) ?\s)) syntaxes) ;; 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 @@ -106,13 +106,16 @@ ALIST is in the format `((STRING . CHARACTER)...)' like Internally, `font-lock-add-keywords' is called." (setq-local prog-prettify-symbols-alist alist) (let ((keywords (prog-prettify-font-lock-symbols-keywords))) - (if keywords (font-lock-add-keywords nil keywords)))) + (when keywords + (font-lock-add-keywords nil keywords) + (setq-local font-lock-extra-managed-props + (cons 'composition font-lock-extra-managed-props))))) ;;;###autoload (define-derived-mode prog-mode fundamental-mode "Prog" "Major mode for editing programming language source code." - (set (make-local-variable 'require-final-newline) mode-require-final-newline) - (set (make-local-variable 'parse-sexp-ignore-comments) t) + (setq-local require-final-newline mode-require-final-newline) + (setq-local parse-sexp-ignore-comments t) ;; Any programming language is always written left to right. (setq bidi-paragraph-direction 'left-to-right)) -- 2.39.2