branch: elpa/swift-mode commit 5c3163614333f8a46faca3c1aa63dbde8694620a Author: ap4y <l...@pisem.net> Commit: ap4y <l...@pisem.net>
Treat default token as case token --- swift-mode.el | 13 +++++++++---- test/indentation-tests.el | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/swift-mode.el b/swift-mode.el index 8b68c54..6e5498f 100644 --- a/swift-mode.el +++ b/swift-mode.el @@ -152,9 +152,8 @@ (enum-body (enum-cases) (insts)) (case-exps (exp) (guard-exp)) - (cases (case-exps ":" insts) - (cases "case" cases)) - (switch-body (cases) (cases "default:" insts)) + (case (case-exps ":" insts)) + (switch-body (case) (case "case" case)) (for-head (in-exp) (op-exp) (for-head ";" for-head)) @@ -252,6 +251,9 @@ ((looking-at swift-smie--access-modifier-regexp) (goto-char (match-end 0)) "ACCESSMOD") + ((looking-at "default") + (goto-char (match-end 0)) "case") + (t (let ((tok (smie-default-forward-token))) (cond ((equal tok "case") @@ -292,6 +294,9 @@ ((looking-back swift-smie--access-modifier-regexp (- (point) 8) t) (goto-char (match-beginning 0)) "ACCESSMOD") + ((looking-back "default" (- (point) 7) t) + (goto-char (match-beginning 0)) "case") + (t (let ((tok (smie-default-backward-token))) (cond ((equal tok "case") @@ -321,7 +326,7 @@ (if (smie-rule-parent-p "switch") (smie-rule-parent swift-indent-switch-case-offset))) (`(:before . ";") - (if (smie-rule-parent-p "case" "default:") + (if (smie-rule-parent-p "case") (smie-rule-parent swift-indent-offset))) ;; Apply swift-indent-multiline-statement-offset only if diff --git a/test/indentation-tests.el b/test/indentation-tests.el index f048d14..6508ae0 100644 --- a/test/indentation-tests.el +++ b/test/indentation-tests.el @@ -388,6 +388,27 @@ case y: } ") +(check-indentation indents-statements-under-default-case/1 + " +{ + switch true { + case y: + x + default: + |z + } +} +" " +{ + switch true { + case y: + x + default: + |z + } +} +") + (check-indentation indents-case-statements-with-destucturing/1 " switch true {