Entrypoint for main clojure-lsp features
Entrypoint for main clojure-lsp features
(analyze-project! {:keys [project-root settings] :as options})Analyze project caching analysis for future API calls. Useful for REPL usage for example.
This will analyze the whole project and external dependencies with clj-kondo caching its analysis for next other API calls. All features need analysis and will call this internally if the project was not analyzed before.
Options
:project-root a java.io.File representing the project root.
settings map of settings following https://clojure-lsp.io/settings/
Example
(clojure-lsp.api/analyze-project! {:project-root (io/file ".")
:settings {:classpath-config-paths ["other-company/other-project"]}})
Analyze project caching analysis for future API calls. Useful for REPL
usage for example.
This will analyze the whole project and external dependencies with
clj-kondo caching its analysis for next other API calls.
All features need analysis and will call this internally if the project
was not analyzed before.
**Options**
`:project-root` a java.io.File representing the project root.
`settings` map of settings following https://clojure-lsp.io/settings/
**Example**
```clojure
(clojure-lsp.api/analyze-project! {:project-root (io/file ".")
:settings {:classpath-config-paths ["other-company/other-project"]}})
```(clean-ns! {:keys [project-root settings namespace ns-exclude-regex]
:as options})Organize ns form, removing unused requires/refers/imports and sorting
alphabetically by default.
Options
:project-root a java.io.File representing the project root.
:namespace a coll of symbols representing the namespaces which should be cleaned,
if empty all project namespaces will be considered.
:ns-exclude-regex a string regex representing the namespaces that should be excluded during this call.
dry? a boolean, when enabled make no side-effects (no changes to files), only report.
settings map of settings following https://clojure-lsp.io/settings/
Example
(clojure-lsp.api/clean-ns! {:namespace '[my-project.foo my-project.bar]})
Organize `ns` form, removing unused requires/refers/imports and sorting
alphabetically by default.
**Options**
`:project-root` a java.io.File representing the project root.
`:namespace` a coll of symbols representing the namespaces which should be cleaned,
if empty all project namespaces will be considered.
`:ns-exclude-regex` a string regex representing the namespaces that should be excluded during this call.
`dry?` a boolean, when enabled make no side-effects (no changes to files), only report.
`settings` map of settings following https://clojure-lsp.io/settings/
**Example**
```clojure
(clojure-lsp.api/clean-ns! {:namespace '[my-project.foo my-project.bar]})
```(diagnostics {:keys [project-root settings] :as options})Find all project diagnostics (warnings, errors and infos). Returns all clj-kondo lint plus custom linters configured by clojure-lsp like clojure-lsp/unused-public-var for example.
Options
:project-root a java.io.File representing the project root.
:namespace a coll of symbols representing the namespaces which should be cleaned,
if empty all project namespaces will be considered.
:ns-exclude-regex a string regex representing the namespaces that should be excluded during this call.
:output a map with options on how the result should be printed, available values are:
:canonical-paths a boolean if the path should be absolute or not, defaults to false.
settings map of settings following https://clojure-lsp.github.io/clojure-lsp/settings/
Example
(clojure-lsp.api/diagnostics {:namespace '[my-project.foo my-project.bar]
:output {:canonical-paths true}})
Find all project diagnostics (warnings, errors and infos).
Returns all clj-kondo lint plus custom linters configured by clojure-lsp like
clojure-lsp/unused-public-var for example.
**Options**
`:project-root` a java.io.File representing the project root.
`:namespace` a coll of symbols representing the namespaces which should be cleaned,
if empty all project namespaces will be considered.
`:ns-exclude-regex` a string regex representing the namespaces that should be excluded during this call.
`:output` a map with options on how the result should be printed, available values are:
`:canonical-paths` a boolean if the path should be absolute or not, defaults to false.
`settings` map of settings following https://clojure-lsp.github.io/clojure-lsp/settings/
**Example**
```clojure
(clojure-lsp.api/diagnostics {:namespace '[my-project.foo my-project.bar]
:output {:canonical-paths true}})
```(format! {:keys [project-root settings namespace ns-exclude-regex] :as options})Format one or more namespaces using cljfmt internally.
Options
:project-root a java.io.File representing the project root.
:namespace a coll of symbols representing the namespaces which should be cleaned,
if empty all project namespaces will be considered.
dry? a boolean, when enabled make no side-effects (no changes to files), only report.
:ns-exclude-regex a string regex representing the namespaces that should be excluded during this call.
settings map of settings following https://clojure-lsp.io/settings/
Example
(clojure-lsp.api/format! {:namespace '[my-project.foo my-project.bar]})
Format one or more namespaces using cljfmt internally.
**Options**
`:project-root` a java.io.File representing the project root.
`:namespace` a coll of symbols representing the namespaces which should be cleaned,
if empty all project namespaces will be considered.
`dry?` a boolean, when enabled make no side-effects (no changes to files), only report.
`:ns-exclude-regex` a string regex representing the namespaces that should be excluded during this call.
`settings` map of settings following https://clojure-lsp.io/settings/
**Example**
```clojure
(clojure-lsp.api/format! {:namespace '[my-project.foo my-project.bar]})
```(rename! {:keys [project-root settings from to] :as options})Rename a symbol and its definitions across the project. The symbol can be a full qualified symbol or a namespace only.
Options
:project-root a java.io.File representing the project root.
:from the full qualified symbol origin name that should be renamed. e.g. my-project.foo/my-var or my-project.foo for namespaces
:to the full qualified symbol that will replace the original symbol. e.g. my-project.bar/my-var-2 or my-project.bar for namespaces
dry? a boolean, when enabled make no side-effects (no changes to files), only report.
settings map of settings following https://clojure-lsp.io/settings/
Example
(clojure-lsp.api/rename! {:from 'my-project.some/foo
:to 'my-project.some/bar})
Rename a symbol and its definitions across the project.
The symbol can be a full qualified symbol or a namespace only.
**Options**
`:project-root` a java.io.File representing the project root.
`:from` the full qualified symbol origin name that should be renamed. e.g. my-project.foo/my-var or my-project.foo for namespaces
`:to` the full qualified symbol that will replace the original symbol. e.g. my-project.bar/my-var-2 or my-project.bar for namespaces
`dry?` a boolean, when enabled make no side-effects (no changes to files), only report.
`settings` map of settings following https://clojure-lsp.io/settings/
**Example**
```clojure
(clojure-lsp.api/rename! {:from 'my-project.some/foo
:to 'my-project.some/bar})
```cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |