diff options
author | Dan Gudmundsson <[email protected]> | 2018-01-09 13:00:12 +0100 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2018-03-01 14:39:49 +0100 |
commit | e57a6ec75ed99d4695fb8fcd31dd625483951687 (patch) | |
tree | b826414affb3b67dabda17cec1e8713f11dfc43a /lib/tools/emacs | |
parent | aa9054e0ea48a127f2aeafcdce1df4d1aec09574 (diff) | |
download | otp-e57a6ec75ed99d4695fb8fcd31dd625483951687.tar.gz otp-e57a6ec75ed99d4695fb8fcd31dd625483951687.tar.bz2 otp-e57a6ec75ed99d4695fb8fcd31dd625483951687.zip |
emacs: Indent tuple (and maps) elements as list elements
Avoid
From:
{
^^element1,
^^element2
}
To:
{
^element1,
^element2
}
Diffstat (limited to 'lib/tools/emacs')
-rw-r--r-- | lib/tools/emacs/erlang.el | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/tools/emacs/erlang.el b/lib/tools/emacs/erlang.el index 411e0e13df..e29d3e0482 100644 --- a/lib/tools/emacs/erlang.el +++ b/lib/tools/emacs/erlang.el @@ -2745,7 +2745,7 @@ Return nil if inside string, t if in a comment." (1+ (nth 2 stack-top))) ((= (char-syntax (following-char)) ?\)) (goto-char (nth 1 stack-top)) - (cond ((looking-at "[({]\\s *\\($\\|%\\)") + (cond ((erlang-record-or-function-args-p) ;; Line ends with parenthesis. (let ((previous (erlang-indent-find-preceding-expr)) (stack-pos (nth 2 stack-top))) @@ -2758,7 +2758,7 @@ Return nil if inside string, t if in a comment." (nth 2 stack-top)) (t (goto-char (nth 1 stack-top)) - (let ((base (cond ((looking-at "[({]\\s *\\($\\|%\\)") + (let ((base (cond ((erlang-record-or-function-args-p) ;; Line ends with parenthesis. (erlang-indent-parenthesis (nth 2 stack-top))) (t @@ -3031,11 +3031,21 @@ This assumes that the preceding expression is either simple (t col))) col)))) +(defun erlang-record-or-function-args-p () + (and (looking-at "[({]\\s *\\($\\|%\\)") + (or (eq (following-char) ?\( ) + (save-excursion + (ignore-errors (forward-sexp (- 1))) + (eq (preceding-char) ?#))))) + (defun erlang-indent-parenthesis (stack-position) (let ((previous (erlang-indent-find-preceding-expr))) - (if (> previous stack-position) - (+ stack-position erlang-argument-indent) - (+ previous erlang-argument-indent)))) + (cond ((eq previous stack-position) ;; tuple or map not a record + (1+ stack-position)) + ((> previous stack-position) + (+ stack-position erlang-argument-indent)) + (t + (+ previous erlang-argument-indent))))) (defun erlang-skip-blank (&optional lim) "Skip over whitespace and comments until limit reached." |