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)))))