From fc72b15c777af496e9dcbc240f424135379ba955 Mon Sep 17 00:00:00 2001 From: Peter Oliver Date: Mon, 16 Apr 2012 19:46:22 -0700 Subject: [PATCH] Add perl-indent-parens-as-block option (tiny change) * lisp/progmodes/perl-mode.el (perl-indent-parens-as-block): New option. (perl-calculate-indent): Respect it. Fixes: debbugs:11118 --- etc/NEWS | 5 ++++- lisp/ChangeLog | 6 ++++++ lisp/progmodes/perl-mode.el | 15 +++++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 2ac4b187381..5c2bb83e2a3 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -70,7 +70,10 @@ channel keys found, if any. ** The `server-auth-key' variable can be used to set a permanent shared key for Emacs Server. - + +** In Perl mode, new option `perl-indent-parens-as-block' causes non-block +closing brackets to be aligned with the line of the opening bracket. + ** Obsolete packages: *** mailpost.el diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4a9aee338ae..90f48d2ab1e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-04-17 Peter Oliver (tiny change) + + * progmodes/perl-mode.el (perl-indent-parens-as-block): + New option (bug#11118). + (perl-calculate-indent): Respect it. + 2012-04-17 Glenn Morris * dired-aux.el (dired-mark-read-string): Doc fix. diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el index cfca438a44b..9df9943cc00 100644 --- a/lisp/progmodes/perl-mode.el +++ b/lisp/progmodes/perl-mode.el @@ -506,6 +506,14 @@ If nil, continued arguments are aligned with the first argument." :type '(choice integer (const nil)) :group 'perl) +(defcustom perl-indent-parens-as-block nil + "Non-nil means that non-block ()-, {}- and []-groups are indented as blocks. +The closing bracket is aligned with the line of the opening bracket, +not the contents of the brackets." + :version "24.2" + :type 'boolean + :group 'perl) + (defcustom perl-tab-always-indent tab-always-indent "Non-nil means TAB in Perl mode always indents the current line. Otherwise it inserts a tab character if you type it past the first @@ -848,7 +856,8 @@ Optional argument PARSE-START should be the position of `beginning-of-defun'." (cond ((nth 3 state) 'noindent) ; In a quoted string? ((null containing-sexp) ; Line is at top level. (skip-chars-forward " \t\f") - (if (= (following-char) ?{) + (if (memq (following-char) + (if perl-indent-parens-as-block '(?\{ ?\( ?\[) '(?\{))) 0 ; move to beginning of line if it starts a function body ;; indent a little if this is a continuation line (perl-backward-to-noncomment) @@ -892,7 +901,9 @@ Optional argument PARSE-START should be the position of `beginning-of-defun'." 0 perl-continued-statement-offset) (current-column) (if (save-excursion (goto-char indent-point) - (looking-at "[ \t]*{")) + (looking-at + (if perl-indent-parens-as-block + "[ \t]*[{(\[]" "[ \t]*{"))) perl-continued-brace-offset 0))) ;; This line starts a new statement. ;; Position at last unclosed open. -- 2.39.2