           (unless (package-installed-p pkg) (package-install pkg)))
         '(
           ;; Non-default language support
-          cmake-mode rust-mode toml-mode lua-mode love-minor-mode
-                     futhark-mode
+          cmake-mode rust-mode toml-mode lua-mode
                      ;; General emacs frameworks
                      company dash flycheck
                      ;; Language server protocol support
-                     lsp-mode company-lsp
+                     lsp-mode lsp-ui
                      ;; Python
                      elpy
                      ;; Go
-                     lsp-go go-mode go-eldoc
+                     go-mode go-eldoc
                      ;; LISP
                      paredit pkg-info slime
                      ;; Lua
                      flymake-lua company-lua
-                     ;; Rugst
-                     cargo lsp-rust
+                     ;; Java
+                     lsp-java
+                     ;; Rust
+                     cargo
                      ;; C/C++
-                     lsp-clangd cquery
+                     cquery
 		     ;; Various quality of life plugins
 		     highlight-symbol highlight-parentheses
 		     eziam-theme dracula-theme use-package)))


(extend-path (concat (getenv "HOME") "/go/bin"))

(with-eval-after-load 'lsp-mode
  (require 'lsp-go))
(add-hook 'go-mode-hook #'lsp-go-enable)
(add-hook 'before-save-hook #'gofmt-before-save)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C/C++ setup using cquery ;;

      (rustup-full-path (chomp (shell-command-to-string "which rustup"))))
  (message (concat "Setting up lsp-rust with " rustup-full-path " and using channel " rustup-default-channel))
  (setq lsp-rust-rls-command (list rustup-full-path "run" rustup-default-channel "rls"))
  (add-hook 'rust-mode-hook #'lsp))
  
(setq my-cargo-args "")
(defun cargo-args-prompt ()
