From f73cbee6f83f948202d0ea3fb8775b49562295be Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Fri, 23 Sep 2022 14:18:11 +1000 Subject: fixing compiler warnings and removing major-mode --- hcel-client.el | 1 + hcel-outline.el | 2 +- hcel-results.el | 27 +++++++++++++-------------- hcel-source.el | 30 ++++++++++++++++-------------- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/hcel-client.el b/hcel-client.el index 5bd9946..3af6882 100644 --- a/hcel-client.el +++ b/hcel-client.el @@ -18,6 +18,7 @@ ;; License along with hcel. If not, see . (require 'hcel-utils) +(require 'json) (defcustom hcel-host "localhost:8080" "hcel server host" :group 'hcel :type '(string)) diff --git a/hcel-outline.el b/hcel-outline.el index 2c7913c..962e5aa 100644 --- a/hcel-outline.el +++ b/hcel-outline.el @@ -207,7 +207,7 @@ update in the outline mode too." :lighter " hcel-outline-follow" :after-hook (if hcel-outline-follow-mode - (if (not (eq major-mode 'hcel-outline-mode)) + (if (not (derived-mode-p 'hcel-outline-mode)) (error "Not in hcel-outline mode!") (add-hook 'post-command-hook #'hcel-outline-open-thing-at-point-other-window nil t)) diff --git a/hcel-results.el b/hcel-results.el index 465df14..6d6c2c9 100644 --- a/hcel-results.el +++ b/hcel-results.el @@ -75,26 +75,25 @@ (defun hcel-results-next-page () (interactive) - ;; FIXME: Using `major-mode' is a code smell. - (unless (memq major-mode '(hcel-refs-mode hcel-ids-mode)) + (unless (derived-mode-p 'hcel-refs-mode 'hcel-ids-mode) (error "Not in hcel-refs or hcel-ids mode: %S" major-mode)) (when (= hcel-results-page-number hcel-results-max-page-number) (error "Already on the last page")) (setq hcel-results-page-number (1+ hcel-results-page-number)) - (cond ((eq major-mode 'hcel-refs-mode) (hcel-refs-update-references)) - ((eq major-mode 'hcel-ids-mode) (hcel-ids-update)) + (cond ((derived-mode-p 'hcel-refs-mode) (hcel-refs-update-references)) + ((derived-mode-p 'hcel-ids-mode) (hcel-ids-update)) (t (error "wrong major mode: %S" major-mode))) (hcel-results-next-error-internal 1)) (defun hcel-results-previous-page () (interactive) - (unless (memq major-mode '(hcel-refs-mode hcel-ids-mode)) + (unless (derived-mode-p 'hcel-refs-mode 'hcel-ids-mode) (error "Not in hcel-refs or hcel-ids mode: %S" major-mode)) (when (= hcel-results-page-number 1) (error "Already on the first page.")) (setq hcel-results-page-number (1- hcel-results-page-number)) - (cond ((eq major-mode 'hcel-refs-mode) (hcel-refs-update-references)) - ((eq major-mode 'hcel-ids-mode) (hcel-ids-update)) + (cond ((derived-mode-p 'hcel-refs-mode) (hcel-refs-update-references)) + ((derived-mode-p 'hcel-ids-mode) (hcel-ids-update)) (t (error "wrong major mode: %S" major-mode))) (goto-char (point-max)) (hcel-results-next-error-internal -1)) @@ -119,7 +118,7 @@ (defun hcel-refs-update-references () "Find references and update the current hcel-refs-mode buffer." - (unless (eq major-mode 'hcel-refs-mode) + (unless (derived-mode-p 'hcel-refs-mode) (error "Not in hcel-refs mode!")) (let ((inhibit-read-only t) (modules-refs @@ -183,7 +182,7 @@ Start by choosing a package." (interactive) - (unless (eq major-mode 'hcel-refs-mode) + (unless (derived-mode-p 'hcel-refs-mode) (error "Not in hcel-refs mode!")) (let* ((global-refs (hcel-api-global-references hcel-refs-id)) (name (cadddr (split-string hcel-refs-id "|"))) @@ -215,13 +214,13 @@ Start by choosing a package." (defun hcel-minor-find-references-at-point () (interactive) - (cond ((or (eq major-mode 'hcel-outline-mode) + (cond ((or (derived-mode-p 'hcel-outline-mode) (eq (current-buffer) eldoc--doc-buffer)) (hcel-find-references-internal (hcel-text-property-near-point 'package-id) (hcel-text-property-near-point 'module-path) (hcel-text-property-near-point 'internal-id))) - ((eq major-mode 'hcel-ids-mode) + ((derived-mode-p 'hcel-ids-mode) (hcel-find-references-internal (alist-get 'packageId (hcel-text-property-near-point 'location-info)) (alist-get 'modulePath (hcel-text-property-near-point 'location-info)) @@ -263,7 +262,7 @@ Start by choosing a package." (hcel-minor-mode 1)) (defun hcel-ids-update () - (unless (eq major-mode 'hcel-ids-mode) + (unless (derived-mode-p 'hcel-ids-mode) (error "Not in hcel-ids mode!")) (when (and (eq hcel-ids-scope 'package) (not hcel-ids-package-id)) (error "No package-id supplied for identifiers call!")) @@ -322,7 +321,7 @@ Start by choosing a package." (defun hcel-ids-update-query (query) "Search for identities matching query." (interactive (list (progn - (unless (eq major-mode 'hcel-ids-mode) + (unless (derived-mode-p 'hcel-ids-mode) (error "Not in hcel-ids mode!")) (read-string "Query: " hcel-ids-query)))) (setq hcel-ids-query query @@ -388,7 +387,7 @@ Start by choosing a package." (interactive (list (let ((minibuffer-allow-text-properties t) (package-id hcel-package-id)) - (unless (eq major-mode 'hcel-mode) + (unless (derived-mode-p 'hcel-mode) (error "Not in hcel-mode!")) (completing-read (format "Search for identifier in %s: " diff --git a/hcel-source.el b/hcel-source.el index 0d451b5..f6e5d55 100644 --- a/hcel-source.el +++ b/hcel-source.el @@ -17,7 +17,12 @@ ;; You should have received a copy of the GNU Affero General Public ;; License along with hcel. If not, see . +(require 'array) +(require 'dom) (require 'hcel-client) +(require 'hcel-outline) +(require 'hcel-results) +(require 'xref) (defvar-local hcel-identifiers nil) (defvar-local hcel-declarations nil) @@ -66,7 +71,7 @@ When FORCE is non-nil, kill existing source buffer if any." (defun hcel-reload-module-source () "Reloads current module source." (interactive) - (if (equal major-mode 'hcel-mode) + (if (derived-mode-p 'hcel-mode) (switch-to-buffer (hcel-load-module-source hcel-package-id hcel-module-path t)) (error "Not in hcel-mode!"))) @@ -119,11 +124,8 @@ the location with pulsing. (read-buffer "Switch to buffer: " nil t (lambda (buffer) - (equal - (buffer-local-value - 'major-mode - (get-buffer (if (stringp buffer) buffer (car buffer)))) - 'hcel-mode))))) + (with-current-buffer (if (stringp buffer) buffer (car buffer)) + (derived-mode-p 'hcel-mode)))))) (define-key hcel-mode-map "b" #'hcel-switch-buffer) (defun hcel-lookup-occurrence-at-point () @@ -260,12 +262,12 @@ the location with pulsing. 'internal-id identifier 'string=) (point))))) (docstring - (cond ((eq major-mode 'hcel-outline-mode) + (cond ((derived-mode-p 'hcel-outline-mode) (hcel-render-type-internal (hcel-text-property-near-point 'package-id) (hcel-text-property-near-point 'module-path) identifier)) - ((eq major-mode 'hcel-ids-mode) + ((derived-mode-p 'hcel-ids-mode) (hcel-render-type-internal (alist-get 'packageId (hcel-text-property-near-point 'location-info)) (alist-get 'modulePath (hcel-text-property-near-point 'location-info)) @@ -286,12 +288,12 @@ the location with pulsing. (defun hcel-minor-eldoc-docs (cb) (when-let* ((docstring - (cond ((eq major-mode 'hcel-outline-mode) + (cond ((derived-mode-p 'hcel-outline-mode) (hcel-id-docs-internal (hcel-text-property-near-point 'package-id) (hcel-text-property-near-point 'module-path) (hcel-text-property-near-point 'internal-id))) - ((eq major-mode 'hcel-ids-mode) + ((derived-mode-p 'hcel-ids-mode) (hcel-id-docs-internal (alist-get 'packageId (hcel-text-property-near-point 'location-info)) (alist-get 'modulePath (hcel-text-property-near-point 'location-info)) @@ -404,7 +406,7 @@ the location with pulsing. ;; imenu (defun hcel-imenu-create-index () - (unless (eq major-mode 'hcel-mode) + (unless (derived-mode-p 'hcel-mode) (error "Not in hcel-mode!")) (mapcar (lambda (decl) @@ -435,13 +437,13 @@ the location with pulsing. (hcel-minor-find-definition-at-point)) (defun hcel-minor-find-definition-at-point () (interactive) - (cond ((or (eq major-mode 'hcel-outline-mode) + (cond ((or (derived-mode-p 'hcel-outline-mode) (eq (current-buffer) eldoc--doc-buffer)) (hcel-find-definition-internal (hcel-text-property-near-point 'package-id) (hcel-text-property-near-point 'module-path) (hcel-text-property-near-point 'internal-id))) - ((eq major-mode 'hcel-ids-mode) + ((derived-mode-p 'hcel-ids-mode) (hcel-find-definition-internal (alist-get 'packageId (hcel-text-property-near-point 'location-info)) (alist-get 'modulePath (hcel-text-property-near-point 'location-info)) @@ -504,7 +506,7 @@ the location with pulsing. ((null hcel-minor-mode) (remove-hook 'eldoc-documentation-functions #'hcel-minor-eldoc-id-type t) (remove-hook 'eldoc-documentation-functions #'hcel-minor-eldoc-docs t)) - ((not (or (memq major-mode hcel-minor-major-modes) + ((not (or (apply 'derived-mode-p hcel-minor-major-modes) (eq (current-buffer) eldoc--doc-buffer))) (setq hcel-minor-mode nil) (error "Not in one of the supported modes (%s) or the eldoc buffer." -- cgit v1.2.3