about summary refs log tree commit diff
path: root/packages
diff options
context:
space:
mode:
authorBaitinq <manuelpalenzuelamerino@gmail.com>2023-02-03 18:07:11 +0100
committerBaitinq <manuelpalenzuelamerino@gmail.com>2023-02-03 18:09:10 +0100
commite8ada70080ac8ecf80c134972d8dca5307f0e494 (patch)
tree171e6c3c199669d48395a915326af94b4380ec1e /packages
parentDotfiles: Emacs: C/C++ support (diff)
downloadnixos-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
Diffstat (limited to 'packages')
-rw-r--r--packages/lsp-bridge/default.nix64
1 files changed, 64 insertions, 0 deletions
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;
+  };
+}