Function: electric-pair-syntax-info
electric-pair-syntax-info is a byte-compiled function defined in
elec-pair.el.gz.
Signature
(electric-pair-syntax-info COMMAND-EVENT)
Documentation
Calculate a list (SYNTAX PAIR UNCONDITIONAL STRING-OR-COMMENT-START).
SYNTAX is COMMAND-EVENT's syntax character. PAIR is COMMAND-EVENT's
pair. UNCONDITIONAL indicates that the variables electric-pair-pairs
or electric-pair-text-pairs were used to look up syntax.
STRING-OR-COMMENT-START indicates that point is inside a comment or
string.
Source Code
;; Defined in /usr/src/emacs/lisp/elec-pair.el.gz
(defun electric-pair-syntax-info (command-event)
"Calculate a list (SYNTAX PAIR UNCONDITIONAL STRING-OR-COMMENT-START).
SYNTAX is COMMAND-EVENT's syntax character. PAIR is COMMAND-EVENT's
pair. UNCONDITIONAL indicates that the variables `electric-pair-pairs'
or `electric-pair-text-pairs' were used to look up syntax.
STRING-OR-COMMENT-START indicates that point is inside a comment or
string."
(let* ((pre-string-or-comment (or (bobp)
(nth 8 (save-excursion
(syntax-ppss (1- (point)))))))
(post-string-or-comment (nth 8 (syntax-ppss (point))))
(string-or-comment (and post-string-or-comment
pre-string-or-comment))
(table-syntax-and-pair
(electric-pair--with-syntax string-or-comment
(list (char-syntax command-event)
(or (matching-paren command-event)
command-event))))
(fallback (if string-or-comment
(append electric-pair-text-pairs
electric-pair-pairs)
electric-pair-pairs))
(direct (assq command-event fallback))
(reverse (rassq command-event fallback)))
(cond
((cl-loop
for pairs in fallback
if (and
(stringp (car pairs))
(looking-back (car pairs) (pos-bol)))
return (list
'str
;; Get pair ender
(if (proper-list-p pairs)
(nth 1 pairs)
(cdr pairs))
nil
;; Check if pairs have to insert a space after
;; first pair was inserted.
(if (proper-list-p pairs)
(nth 2 pairs)))))
((memq (car table-syntax-and-pair)
'(?\" ?\( ?\) ?\$))
(append table-syntax-and-pair (list nil string-or-comment)))
(direct (if (eq (car direct) (cdr direct))
(list ?\" command-event t string-or-comment)
(list ?\( (cdr direct) t string-or-comment)))
(reverse (list ?\) (car reverse) t string-or-comment)))))