[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)