Update neovim config
This commit is contained in:
@ -101,72 +101,10 @@ in {
|
|||||||
mallocalleader = " ";
|
mallocalleader = " ";
|
||||||
};
|
};
|
||||||
|
|
||||||
opts = {
|
opts = import ./vim_opts.nix {inherit lib mylib;};
|
||||||
showmode = false; # Status line already shows this
|
|
||||||
backspace = ["indent" "eol" "start"];
|
|
||||||
termguicolors = true; # Required by multiple plugins
|
|
||||||
hidden = true; # Don't unload buffers immediately
|
|
||||||
mouse = "a";
|
|
||||||
completeopt = ["menuone" "noselect" "noinsert"];
|
|
||||||
timeoutlen = 50;
|
|
||||||
pumheight = 0;
|
|
||||||
formatexpr = "v:lua.require('conform').formatexpr()";
|
|
||||||
laststatus = 3;
|
|
||||||
# winblend = 30;
|
|
||||||
|
|
||||||
# Cursor
|
|
||||||
ruler = true; # Show cursor position in status line
|
|
||||||
number = true;
|
|
||||||
relativenumber = true;
|
|
||||||
signcolumn = "yes";
|
|
||||||
cursorline = true;
|
|
||||||
scrolloff = 10;
|
|
||||||
|
|
||||||
# Folding
|
|
||||||
foldcolumn = "0";
|
|
||||||
foldlevel = 99;
|
|
||||||
foldlevelstart = 99;
|
|
||||||
foldenable = true;
|
|
||||||
# foldmethod = "expr";
|
|
||||||
# foldexpr = "nvim_treesitter#foldexpr()";
|
|
||||||
|
|
||||||
# Files
|
|
||||||
encoding = "utf-8";
|
|
||||||
fileencoding = "utf-8";
|
|
||||||
# swapfile = true;
|
|
||||||
# backup = false;
|
|
||||||
undofile = true;
|
|
||||||
undodir = "/home/christoph/.vim/undo";
|
|
||||||
# autochdir = true;
|
|
||||||
|
|
||||||
# Search
|
|
||||||
incsearch = true; # Already highlight results while typing
|
|
||||||
hlsearch = true;
|
|
||||||
ignorecase = true;
|
|
||||||
smartcase = true;
|
|
||||||
grepprg = "rg --vimgrep";
|
|
||||||
grepformat = "%f:%l:%c:%m";
|
|
||||||
|
|
||||||
# Indentation
|
|
||||||
autoindent = false; # Use previous line indentation level - Might mess up comment indentation
|
|
||||||
smartindent = false; # Like autoindent but recognizes some C syntax - Might mess up comment indentation
|
|
||||||
cindent = true;
|
|
||||||
cinkeys = "0{,0},0),0],:,!^F,o,O,e"; # Fix comment (#) indentation and intellitab (somehow)
|
|
||||||
smarttab = true;
|
|
||||||
expandtab = true;
|
|
||||||
shiftwidth = 4;
|
|
||||||
tabstop = 4;
|
|
||||||
softtabstop = 4;
|
|
||||||
|
|
||||||
splitbelow = true;
|
|
||||||
splitright = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfigLuaPost = builtins.readFile ./extraConfigLuaPost.lua;
|
extraConfigLuaPost = builtins.readFile ./extraConfigLuaPost.lua;
|
||||||
|
|
||||||
extraConfigLua = builtins.readFile ./extraConfigLua.lua;
|
extraConfigLua = builtins.readFile ./extraConfigLua.lua;
|
||||||
|
# extraLuaPackages = with pkgs.lua51Packages; [];
|
||||||
extraLuaPackages = with pkgs.lua51Packages; [];
|
|
||||||
|
|
||||||
extraPython3Packages = p: [
|
extraPython3Packages = p: [
|
||||||
# For CHADtree
|
# For CHADtree
|
||||||
@ -195,10 +133,13 @@ in {
|
|||||||
plugins.lazy = {
|
plugins.lazy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
plugins = builtins.concatLists [
|
plugins = let
|
||||||
(import ./interface.nix {inherit lib mylib pkgs;})
|
plenary = {
|
||||||
(import ./languages.nix {inherit lib mylib pkgs;})
|
name = "plenary"; # For telescope
|
||||||
[
|
pkg = pkgs.vimPlugins.plenary-nvim;
|
||||||
|
lazy = false;
|
||||||
|
};
|
||||||
|
in [
|
||||||
#
|
#
|
||||||
# Theme
|
# Theme
|
||||||
#
|
#
|
||||||
@ -242,6 +183,23 @@ in {
|
|||||||
# Plugins
|
# Plugins
|
||||||
#
|
#
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "autopairs";
|
||||||
|
pkg = pkgs.vimPlugins.nvim-autopairs;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("nvim-autopairs").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "bbye";
|
||||||
|
pkg = pkgs.vimPlugins.vim-bbye;
|
||||||
|
lazy = false;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "better-escape";
|
name = "better-escape";
|
||||||
pkg = pkgs.vimPlugins.better-escape-nvim;
|
pkg = pkgs.vimPlugins.better-escape-nvim;
|
||||||
@ -260,53 +218,73 @@ in {
|
|||||||
{
|
{
|
||||||
name = "chadtree";
|
name = "chadtree";
|
||||||
pkg = pkgs.vimPlugins.chadtree;
|
pkg = pkgs.vimPlugins.chadtree;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
vim.api.nvim_set_var("chadtree_settings", opts)
|
vim.api.nvim_set_var("chadtree_settings", opts)
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
opts = {
|
opts = {
|
||||||
theme.text_colour_set = "nerdtree_syntax_dark";
|
# theme.text_colour_set = "nerdtree_syntax_dark";
|
||||||
|
theme.text_colour_set = "nord";
|
||||||
xdg = true;
|
xdg = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "clangd-extensions";
|
||||||
|
pkg = pkgs.vimPlugins.clangd_extensions-nvim;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("clangd_extensions").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "cmp";
|
name = "cmp";
|
||||||
pkg = pkgs.vimPlugins.nvim-cmp;
|
pkg = pkgs.vimPlugins.nvim-cmp;
|
||||||
|
lazy = false;
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
name = "cmp-async-path";
|
name = "cmp-async-path";
|
||||||
pkg = pkgs.vimPlugins.cmp-async-path;
|
pkg = pkgs.vimPlugins.cmp-async-path;
|
||||||
|
lazy = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cmp-buffer";
|
name = "cmp-buffer";
|
||||||
pkg = pkgs.vimPlugins.cmp-buffer;
|
pkg = pkgs.vimPlugins.cmp-buffer;
|
||||||
|
lazy = false;
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cmp-cmdline";
|
name = "cmp-cmdline";
|
||||||
pkg = pkgs.vimPlugins.cmp-cmdline;
|
pkg = pkgs.vimPlugins.cmp-cmdline;
|
||||||
|
lazy = false;
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cmp-emoji";
|
name = "cmp-emoji";
|
||||||
pkg = pkgs.vimPlugins.cmp-emoji;
|
pkg = pkgs.vimPlugins.cmp-emoji;
|
||||||
|
lazy = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cmp-nvim-lsp";
|
name = "cmp-nvim-lsp";
|
||||||
pkg = pkgs.vimPlugins.cmp-nvim-lsp;
|
pkg = pkgs.vimPlugins.cmp-nvim-lsp;
|
||||||
|
lazy = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cmp-nvim-lsp-signature-help";
|
name = "cmp-nvim-lsp-signature-help";
|
||||||
pkg = pkgs.vimPlugins.cmp-nvim-lsp-signature-help;
|
pkg = pkgs.vimPlugins.cmp-nvim-lsp-signature-help;
|
||||||
|
lazy = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cmp-luasnip";
|
name = "cmp-luasnip";
|
||||||
pkg = pkgs.vimPlugins.cmp_luasnip;
|
pkg = pkgs.vimPlugins.cmp_luasnip;
|
||||||
|
lazy = false;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
lazy = false;
|
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("cmp").setup(opts)
|
require("cmp").setup(opts)
|
||||||
@ -389,9 +367,27 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
# TODO: Only colorize html/css/scss/sass...
|
||||||
|
name = "colorizer";
|
||||||
|
pkg = pkgs.vimPlugins.nvim-colorizer-lua;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("colorizer").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
filtetypes = null;
|
||||||
|
user_default_options = null;
|
||||||
|
buftypes = null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "comment";
|
name = "comment";
|
||||||
pkg = pkgs.vimPlugins.comment-nvim;
|
pkg = pkgs.vimPlugins.comment-nvim;
|
||||||
|
lazy = false;
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
name = "ts-context-commentstring";
|
name = "ts-context-commentstring";
|
||||||
@ -423,10 +419,39 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "conform";
|
||||||
|
pkg = pkgs.vimPlugins.conform-nvim;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("conform").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
c = ["clang-format"];
|
||||||
|
h = ["clang-format"];
|
||||||
|
cpp = ["clang-format"];
|
||||||
|
hpp = ["clang-format"];
|
||||||
|
css = [["prettierd" "prettier"]];
|
||||||
|
html = [["prettierd" "prettier"]];
|
||||||
|
java = ["google-java-format"];
|
||||||
|
javascript = [["prettierd" "prettier"]];
|
||||||
|
lua = ["stylua"];
|
||||||
|
markdown = [["prettierd" "prettier"]];
|
||||||
|
nix = ["alejandra"];
|
||||||
|
python = ["black"];
|
||||||
|
rust = ["rustfmt"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
# TODO: Config
|
# TODO: Config
|
||||||
{
|
{
|
||||||
name = "flash";
|
name = "flash";
|
||||||
pkg = pkgs.vimPlugins.flash-nvim;
|
pkg = pkgs.vimPlugins.flash-nvim;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("flash").setup(opts)
|
require("flash").setup(opts)
|
||||||
@ -437,6 +462,7 @@ in {
|
|||||||
{
|
{
|
||||||
name = "gitmessenger";
|
name = "gitmessenger";
|
||||||
pkg = pkgs.vimPlugins.git-messenger-vim;
|
pkg = pkgs.vimPlugins.git-messenger-vim;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
for k, v in pairs(opts) do
|
for k, v in pairs(opts) do
|
||||||
@ -466,6 +492,13 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "haskell-tools";
|
||||||
|
pkg = pkgs.vimPlugins.haskell-tools-nvim;
|
||||||
|
lazy = false;
|
||||||
|
# Don't call setup!
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "illuminate";
|
name = "illuminate";
|
||||||
pkg = pkgs.vimPlugins.vim-illuminate;
|
pkg = pkgs.vimPlugins.vim-illuminate;
|
||||||
@ -510,12 +543,157 @@ in {
|
|||||||
{
|
{
|
||||||
name = "lazygit";
|
name = "lazygit";
|
||||||
pkg = pkgs.vimPlugins.lazygit-nvim;
|
pkg = pkgs.vimPlugins.lazygit-nvim;
|
||||||
|
lazy = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "lint";
|
||||||
|
pkg = pkgs.vimPlugins.nvim-lint;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
local lint = require("lint")
|
||||||
|
|
||||||
|
for k, v in pairs(opts) do
|
||||||
|
lint[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
linters_by_ft = {
|
||||||
|
c = ["clang-tidy"];
|
||||||
|
h = ["clang-tidy"];
|
||||||
|
cpp = ["clang-tidy"];
|
||||||
|
hpp = ["clang-tidy"];
|
||||||
|
clojure = ["clj-kondo"];
|
||||||
|
java = ["checkstyle"];
|
||||||
|
javascript = ["eslint_d"];
|
||||||
|
lua = ["luacheck"];
|
||||||
|
markdown = ["vale"];
|
||||||
|
nix = ["statix"];
|
||||||
|
python = ["flake8"];
|
||||||
|
rust = ["clippy"];
|
||||||
|
text = ["vale"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "lspconfig";
|
||||||
|
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
||||||
|
lazy = false;
|
||||||
|
dependencies = [
|
||||||
|
{
|
||||||
|
name = "neodev";
|
||||||
|
pkg = pkgs.vimPlugins.neodev-nvim;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("neodev").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
config = let
|
||||||
|
servers = mylib.generators.toLuaObject [
|
||||||
|
{name = "clangd";}
|
||||||
|
{name = "clojure_lsp";}
|
||||||
|
{name = "cmake";}
|
||||||
|
{name = "lua_ls";}
|
||||||
|
{name = "nil_ls";}
|
||||||
|
{name = "pyright";}
|
||||||
|
# {name = "rust_analyzer";} # Don't set up when using rustaceanvim
|
||||||
|
{name = "texlab";}
|
||||||
|
# {name = "hls";} # Don't set up when using haskell-tools
|
||||||
|
];
|
||||||
|
in ''
|
||||||
|
function(_, opts)
|
||||||
|
local __lspOnAttach = function(client, bufnr) end
|
||||||
|
|
||||||
|
local __lspCapabilities = function()
|
||||||
|
capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())
|
||||||
|
return capabilities
|
||||||
|
end
|
||||||
|
|
||||||
|
local __setup = {
|
||||||
|
on_attach = __lspOnAttach,
|
||||||
|
capabilities = __lspCapabilities(),
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, server in ipairs(${servers}) do
|
||||||
|
if type(server) == "string" then
|
||||||
|
require("lspconfig")[server].setup(__setup)
|
||||||
|
else
|
||||||
|
local options = server.extraOptions
|
||||||
|
|
||||||
|
if options == nil then
|
||||||
|
options = __setup
|
||||||
|
else
|
||||||
|
options = vim.tbl_extend("keep", options, __setup)
|
||||||
|
end
|
||||||
|
|
||||||
|
require("lspconfig")[server.name].setup(options)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "lualine";
|
||||||
|
pkg = pkgs.vimPlugins.lualine-nvim;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("lualine").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
extensions = ["fzf" "chadtree" "neo-tree" "toggleterm" "trouble"];
|
||||||
|
|
||||||
|
options = {
|
||||||
|
always_divide_middle = true;
|
||||||
|
globalstatus = true;
|
||||||
|
ignore_focus = ["neo-tree" "chadtree"];
|
||||||
|
section_separators = {
|
||||||
|
left = "";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
component_separators = {
|
||||||
|
left = "";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
sections = {
|
||||||
|
lualine_a = ["mode"];
|
||||||
|
lualine_b = ["branch" "diff" "diagnostics"];
|
||||||
|
lualine_c = [
|
||||||
|
{
|
||||||
|
name = "filename";
|
||||||
|
extraConfig.path = 1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
lualine_x = ["filetype" "encoding" "fileformat"];
|
||||||
|
lualine_y = ["progress" "searchcount" "selectioncount"];
|
||||||
|
lualine_z = ["location"];
|
||||||
|
};
|
||||||
|
|
||||||
|
tabline = {
|
||||||
|
lualine_a = ["buffers"];
|
||||||
|
lualine_z = ["tabs"];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: Snippet configs
|
# TODO: Snippet configs
|
||||||
{
|
{
|
||||||
name = "luasnip";
|
name = "luasnip";
|
||||||
pkg = pkgs.vimPlugins.luasnip;
|
pkg = pkgs.vimPlugins.luasnip;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("luasnip").config.set_config(opts)
|
require("luasnip").config.set_config(opts)
|
||||||
@ -526,6 +704,7 @@ in {
|
|||||||
{
|
{
|
||||||
name = "navbuddy";
|
name = "navbuddy";
|
||||||
pkg = pkgs.vimPlugins.nvim-navbuddy;
|
pkg = pkgs.vimPlugins.nvim-navbuddy;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
local actions = require("nvim-navbuddy.actions") -- ?
|
local actions = require("nvim-navbuddy.actions") -- ?
|
||||||
@ -542,6 +721,7 @@ in {
|
|||||||
{
|
{
|
||||||
name = "navic";
|
name = "navic";
|
||||||
pkg = pkgs.vimPlugins.nvim-navic;
|
pkg = pkgs.vimPlugins.nvim-navic;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("nvim-navic").setup(opts)
|
require("nvim-navic").setup(opts)
|
||||||
@ -555,44 +735,85 @@ in {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "autopairs";
|
name = "noice";
|
||||||
pkg = pkgs.vimPlugins.nvim-autopairs;
|
pkg = pkgs.vimPlugins.noice-nvim;
|
||||||
lazy = false;
|
lazy = false;
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("nvim-autopairs").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "colorizer";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-colorizer-lua;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("colorizer").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
filtetypes = null;
|
|
||||||
user_default_options = null;
|
|
||||||
buftypes = null;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "ufo";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-ufo;
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
name = "promise";
|
name = "nui"; # For noice
|
||||||
pkg = pkgs.vimPlugins.promise-async;
|
pkg = pkgs.vimPlugins.nui-nvim;
|
||||||
|
lazy = false;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("ufo").setup(opts)
|
require("noice").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
presets = {
|
||||||
|
bottom_search = false;
|
||||||
|
command_palette = true;
|
||||||
|
long_message_to_split = true;
|
||||||
|
inc_rename = true;
|
||||||
|
lsp_doc_border = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
documentation = {
|
||||||
|
opts = {
|
||||||
|
lang = "markdown";
|
||||||
|
replace = true;
|
||||||
|
render = "plain";
|
||||||
|
border = "rounded"; # single or rounded
|
||||||
|
format = ["{message}"];
|
||||||
|
win_options = {
|
||||||
|
concealcursor = "n";
|
||||||
|
conceallevel = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
view = "hover";
|
||||||
|
};
|
||||||
|
|
||||||
|
override = {
|
||||||
|
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
||||||
|
"vim.lsp.util.stylize_markdown" = true;
|
||||||
|
"cmp.entry.get_documentation" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
notify = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
popupmenu = {
|
||||||
|
enabled = true;
|
||||||
|
backend = "nui"; # cmp completion is broken
|
||||||
|
};
|
||||||
|
|
||||||
|
# cmdline.enabled = false;
|
||||||
|
# messages.enabled = false;
|
||||||
|
|
||||||
|
routes = [
|
||||||
|
# Hide inline search count info
|
||||||
|
{
|
||||||
|
filter = {
|
||||||
|
event = "msg_show";
|
||||||
|
kind = "search_count";
|
||||||
|
};
|
||||||
|
opts = {skip = true;};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "notify";
|
||||||
|
pkg = pkgs.vimPlugins.nvim-notify;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
vim.notify = require("notify")
|
||||||
|
require("notify").setup(opts)
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
@ -603,6 +824,13 @@ in {
|
|||||||
lazy = false;
|
lazy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "rustaceanvim";
|
||||||
|
pkg = pkgs.vimPlugins.rustaceanvim;
|
||||||
|
lazy = false;
|
||||||
|
# Don't call setup!
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "sandwich";
|
name = "sandwich";
|
||||||
pkg = pkgs.vimPlugins.vim-sandwich;
|
pkg = pkgs.vimPlugins.vim-sandwich;
|
||||||
@ -615,6 +843,72 @@ in {
|
|||||||
lazy = false;
|
lazy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "telescope";
|
||||||
|
pkg = pkgs.vimPlugins.telescope-nvim;
|
||||||
|
lazy = false;
|
||||||
|
dependencies = [
|
||||||
|
plenary
|
||||||
|
# {
|
||||||
|
# name = "plenary"; # For telescope
|
||||||
|
# pkg = pkgs.vimPlugins.plenary-nvim;
|
||||||
|
# lazy = false;
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
name = "telescope-undo";
|
||||||
|
pkg = pkgs.vimPlugins.telescope-undo-nvim;
|
||||||
|
lazy = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "telescope-ui-select";
|
||||||
|
pkg = pkgs.vimPlugins.telescope-ui-select-nvim;
|
||||||
|
lazy = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "telescope-fzf-native";
|
||||||
|
pkg = pkgs.vimPlugins.telescope-fzf-native-nvim;
|
||||||
|
lazy = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
config = let
|
||||||
|
extensions = mylib.generators.toLuaObject [
|
||||||
|
"undo"
|
||||||
|
"ui-select"
|
||||||
|
"fzf"
|
||||||
|
];
|
||||||
|
in ''
|
||||||
|
function(_, opts)
|
||||||
|
local telescope = require("telescope")
|
||||||
|
telescope.setup(opts)
|
||||||
|
|
||||||
|
for i, extension in ipairs(${extensions}) do
|
||||||
|
telescope.load_extension(extension)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
defaults = {
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
"<Esc>" = {__raw = ''function(...) return require("telescope.actions").close(...) end'';};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "todo-comments";
|
||||||
|
pkg = pkgs.vimPlugins.todo-comments-nvim;
|
||||||
|
lazy = false;
|
||||||
|
dependencies = [plenary];
|
||||||
|
# config = ''
|
||||||
|
# function(_, opts)
|
||||||
|
# require("todo-comments").setup(opts)
|
||||||
|
# end
|
||||||
|
# '';
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "toggleterm";
|
name = "toggleterm";
|
||||||
pkg = pkgs.vimPlugins.toggleterm-nvim;
|
pkg = pkgs.vimPlugins.toggleterm-nvim;
|
||||||
@ -645,6 +939,103 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(let
|
||||||
|
nvim-plugintree = pkgs.vimPlugins.nvim-treesitter.withPlugins (
|
||||||
|
p:
|
||||||
|
with p; [
|
||||||
|
bash
|
||||||
|
bibtex
|
||||||
|
c
|
||||||
|
clojure
|
||||||
|
cmake
|
||||||
|
cpp
|
||||||
|
csv
|
||||||
|
disassembly
|
||||||
|
dockerfile
|
||||||
|
dot
|
||||||
|
doxygen
|
||||||
|
fish
|
||||||
|
gitignore
|
||||||
|
haskell
|
||||||
|
haskell_persistent
|
||||||
|
html
|
||||||
|
ini
|
||||||
|
java
|
||||||
|
javascript
|
||||||
|
json
|
||||||
|
julia
|
||||||
|
kotlin
|
||||||
|
lua
|
||||||
|
make
|
||||||
|
markdown
|
||||||
|
markdown_inline
|
||||||
|
nasm
|
||||||
|
nix
|
||||||
|
objdump
|
||||||
|
org
|
||||||
|
passwd
|
||||||
|
perl
|
||||||
|
printf
|
||||||
|
python
|
||||||
|
r
|
||||||
|
regex
|
||||||
|
requirements
|
||||||
|
ruby
|
||||||
|
rust
|
||||||
|
scala
|
||||||
|
scss
|
||||||
|
sql
|
||||||
|
toml
|
||||||
|
typescript
|
||||||
|
verilog
|
||||||
|
xml
|
||||||
|
yaml
|
||||||
|
]
|
||||||
|
);
|
||||||
|
treesitter-parsers = pkgs.symlinkJoin {
|
||||||
|
name = "treesitter-parsers";
|
||||||
|
paths = nvim-plugintree.dependencies;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
name = "treesitter";
|
||||||
|
pkg = pkgs.vimPlugins.nvim-treesitter;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
vim.opt.runtimepath:append("${nvim-plugintree}")
|
||||||
|
vim.opt.runtimepath:append("${treesitter-parsers}")
|
||||||
|
|
||||||
|
require("nvim-treesitter.configs").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
auto_install = false;
|
||||||
|
ensure_installed = [];
|
||||||
|
parser_install_dir = "${treesitter-parsers}";
|
||||||
|
|
||||||
|
indent = {
|
||||||
|
enable = true;
|
||||||
|
# disable = ["python" "yaml"];
|
||||||
|
};
|
||||||
|
highlight = {
|
||||||
|
enable = true;
|
||||||
|
# disable = ["yaml"];
|
||||||
|
additional_vim_regex_highlighting = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: Doesn't work
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true;
|
||||||
|
keymaps = {
|
||||||
|
"init_selection" = "gnn";
|
||||||
|
"node_decremental" = "grm";
|
||||||
|
"node_incremental" = "grn";
|
||||||
|
"scope_incremental" = "grc";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "trim";
|
name = "trim";
|
||||||
pkg = pkgs.vimPlugins.trim-nvim;
|
pkg = pkgs.vimPlugins.trim-nvim;
|
||||||
@ -659,6 +1050,7 @@ in {
|
|||||||
{
|
{
|
||||||
name = "trouble";
|
name = "trouble";
|
||||||
pkg = pkgs.vimPlugins.trouble-nvim;
|
pkg = pkgs.vimPlugins.trouble-nvim;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("trouble").setup(opts)
|
require("trouble").setup(opts)
|
||||||
@ -667,8 +1059,33 @@ in {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "bbye";
|
name = "ufo";
|
||||||
pkg = pkgs.vimPlugins.vim-bbye;
|
pkg = pkgs.vimPlugins.nvim-ufo;
|
||||||
|
lazy = false;
|
||||||
|
dependencies = [
|
||||||
|
{
|
||||||
|
name = "promise";
|
||||||
|
pkg = pkgs.vimPlugins.promise-async;
|
||||||
|
lazy = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("ufo").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "which-key";
|
||||||
|
pkg = pkgs.vimPlugins.which-key-nvim;
|
||||||
|
lazy = false;
|
||||||
|
priority = 500;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("which-key").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -681,7 +1098,6 @@ in {
|
|||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
]
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -698,6 +1114,11 @@ in {
|
|||||||
# enable = true;
|
# enable = true;
|
||||||
# };
|
# };
|
||||||
|
|
||||||
|
# TODO: Incremental LSP rename (noice only does search/replace incrementally)
|
||||||
|
# inc-rename = {
|
||||||
|
# enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
# TODO: Need enabled for conform fallback?
|
# TODO: Need enabled for conform fallback?
|
||||||
# lsp-format = {
|
# lsp-format = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
|
@ -1,227 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
mylib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: [
|
|
||||||
{
|
|
||||||
name = "lualine";
|
|
||||||
pkg = pkgs.vimPlugins.lualine-nvim;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("lualine").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
extensions = ["fzf" "chadtree" "neo-tree" "toggleterm" "trouble"];
|
|
||||||
|
|
||||||
options = {
|
|
||||||
always_divide_middle = true;
|
|
||||||
globalstatus = true;
|
|
||||||
ignore_focus = ["neo-tree" "chadtree"];
|
|
||||||
section_separators = {
|
|
||||||
left = "";
|
|
||||||
right = "";
|
|
||||||
# left = "";
|
|
||||||
# right = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
component_separators = {
|
|
||||||
left = "";
|
|
||||||
right = "";
|
|
||||||
# left = "";
|
|
||||||
# right = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sections = {
|
|
||||||
lualine_a = [
|
|
||||||
{
|
|
||||||
name = "mode";
|
|
||||||
# extraConfig = {
|
|
||||||
# separator = {
|
|
||||||
# left = "";
|
|
||||||
# };
|
|
||||||
# right_padding = "2";
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lualine_b = ["branch" "diff" "diagnostics"];
|
|
||||||
lualine_c = [
|
|
||||||
{
|
|
||||||
name = "filename";
|
|
||||||
extraConfig = {
|
|
||||||
path = 1;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
lualine_x = ["filetype" "encoding" "fileformat"];
|
|
||||||
lualine_y = ["progress" "searchcount" "selectioncount"];
|
|
||||||
lualine_z = [
|
|
||||||
{
|
|
||||||
name = "location";
|
|
||||||
# extraConfig = {
|
|
||||||
# separator = {
|
|
||||||
# right = "";
|
|
||||||
# };
|
|
||||||
# left_padding = "2";
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
tabline = {
|
|
||||||
lualine_a = ["buffers"];
|
|
||||||
lualine_z = ["tabs"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "noice";
|
|
||||||
pkg = pkgs.vimPlugins.noice-nvim;
|
|
||||||
dependencies = [
|
|
||||||
{
|
|
||||||
name = "nui"; # For noice
|
|
||||||
pkg = pkgs.vimPlugins.nui-nvim;
|
|
||||||
lazy = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("noice").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
presets = {
|
|
||||||
bottom_search = false;
|
|
||||||
command_palette = true;
|
|
||||||
long_message_to_split = true;
|
|
||||||
inc_rename = true;
|
|
||||||
lsp_doc_border = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
documentation = {
|
|
||||||
opts = {
|
|
||||||
lang = "markdown";
|
|
||||||
replace = true;
|
|
||||||
render = "plain";
|
|
||||||
border = "rounded"; # single or rounded
|
|
||||||
format = ["{message}"];
|
|
||||||
win_options = {
|
|
||||||
concealcursor = "n";
|
|
||||||
conceallevel = 3;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
view = "hover";
|
|
||||||
};
|
|
||||||
|
|
||||||
override = {
|
|
||||||
"vim.lsp.util.convert_input_to_markdown_lines" = true;
|
|
||||||
"vim.lsp.util.stylize_markdown" = true;
|
|
||||||
"cmp.entry.get_documentation" = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
notify = {
|
|
||||||
enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
popupmenu = {
|
|
||||||
enabled = true;
|
|
||||||
backend = "nui"; # cmp completion is broken
|
|
||||||
};
|
|
||||||
|
|
||||||
# cmdline.enabled = false;
|
|
||||||
# messages.enabled = false;
|
|
||||||
|
|
||||||
routes = [
|
|
||||||
# Hide inline search count info
|
|
||||||
{
|
|
||||||
filter = {
|
|
||||||
event = "msg_show";
|
|
||||||
kind = "search_count";
|
|
||||||
};
|
|
||||||
opts = {skip = true;};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "notify";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-notify;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
vim.notify = require("notify")
|
|
||||||
require("notify").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "telescope";
|
|
||||||
pkg = pkgs.vimPlugins.telescope-nvim;
|
|
||||||
dependencies = [
|
|
||||||
{
|
|
||||||
name = "plenary"; # For telescope
|
|
||||||
pkg = pkgs.vimPlugins.plenary-nvim;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "telescope-undo";
|
|
||||||
pkg = pkgs.vimPlugins.telescope-undo-nvim;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "telescope-ui-select";
|
|
||||||
pkg = pkgs.vimPlugins.telescope-ui-select-nvim;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "telescope-fzf-native";
|
|
||||||
pkg = pkgs.vimPlugins.telescope-fzf-native-nvim;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lazy = false;
|
|
||||||
config = let
|
|
||||||
extensions = mylib.generators.toLuaObject [
|
|
||||||
"undo"
|
|
||||||
"ui-select"
|
|
||||||
"fzf"
|
|
||||||
];
|
|
||||||
in ''
|
|
||||||
function(_, opts)
|
|
||||||
local telescope = require("telescope")
|
|
||||||
telescope.setup(opts)
|
|
||||||
|
|
||||||
for i, extension in ipairs(${extensions}) do
|
|
||||||
telescope.load_extension(extension)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
defaults = {
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
"<Esc>" = {__raw = ''function(...) return require("telescope.actions").close(...) end'';};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "which-key";
|
|
||||||
pkg = pkgs.vimPlugins.which-key-nvim;
|
|
||||||
lazy = false;
|
|
||||||
priority = 100;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("which-key").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,245 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
mylib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: [
|
|
||||||
{
|
|
||||||
name = "clangd-extensions";
|
|
||||||
pkg = pkgs.vimPlugins.clangd_extensions-nvim;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("clangd_extensions").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "conform";
|
|
||||||
pkg = pkgs.vimPlugins.conform-nvim;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("conform").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
formatters_by_ft = {
|
|
||||||
c = ["clang-format"];
|
|
||||||
h = ["clang-format"];
|
|
||||||
cpp = ["clang-format"];
|
|
||||||
hpp = ["clang-format"];
|
|
||||||
css = [["prettierd" "prettier"]];
|
|
||||||
html = [["prettierd" "prettier"]];
|
|
||||||
java = ["google-java-format"];
|
|
||||||
javascript = [["prettierd" "prettier"]];
|
|
||||||
lua = ["stylua"];
|
|
||||||
markdown = [["prettierd" "prettier"]];
|
|
||||||
nix = ["alejandra"];
|
|
||||||
python = ["black"];
|
|
||||||
rust = ["rustfmt"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "haskell-tools";
|
|
||||||
pkg = pkgs.vimPlugins.haskell-tools-nvim;
|
|
||||||
# Don't call setup!
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "lint";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-lint;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
local lint = require("lint")
|
|
||||||
|
|
||||||
for k, v in pairs(opts) do
|
|
||||||
lint[k] = v
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
linters_by_ft = {
|
|
||||||
c = ["clang-tidy"];
|
|
||||||
h = ["clang-tidy"];
|
|
||||||
cpp = ["clang-tidy"];
|
|
||||||
hpp = ["clang-tidy"];
|
|
||||||
clojure = ["clj-kondo"];
|
|
||||||
java = ["checkstyle"];
|
|
||||||
javascript = ["eslint_d"];
|
|
||||||
lua = ["luacheck"];
|
|
||||||
markdown = ["vale"];
|
|
||||||
nix = ["statix"];
|
|
||||||
python = ["flake8"];
|
|
||||||
rust = ["clippy"];
|
|
||||||
text = ["vale"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "lspconfig";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
|
||||||
dependencies = [
|
|
||||||
{
|
|
||||||
name = "neodev";
|
|
||||||
pkg = pkgs.vimPlugins.neodev-nvim;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("neodev").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
lazy = false;
|
|
||||||
config = let
|
|
||||||
servers = mylib.generators.toLuaObject [
|
|
||||||
{name = "clangd";}
|
|
||||||
{name = "clojure_lsp";}
|
|
||||||
{name = "cmake";}
|
|
||||||
{name = "lua_ls";}
|
|
||||||
{name = "nil_ls";}
|
|
||||||
{name = "pyright";}
|
|
||||||
# {name = "rust_analyzer";} # Don't set up when using rustaceanvim
|
|
||||||
{name = "texlab";}
|
|
||||||
# {name = "hls";} # Don't set up when using haskell-tools
|
|
||||||
];
|
|
||||||
in ''
|
|
||||||
function(_, opts)
|
|
||||||
local __lspOnAttach = function(client, bufnr) end
|
|
||||||
|
|
||||||
local __lspCapabilities = function()
|
|
||||||
capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())
|
|
||||||
return capabilities
|
|
||||||
end
|
|
||||||
|
|
||||||
local __setup = {
|
|
||||||
on_attach = __lspOnAttach,
|
|
||||||
capabilities = __lspCapabilities(),
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, server in ipairs(${servers}) do
|
|
||||||
if type(server) == "string" then
|
|
||||||
require("lspconfig")[server].setup(__setup)
|
|
||||||
else
|
|
||||||
local options = server.extraOptions
|
|
||||||
|
|
||||||
if options == nil then
|
|
||||||
options = __setup
|
|
||||||
else
|
|
||||||
options = vim.tbl_extend("keep", options, __setup)
|
|
||||||
end
|
|
||||||
|
|
||||||
require("lspconfig")[server.name].setup(options)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "rustaceanvim";
|
|
||||||
pkg = pkgs.vimPlugins.rustaceanvim;
|
|
||||||
# Don't call setup!
|
|
||||||
}
|
|
||||||
|
|
||||||
(let
|
|
||||||
nvim-plugintree = pkgs.vimPlugins.nvim-treesitter.withPlugins (
|
|
||||||
p:
|
|
||||||
with p; [
|
|
||||||
bash
|
|
||||||
bibtex
|
|
||||||
c
|
|
||||||
clojure
|
|
||||||
cmake
|
|
||||||
cpp
|
|
||||||
csv
|
|
||||||
disassembly
|
|
||||||
dockerfile
|
|
||||||
dot
|
|
||||||
doxygen
|
|
||||||
fish
|
|
||||||
gitignore
|
|
||||||
haskell
|
|
||||||
haskell_persistent
|
|
||||||
html
|
|
||||||
ini
|
|
||||||
java
|
|
||||||
javascript
|
|
||||||
json
|
|
||||||
julia
|
|
||||||
kotlin
|
|
||||||
lua
|
|
||||||
make
|
|
||||||
markdown
|
|
||||||
markdown_inline
|
|
||||||
nasm
|
|
||||||
nix
|
|
||||||
objdump
|
|
||||||
org
|
|
||||||
passwd
|
|
||||||
perl
|
|
||||||
printf
|
|
||||||
python
|
|
||||||
r
|
|
||||||
regex
|
|
||||||
requirements
|
|
||||||
ruby
|
|
||||||
rust
|
|
||||||
scala
|
|
||||||
scss
|
|
||||||
sql
|
|
||||||
toml
|
|
||||||
typescript
|
|
||||||
verilog
|
|
||||||
xml
|
|
||||||
yaml
|
|
||||||
]
|
|
||||||
);
|
|
||||||
treesitter-parsers = pkgs.symlinkJoin {
|
|
||||||
name = "treesitter-parsers";
|
|
||||||
paths = nvim-plugintree.dependencies;
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
name = "treesitter";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-treesitter;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
vim.opt.runtimepath:append("${nvim-plugintree}")
|
|
||||||
vim.opt.runtimepath:append("${treesitter-parsers}")
|
|
||||||
|
|
||||||
require("nvim-treesitter.configs").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
auto_install = false;
|
|
||||||
ensure_installed = [];
|
|
||||||
parser_install_dir = "${treesitter-parsers}";
|
|
||||||
|
|
||||||
indent = {
|
|
||||||
enable = true;
|
|
||||||
# disable = ["python" "yaml"];
|
|
||||||
};
|
|
||||||
highlight = {
|
|
||||||
enable = true;
|
|
||||||
# disable = ["yaml"];
|
|
||||||
additional_vim_regex_highlighting = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: Doesn't work
|
|
||||||
incremental_selection = {
|
|
||||||
enable = true;
|
|
||||||
keymaps = {
|
|
||||||
"init_selection" = "gnn";
|
|
||||||
"node_decremental" = "grm";
|
|
||||||
"node_incremental" = "grn";
|
|
||||||
"scope_incremental" = "grc";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
]
|
|
@ -357,6 +357,8 @@ with mylib.networking; {
|
|||||||
wireguard-tools
|
wireguard-tools
|
||||||
man-pages
|
man-pages
|
||||||
man-pages-posix
|
man-pages-posix
|
||||||
|
|
||||||
|
# egl-wayland
|
||||||
];
|
];
|
||||||
|
|
||||||
# NOTE: Gnome
|
# NOTE: Gnome
|
||||||
|
Reference in New Issue
Block a user