diff options
| author | David Kellum <dek-oss@gravitext.com> | 2019-01-15 14:05:01 -0800 |
|---|---|---|
| committer | David Kellum <dek-oss@gravitext.com> | 2019-01-15 14:05:01 -0800 |
| commit | 5f3734314de0e38f472740dfeeb0102ddc5d0b2c (patch) | |
| tree | e95157ba0efbd95a280ade45bc12ac4819aa0c8b | |
| parent | d3a70256fe560bcc463ed42e4259e9fce0fdfee3 (diff) | |
| download | rust-mode-5f3734314de0e38f472740dfeeb0102ddc5d0b2c.tar.gz | |
Add rust-indent-return-type-to-arguments variable
This preserves as default (t), the current indentation behavior of `->
ReturnType` when found on its own line: indenting as per the arguments
of the above function. When disabled (nil) by the user, however, this
will now just indent such a line one level from base-line (e.g. no
special treatment).
Includes a basic test.
| -rw-r--r-- | rust-mode-tests.el | 11 | ||||
| -rw-r--r-- | rust-mode.el | 13 |
2 files changed, 22 insertions, 2 deletions
diff --git a/rust-mode-tests.el b/rust-mode-tests.el index 9d87960..a5fea28 100644 --- a/rust-mode-tests.el +++ b/rust-mode-tests.el @@ -450,6 +450,17 @@ fn foo4(a:i32, } ")) +(ert-deftest indent-return-type-non-visual () + (let ((rust-indent-return-type-to-arguments nil)) +(test-indent + " +fn imagine_long_enough_to_wrap_at_arrow(a:i32, b:char) + -> i32 +{ + let body; +} +"))) + (ert-deftest indent-body-after-where () (let ((rust-indent-where-clause t)) (test-indent diff --git a/rust-mode.el b/rust-mode.el index a8af671..a433d8d 100644 --- a/rust-mode.el +++ b/rust-mode.el @@ -131,6 +131,13 @@ When nil, `where' will be aligned with `fn' or `trait'." :group 'rust-mode :safe #'booleanp) +(defcustom rust-indent-return-type-to-arguments t + "Indent a line starting with the `->' (RArrow) following a function, aligning +to the function arguments. When nil, `->' will be indented one level." + :type 'boolean + :group 'rust-mode + :safe #'booleanp) + (defcustom rust-playpen-url-format "https://play.rust-lang.org/?code=%s" "Format string to use when submitting code to the playpen." :type 'string @@ -399,8 +406,10 @@ buffer." (back-to-indentation) (current-column)))))) - ;; A function return type is indented to the corresponding function arguments - ((looking-at "->") + ;; A function return type is indented to the corresponding + ;; function arguments, if -to-arguments is selected. + ((and rust-indent-return-type-to-arguments + (looking-at "->")) (save-excursion (backward-list) (or (rust-align-to-expr-after-brace) |
