From 3cd9d1c77bfe443375c912ef11a30fd4019578b2 Mon Sep 17 00:00:00 2001 From: derped Date: Mon, 23 Mar 2020 10:10:31 +0100 Subject: [PATCH] emacs: Configure rust-mode with lsp. --- pkgs/pkgsets/emacs/lsp.nix | 10 ++++------ pkgs/pkgsets/emacs/magit.nix | 2 +- pkgs/pkgsets/emacs/rust.nix | 12 +++++++----- pkgs/pkgsets/rustpkgs.nix | 2 ++ 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/pkgs/pkgsets/emacs/lsp.nix b/pkgs/pkgsets/emacs/lsp.nix index 42a3440..c2c6971 100644 --- a/pkgs/pkgsets/emacs/lsp.nix +++ b/pkgs/pkgsets/emacs/lsp.nix @@ -7,16 +7,13 @@ mkIf (elem "emacs::lsp" config.machine.pkgs) { lsp-mode = { enable = true; command = [ "lsp-mode" ]; - bind = { - "C-c r r" = "lsp-rename"; - "C-c r f" = "lsp-format-buffer"; - }; config = '' + (setq lsp-keymap-prefix "C-c") (setq lsp-eldoc-render-all nil) (defvar lsp-language-id-configuration '( - ${optionalString (elem "emacs::rust" config.machine.pkgs - ''(rust-mode . "rust")'')} + ${optionalString (elem "emacs::rust" config.machine.pkgs) + ''(rust-mode . "rust")''} )) ''; }; @@ -36,6 +33,7 @@ mkIf (elem "emacs::lsp" config.machine.pkgs) { lsp-ui-flycheck = { enable = true; + package = epkgs: [ epkgs.lsp-ui ]; after = [ "lsp-ui" ] ++ optional (elem "emacs::flycheck" config.machine.pkgs) "flycheck"; }; diff --git a/pkgs/pkgsets/emacs/magit.nix b/pkgs/pkgsets/emacs/magit.nix index f8d4207..a63feb3 100644 --- a/pkgs/pkgsets/emacs/magit.nix +++ b/pkgs/pkgsets/emacs/magit.nix @@ -6,7 +6,7 @@ mkIf (elem "emacs::magit" config.machine.pkgs) { programs.emacs.init.usePackage.magit = { enable = true; bind = { - "C-c g" = "magit-status"; + "C-c m" = "magit-status"; }; }; } diff --git a/pkgs/pkgsets/emacs/rust.nix b/pkgs/pkgsets/emacs/rust.nix index b33b9fd..32d5d6e 100644 --- a/pkgs/pkgsets/emacs/rust.nix +++ b/pkgs/pkgsets/emacs/rust.nix @@ -5,9 +5,15 @@ with lib; mkIf (elem "emacs::rust" config.machine.pkgs) { programs.emacs.init.usePackage.rust-mode = { enable = true; - hook = [ ''(rust-mode . (lambda () (racer-mode)))'' ]; + hook = [ ''(rust-mode . (lambda () (cargo-minor-mode)))'' ] + ++ (if (elem "emacs::lsp" config.machine.pkgs) + then [''(rust-mode . (lambda () (lsp)))''] + else [''(rust-mode . (lambda () (racer-mode)))'']); mode = [ ''("\\.rs\\'" . rust-mode)'' ]; command = [ "rust-mode" ]; + bindLocal = optionalAttrs (elem "emacs::company" config.machine.pkgs) { rust-mode-map = { + "" = "company-indent-or-complete-common"; + };}; config = '' (setq rust-rustfmt-bin "${pkgs.rustfmt}/bin/rustfmt") (setq rust-format-on-save t) @@ -17,15 +23,11 @@ mkIf (elem "emacs::rust" config.machine.pkgs) { programs.emacs.init.usePackage.cargo = { enable = true; defer = true; - # hook = [ ''ru]; }; programs.emacs.init.usePackage.racer = { enable = true; defer = true; - bindLocal = optionalAttrs (elem "emacs::company" config.machine.pkgs) { rust-mode-map = { - "" = "company-indent-or-complete-common"; - };}; hook = [ ''(racer-mode . (lambda () (eldoc-mode)))'' ] ++ optional (elem "emacs::company" config.machine.pkgs) ''(racer-mode . (lambda () (company-mode)))''; diff --git a/pkgs/pkgsets/rustpkgs.nix b/pkgs/pkgsets/rustpkgs.nix index d2c8453..8e45816 100644 --- a/pkgs/pkgsets/rustpkgs.nix +++ b/pkgs/pkgsets/rustpkgs.nix @@ -4,7 +4,9 @@ let stablepkgs = import {}; in { config.machine.pkgsets.rustpkgs.pkgs = with stablepkgs; [ + diesel-cli rustup + rls carnix rustracer ];