summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-05-02 10:46:53 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2016-05-02 10:46:53 -0700
commit2bf7bc4161a3b3e1eceaf8422773de87ae233ea3 (patch)
treed17e0d30b08dc696fa30cb3eec8673841eddef0a
parentd05806fda1cbba2db112bc783597fbe9d27175b2 (diff)
parentbf21c84f0d3dab33b4836098b789eaddf9492b2a (diff)
downloademacs-2bf7bc4161a3b3e1eceaf8422773de87ae233ea3.tar.gz
Merge from origin/emacs-25
bf21c84 Fix quoting problem in cc-engine debug message 8f36614 Add electric-quote-string unit test 6280531 Don’t electrically quote ‘'’ in Python fd7b430 `nreverse' Grep hits before passing them to xref--convert-hits
-rw-r--r--lisp/electric.el11
-rw-r--r--lisp/progmodes/cc-engine.el2
-rw-r--r--lisp/progmodes/xref.el2
-rw-r--r--test/lisp/electric-tests.el8
4 files changed, 18 insertions, 5 deletions
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