diff --git a/CHANGELOG.md b/CHANGELOG.md index c8728154..360239a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,15 @@ # Changelog -## v2.2.0-dev (unreleased) +## v2.1.1 ### Enhancements * [Indentation] Indent block inside a fn match. +### Bugfixes + + * [Indentation] #152 Fix indentation inside parens wrapped around def + ## v2.1.0 - 2014/12/23 ### Enhancements diff --git a/elixir-smie.el b/elixir-smie.el index 6e844224..a6067241 100644 --- a/elixir-smie.el +++ b/elixir-smie.el @@ -258,19 +258,23 @@ (cond ((smie-rule-sibling-p) nil) ((smie-rule-hanging-p) (smie-rule-parent elixir-smie-indent-basic)) - (t elixir-smie-indent-basic))) - + (t (smie-rule-parent)))) (`(:before . "MATCH-STATEMENT-DELIMITER") (cond ((and (not (smie-rule-sibling-p)) (smie-rule-hanging-p)) (smie-rule-parent elixir-smie-indent-basic)))) - + (`(:before . "fn") + (smie-rule-parent)) + (`(:before . "end") + (smie-rule-parent)) + ;; Closing paren on the other line + (`(:before . "(") + (smie-rule-parent)) (`(:before . "->") (cond ((smie-rule-hanging-p) (smie-rule-parent elixir-smie-indent-basic)))) - (`(:after . "->") (cond ;; This first condition is kind of complicated so I'll try to make this @@ -300,23 +304,11 @@ elixir-smie-indent-basic) (t (smie-rule-parent elixir-smie-indent-basic)))))) - - (`(:before . "fn") - (smie-rule-parent)) - - (`(:before . "end") - (smie-rule-parent)) - - ;; Closing paren on the other line - (`(:before . "(") - (unless smie--parent 0)) - (`(:before . ";") (cond ((smie-rule-parent-p "after" "catch" "def" "defmodule" "defp" "do" "else" "fn" "if" "rescue" "try" "unless") (smie-rule-parent elixir-smie-indent-basic)))) - (`(:after . ";") (cond ((smie-rule-parent-p "if") diff --git a/test/elixir-mode-indentation-test.el b/test/elixir-mode-indentation-test.el index 66a21c60..16cf4499 100644 --- a/test/elixir-mode-indentation-test.el +++ b/test/elixir-mode-indentation-test.el @@ -631,6 +631,46 @@ x = do_something(:foo, fn (arg) -> do_another(arg) end)") +(elixir-def-indentation-test indent-inside-parens/4 + (:tags '(indentation)) +" +defmodule Something do +def something do +x = do_something(:foo, fn (arg) -> + do_another(arg) + end) +end +end" +" +defmodule Something do + def something do + x = do_something(:foo, fn (arg) -> + do_another(arg) + end) + end +end") + +(elixir-def-indentation-test indent-inside-parens/5 + (:tags '(indentation)) +" +defmodule IndentPlayground do +def my_func(arr) do + Enum.map(arr, fn(x) -> + x * 2 +end) + #back here +end +end" +" +defmodule IndentPlayground do + def my_func(arr) do + Enum.map(arr, fn(x) -> + x * 2 + end) + #back here + end +end") + (elixir-def-indentation-test indent-lone-keyword () " def foo do #comment