From 72eaf530cf08e8a2859bbd5b02f46fc03307ee8c Mon Sep 17 00:00:00 2001 From: James Ravn Date: Tue, 5 May 2020 13:23:15 +0100 Subject: [PATCH 1/5] Make some improvements to java +lsp This is a first pass at making `+lsp` more functional: * Fix lsp not starting automatically when opening java-mode buffers. Placing it in the lsp-java hook does not work. * Enable the code lens for test classes. * Add a keybinding/function to easily update the eclipse LSP server. * Add a keybinding to bring up the lsp-jt-browser (the treemacs based browser that lists all the project tests). * Fix root path for lsp-jt. There are still a lot of rough edges here, and I don't think it's quite usable yet, mostly due to issues around the java test mode (lsp-jt). The other functionality all seems to work well though. --- modules/lang/java/+lsp.el | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/modules/lang/java/+lsp.el b/modules/lang/java/+lsp.el index ba7f84eb1..34ca2f2b1 100644 --- a/modules/lang/java/+lsp.el +++ b/modules/lang/java/+lsp.el @@ -1,13 +1,25 @@ ;;; lang/java/+lsp.el -*- lexical-binding: t; -*- ;;;###if (featurep! +lsp) +;;;###autoload +(defun +java/update-lsp-server () + (interactive) + (lsp--install-server-internal (gethash 'jdtls lsp-clients) t)) + +(add-hook! java-mode-local-vars #'lsp!) +(map! :map java-mode-map + :localleader + :desc "Update the Eclipse LSP server" "U" #'+java/update-lsp-server + :desc "Open the test browser" "T" #'lsp-jt-browser) + +;; TODO: This fails on the first java buffer opened - complains about the LSP server not having executeCode capabilities. +(defun java--lsp-jt-lens-mode-hook () + (when (derived-mode-p 'java-mode) (lsp-jt-lens-mode))) + (use-package! lsp-java - :after lsp-clients - :hook (java-mode-local-vars . lsp!) + :after (lsp-clients dap-mode) + :hook (lsp-mode . java--lsp-jt-lens-mode-hook) :preface (setq lsp-java-server-install-dir (concat doom-etc-dir "eclipse.jdt.ls/server/") - lsp-java-workspace-dir (concat doom-etc-dir "java-workspace")) - :config - ;; TODO keybinds - ;; TODO treemacs integration (?) - ) + lsp-java-workspace-dir (concat doom-etc-dir "java-workspace") + lsp-jt-root (concat doom-etc-dir "eclipse.jdt.ls/server/java-test/server"))) From eb738d9e3a3209bd3d1ab3a7a5ffcc5fc9b02d82 Mon Sep 17 00:00:00 2001 From: James Ravn Date: Tue, 5 May 2020 16:31:14 +0100 Subject: [PATCH 2/5] Remove jt stuff --- modules/lang/java/+lsp.el | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/modules/lang/java/+lsp.el b/modules/lang/java/+lsp.el index 34ca2f2b1..0a6e58377 100644 --- a/modules/lang/java/+lsp.el +++ b/modules/lang/java/+lsp.el @@ -9,17 +9,10 @@ (add-hook! java-mode-local-vars #'lsp!) (map! :map java-mode-map :localleader - :desc "Update the Eclipse LSP server" "U" #'+java/update-lsp-server - :desc "Open the test browser" "T" #'lsp-jt-browser) - -;; TODO: This fails on the first java buffer opened - complains about the LSP server not having executeCode capabilities. -(defun java--lsp-jt-lens-mode-hook () - (when (derived-mode-p 'java-mode) (lsp-jt-lens-mode))) + :desc "Update the Eclipse LSP server" "U" #'+java/update-lsp-server) (use-package! lsp-java :after (lsp-clients dap-mode) - :hook (lsp-mode . java--lsp-jt-lens-mode-hook) :preface (setq lsp-java-server-install-dir (concat doom-etc-dir "eclipse.jdt.ls/server/") - lsp-java-workspace-dir (concat doom-etc-dir "java-workspace") - lsp-jt-root (concat doom-etc-dir "eclipse.jdt.ls/server/java-test/server"))) + lsp-java-workspace-dir (concat doom-etc-dir "java-workspace"))) From 642efaf2b48450ce32c1972e11ef2fac9b47a117 Mon Sep 17 00:00:00 2001 From: James Ravn Date: Wed, 6 May 2020 07:43:38 +0100 Subject: [PATCH 3/5] Move hook into use-package, remove update-lsp-server --- modules/lang/java/+lsp.el | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/modules/lang/java/+lsp.el b/modules/lang/java/+lsp.el index 0a6e58377..ef7d72e8a 100644 --- a/modules/lang/java/+lsp.el +++ b/modules/lang/java/+lsp.el @@ -1,18 +1,12 @@ ;;; lang/java/+lsp.el -*- lexical-binding: t; -*- ;;;###if (featurep! +lsp) -;;;###autoload -(defun +java/update-lsp-server () - (interactive) - (lsp--install-server-internal (gethash 'jdtls lsp-clients) t)) - -(add-hook! java-mode-local-vars #'lsp!) -(map! :map java-mode-map - :localleader - :desc "Update the Eclipse LSP server" "U" #'+java/update-lsp-server) - (use-package! lsp-java :after (lsp-clients dap-mode) :preface (setq lsp-java-server-install-dir (concat doom-etc-dir "eclipse.jdt.ls/server/") - lsp-java-workspace-dir (concat doom-etc-dir "java-workspace"))) + lsp-java-workspace-dir (concat doom-etc-dir "java-workspace")) + (add-hook! java-mode-local-vars #'lsp!) + :config + ;; TODO keybinds + ) From 75305f095f1c4664b2611f926dbaa7fb098ef87b Mon Sep 17 00:00:00 2001 From: James Ravn Date: Wed, 6 May 2020 07:46:33 +0100 Subject: [PATCH 4/5] Fix lsp-jt-root in case someone wants to experiment with java-test --- modules/lang/java/+lsp.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/lang/java/+lsp.el b/modules/lang/java/+lsp.el index ef7d72e8a..e9f1e8ede 100644 --- a/modules/lang/java/+lsp.el +++ b/modules/lang/java/+lsp.el @@ -5,7 +5,8 @@ :after (lsp-clients dap-mode) :preface (setq lsp-java-server-install-dir (concat doom-etc-dir "eclipse.jdt.ls/server/") - lsp-java-workspace-dir (concat doom-etc-dir "java-workspace")) + lsp-java-workspace-dir (concat doom-etc-dir "java-workspace") + lsp-jt-root (concat doom-etc-dir "eclipse.jdt.ls/server/java-test/server/")) (add-hook! java-mode-local-vars #'lsp!) :config ;; TODO keybinds From 57e019e62e110e8101bb4cf69b14339cc04921da Mon Sep 17 00:00:00 2001 From: James Ravn Date: Wed, 6 May 2020 07:52:33 +0100 Subject: [PATCH 5/5] Remove unnecessary dap-mode dependency Only needed this when I was auto loading the jt lens. This should also be conditional on the debugger module being enabled. --- modules/lang/java/+lsp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/java/+lsp.el b/modules/lang/java/+lsp.el index e9f1e8ede..a99a9a7bb 100644 --- a/modules/lang/java/+lsp.el +++ b/modules/lang/java/+lsp.el @@ -2,7 +2,7 @@ ;;;###if (featurep! +lsp) (use-package! lsp-java - :after (lsp-clients dap-mode) + :after lsp-clients :preface (setq lsp-java-server-install-dir (concat doom-etc-dir "eclipse.jdt.ls/server/") lsp-java-workspace-dir (concat doom-etc-dir "java-workspace")