Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLI format is different than run as an alias #1778

Open
NoahTheDuke opened this issue Feb 29, 2024 · 2 comments
Open

CLI format is different than run as an alias #1778

NoahTheDuke opened this issue Feb 29, 2024 · 2 comments
Labels
API Related to API / CLI bug Something isn't working

Comments

@NoahTheDuke
Copy link
Contributor

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:

  1. Clone Splint, checkout commit 34dfc12324d5c167cf38360c99d7a487975f0a3e.
  2. Run clojure-lsp format
  3. 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 NoahTheDuke added API Related to API / CLI bug Something isn't working labels Feb 29, 2024
@ericdallo
Copy link
Member

@NoahTheDuke I can't repro that on https://github.com/ericdallo/clojure-sample/tree/clojure-lsp-issue-1178, could you try that there please?

@NoahTheDuke
Copy link
Contributor Author

NoahTheDuke commented Mar 4, 2024

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))}])))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API Related to API / CLI bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants