Commit df3fd736 authored by Gerd Moellmann's avatar Gerd Moellmann

(perl-indent-continued-arguments): New var.

(perl-calculate-indent): Use it.
(perl-backward-to-noncomment): Use forward-comment.
parent d8754ce5
......@@ -250,6 +250,11 @@ This is in addition to `perl-continued-statement-offset'."
"*Offset of Perl label lines relative to usual indentation."
:type 'integer
:group 'perl)
(defcustom perl-indent-continued-arguments nil
"*If non-nil offset of argument lines relative to usual indentation.
If nil, continued arguments are aligned with the first argument."
:type '(choice integer (const nil))
:group 'perl)
(defcustom perl-tab-always-indent t
"*Non-nil means TAB in Perl mode always indents the current line.
......@@ -283,32 +288,34 @@ Paragraphs are separated by blank lines only.
Delete converts tabs to spaces as it moves back.
Variables controlling indentation style:
Non-nil means TAB in Perl mode should always indent the current line,
regardless of where in the line point is when the TAB command is used.
Non-nil means that for lines which don't need indenting, TAB will
either delete an empty comment, indent an existing comment, move
to end-of-line, or if at end-of-line already, create a new comment.
Lines starting with this regular expression are not auto-indented.
Indentation of Perl statements within surrounding block.
The surrounding block's indentation is the indentation
of the line on which the open-brace appears.
Extra indentation given to a substatement, such as the
then-clause of an if or body of a while.
Extra indentation given to a brace that starts a substatement.
This is in addition to `perl-continued-statement-offset'.
Extra indentation for line if it starts with an open brace.
An open brace following other text is treated as if it were
this far to the right of the start of its line.
Extra indentation for line that is a label.
Offset of argument lines relative to usual indentation.
Various indentation styles: K&R BSD BLK GNU LW
perl-indent-level 5 8 0 2 4
......@@ -423,23 +430,22 @@ possible action from the following list:
(if (and (not perl-tab-always-indent)
(> (current-column) (current-indentation)))
(let (bof lsexp delta (oldpnt (point)))
(setq lsexp (point))
(setq bof (perl-beginning-of-function))
(goto-char oldpnt)
(setq delta (perl-indent-line "\f\\|;?#" bof))
(let* ((oldpnt (point))
(lsexp (progn (beginning-of-line) (point)))
(bof (perl-beginning-of-function))
(delta (progn
(goto-char oldpnt)
(perl-indent-line "\f\\|;?#" bof))))
(and perl-tab-to-comment
(= oldpnt (point)) ; done if point moved
(if (listp delta) ; if line starts in a quoted string
(setq lsexp (or (nth 2 delta) bof))
(= delta 0)) ; done if indenting occurred
(let (eol state)
(setq eol (point))
(let ((eol (progn (end-of-line) (point)))
(if (= (char-after bof) ?=)
(if (= oldpnt eol)
(message "In a format statement"))
(message "In a format statement"))
(setq state (parse-partial-sexp lsexp eol))
(if (nth 3 state)
(if (= oldpnt eol) ; already at eol in a string
......@@ -538,7 +544,6 @@ Returns (parse-state) if line starts inside a string."
(> indent-point (save-excursion (forward-sexp 1) (point))))
(while (< (point) indent-point) ;repeat until right sexp
(setq parse-start (point))
(setq state (parse-partial-sexp (point) indent-point 0))
; state = (depth_in_parens innermost_containing_list last_complete_sexp
; string_terminator_or_nil inside_commentp following_quotep
......@@ -559,8 +564,10 @@ Returns (parse-state) if line starts inside a string."
;; line is expression, not statement:
;; indent to just after the surrounding open.
(goto-char (1+ containing-sexp))
(skip-chars-forward " \t")
(if perl-indent-continued-arguments
(+ perl-indent-continued-arguments (current-indentation))
(skip-chars-forward " \t")
;; Statement level. Is it a continuation or a new statement?
(if (perl-continuation-line-p containing-sexp)
......@@ -633,19 +640,8 @@ Returns (parse-state) if line starts inside a string."
(defun perl-backward-to-noncomment ()
"Move point backward to after the first non-white-space, skipping comments."
(let (opoint stop)
(while (not stop)
(setq opoint (point))
(if (and comment-start-skip
(re-search-forward comment-start-skip opoint 'move 1))
(progn (goto-char (match-end 1))
(skip-chars-forward ";")))
(skip-chars-backward " \t\f")
(setq stop (or (bobp)
(not (bolp))
(forward-char -1))))))
(interactive) ;why?? -stef
(forward-comment (- (point-max))))
(defun perl-backward-to-start-of-continued-exp (lim)
(if (= (preceding-char) ?\))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment