branch: elpa/julia-mode commit b99710cabd77c066a051da6ae1d3a9988d18f491 Author: kshramt <thisisdu...@example.com> Commit: kshramt <thisisdu...@example.com>
`python-mode`-like paren-indent --- julia-mode-tests.el | 23 +++++++++++++++++++++++ julia-mode.el | 22 +++++++++++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/julia-mode-tests.el b/julia-mode-tests.el index 647323b..ca6acfc 100644 --- a/julia-mode-tests.el +++ b/julia-mode-tests.el @@ -183,6 +183,29 @@ baz )" foobar( bar, baz )")) +(ert-deftest julia--test-indent-paren-newline () + "python-mode-like indentation." + (julia--should-indent + " +foobar( +bar, +baz)" + " +foobar( + bar, + baz)") + (julia--should-indent + " +foobar( +bar, +baz +)" + " +foobar( + bar, + baz +)")) + (ert-deftest julia--test-indent-equals () "We should increase indent on a trailing =." (julia--should-indent diff --git a/julia-mode.el b/julia-mode.el index abc7c4e..62afa0d 100644 --- a/julia-mode.el +++ b/julia-mode.el @@ -468,10 +468,26 @@ with it. Returns nil if we're not within nested parens." ((= (nth 0 parser-state) 0) nil) ;; top level (t (ignore-errors ;; return nil if any of these movements fail - (backward-up-list) - (forward-char) + (beginning-of-line) (skip-syntax-forward " ") - (current-column))))))) + (let ((possibly-close-paren-point (point))) + (backward-up-list) + (let ((open-paren-point (point))) + (forward-char) + (skip-syntax-forward " ") + (if (eolp) + (progn + (up-list) + (backward-char) + (let ((paren-closed (= (point) possibly-close-paren-point))) + (goto-char open-paren-point) + (beginning-of-line) + (skip-syntax-forward " ") + (+ (current-column) + (if paren-closed + 0 + julia-indent-offset)))) + (current-column)))))))))) (defun julia-prev-line-skip-blank-or-comment () "Move point to beginning of previous line skipping blank lines