1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 04:10:54 -08:00

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.
This commit is contained in:
Philipp Stephani 2017-07-02 18:14:21 +02:00
parent 633db417fc
commit bb2ea81bc5
2 changed files with 18 additions and 14 deletions

View file

@ -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

View file

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