diff options
author | Baitinq <manuelpalenzuelamerino@gmail.com> | 2023-02-03 18:07:11 +0100 |
---|---|---|
committer | Baitinq <manuelpalenzuelamerino@gmail.com> | 2023-02-03 18:09:10 +0100 |
commit | e8ada70080ac8ecf80c134972d8dca5307f0e494 (patch) | |
tree | 171e6c3c199669d48395a915326af94b4380ec1e | |
parent | Dotfiles: Emacs: C/C++ support (diff) | |
download | nixos-config-e8ada70080ac8ecf80c134972d8dca5307f0e494.tar.gz nixos-config-e8ada70080ac8ecf80c134972d8dca5307f0e494.tar.bz2 nixos-config-e8ada70080ac8ecf80c134972d8dca5307f0e494.zip |
Emacs: Use lsp-bridge
Faster than lsp-mode, but not yet in nixpkgs
-rw-r--r-- | dotfiles/.emacs | 9 | ||||
-rw-r--r-- | hosts/home.nix | 6 | ||||
-rw-r--r-- | overlays/base/default.nix | 4 | ||||
-rw-r--r-- | packages/lsp-bridge/default.nix | 64 |
4 files changed, 76 insertions, 7 deletions
diff --git a/dotfiles/.emacs b/dotfiles/.emacs index 51a41eb..d60600a 100644 --- a/dotfiles/.emacs +++ b/dotfiles/.emacs @@ -102,7 +102,11 @@ (use-package jq-mode :ensure t ) -(use-package lsp-mode +(use-package yasnippet + :ensure t) +(yas-global-mode 1) + +(use-package lsp-bridge :ensure t :hook ((haskell-mode c-mode c++-mode c-or-c++-mode) . lsp-deferred) :commands (lsp lsp-deferred) @@ -116,9 +120,6 @@ (use-package company :ensure t) -(use-package yasnippet - :ensure t) - (use-package rustic :ensure t) diff --git a/hosts/home.nix b/hosts/home.nix index 8c24b56..82544fb 100644 --- a/hosts/home.nix +++ b/hosts/home.nix @@ -158,13 +158,13 @@ doom-modeline dashboard - lsp-ui projectile + lsp-ui - lsp-mode - company + manualPackages.custom.lsp-bridge rust-mode rustic + company flycheck lsp-haskell diff --git a/overlays/base/default.nix b/overlays/base/default.nix index 2f021c7..b97401b 100644 --- a/overlays/base/default.nix +++ b/overlays/base/default.nix @@ -81,4 +81,8 @@ final: prev: scripts = [ prev.mpvScripts.mpris ]; }; + emacsPackagesFor = emacs: ((prev.emacsPackagesFor emacs).overrideScope' (prev: final: rec { + manualPackages = final.manualPackages // { custom.lsp-bridge = prev.callPackage ../../packages/lsp-bridge { }; }; + })); + } diff --git a/packages/lsp-bridge/default.nix b/packages/lsp-bridge/default.nix new file mode 100644 index 0000000..7eba8f0 --- /dev/null +++ b/packages/lsp-bridge/default.nix @@ -0,0 +1,64 @@ +{ lib +, trivialBuild +, fetchFromGitHub +, python3Packages +, python3 +, posframe +, markdown-mode +, yasnippet +, org +, which-key +, makeWrapper +}: + +let + rev = "7dfeeb640d14697755e2ac7997af0ec6c413197f"; + python = python3.withPackages (ps: with ps; [ epc orjson sexpdata six ]); +in trivialBuild { + pname = "lsp-bridge"; + version = "20230104"; + + commit = rev; + + src = fetchFromGitHub { + owner = "manateelazycat"; + repo = "lsp-bridge"; + inherit rev; + sha256 = "sha256-sB5niigN0rdtqeprlZAJEKgAuQDkcUMbbL9yTnrdoLg="; + }; + + packageRequires = + [ + posframe + markdown-mode + yasnippet + org + which-key + ]; + + buildPhase = '' + runHook preInstall + install -d $out/share/emacs/site-lisp/ + install *.el $out/share/emacs/site-lisp/ + install acm/*.el $out/share/emacs/site-lisp/ + install *.py $out/share/emacs/site-lisp/ + cp -r core $out/share/emacs/site-lisp/ + cp -r langserver $out/share/emacs/site-lisp/ + cp -r multiserver $out/share/emacs/site-lisp/ + cp -r resources $out/share/emacs/site-lisp/ + cp -r acm/icons $out/share/emacs/site-lisp/ + runHook postInstall + ''; + + postPatch = '' + substituteInPlace lsp-bridge.el --replace '(defcustom lsp-bridge-python-command (if (memq system-type '"'"'(cygwin windows-nt ms-dos)) "python.exe" "python3")' '(defcustom lsp-bridge-python-command "${python.interpreter}"' + ''; + + meta = { + description = "Fastest LSP client in Emacs."; + longDescription = '' + Using python's threading technology to build caches that bridge Emacs and LSP server. + ''; + license = lib.licenses.gpl3; + }; +} |