From 3368536455c99c82c85e3858aa1810cc24194a6f Mon Sep 17 00:00:00 2001 From: u2515h Date: Sun, 14 Jan 2024 16:34:26 +0100 Subject: [PATCH] feat(typst-lsp): added --- default.nix | 20 ++++++++++++++++---- init.lua | 23 +++++++++++++++++++++++ rust.lua | 4 ++-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/default.nix b/default.nix index 973fd67..cbdb739 100644 --- a/default.nix +++ b/default.nix @@ -75,16 +75,28 @@ in ]; extraLuaConfig = let - paths = { + # tries to compute a package set required to make package resolution in lua + # via deps["pkg"] work + packages = file: + let + out = builtins.readFile (pkgs.runCommandLocal "extract-deps" + { nativeBuildInputs = [ pkgs.gnused ]; __contentAddressed = true; } '' + sed -nr 's/.*(deps\.(.*)_path|deps\["(.*)"\]).*/\2/p' ${file} | uniq > $out + ''); + names = lib.splitString "\n" (lib.traceVal out); + in + filter (name: name != "") names; + paths = (listToAttrs (map (name: { inherit name; value = builtins.getAttr name pkgs; }) (packages "${confDir}/*.lua"))) // { lldb = pkgs.lldb; rust_analyzer = rust-analyzer; + typst_lsp = pkgs.typst-lsp; }; pathsLua = pkgs.writeTextFile { name = "nvim-deps.lua"; text = '' - return { - ${concatStringsSep ",\n " (mapAttrsToList (name: path: ''${name}_path = "${path}"'') paths)} - } + deps = {} + ${concatStringsSep "\n " (mapAttrsToList (name: path: ''deps["${name}_path"] = "${path}"'') paths)} + return deps ''; }; confDir = lib.sourceFilesBySuffices ./. [ "lua" "vim" ]; diff --git a/init.lua b/init.lua index 17e71a2..813d7b4 100644 --- a/init.lua +++ b/init.lua @@ -125,5 +125,28 @@ vim.api.nvim_create_autocmd('LspAttach', { function() vim.lsp.buf.format {async = true} end, opts) end }) + +-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md +-- deps.typst-lsp_path +lspconfig.typst_lsp.setup { + cmd = {(deps["typst-lsp_path"] .. "/bin/typst-lsp")}, + settings = { + exportPdf = "onType", -- Choose onType, onSave or never. + serverPath = (deps["typst-lsp_path"] .. "/bin/typst-lsp"), -- Normally, there is no need to uncomment it. + } +} +lspconfig.nil_ls.setup { + cmd = {(deps.nil_path .. "/bin/nil")}, + -- https://github.com/oxalica/nil/blob/main/docs/configuration.md + settings = { + command = { + formatting = "nixpkgs-fmt", }, + }, + flake = { + autoArchive = true, + autoEvalInputs = true, + }, +} + require("lsp-inlayhints").setup() require("completion") diff --git a/rust.lua b/rust.lua index 6f39037..0f83298 100644 --- a/rust.lua +++ b/rust.lua @@ -114,7 +114,7 @@ vim.g.rustaceanvim = { -- standalone file support -- setting it to false may improve startup time standalone = true, - cmd = {(deps.rust_analyzer_path .. "/bin/rust-analyzer")}, + cmd = {(deps.rust-analyzer_path .. "/bin/rust-analyzer")}, capabilities = require("cmp_nvim_lsp").default_capabilities(c), on_attach = function(client, bufnr) require("lsp-inlayhints").on_attach(client, bufnr) @@ -281,7 +281,7 @@ rt.setup({ -- standalone file support -- setting it to false may improve startup time standalone = true, - cmd = {(deps.rust_analyzer_path .. "/bin/rust-analyzer")} + cmd = {(deps.rust-analyzer_path .. "/bin/rust-analyzer")} }, -- rust-analyzer options -- debugging stuff