Make eglot work with clojure-lsp

This commit is contained in:
Pouya Abbassi 2024-04-12 11:32:34 +03:30
parent 963dd42db4
commit 035285121b
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG Key ID: 591DF1A6C74C0CBC
3 changed files with 32 additions and 18 deletions

View File

@ -52,7 +52,6 @@
gdscript-mode gdscript-mode
meson-mode meson-mode
lsp-scheme lsp-scheme
clojure-mode
cider cider
aggressive-indent aggressive-indent
graphviz-dot-mode graphviz-dot-mode
@ -92,6 +91,8 @@
badwolf-theme badwolf-theme
clojure-mode clojure-mode
clojure-ts-mode clojure-ts-mode
cider
flycheck-clj-kondo
ace-window ace-window
avy avy
paredit paredit

View File

@ -24,25 +24,34 @@
(eval-when-compile (eval-when-compile
(require 'fpkg)) (require 'fpkg))
(defun fg42/clojure-ts-mode-setup ()
"A hook handler to setup cpp related configurations."
(setq-local company-backends
'((company-capf :with company-yasnippet) :separate
(company-keywords company-dabbrev company-ispell) :separate
company-files))
;; We set eglot's autoload command to `eglot-ensure'
(eglot-ensure))
(use! clojure-mode (use! flycheck-clj-kondo
"flycheck linter for clojure using `clj-konda'"
:defer t)
;; (defun fg42/clojure-ts-mode-setup ()
;; "A hook handler to setup cpp related configurations."
;; ;; We set eglot's autoload command to `eglot-ensure'
;; (eglot-ensure))
(use! clojure-ts-mode
"Clojure mode" "Clojure mode"
:init ;; :init
(add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode)) ;; (add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode))
:mode ("\\.cljs\\'" . clojure-ts-mode) :mode (("\\.clj\\'" . clojure-ts-mode)
("\\.cljs\\'" . clojure-ts-mode)
("\\.cljc\\'" . clojure-ts-mode))
:config
(with-eval-after-load 'eglot
;; Force nil to use nixpkgs-fmt for formatting
(let ((clojure-lsp '(clojure-ts-mode . clojure-mode)))
(require 'flycheck-clj-kondo)
(add-to-list 'eglot-server-programs clojure-lsp)))
:hook :hook
(clojure-ts-mode . company-mode) (clojure-ts-mode . company-mode)
(clojure-ts-mode . company-box) (clojure-ts-mode . cider)
(clojure-ts-mode . flycheck-clj-kondo) (clojure-ts-mode . eglot-ensure))
(clojure-ts-mode . clojure-ts-mode-setup)
(clojure-ts-mode . lsp))
(provide 'fg42/langs/clojure) (provide 'fg42/langs/clojure)
;;; clojure.el ends here

View File

@ -52,8 +52,10 @@
, slock , slock
, supportPython ? true , supportPython ? true
, supportVerilog ? true , supportVerilog ? true
, supportClojure ? true
, svls , svls
, verilator , verilator
, clojure-lsp
, ,
}: }:
with builtins; with builtins;
@ -99,12 +101,14 @@ let
# SystemC is required by verilator that at the # SystemC is required by verilator that at the
# moment is only available on Linux # moment is only available on Linux
verilator verilator
]) ++ (lib.optional (supportWM && stdenv.isLinux) [ ]) ++ (lib.optional (supportClojure) [ clojure-lsp ])
++ (lib.optional (supportWM && stdenv.isLinux) [
# Window manager supports works on Linux only # Window manager supports works on Linux only
xorg.xhost xorg.xhost
slock slock
]); ]);
paths = map (x: "${x}/bin/") (lib.lists.flatten runtimeBins); paths = map (x: "${x}/bin/") (lib.lists.flatten runtimeBins);
pathsStr = lib.strings.concatStrings (lib.strings.intersperse ":" paths); pathsStr = lib.strings.concatStrings (lib.strings.intersperse ":" paths);