From a80a4aca12895b1d95da2381a3e72f46e727954f Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Wed, 4 Nov 2020 09:56:17 +0100 Subject: [PATCH 1/4] Don't use `lsp-execute-command' `lsp-execute-command' is a liability that needs to be removed; use lsp's :action-handlers for the reference and implementation lenses instead. Also remove the duplicate definition of the reference and implementation lens action functions. --- lsp-java.el | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/lsp-java.el b/lsp-java.el index 7504f6b..1529300 100644 --- a/lsp-java.el +++ b/lsp-java.el @@ -626,16 +626,16 @@ FULL specify whether full or incremental build will be performed." (unless (file-directory-p path) (make-directory path t))) -(cl-defmethod lsp-execute-command - (_server (_command (eql java.show.references)) params) +(lsp-defun lsp-java--show-references ((&Command :arguments? params)) + ;; (_server (_command (eql java.show.references)) params) (if-let (refs (seq-elt params 2)) - (xref--show-xrefs (lsp--locations-to-xref-items refs) nil) + (lsp-show-xrefs (lsp--locations-to-xref-items refs) t) (user-error "No references"))) -(cl-defmethod lsp-execute-command - (_server (_command (eql java.show.implementations)) params) +(lsp-defun lsp-java--show-implementations ((&Command :arguments? params)) + ;; (_server (_command (eql java.show.implementations)) params) (if-let (refs (seq-elt params 2)) - (xref--show-xrefs (lsp--locations-to-xref-items refs) nil) + (lsp-show-xrefs (lsp--locations-to-xref-items refs) nil) (user-error "No implementations"))) (defun lsp-java--get-java-version () @@ -977,18 +977,6 @@ current symbol." "Return the workspace corresponding FILE-URI." (lsp-find-workspace 'jdtls (lsp--uri-to-path file-uri))) -(cl-defmethod lsp-execute-command - (_server (_command (eql java.show.references)) params) - (if-let (refs (cl-third (append params nil))) - (lsp-show-xrefs (lsp--locations-to-xref-items refs) nil t) - (user-error "No references"))) - -(cl-defmethod lsp-execute-command - (_server (_command (eql java.show.implementations)) params) - (if-let (refs (cl-third (append params nil))) - (lsp-show-xrefs (lsp--locations-to-xref-items refs) nil t) - (user-error "No implementations"))) - (add-to-list 'global-mode-string (list '(t lsp-java-progress-string))) (defun lsp-java-boot--workspace-execute-client-command (_jdt-ls-workspace params) @@ -1392,7 +1380,9 @@ current symbol." ("java.action.generateAccessorsPrompt" #'lsp-java--generate-accessors-prompt) ("java.action.generateConstructorsPrompt" #'lsp-java--generate-constructors-prompt) ("java.action.applyRefactoringCommand" #'lsp-java--apply-refactoring-command) - ("java.action.rename" 'lsp-java--action-rename)) + ("java.action.rename" #'lsp-java--action-rename) + ("java.show.references" #'lsp-java--show-references) + ("java.show.implementations" #'lsp-java--show-implementations)) :uri-handlers (ht ("jdt" #'lsp-java--resolve-uri)) :initialization-options (lambda () (list :settings (lsp-configuration-section "java") From bc80a369689779f66c0d9733543247a043edfe97 Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Wed, 4 Nov 2020 10:05:37 +0100 Subject: [PATCH 2/4] `lsp-show-xrefs': supply DISPLAY argument --- lsp-java.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lsp-java.el b/lsp-java.el index 1529300..b0c3bd1 100644 --- a/lsp-java.el +++ b/lsp-java.el @@ -629,13 +629,13 @@ FULL specify whether full or incremental build will be performed." (lsp-defun lsp-java--show-references ((&Command :arguments? params)) ;; (_server (_command (eql java.show.references)) params) (if-let (refs (seq-elt params 2)) - (lsp-show-xrefs (lsp--locations-to-xref-items refs) t) + (lsp-show-xrefs (lsp--locations-to-xref-items refs) nil t) (user-error "No references"))) (lsp-defun lsp-java--show-implementations ((&Command :arguments? params)) ;; (_server (_command (eql java.show.implementations)) params) (if-let (refs (seq-elt params 2)) - (lsp-show-xrefs (lsp--locations-to-xref-items refs) nil) + (lsp-show-xrefs (lsp--locations-to-xref-items refs) nil nil) (user-error "No implementations"))) (defun lsp-java--get-java-version () From 1a0b16419b41a01b2ebc051d586450f3a41dd8fc Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Wed, 4 Nov 2020 10:14:09 +0100 Subject: [PATCH 3/4] Fix CI byte-compile Declare `lsp-lens-backend' where necessary. --- lsp-java-boot.el | 3 +++ lsp-java.el | 3 +++ lsp-jt.el | 62 +++++++++++++++++++++++++++++------------------- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/lsp-java-boot.el b/lsp-java-boot.el index 15a2ed9..0d33ca6 100755 --- a/lsp-java-boot.el +++ b/lsp-java-boot.el @@ -75,6 +75,8 @@ Store CALLBACK to use it `sts/highlight'." (setq-local lsp-java-boot--callback callback)) +(defvar lsp-lens-backends) +(declare-function lsp-lens-refresh "lsp-lens" (buffer-modified? &optional buffer)) ;;;###autoload (define-minor-mode lsp-java-boot-lens-mode "Toggle code-lens overlays." @@ -84,6 +86,7 @@ Store CALLBACK to use it `sts/highlight'." :lighter "BLens" (cond (lsp-java-boot-lens-mode + (require 'lsp-lens) (setq-local lsp-lens-backends (cl-pushnew 'lsp-java-boot--lens-backend lsp-lens-backends)) (lsp-lens-refresh t)) (t (setq-local lsp-lens-backends (delete 'lsp-java-boot--lens-backend lsp-lens-backends)) diff --git a/lsp-java.el b/lsp-java.el index b0c3bd1..5f009b6 100644 --- a/lsp-java.el +++ b/lsp-java.el @@ -1489,6 +1489,8 @@ current symbol." ;; lsp-java run +(defvar lsp-lens-backends) +(declare-function lsp-lens-refresh "lsp-lens" (buffer-modified? &optional buffer)) ;;;###autoload (define-minor-mode lsp-java-lens-mode "Toggle run/debug overlays." @@ -1498,6 +1500,7 @@ current symbol." :lighter nil (cond (lsp-java-lens-mode + (require 'lsp-lens) (setq-local lsp-lens-backends (cl-pushnew #'lsp-java-lens-backend lsp-lens-backends)) (lsp-lens-refresh t)) (t (setq-local lsp-lens-backends (delete #'lsp-java-lens-backend lsp-lens-backends))))) diff --git a/lsp-jt.el b/lsp-jt.el index a0db025..a18b8d9 100644 --- a/lsp-jt.el +++ b/lsp-jt.el @@ -32,6 +32,9 @@ (require 'lsp-java) (require 'treemacs) +(eval-when-compile + (require 'lsp-treemacs)) + (declare-function dap-debug "ext:dap-mode") (defvar lsp-jt--refresh-timer nil) @@ -248,6 +251,8 @@ (funcall callback all-lenses lsp--cur-version))) :mode 'detached)) +(defvar lsp-lens-backends) +(declare-function lsp-lens-refresh "lsp-lens" (buffer-modified? &optional buffer)) ;;;###autoload (define-minor-mode lsp-jt-lens-mode "Toggle code-lens overlays." @@ -258,6 +263,7 @@ (let ((buffer (current-buffer))) (cond (lsp-jt-lens-mode + (require 'lsp-lens) (setq-local lsp-lens-backends (cl-pushnew 'lsp-jt-lens-backend lsp-lens-backends)) (lsp-lens-refresh t) (add-hook 'lsp-jt-status-updated-hook @@ -313,20 +319,19 @@ (treemacs-create-icon :file "test-error.png" :extensions (java-test-error) :fallback "-") (treemacs-create-icon :file "history.png" :extensions (java-test-pending) :fallback "-"))) +(lsp-treemacs-define-action lsp-jt-run (:data) + "Run test from browser." + (lsp-jt--start-test data t)) + (defvar lsp-jt-mode-map (-doto (make-sparse-keymap) (define-key (kbd "x") #'lsp-jt-run) (define-key (kbd "d") #'lsp-jt-debug) (define-key (kbd "R") #'lsp-jt-browser-refresh)) "Keymap for `lsp-jt-mode'.") - (define-minor-mode lsp-jt-mode "Java Test Mode" nil nil lsp-jt-mode-map) -(lsp-treemacs-define-action lsp-jt-run (:data) - "Run test from browser." - (lsp-jt--start-test data t)) - (lsp-treemacs-define-action lsp-jt-debug (:data) "Debug from browser." (lsp-jt--start-test data nil)) @@ -393,35 +398,42 @@ (lsp-defun lsp-jt--render-test-node ((test-item &as &jt:TestItem :display-name :level :id :location (loc &as &Location :uri) :full-name)) `(:key ,id - :label ,display-name - :icon ,(lsp-jt--get-test-icon id level) - ,@(unless (eq level 4) - (list :children-async (lambda (_ callback) - (lsp-jt-search - uri - level - full-name - (lambda (items) - (funcall callback - (-map - #'lsp-jt--render-test-node - items))))))) - :ret-action ,(lambda () - (interactive) - (lsp-goto-location loc)) - :actions (["Run Test" lsp-jt-run] - ["Debug Test" lsp-jt-debug] - ["Refresh" lsp-jt-browser-refresh]) - :data ,test-item)) + :label ,display-name + :icon ,(lsp-jt--get-test-icon id level) + ,@(unless (eq level 4) + (list :children-async (lambda (_ callback) + (lsp-jt-search + uri + level + full-name + (lambda (items) + (funcall callback + (-map + #'lsp-jt--render-test-node + items))))))) + :ret-action ,(lambda () + (interactive) + (lsp-goto-location loc)) + :actions (["Run Test" lsp-jt-run] + ["Debug Test" lsp-jt-debug] + ["Refresh" lsp-jt-browser-refresh]) + :data ,test-item)) + +(declare-function lsp-treemacs-generic-refresh "lsp-treemacs" ()) +(declare-function + lsp-treemacs-render "lsp-treemacs" + (tree title expand-depth &optional buffer-name right-click-actions)) (defun lsp-jt-browser-refresh () (interactive) (with-current-buffer "*Java Tests*" + (require 'lsp-treemacs) (lsp-treemacs-generic-refresh))) ;;;###autoload (defun lsp-jt-browser () (interactive) + (require 'lsp-treemacs) (select-window (display-buffer-in-side-window (lsp-treemacs-render From 2e86a5c41845b33b1c57b4e734d1d47f24dfee5a Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Thu, 5 Nov 2020 21:42:08 +0100 Subject: [PATCH 4/4] lsp-java-boot.el: don't use `lsp-execute-command' --- lsp-java-boot.el | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lsp-java-boot.el b/lsp-java-boot.el index 0d33ca6..1be25a3 100755 --- a/lsp-java-boot.el +++ b/lsp-java-boot.el @@ -92,15 +92,13 @@ Store CALLBACK to use it `sts/highlight'." (t (setq-local lsp-lens-backends (delete 'lsp-java-boot--lens-backend lsp-lens-backends)) (setq-local lsp-java-boot--callback nil)))) -(cl-defmethod lsp-execute-command - (_server (_command (eql sts.open.url)) params) +(lsp-defun lsp-java-boot--sts-open-url ((&Command :arguments?)) "Execute open url command from PARAMS data." - (browse-url (lsp-seq-first params))) + (browse-url (lsp-seq-first arguments?))) -(cl-defmethod lsp-execute-command - (_server (_command (eql sts.showHoverAtPosition)) params) +(lsp-defun lsp-java-boot--sts-show-hover ((&Command :arguments?)) "Execute show hover at position command with PARAMS data." - (goto-char (lsp--position-to-point (lsp-seq-first params))) + (goto-char (lsp--position-to-point (lsp-seq-first arguments?))) (lsp-describe-thing-at-point)) (defun lsp-java-boot--sts-hightlight (workspace params) @@ -147,6 +145,8 @@ Store CALLBACK to use it `sts/highlight'." ("sts/javadocHoverLink" #'lsp-java-boot--sts-javadoc-hover-link)) :notification-handlers (ht ("sts/highlight" #'lsp-java-boot--sts-hightlight) ("sts/progress" #'ignore)) + :action-handlers (ht ("sts.showHoverAtPosition" #'lsp-java-boot--sts-show-hover) + ("sts.open.url" #'lsp-java-boot--sts-open-url)) :multi-root t :add-on? t :server-id 'boot-ls