Function: c-lineup-argcont-1

c-lineup-argcont-1 is a byte-compiled function defined in cc-align.el.gz.

Signature

(c-lineup-argcont-1 ELEM)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-align.el.gz
(defun c-lineup-argcont-1 (elem)
  ;; Move to the start of the current arg and return non-nil, otherwise
  ;; return nil.
  (beginning-of-line)

  (when (eq (car elem) 'arglist-cont-nonempty)
    ;; Our argument list might not be the innermost one.  If it
    ;; isn't, go back to the first position in it.  We do this by
    ;; stepping back over open parens until we get to the open paren
    ;; of our argument list.
    (let ((open-paren (c-langelem-2nd-pos c-syntactic-element))
	  (paren-state (c-parse-state)))
      (while (not (eq (car paren-state) open-paren))
	(unless (consp (car paren-state)) ;; ignore matched braces
	  (goto-char (car paren-state)))
	(setq paren-state (cdr paren-state)))))

  (let ((start (point)) c)

    (when (bolp)
      ;; Previous line ending in a comma means we're the start of an
      ;; argument.  This should quickly catch most cases not for us.
      ;; This case is only applicable if we're the innermost arglist.
      (c-backward-syntactic-ws)
      (setq c (char-before)))

    (unless (eq c ?,)
      ;; In a gcc asm, ":" on the previous line means the start of an
      ;; argument.  And lines starting with ":" are not for us, don't
      ;; want them to indent to the preceding operand.
      (let ((gcc-asm (save-excursion
		       (goto-char start)
		       (c-in-gcc-asm-p))))
	(unless (and gcc-asm
		     (or (eq c ?:)
			 (save-excursion
			   (goto-char start)
			   (looking-at "[ \t]*:"))))

	  (c-lineup-argcont-scan (if gcc-asm ?:))
	  t)))))