From 035285121ba83c4081ff2e2e064d51e385f88e5b Mon Sep 17 00:00:00 2001 From: Pouya Abbassi Date: Fri, 12 Apr 2024 11:32:34 +0330 Subject: [PATCH] Make eglot work with clojure-lsp --- lisp/fg42/deps.el | 3 ++- lisp/fg42/langs/clojure.el | 41 +++++++++++++++++++++++--------------- nix/fg42.nix | 6 +++++- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/lisp/fg42/deps.el b/lisp/fg42/deps.el index bf45917..e3552cb 100644 --- a/lisp/fg42/deps.el +++ b/lisp/fg42/deps.el @@ -52,7 +52,6 @@ gdscript-mode meson-mode lsp-scheme - clojure-mode cider aggressive-indent graphviz-dot-mode @@ -92,6 +91,8 @@ badwolf-theme clojure-mode clojure-ts-mode + cider + flycheck-clj-kondo ace-window avy paredit diff --git a/lisp/fg42/langs/clojure.el b/lisp/fg42/langs/clojure.el index 583c2e6..6233a89 100644 --- a/lisp/fg42/langs/clojure.el +++ b/lisp/fg42/langs/clojure.el @@ -24,25 +24,34 @@ (eval-when-compile (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" - :init - (add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode)) - :mode ("\\.cljs\\'" . clojure-ts-mode) + ;; :init + ;; (add-to-list 'major-mode-remap-alist '(clojure-mode . 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 (clojure-ts-mode . company-mode) - (clojure-ts-mode . company-box) - (clojure-ts-mode . flycheck-clj-kondo) - (clojure-ts-mode . clojure-ts-mode-setup) - (clojure-ts-mode . lsp)) + (clojure-ts-mode . cider) + (clojure-ts-mode . eglot-ensure)) (provide 'fg42/langs/clojure) +;;; clojure.el ends here diff --git a/nix/fg42.nix b/nix/fg42.nix index 97c126d..c583d2e 100644 --- a/nix/fg42.nix +++ b/nix/fg42.nix @@ -52,8 +52,10 @@ , slock , supportPython ? true , supportVerilog ? true +, supportClojure ? true , svls , verilator +, clojure-lsp , }: with builtins; @@ -99,12 +101,14 @@ let # SystemC is required by verilator that at the # moment is only available on Linux verilator - ]) ++ (lib.optional (supportWM && stdenv.isLinux) [ + ]) ++ (lib.optional (supportClojure) [ clojure-lsp ]) + ++ (lib.optional (supportWM && stdenv.isLinux) [ # Window manager supports works on Linux only xorg.xhost slock ]); + paths = map (x: "${x}/bin/") (lib.lists.flatten runtimeBins); pathsStr = lib.strings.concatStrings (lib.strings.intersperse ":" paths);