diff --git a/lisp/electric.el b/lisp/electric.el index ab79943c9dd..e2896010405 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -444,10 +444,15 @@ This requotes when a quoting key is typed." (let ((start (if (and comment-start comment-use-syntax) (when (or electric-quote-comment electric-quote-string) - (let ((syntax (syntax-ppss))) - (and (or (and electric-quote-comment (nth 4 syntax)) + (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))) - (nth 8 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) (or (eq last-command-event ?\`) diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 76a0b201816..d19d2dacda1 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -3527,7 +3527,7 @@ comment at the start of cc-engine.el for more info." c-state-old-cpp-end c-parse-state-point)))) (defun c-replay-parse-state-state () - (message + (message "%s" (concat "(setq " (mapconcat (lambda (arg) diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index f674c70b104..b5632af13ab 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -902,7 +902,7 @@ IGNORES is a list of glob patterns." (match-string 1) (buffer-substring-no-properties (point) (line-end-position))) hits))) - (xref--convert-hits hits regexp))) + (xref--convert-hits (nreverse hits) regexp))) (defun xref--rgrep-command (regexp files dir ignores) (require 'find-dired) ; for `find-name-arg' diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index 107b2e79fb6..afd707667b8 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el @@ -584,5 +584,13 @@ baz\"\"" (skip-chars-backward "\"") (mark-sexp -1))) + +;;; Electric quotes +(define-electric-pair-test electric-quote-string + "" "'" :expected-string "'" :expected-point 2 + :fixture-fn #'electric-quote-local-mode + :bindings '((electric-quote-string . t)) + :test-in-comments nil :test-in-strings nil) + (provide 'electric-tests) ;;; electric-tests.el ends here