branch: elpa/julia-mode commit 7b1d3fb053c32d9affe82fbf20cc0f8795f45026 Merge: a95b06b b99710c Author: Yichao Yu <yyc1...@gmail.com> Commit: GitHub <nore...@github.com>
Merge pull request #21 from kshramt/python-paren-indent `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 faeaf66..046c959 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 a8ab0c6..97f91c2 100644 --- a/julia-mode.el +++ b/julia-mode.el @@ -496,10 +496,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