fix(java): errors in company-yasnippet snippet previews

Because company-yasnippet expands each snippet to produce a preview in a
temporary (and fundamental-mode) buffer, java-current-class and
java-current-package throws errors, so I've added a special case to
return a placeholder if expanded in a temporary buffer.
This commit is contained in:
Henrik Lissner 2023-02-22 00:44:38 -05:00
parent 8b86ad3183
commit 788e507d49
No known key found for this signature in database
GPG key ID: B60957CA074D39A3

View file

@ -42,13 +42,18 @@ Is converted to: net.lissner.game
It does this by ignoring everything before the nearest package root (see
`+java-project-package-roots' to control what this function considers a package
root)."
(unless (eq major-mode 'java-mode)
(user-error "Not in a java-mode buffer"))
(let* ((project-root (file-truename (doom-project-root)))
(file-path (file-name-sans-extension
(file-truename (or buffer-file-name
default-directory))))
(src-root (cl-loop for root in +java-project-package-roots
(cond ((doom-special-buffer-p (current-buffer))
"{PackageName}")
((not (eq major-mode 'java-mode))
(user-error "Not in java-mode"))
((when-let (project-root (doom-project-root))
(let* ((project-root (file-truename project-root))
(file-path
(file-name-sans-extension
(file-truename (or buffer-file-name
default-directory))))
(src-root
(cl-loop for root in +java-project-package-roots
if (and (stringp root)
(locate-dominating-file file-path root))
return (file-name-directory (file-relative-name file-path (expand-file-name root it)))
@ -59,18 +64,20 @@ root)."
(when fixed-parts
(string-join fixed-parts "/"))))
return it)))
(when src-root
(string-remove-suffix "." (replace-regexp-in-string "/" "." src-root)))))
(when src-root
(string-remove-suffix "." (replace-regexp-in-string "/" "." src-root))))))
((user-error "Can't deduce package name"))))
;;;###autoload
(defun +java-current-class ()
"Get the class name for the current file."
(unless (eq major-mode 'java-mode)
(user-error "Not in a java-mode buffer"))
(unless buffer-file-name
(user-error "This buffer has no filepath; cannot guess its class name"))
(or (file-name-sans-extension (file-name-base (buffer-file-name)))
"ClassName"))
(cond ((doom-special-buffer-p (current-buffer))
"{ClassName}")
((not (eq major-mode 'java-mode))
(user-error "Not in java-mode"))
(buffer-file-name
(file-name-sans-extension (file-name-base (buffer-file-name))))
((user-error "Can't deduce the class name"))))
;;;###autoload
(defun +java/open-groovy-repl ()