Update nixvim to lazy.nvim migration
This commit is contained in:
@ -468,12 +468,8 @@ rec {
|
|||||||
# p.matplotlib
|
# p.matplotlib
|
||||||
# p.pillow # for ranger
|
# p.pillow # for ranger
|
||||||
# p.pygments # for emacs
|
# p.pygments # for emacs
|
||||||
|
# flake8 # Linter
|
||||||
# For nvim CHADtree
|
# black
|
||||||
pyyaml
|
|
||||||
std2
|
|
||||||
pynvim
|
|
||||||
pynvim-pp
|
|
||||||
]))
|
]))
|
||||||
jetbrains.clion
|
jetbrains.clion
|
||||||
jetbrains.rust-rover
|
jetbrains.rust-rover
|
||||||
|
@ -25,51 +25,74 @@ in {
|
|||||||
[
|
[
|
||||||
(pkgs.ripgrep.override {withPCRE2 = true;})
|
(pkgs.ripgrep.override {withPCRE2 = true;})
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
lua51Packages.lua-curl # For rest
|
||||||
|
lua51Packages.xml2lua # For rest
|
||||||
|
lua51Packages.mimetypes # For rest
|
||||||
|
lua51Packages.jsregexp # For tree-sitter
|
||||||
|
|
||||||
|
# Language servers
|
||||||
|
clang-tools_18
|
||||||
|
clojure-lsp
|
||||||
|
cmake-language-server
|
||||||
|
haskell-language-server
|
||||||
|
lua-language-server
|
||||||
|
nil
|
||||||
|
pyright
|
||||||
|
rust-analyzer
|
||||||
|
texlab
|
||||||
|
|
||||||
# Linters
|
# Linters
|
||||||
clippy # rust
|
|
||||||
checkstyle # java
|
checkstyle # java
|
||||||
|
clippy # rust
|
||||||
clj-kondo # clojure
|
clj-kondo # clojure
|
||||||
eslint_d # javascript
|
eslint_d # javascript
|
||||||
python312Packages.flake8
|
python311Packages.flake8
|
||||||
|
lua51Packages.luacheck
|
||||||
vale # text
|
vale # text
|
||||||
statix # nix
|
statix # nix
|
||||||
|
|
||||||
# Formatters
|
# Formatters
|
||||||
alejandra # nix
|
alejandra # nix
|
||||||
|
python311Packages.black
|
||||||
google-java-format
|
google-java-format
|
||||||
html-tidy
|
html-tidy
|
||||||
jq # json
|
jq # json
|
||||||
prettierd # html/css/js
|
prettierd # html/css/js
|
||||||
# rustfmt
|
rustfmt
|
||||||
# clang-tools
|
stylua
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
# NOTE: Use nixvim.extraConfigLua configuration
|
home.file.".config/neovide/config.toml".text = ''
|
||||||
# home.file.".config/neovide/config.toml".text = ''
|
fork = true # Start neovide detached
|
||||||
# [font]
|
frame = "none" # full, buttonless, none
|
||||||
# normal = ["JetBrainsMono Nerd Font Mono"] # Will use the bundled Fira Code Nerd Font by default
|
idle = true # Don't render frames without changes
|
||||||
# size = 13.0
|
# maximized = true
|
||||||
#
|
title-hidden = true
|
||||||
# fork = true
|
|
||||||
# frame = "full" # full, buttonless, none
|
|
||||||
# idle = true
|
|
||||||
# maximized = false
|
|
||||||
# # neovim-bin = "/usr/bin/nvim" # in reality found dynamically on $PATH if unset
|
|
||||||
# no-multigrid = false
|
|
||||||
# srgb = false
|
|
||||||
# tabs = true
|
|
||||||
# theme = "light"
|
|
||||||
# title-hidden = true
|
|
||||||
# vsync = true
|
# vsync = true
|
||||||
# wsl = false
|
'';
|
||||||
# '';
|
|
||||||
|
home.file.".config/vale/.vale.ini".text = ''
|
||||||
|
# Core settings appear at the top
|
||||||
|
# (the "global" section).
|
||||||
|
|
||||||
|
[formats]
|
||||||
|
# Format associations appear under
|
||||||
|
# the optional "formats" section.
|
||||||
|
|
||||||
|
[*]
|
||||||
|
# Format-specific settings appear
|
||||||
|
# under a user-provided "glob"
|
||||||
|
# pattern.
|
||||||
|
'';
|
||||||
|
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
enableMan = true;
|
enableMan = true;
|
||||||
# colorschemes.catppuccin.enable = true; # NOTE: Managed using Lazy
|
luaLoader.enable = true; # NOTE: Experimental
|
||||||
|
# colorschemes.catppuccin.enable = true; # Managed using Lazy
|
||||||
viAlias = cfg.alias;
|
viAlias = cfg.alias;
|
||||||
vimAlias = cfg.alias;
|
vimAlias = cfg.alias;
|
||||||
|
|
||||||
@ -139,58 +162,11 @@ in {
|
|||||||
splitright = true;
|
splitright = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
extraConfigLuaPost = ''
|
extraConfigLuaPost = builtins.readFile ./extraConfigLuaPost.lua;
|
||||||
local opt = vim.opt
|
|
||||||
local g = vim.g
|
|
||||||
local o = vim.o
|
|
||||||
|
|
||||||
-- Neovide
|
extraConfigLua = builtins.readFile ./extraConfigLua.lua;
|
||||||
if g.neovide then
|
|
||||||
-- require("notify").notify("Running in NeoVide")
|
|
||||||
|
|
||||||
g.neovide_cursor_animate_command_line = true
|
extraLuaPackages = with pkgs.lua51Packages; [];
|
||||||
g.neovide_cursor_animate_in_insert_mode = true
|
|
||||||
g.neovide_fullscreen = false
|
|
||||||
g.neovide_hide_mouse_when_typing = false
|
|
||||||
g.neovide_padding_top = 0
|
|
||||||
g.neovide_padding_bottom = 0
|
|
||||||
g.neovide_padding_right = 0
|
|
||||||
g.neovide_padding_left = 0
|
|
||||||
g.neovide_refresh_rate = 144
|
|
||||||
g.neovide_theme = 'light'
|
|
||||||
|
|
||||||
-- Neovide Fonts
|
|
||||||
o.guifont = "JetBrainsMono Nerd Font:h13:Medium"
|
|
||||||
else
|
|
||||||
-- require("notify").notify("Not running in NeoVide")
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
extraConfigLua = ''
|
|
||||||
-- Hide inline diagnostics and show border
|
|
||||||
vim.diagnostic.config({
|
|
||||||
virtual_text = false,
|
|
||||||
float = { border = "rounded" }
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Allow navigating popupmenu completion with Up/Down
|
|
||||||
vim.api.nvim_set_keymap('c', '<Down>', 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
|
|
||||||
vim.api.nvim_set_keymap('c', '<Up>', 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
|
|
||||||
|
|
||||||
function _G.get_wildmenu_key(key_wildmenu, key_regular)
|
|
||||||
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
extraLuaPackages = with pkgs.lua51Packages; [
|
|
||||||
# TODO: Doesn't work
|
|
||||||
# For rest
|
|
||||||
# lua-curl
|
|
||||||
# xml2lua
|
|
||||||
# mimetypes
|
|
||||||
|
|
||||||
jsregexp # For tree-sitter
|
|
||||||
];
|
|
||||||
|
|
||||||
extraPython3Packages = p: [
|
extraPython3Packages = p: [
|
||||||
# For CHADtree
|
# For CHADtree
|
||||||
@ -205,6 +181,10 @@ in {
|
|||||||
# pattern = "*";
|
# pattern = "*";
|
||||||
callback = {__raw = "function() require('lint').try_lint() end";};
|
callback = {__raw = "function() require('lint').try_lint() end";};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
event = ["BufWritePre"];
|
||||||
|
callback = {__raw = "function() require('conform').format() end";};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# TODO: Toggle wrapping
|
# TODO: Toggle wrapping
|
||||||
@ -212,16 +192,15 @@ in {
|
|||||||
# TODO: Toggle format on paste
|
# TODO: Toggle format on paste
|
||||||
keymaps = import ./keybinds.nix {inherit lib mylib;};
|
keymaps = import ./keybinds.nix {inherit lib mylib;};
|
||||||
|
|
||||||
##################################################################################################################################
|
|
||||||
# Lazy Plugins #
|
|
||||||
##################################################################################################################################
|
|
||||||
plugins.lazy = {
|
plugins.lazy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# TODO: Would be nicer if large dependencies could be referenced by name
|
plugins = builtins.concatLists [
|
||||||
plugins = [
|
(import ./interface.nix {inherit lib mylib pkgs;})
|
||||||
|
(import ./languages.nix {inherit lib mylib pkgs;})
|
||||||
|
[
|
||||||
#
|
#
|
||||||
# Not available in NixVim
|
# Theme
|
||||||
#
|
#
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -249,9 +228,49 @@ in {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "lspconfig";
|
name = "web-devicons";
|
||||||
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
pkg = pkgs.vimPlugins.nvim-web-devicons;
|
||||||
dependencies = [
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("nvim-web-devicons").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "better-escape";
|
||||||
|
pkg = pkgs.vimPlugins.better-escape-nvim;
|
||||||
|
lazy = false;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("better_escape").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
mapping = ["jk"];
|
||||||
|
timeout = 200; # In ms
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "chadtree";
|
||||||
|
pkg = pkgs.vimPlugins.chadtree;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
vim.api.nvim_set_var("chadtree_settings", opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
opts = {
|
||||||
|
theme.text_colour_set = "nerdtree_syntax_dark";
|
||||||
|
xdg = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "cmp";
|
name = "cmp";
|
||||||
pkg = pkgs.vimPlugins.nvim-cmp;
|
pkg = pkgs.vimPlugins.nvim-cmp;
|
||||||
@ -369,135 +388,6 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
|
||||||
name = "illuminate";
|
|
||||||
pkg = pkgs.vimPlugins.vim-illuminate;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("illuminate").configure(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
filetypesDenylist = [
|
|
||||||
"DressingSelect"
|
|
||||||
"Outline"
|
|
||||||
"TelescopePrompt"
|
|
||||||
"alpha"
|
|
||||||
"harpoon"
|
|
||||||
"toggleterm"
|
|
||||||
"neo-tree"
|
|
||||||
"Spectre"
|
|
||||||
"reason"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
# {
|
|
||||||
# name = "inc-rename";
|
|
||||||
# pkg = pkgs.vimPlugins.inc-rename-nvim;
|
|
||||||
# config = ''
|
|
||||||
# function(_, opts)
|
|
||||||
# require("inc_rename").setup(opts)
|
|
||||||
# end
|
|
||||||
# '';
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
lazy = false;
|
|
||||||
config = let
|
|
||||||
servers = mylib.generators.toLuaObject [
|
|
||||||
{name = "cmake";}
|
|
||||||
{name = "clojure_lsp";}
|
|
||||||
{name = "clangd";}
|
|
||||||
{name = "texlab";}
|
|
||||||
{name = "rust_analyzer";}
|
|
||||||
{name = "pyright";}
|
|
||||||
{name = "nil_ls";}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "hls";
|
|
||||||
cmd = [
|
|
||||||
"haskell-language-server-wrapper"
|
|
||||||
"--lsp"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
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 = "web-devicons";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-web-devicons;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("nvim-web-devicons").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Also available in NixVim
|
|
||||||
#
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "better-escape";
|
|
||||||
pkg = pkgs.vimPlugins.better-escape-nvim;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("better_escape").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
mapping = ["jk"];
|
|
||||||
timeout = 200; # In ms
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "chadtree";
|
|
||||||
pkg = pkgs.vimPlugins.chadtree;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
vim.api.nvim_set_var("chadtree_settings", opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
theme.text_colour_set = "nerdtree_syntax_dark";
|
|
||||||
xdg = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "comment";
|
name = "comment";
|
||||||
@ -533,32 +423,6 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
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"]];
|
|
||||||
markdown = [["prettierd" "prettier"]];
|
|
||||||
nix = ["alejandra"];
|
|
||||||
python = ["black"];
|
|
||||||
rust = ["rustfmt"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO: Config
|
# TODO: Config
|
||||||
{
|
{
|
||||||
name = "flash";
|
name = "flash";
|
||||||
@ -603,13 +467,27 @@ in {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "headlines";
|
name = "illuminate";
|
||||||
pkg = pkgs.vimPlugins.headlines-nvim;
|
pkg = pkgs.vimPlugins.vim-illuminate;
|
||||||
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
require("headlines").setup(opts)
|
require("illuminate").configure(opts)
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
|
opts = {
|
||||||
|
filetypesDenylist = [
|
||||||
|
"DressingSelect"
|
||||||
|
"Outline"
|
||||||
|
"TelescopePrompt"
|
||||||
|
"alpha"
|
||||||
|
"harpoon"
|
||||||
|
"toggleterm"
|
||||||
|
"neo-tree"
|
||||||
|
"Spectre"
|
||||||
|
"reason"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -634,112 +512,6 @@ in {
|
|||||||
pkg = pkgs.vimPlugins.lazygit-nvim;
|
pkg = pkgs.vimPlugins.lazygit-nvim;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
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"];
|
|
||||||
markdown = ["vale"];
|
|
||||||
nix = ["statix"];
|
|
||||||
python = ["flake8"];
|
|
||||||
rust = ["clippy"];
|
|
||||||
text = ["vale"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
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"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO: Snippet configs
|
# TODO: Snippet configs
|
||||||
{
|
{
|
||||||
name = "luasnip";
|
name = "luasnip";
|
||||||
@ -782,91 +554,6 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
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 = "autopairs";
|
name = "autopairs";
|
||||||
pkg = pkgs.vimPlugins.nvim-autopairs;
|
pkg = pkgs.vimPlugins.nvim-autopairs;
|
||||||
@ -928,55 +615,6 @@ in {
|
|||||||
lazy = false;
|
lazy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
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 = "toggleterm";
|
name = "toggleterm";
|
||||||
pkg = pkgs.vimPlugins.toggleterm-nvim;
|
pkg = pkgs.vimPlugins.toggleterm-nvim;
|
||||||
@ -1007,32 +645,6 @@ in {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
name = "treesitter";
|
|
||||||
pkg = pkgs.vimPlugins.nvim-treesitter.withAllGrammars;
|
|
||||||
lazy = false;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("nvim-treesitter.configs").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
opts = {
|
|
||||||
highlight.enable = true;
|
|
||||||
indent.enable = true;
|
|
||||||
|
|
||||||
# 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;
|
||||||
@ -1059,18 +671,6 @@ in {
|
|||||||
pkg = pkgs.vimPlugins.vim-bbye;
|
pkg = pkgs.vimPlugins.vim-bbye;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
name = "which-key";
|
|
||||||
pkg = pkgs.vimPlugins.which-key-nvim;
|
|
||||||
lazy = false;
|
|
||||||
priority = 100;
|
|
||||||
config = ''
|
|
||||||
function(_, opts)
|
|
||||||
require("which-key").setup(opts)
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "yanky"; # TODO: Bindings
|
name = "yanky"; # TODO: Bindings
|
||||||
pkg = pkgs.vimPlugins.yanky-nvim;
|
pkg = pkgs.vimPlugins.yanky-nvim;
|
||||||
@ -1081,17 +681,11 @@ in {
|
|||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
]
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
##################################################################################################################################
|
# NixVim plugins
|
||||||
# NixVim Plugins #
|
|
||||||
##################################################################################################################################
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
# clangd-extensions = {
|
|
||||||
# enable = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# TODO: Figure out how debugging from nvim works...
|
# TODO: Figure out how debugging from nvim works...
|
||||||
# Debug-Adapter-Protocol
|
# Debug-Adapter-Protocol
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
-- Hide inline diagnostics and show border
|
-- Hide inline diagnostics and show border
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
virtual_text = false,
|
virtual_text = false,
|
||||||
float = { border = "rounded" }
|
float = { border = "rounded" },
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Allow navigating popupmenu completion with Up/Down
|
-- Allow navigating popupmenu completion with Up/Down
|
||||||
vim.api.nvim_set_keymap('c', '<Down>', 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
|
vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
|
||||||
vim.api.nvim_set_keymap('c', '<Up>', 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
|
vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
|
||||||
|
|
||||||
function _G.get_wildmenu_key(key_wildmenu, key_regular)
|
function _G.get_wildmenu_key(key_wildmenu, key_regular)
|
||||||
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
|
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
|
||||||
|
@ -8,14 +8,14 @@ if g.neovide then
|
|||||||
|
|
||||||
g.neovide_cursor_animate_command_line = true
|
g.neovide_cursor_animate_command_line = true
|
||||||
g.neovide_cursor_animate_in_insert_mode = true
|
g.neovide_cursor_animate_in_insert_mode = true
|
||||||
g.neovide_fullscreen = false
|
-- g.neovide_fullscreen = false
|
||||||
g.neovide_hide_mouse_when_typing = false
|
g.neovide_hide_mouse_when_typing = true
|
||||||
g.neovide_padding_top = 0
|
g.neovide_padding_top = 0
|
||||||
g.neovide_padding_bottom = 0
|
g.neovide_padding_bottom = 0
|
||||||
g.neovide_padding_right = 0
|
g.neovide_padding_right = 0
|
||||||
g.neovide_padding_left = 0
|
g.neovide_padding_left = 0
|
||||||
g.neovide_refresh_rate = 144
|
g.neovide_refresh_rate = 144
|
||||||
g.neovide_theme = 'light'
|
-- g.neovide_theme = "light"
|
||||||
|
|
||||||
-- Neovide Fonts
|
-- Neovide Fonts
|
||||||
o.guifont = "JetBrainsMono Nerd Font:h13:Medium"
|
o.guifont = "JetBrainsMono Nerd Font:h13:Medium"
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
mylib,
|
mylib,
|
||||||
...
|
...
|
||||||
}: [
|
}: [
|
||||||
[
|
|
||||||
# No Leader
|
# No Leader
|
||||||
{
|
{
|
||||||
mode = "n";
|
mode = "n";
|
||||||
@ -224,6 +223,13 @@
|
|||||||
options.desc = "Show help tags";
|
options.desc = "Show help tags";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Quit <leader>q
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>q";
|
||||||
|
action = "+quit";
|
||||||
|
}
|
||||||
|
|
||||||
# Buffers <leader>b
|
# Buffers <leader>b
|
||||||
{
|
{
|
||||||
mode = "n";
|
mode = "n";
|
||||||
@ -485,4 +491,3 @@
|
|||||||
options.desc = "Show LSP line diagnostics";
|
options.desc = "Show LSP line diagnostics";
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
|
||||||
|
@ -4,6 +4,16 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: [
|
}: [
|
||||||
|
{
|
||||||
|
name = "clangd-extensions";
|
||||||
|
pkg = pkgs.vimPlugins.clangd_extensions-nvim;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("clangd_extensions").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "conform";
|
name = "conform";
|
||||||
pkg = pkgs.vimPlugins.conform-nvim;
|
pkg = pkgs.vimPlugins.conform-nvim;
|
||||||
@ -31,6 +41,12 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "haskell-tools";
|
||||||
|
pkg = pkgs.vimPlugins.haskell-tools-nvim;
|
||||||
|
# Don't call setup!
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "lint";
|
name = "lint";
|
||||||
pkg = pkgs.vimPlugins.nvim-lint;
|
pkg = pkgs.vimPlugins.nvim-lint;
|
||||||
@ -66,25 +82,29 @@
|
|||||||
{
|
{
|
||||||
name = "lspconfig";
|
name = "lspconfig";
|
||||||
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
pkg = pkgs.vimPlugins.nvim-lspconfig;
|
||||||
|
dependencies = [
|
||||||
|
{
|
||||||
|
name = "neodev";
|
||||||
|
pkg = pkgs.vimPlugins.neodev-nvim;
|
||||||
|
config = ''
|
||||||
|
function(_, opts)
|
||||||
|
require("neodev").setup(opts)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
lazy = false;
|
lazy = false;
|
||||||
config = let
|
config = let
|
||||||
servers = mylib.generators.toLuaObject [
|
servers = mylib.generators.toLuaObject [
|
||||||
{name = "clangd";}
|
{name = "clangd";}
|
||||||
{name = "clojure_lsp";}
|
{name = "clojure_lsp";}
|
||||||
{name = "cmake";}
|
{name = "cmake";}
|
||||||
{name = "lua-ls";}
|
{name = "lua_ls";}
|
||||||
{name = "nil_ls";}
|
{name = "nil_ls";}
|
||||||
{name = "pyright";}
|
{name = "pyright";}
|
||||||
{name = "rust_analyzer";}
|
# {name = "rust_analyzer";} # Don't set up when using rustaceanvim
|
||||||
{name = "texlab";}
|
{name = "texlab";}
|
||||||
|
# {name = "hls";} # Don't set up when using haskell-tools
|
||||||
{
|
|
||||||
name = "hls";
|
|
||||||
cmd = [
|
|
||||||
"haskell-language-server-wrapper"
|
|
||||||
"--lsp"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
in ''
|
in ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
@ -121,17 +141,94 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
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";
|
name = "treesitter";
|
||||||
pkg = pkgs.vimPlugins.nvim-treesitter.withAllGrammars;
|
pkg = pkgs.vimPlugins.nvim-treesitter;
|
||||||
lazy = false;
|
lazy = false;
|
||||||
config = ''
|
config = ''
|
||||||
function(_, opts)
|
function(_, opts)
|
||||||
|
vim.opt.runtimepath:append("${nvim-plugintree}")
|
||||||
|
vim.opt.runtimepath:append("${treesitter-parsers}")
|
||||||
|
|
||||||
require("nvim-treesitter.configs").setup(opts)
|
require("nvim-treesitter.configs").setup(opts)
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
opts = {
|
opts = {
|
||||||
highlight.enable = true;
|
auto_install = false;
|
||||||
indent.enable = true;
|
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
|
# TODO: Doesn't work
|
||||||
incremental_selection = {
|
incremental_selection = {
|
||||||
@ -144,5 +241,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user