From c8f73158f190c9f9746f574727b91dc2ba31fc52 Mon Sep 17 00:00:00 2001 From: Samuel Tonini Date: Thu, 24 Mar 2016 10:24:54 +0100 Subject: [PATCH] Correct indentation after a one line 'fn' definition --- elixir-smie.el | 7 +++++++ test/elixir-mode-indentation-test.el | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/elixir-smie.el b/elixir-smie.el index 63736fae..6aec9a78 100644 --- a/elixir-smie.el +++ b/elixir-smie.el @@ -379,6 +379,13 @@ ((and (smie-rule-parent-p "after") (smie-rule-hanging-p)) (smie-rule-parent elixir-smie-indent-basic)) + ;; Correct indentation after a one-line fn definition + ;; Example: + ;; + ;; sum = Enum.reduce(dbms, fn(x, sum) -> x + sum end) + ;; average_dbm = sum / length(addresses) + ((smie-rule-parent-p "fn") + (smie-rule-parent elixir-smie-indent-basic)) (t (smie-rule-parent)))) (`(:before . "fn") diff --git a/test/elixir-mode-indentation-test.el b/test/elixir-mode-indentation-test.el index 4c07ff92..4684ebbb 100644 --- a/test/elixir-mode-indentation-test.el +++ b/test/elixir-mode-indentation-test.el @@ -1688,6 +1688,21 @@ some_method :arg1, other_method ") +(elixir-def-indentation-test indent-correct-inside-fn-block + (:tags '(indentation)) +" +Enum.map(addresses, fn({mac_address, dbms}) -> +sum = Enum.reduce(dbms, fn(x, sum) -> x + sum end) + average_dbm = sum / length(addresses) +end) +" +" +Enum.map(addresses, fn({mac_address, dbms}) -> + sum = Enum.reduce(dbms, fn(x, sum) -> x + sum end) + average_dbm = sum / length(addresses) +end) +") + ;; We don't want automatic whitespace cleanup here because of the significant ;; whitespace after `Record' above. By setting `whitespace-action' to nil, ;; `whitespace-mode' won't automatically clean up trailing whitespace (in my