(defcustom electric-quote-comment t
"Non-nil means to use electric quoting in program comments."
+ :version "25.1"
:type 'boolean :safe 'booleanp :group 'electricity)
(defcustom electric-quote-string nil
"Non-nil means to use electric quoting in program strings."
+ :version "25.1"
:type 'boolean :safe 'booleanp :group 'electricity)
(defcustom electric-quote-paragraph t
"Non-nil means to use electric quoting in text paragraphs."
+ :version "25.1"
:type 'boolean :safe 'booleanp :group 'electricity)
(defun electric--insertable-p (string)
(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 ?\`)