This blog provides a comprehensive guide to setting Up a Clojure development environment on Linux with Emacs.
To get started, install OpenJDK. For example, download version 23.0.2 from the official site:
To ensure your system recognizes the JDK, set up the JAVA_HOME
environment variable and update your PATH
.
For Bash, add the following lines to ~/.bashrc
:
For Fish, update your ~/.config/fish/config.fish
:
To install Clojure, run the following commands:
For more details, visit the official guide.
To enable Clojure support in Emacs, install clojure-mode:
M-x package-install [RET] clojure-mode [RET]
For more information, check the clojure-mode repository.
clojure-lsp provides language server support for Clojure. Install it using:
|
More details are available on the clojure-lsp installation page.
eglot
:If you prefer eglot
, configure it as follows:
;; clojure-lsp configuration
(use-package eglot
:ensure t
:hook ((clojure-mode . eglot-ensure)
(clojurec-mode . eglot-ensure)
(clojurescript-mode . eglot-ensure))
:config
(setenv "PATH" (concat "/usr/local/bin" path-separator (getenv "PATH")))
(add-to-list 'eglot-server-programs '(clojure-mode . ("clojure-lsp")))
(add-to-list 'eglot-server-programs '(clojurec-mode . ("clojure-lsp")))
(add-to-list 'eglot-server-programs '(clojurescript-mode . ("clojure-lsp")))
(add-to-list 'eglot-server-programs '(clojurex-mode . ("clojure-lsp"))))
lsp-mode
:If you use lsp-mode
, add the following configuration:
(use-package lsp-mode
:ensure t
:hook ((clojure-mode . lsp)
(clojurec-mode . lsp)
(clojurescript-mode . lsp))
:config
;; add paths to your local installation of project mgmt tools, like lein
(setenv "PATH" (concat
"/usr/local/bin" path-separator
(getenv "PATH")))
(dolist (m '(clojure-mode
clojurec-mode
clojurescript-mode
clojurex-mode))
(add-to-list 'lsp-language-id-configuration `(,m . "clojure")))
(setq lsp-clojure-server-command '("/path/to/clojure-lsp"))) ;; Optional: In case `clojure-lsp` is not in your $PATH
For further details, check the clojure-lsp Emacs client guide.