\f
(defvar c-fix-backslashes t)
-(defun c-shift-line-indentation (shift-amt)
- ;; This function does not do any hidden buffer changes.
- (let ((pos (- (point-max) (point)))
- (c-macro-start c-macro-start)
- tmp-char-inserted)
- (if (zerop shift-amt)
- nil
- (when (and (c-query-and-set-macro-start)
- (looking-at "[ \t]*\\\\$")
- (save-excursion
- (skip-chars-backward " \t")
- (bolp)))
- (insert ?x)
- (backward-char)
- (setq tmp-char-inserted t))
- (unwind-protect
- (let ((col (current-indentation)))
- (delete-region (c-point 'bol) (c-point 'boi))
- (beginning-of-line)
- (indent-to (+ col shift-amt)))
- (when tmp-char-inserted
- (delete-char 1))))
- ;; If initial point was within line's indentation and we're not on
- ;; a line with a line continuation in a macro, position after the
- ;; indentation. Else stay at same point in text.
- (if (and (< (point) (c-point 'boi))
- (not tmp-char-inserted))
- (back-to-indentation)
- (if (> (- (point-max) pos) (point))
- (goto-char (- (point-max) pos))))))
-
(defun c-indent-line (&optional syntax quiet ignore-point-pos)
"Indent the current line according to the syntactic context,
if `c-syntactic-indentation' is non-nil. Optional SYNTAX is the
;; this case. So the marker that we put after "else" would
;; end up before it.
(setq delete-temp-newline
- (cons (copy-marker (c-point 'eopl) t)
+ (cons (save-excursion
+ (end-of-line 0)
+ (if (eq (char-before) ?\\)
+ ;; Ignore a line continuation.
+ (backward-char))
+ (skip-chars-backward " \t")
+ (copy-marker (point) t))
(point-marker))))
(unwind-protect
(progn
(save-excursion
(beginning-of-line)
(or (not (re-search-backward
- sentence-end
+ (sentence-end)
(c-point 'bopl)
t))
(< (match-end 0)
If nil, indent the current line only if point is at the left margin or
in the line's indentation; otherwise insert some whitespace[*]. If
other than nil or t, then some whitespace[*] is inserted only within
-literals (comments and strings) and inside preprocessor directives,
-but the line is always reindented.
+literals (comments and strings), but the line is always reindented.
If `c-syntactic-indentation' is t, indentation is done according to
the syntactic context. A numeric argument, regardless of its value,
;; There's no nonempty prefix on the line after the
;; comment opener. If the line is empty, or if the
- ;; text on has less or equal indentation than the
+ ;; text on it has less or equal indentation than the
;; comment starter we assume it's an unclosed
;; comment starter, i.e. that
;; `c-block-comment-prefix' should be used.