Hello everyone, I stumbled a couple of times across a behaviour by ‘electric-quote-mode’ where it replaces two consecutive single electric quotes with a single double quote. To see what I mean open ‘emacs -Q’, enable ‘electric-quote-mode’ and ‘text-mode’, then hit ` or ' twice. I find it more annoying than helpful so I changed ‘electric-quote-post-self-insert-function’ to make it check an option that can disable this behaviour. It involves the two lines marked with ‘<--’ arrows in the code below. Do you think it can be included in Emacs? Best of wishes, Andrea Code: (defcustom electric-quote-replace-consecutive t "Non-nil means to replace two consecutive electric single quotes with the corresponding (opening or closing) double quote." :type 'boolean :safe #'booleanp :group 'electricity) (defun electric-quote-post-self-insert-function () "Function that `electric-quote-mode' adds to `post-self-insert-hook'. This requotes when a quoting key is typed." (when (and electric-quote-mode (or (eq last-command-event ?\') (and (not electric-quote-context-sensitive) (eq last-command-event ?\`)) (and electric-quote-replace-double (eq last-command-event ?\"))) (not (run-hook-with-args-until-success '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 (let ((backtick ?\`)) (if (or (eq last-command-event ?\`) (and (or electric-quote-context-sensitive ;; <-- Changed here (and electric-quote-replace-double (eq last-command-event ?\"))) (save-excursion (backward-char) (skip-syntax-backward "\\") (or (bobp) (bolp) (memq (char-before) (list q< q<<)) (memq (char-syntax (char-before)) '(?\s ?\()))) (setq backtick ?\'))) (cond ((and electric-quote-replace-consecutive ;; <----- and here (search-backward (string q< backtick) (- (point) 2) t)) (replace-match (string q<<)) (when (and electric-pair-mode (eq (cdr-safe (assq q< electric-pair-text-pairs)) (char-after))) (delete-char 1)) (setq last-command-event q<<)) ((search-backward (string backtick) (1- (point)) t) (replace-match (string q<)) (setq last-command-event q<)) ((search-backward "\"" (1- (point)) t) (replace-match (string q<<)) (setq last-command-event q<<))) (cond ((and electric-quote-replace-consecutive (search-backward (string q> ?') (- (point) 2) t)) (replace-match (string q>>)) (setq last-command-event q>>)) ((search-backward "'" (1- (point)) t) (replace-match (string q>)) (setq last-command-event q>)) ((search-backward "\"" (1- (point)) t) (replace-match (string q>>)) (setq last-command-event q>>))))))))))