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:
parent
8b86ad3183
commit
788e507d49
1 changed files with 22 additions and 15 deletions
|
@ -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 ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue