Skip to content

Incorrect indentation of core.match/match macro #602

@darth10

Description

@darth10

Expected behavior

clojure-mode should indent match forms (from core.match) the same as M-x cider-format-region or M-x lsp-format-region.

For example:

(doseq [n (range 1 101)]
  (println
   (match [(mod n 3) (mod n 5)]
     [0 0] "FizzBuzz"
     [0 _] "Fizz"
     [_ 0] "Buzz"
     :else n)))

Actual behavior

clojure-mode indents match forms incorrectly.

(doseq [n (range 1 101)]
  (println
   (match [(mod n 3) (mod n 5)]
          [0 0] "FizzBuzz"
          [0 _] "Fizz"
          [_ 0] "Buzz"
          :else n)))

Steps to reproduce the problem

Use the code from the above example in a Clojure(Script) file and run indent-for-tab-command using TAB.

Environment & Version information

clojure-mode version

clojure-mode (version 5.13.0)

Emacs version

27.1

Operating system

macOS 11.5.2 (Big Sur)

Commentary

I'm happy to submit a PR with relevant indentation tests to fix this, but just wanted to make sure it's something that should be added to clojure-mode.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions