emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master bb2ea81 3/3: Further improve electric quote support


From: Philipp Stephani
Subject: [Emacs-diffs] master bb2ea81 3/3: Further improve electric quote support for Markdown (Bug#24709)
Date: Sun, 9 Jul 2017 15:56:03 -0400 (EDT)

branch: master
commit bb2ea81bc569bdc51e1c9af1c503a22fb95e4384
Author: Philipp Stephani <address@hidden>
Commit: Philipp Stephani <address@hidden>

    Further improve electric quote support for Markdown (Bug#24709)
    
    Markdown sets both 'comment-start' and 'comment-use-syntax' to non-nil
    values.  Therefore 'electric-quote-mode' recognized it as a
    programming mode.  Fix this by first checking whether the current
    major mode is derived from 'text-mode'.
    
    * lisp/electric.el (electric-quote-post-self-insert-function): Treat
    'text-mode' as stronger signal than comment syntax.
    
    * test/lisp/electric-tests.el (electric-quote-markdown-in-text)
    (electric-quote-markdown-in-code): Adapt unit tests.
---
 lisp/electric.el            | 28 ++++++++++++++--------------
 test/lisp/electric-tests.el |  4 ++++
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/lisp/electric.el b/lisp/electric.el
index 96c805b..a71e79f 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -469,20 +469,20 @@ This requotes when a quoting key is typed."
                  (and (not electric-quote-context-sensitive)
                       (eq last-command-event ?\`)))
              (not (run-hook-with-args-until-success
-                   'electric-quote-inhibit-functions)))
-             (if (and comment-start comment-use-syntax)
-                 (when (or electric-quote-comment electric-quote-string)
-                   (let* ((syntax (syntax-ppss))
-                          (beg (nth 8 syntax)))
-                     (and beg
-                          (or (and electric-quote-comment (nth 4 syntax))
-                              (and electric-quote-string (nth 3 syntax)))
-                          ;; Do not requote a quote that starts or ends
-                          ;; a comment or string.
-                          (eq beg (nth 8 (save-excursion
-                                           (syntax-ppss (1- (point)))))))))
-               (and electric-quote-paragraph
-                    (derived-mode-p 'text-mode))))
+                   'electric-quote-inhibit-functions))
+             (if (derived-mode-p 'text-mode)
+                 electric-quote-paragraph
+               (and comment-start comment-use-syntax
+                    (or electric-quote-comment electric-quote-string)
+                    (let* ((syntax (syntax-ppss))
+                           (beg (nth 8 syntax)))
+                      (and beg
+                           (or (and electric-quote-comment (nth 4 syntax))
+                               (and electric-quote-string (nth 3 syntax)))
+                           ;; Do not requote a quote that starts or ends
+                           ;; a comment or string.
+                           (eq beg (nth 8 (save-excursion
+                                            (syntax-ppss (1- (point)))))))))))
     (pcase electric-quote-chars
       (`(,q< ,q> ,q<< ,q>>)
        (save-excursion
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el
index c4ccec7..c6ffccc 100644
--- a/test/lisp/electric-tests.el
+++ b/test/lisp/electric-tests.el
@@ -694,6 +694,8 @@ baz\"\""
   :bindings '((electric-quote-context-sensitive . t))
   :test-in-comments nil :test-in-strings nil)
 
+;; Simulate ‘markdown-mode’: it sets both ‘comment-start’ and
+;; ‘comment-use-syntax’, but derives from ‘text-mode’.
 (define-electric-pair-test electric-quote-markdown-in-text
   "" "'" :expected-string "’" :expected-point 2
   :modes '(text-mode)
@@ -703,6 +705,7 @@ baz\"\""
                           (lambda ()
                             (save-excursion (search-backward "`" nil t)))
                           nil :local))
+  :bindings '((comment-start . "<!--") (comment-use-syntax . t))
   :test-in-comments nil :test-in-strings nil)
 
 (define-electric-pair-test electric-quote-markdown-in-code
@@ -714,6 +717,7 @@ baz\"\""
                           (lambda ()
                             (save-excursion (search-backward "`" nil t)))
                           nil :local))
+  :bindings '((comment-start . "<!--") (comment-use-syntax . t))
   :test-in-comments nil :test-in-strings nil)
 
 (provide 'electric-tests)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]