about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--users/sterni/emacs/default.nix1
-rw-r--r--users/sterni/emacs/init.el22
2 files changed, 22 insertions, 1 deletions
diff --git a/users/sterni/emacs/default.nix b/users/sterni/emacs/default.nix
index 1200fefe47..69d1d4ef41 100644
--- a/users/sterni/emacs/default.nix
+++ b/users/sterni/emacs/default.nix
@@ -23,6 +23,7 @@ let
     epkgs.melpaPackages.languagetool
     epkgs.melpaPackages.lsp-haskell
     epkgs.melpaPackages.lsp-mode
+    epkgs.melpaPackages.lsp-ui
     epkgs.melpaPackages.magit
     epkgs.melpaPackages.markdown-mode
     epkgs.melpaPackages.meson-mode
diff --git a/users/sterni/emacs/init.el b/users/sterni/emacs/init.el
index 38a87a2864..17b3f35736 100644
--- a/users/sterni/emacs/init.el
+++ b/users/sterni/emacs/init.el
@@ -252,7 +252,27 @@
 (use-package haskell-mode)
 (use-package lsp-mode
   :hook ((haskell-mode . lsp-deferred))
-  :commands (lsp lsp-deferred))
+  :commands (lsp lsp-deferred)
+  :config
+  (evil-define-key 'normal 'global
+    (kbd "<leader>lwr") 'lsp-workspace-restart
+    (kbd "<leader>lwq") 'lsp-workspace-shutdown
+    (kbd "<leader>la=") 'lsp-format-buffer
+    (kbd "<leader>lar") 'lsp-rename
+    (kbd "<leader>laa") 'lsp-execute-code-action))
+(use-package lsp-ui
+  :after lsp-mode
+  :custom
+  lsp-ui-doc-enable t
+  lsp-ui-doc-border "DimGray"
+  lsp-ui-doc-delay 0.5
+  :config
+  (set-face-background 'lsp-ui-doc-background "WhiteSmoke")
+  (evil-define-key 'normal lsp-ui-mode-map
+    ;; TODO(sterni): emulate using xref for non-lsp?
+    (kbd "<leader>lgr") 'lsp-ui-peek-find-references
+    (kbd "<leader>lgd") 'lsp-ui-peek-find-definitions
+    (kbd "<leader>lc") 'lsp-ui-flycheck-list))
 (use-package lsp-haskell
   :after lsp-mode
   :custom