CLI format is different than run as an alias
NoahTheDuke opened this issue · comments
Describe the bug
Given:
noah@Noahs-MacBook-Pro ~/personal/splint
$ cat .cljfmt.edn
{:indents ^:replace {#re ".*" [[:inner 0]]}}
noah@Noahs-MacBook-Pro ~/personal/splint
$ cat .lsp/config.edn
{:cljfmt-config-path ".cljfmt.edn"}
Running clojure-lsp format
produces (1 space indentation):
(defonce
^{:doc "All registered rules, grouped by :init-type and full-name"}
global-rules
(atom {:rules {} :genres #{}}))
Running clojure -M:cljfmt fix
produces (2 space indentation):
(defonce
^{:doc "All registered rules, grouped by :init-type and full-name"}
global-rules
(atom {:rules {} :genres #{}}))
There are other differences, but this is the smallest one I could point to.
To Reproduce
Steps to reproduce the behavior:
- Clone Splint, checkout commit 34dfc12324d5c167cf38360c99d7a487975f0a3e.
- Run
clojure-lsp format
- No changes
Expected behavior
The code formatting shouldn't change.
clojure-lsp output
$ clojure-lsp format --verbose [ 10%] Finding cache [INFO] [DB] Reading transit analysis cache from /Users/noah/personal/splint/.lsp/.cache/db.transit.json db took 202ms [INFO] :maintain-dep-graph 8ms [INFO] [Startup] Using cached classpath #{"/Users/noah/.m2/repository/org/bitbucket/mstrobel/procyon-core/0.6.0/procyon-core-0.6.0.jar" "/Users/noah/.m2/repository/org/babashka/http-client/0.1.8/http-client-0.1.8.jar" "/Users/noah/.m2/repository/babashka/fs/0.2.15/fs-0.2.15.jar" "/Users/noah/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar" "/Users/noah/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.2/tools.analyzer.jvm-1.2.2.jar" "/Users/noah/.m2/repository/org/clojure/tools.cli/1.0.214/tools.cli-1.0.214.jar" "/Users/noah/.m2/repository/nrepl/bencode/1.1.0/bencode-1.1.0.jar" "/Users/noah/.m2/repository/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar" "/Users/noah/.m2/repository/org/babashka/sci.impl.types/0.0.2/sci.impl.types-0.0.2.jar" "/Users/noah/.m2/repository/io/methvin/directory-watcher/0.17.3/directory-watcher-0.17.3.jar" "/Users/noah/.m2/repository/borkdude/edamame/1.4.25/edamame-1.4.25.jar" "/Users/noah/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar" "/Users/noah/.m2/repository/org/slf4j/slf4j-simple/2.0.7/slf4j-simple-2.0.7.jar" "/Users/noah/.m2/repository/tigris/tigris/0.1.2/tigris-0.1.2.jar" "/Users/noah/.m2/repository/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar" "/Users/noah/.m2/repository/com/nextjournal/beholder/1.0.2/beholder-1.0.2.jar" "/Users/noah/.m2/repository/net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar" "/Users/noah/.m2/repository/babashka/process/0.4.16/process-0.4.16.jar" "/Users/noah/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar" "/Users/noah/personal/splint/src" "/Users/noah/.m2/repository/nubank/matcher-combinators/3.8.5/matcher-combinators-3.8.5.jar" "/Users/noah/.m2/repository/org/clojure/tools.cli/1.0.219/tools.cli-1.0.219.jar" "/Users/noah/.m2/repository/com/clojure-goes-fast/clj-java-decompiler/0.3.4/clj-java-decompiler-0.3.4.jar" "/Users/noah/.m2/repository/org/flatland/ordered/1.5.9/ordered-1.5.9.jar" "/Users/noah/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar" "/Users/noah/.m2/repository/org/clojure/java.classpath/1.0.0/java.classpath-1.0.0.jar" "/Users/noah/.m2/repository/com/cognitect/transit-java/1.0.362/transit-java-1.0.362.jar" "/Users/noah/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar" "/Users/noah/.m2/repository/com/taoensso/tufte/2.4.5/tufte-2.4.5.jar" "/Users/noah/.m2/repository/criterium/criterium/0.4.6/criterium-0.4.6.jar" "/Users/noah/.m2/repository/org/yaml/snakeyaml/1.33/snakeyaml-1.33.jar" "src" "/Users/noah/.m2/repository/org/clojure/tools.gitlibs/2.5.190/tools.gitlibs-2.5.190.jar" "/Users/noah/.m2/repository/riddley/riddley/0.1.12/riddley-0.1.12.jar" "/Users/noah/.m2/repository/org/clojure/data.json/2.4.0/data.json-2.4.0.jar" "/Users/noah/.m2/repository/camel-snake-kebab/camel-snake-kebab/0.4.3/camel-snake-kebab-0.4.3.jar" "/Users/noah/personal/splint/resources" "/Users/noah/.gitlibs/libs/babashka/babashka.core/52a6037bd4b632bffffb04394fb4efd0cdab6b1e/src" "/Users/noah/.m2/repository/potemkin/potemkin/0.4.6/potemkin-0.4.6.jar" "/Users/noah/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.13.3/jackson-dataformat-cbor-2.13.3.jar" "/Users/noah/.m2/repository/org/msgpack/msgpack/0.6.12/msgpack-0.6.12.jar" "/Users/noah/.m2/repository/com/cognitect/transit-clj/1.0.329/transit-clj-1.0.329.jar" "/Users/noah/.m2/repository/org/clojure/tools.analyzer/1.1.0/tools.analyzer-1.1.0.jar" "/Users/noah/.m2/repository/org/clojure/tools.logging/1.1.0/tools.logging-1.1.0.jar" "/Users/noah/.m2/repository/http-kit/http-kit/2.6.0-RC1/http-kit-2.6.0-RC1.jar" "dev" "/Users/noah/.m2/repository/org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218.jar" "/Users/noah/.m2/repository/org/clojure/core.rrb-vector/0.1.2/core.rrb-vector-0.1.2.jar" "/Users/noah/.m2/repository/com/github/clj-easy/graal-build-time/0.1.4/graal-build-time-0.1.4.jar" "/Users/noah/.m2/repository/com/taoensso/encore/3.31.0/encore-3.31.0.jar" "/Users/noah/.m2/repository/com/taoensso/truss/1.6.0/truss-1.6.0.jar" "/Users/noah/.m2/repository/org/ow2/asm/asm/9.2/asm-9.2.jar" "/Users/noah/.m2/repository/io/aviso/pretty/1.3/pretty-1.3.jar" "/Users/noah/.m2/repository/org/clojure/math.combinatorics/0.2.0/math.combinatorics-0.2.0.jar" "/Users/noah/.m2/repository/com/taoensso/timbre/6.0.1/timbre-6.0.1.jar" "/Users/noah/.m2/repository/org/babashka/cli/0.6.50/cli-0.6.50.jar" "/Users/noah/.m2/repository/org/slf4j/slf4j-api/2.0.7/slf4j-api-2.0.7.jar" "/Users/noah/.m2/repository/com/github/seancorfield/expectations/2.0.165/expectations-2.0.165.jar" "/Users/noah/.m2/repository/org/clojure/core.match/1.0.0/core.match-1.0.0.jar" "/Users/noah/.m2/repository/selmer/selmer/1.12.50/selmer-1.12.50.jar" "/Users/noah/.m2/repository/org/clojure/data.xml/0.2.0-alpha8/data.xml-0.2.0-alpha8.jar" "/Users/noah/.m2/repository/hiccup/hiccup/2.0.0-alpha2/hiccup-2.0.0-alpha2.jar" "/Users/noah/.m2/repository/cheshire/cheshire/5.11.0/cheshire-5.11.0.jar" "/Users/noah/.m2/repository/org/clojure/core.async/1.6.673/core.async-1.6.673.jar" "/Users/noah/.m2/repository/insn/insn/0.5.2/insn-0.5.2.jar" "/Users/noah/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.13.3/jackson-dataformat-smile-2.13.3.jar" "/Users/noah/.m2/repository/org/clojure/data.csv/1.0.0/data.csv-1.0.0.jar" "/Users/noah/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.13.3/jackson-core-2.13.3.jar" "/Users/noah/.m2/repository/org/babashka/babashka.impl.java/0.1.8/babashka.impl.java-0.1.8.jar" "/Users/noah/.m2/repository/babashka/babashka.curl/0.1.2/babashka.curl-0.1.2.jar" "/Users/noah/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar" "/Users/noah/.m2/repository/org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.jar" "/Users/noah/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar" "/Users/noah/.gitlibs/libs/io.github.cognitect-labs/test-runner/dfb30dd6605cb6c0efc275e1df1736f6e90d4d73/src" "/Users/noah/.m2/repository/clj-commons/clj-yaml/0.7.169/clj-yaml-0.7.169.jar" "/Users/noah/.m2/repository/org/clojure/tools.namespace/1.4.4/tools.namespace-1.4.4.jar" "/Users/noah/.m2/repository/rewrite-clj/rewrite-clj/1.1.46/rewrite-clj-1.1.46.jar" "/Users/noah/.m2/repository/org/bitbucket/mstrobel/procyon-compilertools/0.6.0/procyon-compilertools-0.6.0.jar" "resources" "test" "/Users/noah/.m2/repository/org/clojure/test.check/1.1.1/test.check-1.1.1.jar"} [INFO] [Startup] Using source-paths from classpath: ["/Users/noah/personal/splint/src" "/Users/noah/personal/splint/resources" "/Users/noah/personal/splint/dev" "/Users/noah/personal/splint/test"] [ 20%] Analyzing project files [INFO] [Startup] Analyzing source paths for project root /Users/noah/personal/splint [INFO] :maintain-dep-graph 2ms [ 99%] Project analyzed Formatting namespaces... [INFO] :formatting 10ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO][INFO] :formatting 10ms :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 63ms [INFO] :formatting 63ms [INFO] :formatting 64ms [INFO] :formatting 66ms [INFO] :formatting 67ms [INFO] :formatting 99ms [INFO] :formatting 75ms [INFO] :formatting 111ms [INFO] :formatting 96ms [INFO][INFO] :formatting 9ms :formatting 25ms [INFO] :formatting 37ms [INFO] :formatting 10ms [INFO] :formatting 34ms [INFO] :formatting 12ms [INFO] :formatting 13ms [INFO] :formatting 14ms [INFO] :formatting 13ms [INFO] :formatting 42ms [INFO] :formatting 30ms [INFO] :formatting 14ms [INFO] :formatting 15ms [INFO] :formatting 32ms [INFO] :formatting 5ms [INFO] :formatting 3ms [INFO] :formatting 6ms [INFO] :formatting 8ms [INFO] :formatting 9ms [INFO] :formatting 11ms [INFO] :formatting 11ms [INFO] :formatting 21ms [INFO] :formatting 45ms [INFO][INFO] :formatting 5ms :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 9ms [INFO] :formatting 14ms [INFO] :formatting 12ms [INFO] :formatting 18ms [INFO] :formatting 17ms [INFO] :formatting 16ms [INFO] :formatting 25ms [INFO] :formatting 33ms [INFO] :formatting 38ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 12ms [INFO] :formatting 19ms [INFO] :formatting 18ms [INFO] :formatting 20ms [INFO] :formatting 22ms [INFO] :formatting 27ms [INFO] :formatting 66ms [INFO] :formatting 35ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 7ms [INFO] :formatting 9ms [INFO] :formatting 11ms [INFO] :formatting 11ms [INFO] :formatting 14ms [INFO] :formatting 7ms [INFO] :formatting 19ms [INFO] :formatting 32ms [INFO] :formatting 49ms [INFO] :formatting 4ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 8ms [INFO] :formatting 12ms [INFO] :formatting 62ms [INFO] :formatting 13ms [INFO] :formatting 7ms [INFO] :formatting 8ms [INFO] :formatting 8ms [INFO] :formatting 5ms [INFO] :formatting 12ms [INFO] :formatting 12ms [INFO] :formatting 12ms [INFO] :formatting 12ms [INFO] :formatting 14ms [INFO] :formatting 13ms [INFO] :formatting 16ms [INFO] :formatting 16ms [INFO] :formatting 17ms [INFO] :formatting 22ms [INFO] :formatting 3ms [INFO] :formatting 3ms [INFO] :formatting 4ms [INFO] :formatting 4ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 29ms [INFO] :formatting 13ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 7ms [INFO] :formatting 8ms [INFO] :formatting 7ms [INFO] :formatting 8ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 12ms [INFO] :formatting 5ms [INFO] [INFO]:formatting 6ms [INFO] :formatting 4ms [INFO] :formatting 13ms [INFO] :formatting 5ms [INFO] :formatting 8ms :formatting 6ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 7ms [INFO] :formatting 26ms [INFO] :formatting 14ms [INFO] :formatting 51ms [INFO] :formatting 4ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 7ms [INFO] :formatting 8ms [INFO] :formatting 9ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 14ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 14ms [INFO] :formatting 26ms [INFO] :formatting 43ms [INFO] :formatting 85ms [INFO] :formatting 8ms [INFO] :formatting 8ms [INFO] :formatting 8ms [INFO] :formatting 9ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 11ms [INFO] :formatting 12ms [INFO] :formatting 13ms [INFO] :formatting 13ms [INFO] :formatting 14ms [INFO] :formatting 15ms [INFO] :formatting 16ms [INFO][INFO] :formatting 7ms :formatting 8ms [INFO] :formatting 5ms [INFO] :formatting 21ms [INFO] :formatting 6ms [INFO] :formatting 10ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 6ms [INFO] :formatting 7ms [INFO] :formatting 7ms [INFO] :formatting 9ms [INFO] :formatting 9ms [INFO] :formatting 4ms [INFO] :formatting 8ms [INFO] :formatting 10ms [INFO] :formatting 82ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 7ms [INFO] :formatting 7ms [INFO] :formatting 8ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 9ms [INFO] :formatting 11ms [INFO] :formatting 12ms [INFO] :formatting 14ms [INFO] :formatting 6ms [INFO] :formatting 4ms [INFO] :formatting 17ms [INFO] :formatting 7ms [INFO] :formatting 6ms [INFO] :formatting 17ms [INFO] :formatting 8ms [INFO] :formatting 10ms [INFO] :formatting 8ms [INFO] :formatting 9ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 10ms [INFO] :formatting 11ms [INFO] :formatting 12ms [INFO] :formatting 13ms [INFO] :formatting 14ms [INFO] :formatting 13ms [INFO] :formatting 16ms [INFO] :formatting 16ms [INFO] :formatting 18ms [INFO] :formatting 29ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 5ms [INFO] :formatting 6ms [INFO] :formatting 8ms [INFO] :formatting 10ms [INFO] :formatting 11ms [INFO] :formatting 15ms [INFO] :formatting 38ms Formatted noahtheduke.splint.rules Formatted 1 namespaces
User details:
- OS: MacOS 12.6.6
- Version: 2024.02.01-11.01.59
Additional context
N/A
@NoahTheDuke I can't repro that on https://github.com/ericdallo/clojure-sample/tree/clojure-lsp-issue-1178, could you try that there please?
Huh, I can't get it to happen with defonce
in your repo. I wonder what I did to make that happen last week.
I can get other issues to happen tho. To borrow your example repo: https://github.com/NoahTheDuke/clojure-sample/tree/nb/clojure-lsp-issue-1178
noah ~/personal/clojure-sample [nb/clojure-lsp-issue-1178 ≡ +2 ~0 -0 !]
$ git status
On branch nb/clojure-lsp-issue-1178
Your branch is up to date with 'origin/nb/clojure-lsp-issue-1178'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
.clj-kondo/.cache/
.lsp/.cache/
nothing added to commit but untracked files present (use "git add" to track)
noah ~/personal/clojure-sample [nb/clojure-lsp-issue-1178 ≡ +2 ~0 -0 !]
$ clojure-lsp format
[ 99%] Project analyzed Formatting namespaces...
Formatted clojure-sample.foo
Formatted 1 namespaces
noah ~/personal/clojure-sample [nb/clojure-lsp-issue-1178 ≡ +2 ~1 -0 !]
$ git diff
diff --git a/src/clojure_sample/foo.clj b/src/clojure_sample/foo.clj
index 3189666..1ab3e2a 100644
--- a/src/clojure_sample/foo.clj
+++ b/src/clojure_sample/foo.clj
@@ -9,18 +9,18 @@
"A modification from clojure.tools.namespace.parse/deps-from-libspec."
[prefix form]
(cond (prefix-spec? form)
- (mapcat (fn [f] (deps-from-libspec
- (symbol (str (when prefix (str prefix "."))
- (first form)))
- f))
- (next form))
+ (mapcat (fn [f] (deps-from-libspec
+ (symbol (str (when prefix (str prefix "."))
+ (first form)))
+ f))
+ (next form))
- (option-spec? form)
- (let [opts (apply hash-map (next form))]
- [{:ns (symbol (str (when prefix (str prefix ".")) (first form)))
- :alias (or (:as opts) (:as-alias opts))}])
+ (option-spec? form)
+ (let [opts (apply hash-map (next form))]
+ [{:ns (symbol (str (when prefix (str prefix ".")) (first form)))
+ :alias (or (:as opts) (:as-alias opts))}])
- (js-dep-spec? form)
- (let [opts (apply hash-map (next form))]
- [{:ns (str (when prefix (str prefix ".")) (first form))
- :alias (or (:as opts) (:as-alias opts))}])))
+ (js-dep-spec? form)
+ (let [opts (apply hash-map (next form))]
+ [{:ns (str (when prefix (str prefix ".")) (first form))
+ :alias (or (:as opts) (:as-alias opts))}])))