;;; MYJAVA --- java mode configuration
;;
;; Author: Jeff Bowman <jeff@CanisNubilus>
;; Copyright © 2018, Jeff Bowman, all rights reserved.
;; Created: 6 July 2018
;;
;;; Commentary:
;;
;; Use LSP for java mode. Mostly copied/inspired by github page:
;; https://github.com/emacs-lsp/lsp-java
;;
;; 6 July 2018:
;; N.B. Mostly doesn't work. Opening a Java file does not enable
;; the language server and lsp-* functions return an error stating
;; lsp server is not enabled for this file or similar. Manually loading
;; lsp-java and then calling lsp-java-enable works, so need to figure
;; how to make this code run automatically when java mode is started
;; -- guessing I need (:hook java) or similar in the lsp-java config.
;;
;;; Code:
(use-package lsp-mode
:hook java-mode)
(use-package java-snippets)
(use-package java-mode
:ensure java-snippets
:init
(add-hook 'java-mode-hook #'yas-minor-mode))
(use-package lsp-ui
:hook (lsp-mode . lsp-ui-mode)
:config
(setq lsp-ui-sideline-enable t
lsp-ui-sideline-show-symbol t
lsp-ui-sideline-show-hover t
lsp-ui-sideline-showcode-actions t
lsp-ui-sideline-update-mode 'point))
(use-package company-lsp
:after company
:config
(add-hook 'java-mode-hook (lambda () (push 'company-lsp company-backends)))
(seq company-lsp-enable-snippet t
company-lsp-cache-candidates t)
(push 'java-mode company-global-modes))
(use-package lsp-java
:ensure lsp-mode
:requires (lsp-ui-flycheck lsp-ui-sideline)
:config
(add-hook 'java-mode-hook 'lsp-java-enable)
(add-hook 'java-mode-hook 'flycheck-mode)
(add-hook 'java-mode-hook 'company-mode)
(add-hook 'java-mode-hook (lambda () (lsp-ui-flycheck-enable t)))
(add-hook 'java-mode-hook 'lsp-ui-sideline-mode)
;; this is a bummer, having to add each project individually :-(
(setq lsp-java--workspace-folders
(list
(expand-file-name "~/Projects/CopperheadRecovery/copperhead"))))
(provide 'myjava)
;;; myjava.el ends here