diff options
author | Minijackson <minijackson@riseup.net> | 2023-01-18 13:39:42 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2023-01-18 13:39:42 +0100 |
commit | cfdb14cf768f2971f6efe2e333c620571f30fad1 (patch) | |
tree | 7cf802c821abd12bf47a336784d444791ced6f83 | |
parent | 087b8756a6113c78ae20ee00c96c38f5922287a0 (diff) | |
download | nixos-config-reborn-cfdb14cf768f2971f6efe2e333c620571f30fad1.tar.gz nixos-config-reborn-cfdb14cf768f2971f6efe2e333c620571f30fad1.zip |
vim: refactor, allowing different files like ftplugin
-rw-r--r-- | common/vim.nix | 48 | ||||
-rw-r--r-- | dotfiles/vim/ftplugin/nix.lua | 6 | ||||
-rw-r--r-- | dotfiles/vim/ftplugin/rust.lua | 18 | ||||
-rw-r--r-- | dotfiles/vim/lua/myConfig.lua (renamed from dotfiles/vim.lua) | 17 | ||||
-rw-r--r-- | dotfiles/vim/lua/vim-dev.lua (renamed from dotfiles/vim-dev.lua) | 2 | ||||
-rw-r--r-- | usecases/desktop/development.nix | 3 |
6 files changed, 63 insertions, 31 deletions
diff --git a/common/vim.nix b/common/vim.nix index 2f36958..bebfb0e 100644 --- a/common/vim.nix +++ b/common/vim.nix | |||
@@ -12,8 +12,8 @@ inputs: { | |||
12 | 12 | ||
13 | cfg = config.vim; | 13 | cfg = config.vim; |
14 | 14 | ||
15 | myConfigPackage = with lib; let | 15 | variables = with lib; |
16 | config = '' | 16 | pkgs.writeTextDir "lua/myVariables.lua" '' |
17 | -- Autogenerated variables from the NixOS configuration | 17 | -- Autogenerated variables from the NixOS configuration |
18 | 18 | ||
19 | ${(concatStringsSep | 19 | ${(concatStringsSep |
@@ -21,35 +21,32 @@ inputs: { | |||
21 | (mapAttrsToList | 21 | (mapAttrsToList |
22 | (variable: value: "vim.g.${variable} = ${luaFormat.generate value}") | 22 | (variable: value: "vim.g.${variable} = ${luaFormat.generate value}") |
23 | cfg.variables))} | 23 | cfg.variables))} |
24 | ''; | ||
24 | 25 | ||
25 | -- vim.lua from the NixOS configuration | 26 | extraConfig = pkgs.writeTextDir "lua/myExtraConfig.lua" '' |
27 | -- luaConfig from the NixOS configuration | ||
26 | 28 | ||
27 | ${builtins.readFile ../dotfiles/vim.lua} | 29 | ${cfg.luaConfig} |
30 | ''; | ||
28 | 31 | ||
29 | -- luaConfig from the NixOS configuration | 32 | myGeneratedConfigPackage = pkgs.symlinkJoin { |
33 | name = "myGeneratedConfig-nvim"; | ||
34 | paths = [variables extraConfig]; | ||
35 | }; | ||
30 | 36 | ||
31 | ${cfg.luaConfig} | 37 | myConfigPackage = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix { |
32 | ''; | 38 | name = "myConfig-nvim"; |
33 | in | 39 | src = ../dotfiles/vim; |
34 | pkgs.runCommand | 40 | }; |
35 | "myConfig" | ||
36 | { | ||
37 | pname = "myConfig"; | ||
38 | inherit config; | ||
39 | passAsFile = ["config"]; | ||
40 | runLocal = true; | ||
41 | } | ||
42 | '' | ||
43 | mkdir -p "$out/lua" | ||
44 | mv "$configPath" "$out/lua/myConfig.lua" | ||
45 | ''; | ||
46 | 41 | ||
47 | myNeovim = wrapNeovim neovim-unwrapped { | 42 | myNeovim = wrapNeovim neovim-unwrapped { |
48 | configure = { | 43 | configure = { |
49 | inherit (config.vim) beforePlugins; | 44 | inherit (config.vim) beforePlugins; |
50 | 45 | ||
51 | customRC = '' | 46 | customRC = '' |
47 | lua require("myVariables") | ||
52 | lua require("myConfig") | 48 | lua require("myConfig") |
49 | lua require("myExtraConfig") | ||
53 | 50 | ||
54 | ${cfg.extraConfig} | 51 | ${cfg.extraConfig} |
55 | ''; | 52 | ''; |
@@ -57,6 +54,7 @@ inputs: { | |||
57 | packages.myVimPackage = with vimPlugins; { | 54 | packages.myVimPackage = with vimPlugins; { |
58 | start = | 55 | start = |
59 | [ | 56 | [ |
57 | myGeneratedConfigPackage | ||
60 | myConfigPackage | 58 | myConfigPackage |
61 | 59 | ||
62 | # Dependencies | 60 | # Dependencies |
@@ -72,6 +70,15 @@ inputs: { | |||
72 | diffview-nvim | 70 | diffview-nvim |
73 | nvim-notify | 71 | nvim-notify |
74 | indent-blankline-nvim | 72 | indent-blankline-nvim |
73 | (pkgs.unstable.vimUtils.buildVimPluginFrom2Nix { | ||
74 | name = "oil.nvim"; | ||
75 | src = pkgs.fetchFromGitHub { | ||
76 | owner = "stevearc"; | ||
77 | repo = "oil.nvim"; | ||
78 | rev = "abfc455f62dac385b0fc816f37c64dffead0bcf3"; | ||
79 | hash = "sha256-oA220nzaBlFnJ0s23oabIW3XV1tWml5kBuBkTImOPjM="; | ||
80 | }; | ||
81 | }) | ||
75 | 82 | ||
76 | # Completion | 83 | # Completion |
77 | nvim-cmp | 84 | nvim-cmp |
@@ -92,7 +99,6 @@ inputs: { | |||
92 | 99 | ||
93 | # Telescope | 100 | # Telescope |
94 | telescope-nvim | 101 | telescope-nvim |
95 | telescope-file-browser-nvim | ||
96 | telescope-ui-select-nvim | 102 | telescope-ui-select-nvim |
97 | 103 | ||
98 | # Treesitter | 104 | # Treesitter |
diff --git a/dotfiles/vim/ftplugin/nix.lua b/dotfiles/vim/ftplugin/nix.lua new file mode 100644 index 0000000..7401054 --- /dev/null +++ b/dotfiles/vim/ftplugin/nix.lua | |||
@@ -0,0 +1,6 @@ | |||
1 | vim.bo.expandtab = true | ||
2 | vim.bo.shiftwidth = 2 | ||
3 | vim.bo.softtabstop = 2 | ||
4 | |||
5 | vim.opt_local.comments = { ":#", "s1:/*", "ex:*/", } | ||
6 | vim.bo.commentstring = "# %s" | ||
diff --git a/dotfiles/vim/ftplugin/rust.lua b/dotfiles/vim/ftplugin/rust.lua new file mode 100644 index 0000000..23a46f1 --- /dev/null +++ b/dotfiles/vim/ftplugin/rust.lua | |||
@@ -0,0 +1,18 @@ | |||
1 | -- TODO: suffixes, includes | ||
2 | |||
3 | vim.bo.expandtab = true | ||
4 | vim.bo.shiftwidth = 4 | ||
5 | vim.bo.softtabstop = 4 | ||
6 | vim.bo.textwidth = 99 | ||
7 | |||
8 | vim.opt_local.comments = { | ||
9 | "s0:/*!", | ||
10 | "ex:*/", | ||
11 | "s1:/*", | ||
12 | "mb:*", | ||
13 | "ex:*/", | ||
14 | ":///", | ||
15 | "://!", | ||
16 | "://", | ||
17 | } | ||
18 | vim.bo.commentstring = "// %s" | ||
diff --git a/dotfiles/vim.lua b/dotfiles/vim/lua/myConfig.lua index defee0c..58c6f6d 100644 --- a/dotfiles/vim.lua +++ b/dotfiles/vim/lua/myConfig.lua | |||
@@ -13,6 +13,8 @@ vim.o.ignorecase = true | |||
13 | vim.o.smartcase = true | 13 | vim.o.smartcase = true |
14 | 14 | ||
15 | vim.o.smartindent = true | 15 | vim.o.smartindent = true |
16 | -- TODO: check that | ||
17 | vim.o.cindent = true | ||
16 | 18 | ||
17 | -- tabstop and shiftwidth are also set locally by individual filetypes | 19 | -- tabstop and shiftwidth are also set locally by individual filetypes |
18 | 20 | ||
@@ -347,21 +349,15 @@ cmp.setup { | |||
347 | 349 | ||
348 | require("telescope").setup { | 350 | require("telescope").setup { |
349 | extensions = { | 351 | extensions = { |
350 | file_browser = { | ||
351 | path = "%:p:h", | ||
352 | dir_icon = "D", | ||
353 | }, | ||
354 | ["ui-select"] = { | 352 | ["ui-select"] = { |
355 | require("telescope.themes").get_dropdown(), | 353 | require("telescope.themes").get_dropdown(), |
356 | }, | 354 | }, |
357 | }, | 355 | }, |
358 | } | 356 | } |
359 | 357 | ||
360 | require("telescope").load_extension "file_browser" | ||
361 | require("telescope").load_extension "ui-select" | 358 | require("telescope").load_extension "ui-select" |
362 | 359 | ||
363 | local telescope_builtin = require "telescope.builtin" | 360 | local telescope_builtin = require("telescope.builtin") |
364 | local telescope_extensions = require("telescope").extensions | ||
365 | 361 | ||
366 | vim.keymap.set("n", "<leader>fb", telescope_builtin.buffers, mapopts) | 362 | vim.keymap.set("n", "<leader>fb", telescope_builtin.buffers, mapopts) |
367 | vim.keymap.set("n", "<leader>ff", telescope_builtin.find_files, mapopts) | 363 | vim.keymap.set("n", "<leader>ff", telescope_builtin.find_files, mapopts) |
@@ -370,7 +366,12 @@ vim.keymap.set("n", "<leader>fh", telescope_builtin.help_tags, mapopts) | |||
370 | vim.keymap.set("n", "<leader>fo", telescope_builtin.oldfiles, mapopts) | 366 | vim.keymap.set("n", "<leader>fo", telescope_builtin.oldfiles, mapopts) |
371 | vim.keymap.set("n", "<leader>fs", telescope_builtin.spell_suggest, mapopts) | 367 | vim.keymap.set("n", "<leader>fs", telescope_builtin.spell_suggest, mapopts) |
372 | vim.keymap.set("n", "<leader>ft", telescope_builtin.treesitter, mapopts) | 368 | vim.keymap.set("n", "<leader>ft", telescope_builtin.treesitter, mapopts) |
373 | vim.keymap.set("n", "-", telescope_extensions.file_browser.file_browser, mapopts) | 369 | |
370 | -- Oil.nvim | ||
371 | |||
372 | require("oil").setup() | ||
373 | |||
374 | vim.keymap.set("n", "-", require("oil").open, { desc = "Open parent directory" }) | ||
374 | 375 | ||
375 | -- Lualine | 376 | -- Lualine |
376 | 377 | ||
diff --git a/dotfiles/vim-dev.lua b/dotfiles/vim/lua/vim-dev.lua index 33b46fd..a852447 100644 --- a/dotfiles/vim-dev.lua +++ b/dotfiles/vim/lua/vim-dev.lua | |||
@@ -42,7 +42,7 @@ local function on_attach(client, bufnr) | |||
42 | } | 42 | } |
43 | end | 43 | end |
44 | 44 | ||
45 | capabilities = require("cmp_nvim_lsp").default_capabilities() | 45 | local capabilities = require("cmp_nvim_lsp").default_capabilities() |
46 | 46 | ||
47 | require("rust-tools").setup { | 47 | require("rust-tools").setup { |
48 | server = { | 48 | server = { |
diff --git a/usecases/desktop/development.nix b/usecases/desktop/development.nix index 8fc2c85..c07a1a9 100644 --- a/usecases/desktop/development.nix +++ b/usecases/desktop/development.nix | |||
@@ -100,7 +100,8 @@ in | |||
100 | (mapAttrsToList lspconfigFor config.vim.lsp); | 100 | (mapAttrsToList lspconfigFor config.vim.lsp); |
101 | in | 101 | in |
102 | mkMerge [ | 102 | mkMerge [ |
103 | (readFile ../../dotfiles/vim-dev.lua) | 103 | "require('vim-dev')" |
104 | "local lspconfig = require('lspconfig')" | ||
104 | lspconfig | 105 | lspconfig |
105 | ]; | 106 | ]; |
106 | }; | 107 | }; |