README.md
July 22, 2022 ยท View on GitHub
Practicalli Clojure LSP Configuration
Custom snippets in Clojure LSP format (EDN). Practicalli designed snippets to encourage communication of the code purpose.
Install
Clone the repository to the user level configuration location for Clojure LSP, either $XDG_CONFIG_HOME/clojure-lsp or if XDG_CONFIG_HOME is not set, $HOME/.config/clojure-lsp
Clojure LSP configuration
Include :extra-paths and :extra-deps from project & user level aliases in LSP classpath. e.g. support a custom user namespace in dev/user.clj
:source-aliases #{:dev :test :env/dev :env/test :lib/reloaded}
Include Java Sources installed via Debian / Ubuntu package openjdk-17-source to support calls to Java Objects and Methods.
:java
{:jdk-source-uri "file:///usr/lib/jvm/openjdk-17/lib/src.zip" ;;
:home-path nil ;; jdk-source-uri takes precedence
:download-jdk-source? false}
Clean namespace ns forms but do not sort require names
:clean {:automatically-after-ns-refactor true
:ns-inner-blocks-indentation :next-line
:ns-import-classes-indentation :next-line
:sort {:ns false
:require false
:import false
:import-classes {:classes-per-line 3} ;; -1 for all in single line
:refer {:max-line-length 80}}}
Use ^private metadata for private function definitions rather than defn-
:use-metadata-for-privacy? true
Location of cljfmt configuration for formatting, path relative to project root. The defaults for cljfmt are used, except :remove-consecutive-blank-lines? which is set to false to enable more readable code.
:cljfmt-config-path "cljfmt.edn"
cljfmt configuration included example
:indentsrules for clojure.core, compojure, fuzzy rules and examples used by the Clojure LSP maintainer.
Custom snippets
Snippets created by Practicalli are documents in Practicalli Spacemacs
Docs / comments
comment-heading- describe purpose of the namespacecomment-separator- logically separate code sections, helps identify opportunities to refactor to other name spacescomment-section- logically separate large code sections with start and end line commentswrap-reader-comment- insert reader comment macro,#_before current form, informing Clojure reader to ignore next form
Repl Driven Development
rich-comment- comment blockrich-comment-rdd- comment block with ignore :redefined-var for repl experimentsrich-comment-hotload- comment block with add-libs code for hotloading libraries in Clojure CLI replwrap-rich-comment- wrap current form with comment reader macrorequire-rdd- add a require expression, for adding a require in a rich comment block for RDD
Standard library functions
def- def with docstringdef-- private def with docstringdefn- defn with docstringdefn-private defn with docstringns- namespace form with docstring
Clojure CLI deps.edn aliases
deps-alias- add Clojure CLI aliasdeps-maven- add a maven style dependencydeps-git- add a git style dependency using:git/shadeps-git-tag- as above including:git/tagdeps-git-url- add git style dependency using git url (url taken from dependency name as it is typed - mirrored placeholder)deps-local- add a:local/rootdependency
Requiring dependencies
require-rdd- add a require expression, for adding a require in a rich comment block for RDDrequire- simple requirerequire-refer- require with:referrequire-as- require with:asaliasuse- creates a require rather than the more troublesome use
Unit testing
deftest- creates a deftest with testing directive and one assertiontesting- creates a testing testing directive and one assertionis- an assertion with placeholders for test function and expected results