Function: c-state-push-any-brace-pair

c-state-push-any-brace-pair is a byte-compiled function defined in cc-engine.el.gz.

Signature

(c-state-push-any-brace-pair BRA+1 MACRO-START-OR-HERE)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
(defsubst c-state-push-any-brace-pair (bra+1 macro-start-or-here)
  ;; If BRA+1 is nil, do nothing.  Otherwise, BRA+1 is the buffer position
  ;; following a {, and that brace has a (mis-)matching } (or ]), and we
  ;; "push" "a" brace pair onto `c-state-cache'.
  ;;
  ;; Here "push" means overwrite the top element if it's itself a brace-pair,
  ;; otherwise push it normally.
  ;;
  ;; The brace pair we push is normally the one surrounding BRA+1, but if the
  ;; latter is inside a macro, not being a macro containing
  ;; MACRO-START-OR-HERE, we scan backwards through the buffer for a non-macro
  ;; base pair.  This latter case is assumed to be rare.
  ;;
  ;; Note: POINT is not preserved in this routine.
  (if bra+1
      (if (or (> bra+1 macro-start-or-here)
	      (progn (goto-char bra+1)
		     (not (c-beginning-of-macro))))
	  (setq c-state-cache
		(cons (cons (1- bra+1)
			    (c-sc-scan-lists bra+1 1 1))
		      (if (consp (car c-state-cache))
			  (cdr c-state-cache)
			c-state-cache)))
	;; N.B.	 This defsubst codes one method for the simple, normal case,
	;; and a more sophisticated, slower way for the general case.  Don't
	;; eliminate this defsubst - it's a speed optimization.
	(c-append-lower-brace-pair-to-state-cache (1- bra+1) (point-max)))))