Skip to content

Commit 5858a99

Browse files
committed
nvim: weekend tinkering
1 parent f013ca3 commit 5858a99

File tree

9 files changed

+422
-559
lines changed

9 files changed

+422
-559
lines changed
Lines changed: 11 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,17 @@
11
;; extends
22

3-
; add variadic_parameter_declaration
3+
; standalone variadic parameter
44
(parameter_list
5-
.
5+
("," @_start
6+
.)?
67
(variadic_parameter_declaration) @parameter.inner
7-
.
8-
","? @_end
9-
(#make-range! "parameter.outer" @parameter.inner @_end))
8+
(#make-range! "parameter.outer" @_start @parameter.inner))
109

11-
; peeking should show the body of functions and types
12-
[ (type_declaration) (function_declaration) (method_declaration) ] @peek
10+
(function_declaration (identifier) @function.name)
11+
(method_declaration (field_identifier) @function.name)
1312

14-
; struct and interface declaration as customtype textobject
15-
(type_declaration
16-
(type_spec
17-
(type_identifier)
18-
(struct_type))) @customtype.outer
19-
20-
(type_declaration
21-
(type_spec
22-
(type_identifier)
23-
(struct_type
24-
(field_declaration_list
25-
"{"
26-
.
27-
_ @_start @_end
28-
_? @_end
29-
.
30-
"}"
31-
(#make-range! "customtype.inner" @_start @_end)))))
32-
33-
(type_declaration
34-
(type_spec
35-
(type_identifier)
36-
(interface_type))) @customtype.outer
37-
38-
(type_declaration
39-
(type_spec
40-
(type_identifier)
41-
(interface_type
42-
"{"
43-
.
44-
_ @_start @_end
45-
_? @_end
46-
.
47-
"}"
48-
(#make-range! "customtype.inner" @_start @_end))))
13+
(
14+
((comment)*) @doc
15+
.
16+
(method_declaration) @def
17+
) @function.all

home/nvim/default.nix

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
pkgs,
33
lib,
4+
config,
45
...
56
}: {
67
programs.neovim = {
@@ -19,13 +20,17 @@
1920
# pkgs.vimPlugins.nvim-treesitter.withAllGrammars.dependencies;
2021
};
2122
in {
22-
"nvim/init.lua".source = ./init.lua;
23-
"nvim/lua".source = ./lua;
24-
# "nvim/lua".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/lua";
25-
"nvim/ftplugin".source = ./ftplugin;
26-
# "nvim/ftplugin".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/ftplugin";
27-
"nvim/parser".source = "${treesitterParsers}/parser";
28-
"nvim/after".source = ./after;
23+
# "nvim/init.lua".source = ./init.lua;
24+
# "nvim/lua".source = ./lua;
25+
# "nvim/ftplugin".source = ./ftplugin;
26+
# "nvim/after".source = ./after;
27+
28+
"nvim/init.lua".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/init.lua";
29+
"nvim/lua".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/lua";
30+
"nvim/ftplugin".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/ftplugin";
31+
"nvim/after".source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/home/nvim/after";
32+
33+
"nvim/parser".source = "${treesitterParsers}/parser"; # treesitter master only
2934
};
3035

3136
xdg.dataFile = let
@@ -41,14 +46,12 @@
4146
"noice-nvim"
4247
"nui-nvim"
4348
"nvim-dap"
44-
# "nvim-dap-view"
45-
"nvim-impairative"
49+
# "nvim-dap-view" # not in nixpkgs
4650
"nvim-lint"
47-
"nvim-tree-lua"
48-
"nvim-treesitter"
51+
"nvim-treesitter" # uses master
4952
"nvim-treesitter-context"
50-
"nvim-treesitter-textobjects"
51-
"render-markdown-nvim"
53+
"nvim-treesitter-textobjects" # uses master
54+
"quicker-nvim"
5255
"snacks-nvim"
5356
]
5457
(
@@ -77,6 +80,7 @@
7780
"mini-operators"
7881
"mini-pairs"
7982
"mini-pick"
83+
"mini-sessions"
8084
"mini-splitjoin"
8185
"mini-statusline"
8286
"mini-surround"
@@ -94,6 +98,17 @@
9498
);
9599
in
96100
{
101+
"nvim/nixpkgs/fzf" = {
102+
source = "${pkgs.fzf}/share/vim-plugins/fzf";
103+
};
104+
105+
# treesitter main parsers:
106+
# "nvim/site/queries" = {
107+
# source = "${pkgs.vimPlugins.nvim-treesitter.withAllGrammars}/queries";
108+
# };
109+
# "nvim/site/parser".source = "${treesitterParsers}/parser";
110+
111+
# for switching to treesitter main:
97112
# "nvim/nixpkgs/nvim-treesitter-textobjects" = {
98113
# source = pkgs.fetchFromGitHub {
99114
# owner = "nvim-treesitter";

home/nvim/ftplugin/go.lua

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,6 @@ vim.opt.expandtab = false
66
vim.api.nvim_create_autocmd("LspAttach", {
77
group = vim.api.nvim_create_augroup("lsp_user_bindings_gopls", {}),
88
callback = function(event)
9-
-- get gc details
10-
vim.keymap.set("n", "<leader>G", function()
11-
vim.lsp.buf_request_sync(0, "workspace/executeCommand", {
12-
command = "gopls.gc_details",
13-
arguments = { "file://" .. vim.api.nvim_buf_get_name(0) },
14-
}, 2000)
15-
end, { desc = "lsp: show GC details", buffer = event.buf })
169
-- run current test
1710
vim.keymap.set("n", "<leader>t", function()
1811
local ok, inTestfile, testName = pcall(SurroundingTestName)
@@ -29,9 +22,9 @@ vim.api.nvim_create_autocmd("LspAttach", {
2922
},
3023
}, 10000)
3124
if not result or result[1].error then
32-
vim.notify("Test failed", 4)
25+
vim.notify("Test failed", vim.log.levels.ERROR)
3326
else
34-
vim.notify("Test ok", 2)
27+
vim.notify("Test ok", vim.log.levels.INFO)
3528
end
3629
end, { desc = "lsp: run test at cursor", buffer = event.buf })
3730
end,

home/nvim/init.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,5 @@ require("lazy").setup({
3535
},
3636
},
3737
})
38+
39+
vim.keymap.set("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Manage plugins" })

home/nvim/lua/aucmd.lua

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,6 @@ vim.api.nvim_create_autocmd({ "VimEnter" }, {
4343
pattern = "*",
4444
callback = function()
4545
vim.cmd("clearjumps")
46-
47-
vim.lsp.start({
48-
cmd = { "typos-lsp" },
49-
root_dir = vim.fs.dirname(vim.fs.find({ "README.md", ".git/" }, { upward = true })[1]),
50-
single_file_support = true,
51-
init_options = {
52-
diagnosticSeverity = "hint",
53-
},
54-
})
5546
end,
5647
})
5748

@@ -114,9 +105,9 @@ vim.api.nvim_create_autocmd({ "BufRead" }, {
114105
group = vim.api.nvim_create_augroup("add_autocmd_on_buf_enter", { clear = true }),
115106
pattern = { "*" },
116107
callback = function(_)
117-
-- skip those on some filetypes
118108
if vim.o.filetype == "gitcommit" then
119-
return
109+
vim.cmd.normal("1G0") -- discard any position there might be on file
110+
return -- skip the usual things
120111
end
121112
-- mark as persisted
122113
vim.api.nvim_create_autocmd({ "InsertEnter", "BufModifiedSet" }, {
@@ -147,13 +138,6 @@ vim.api.nvim_create_autocmd("TermOpen", {
147138
pattern = "*",
148139
callback = function(_)
149140
vim.opt.relativenumber = false
150-
end,
151-
})
152-
vim.api.nvim_create_autocmd({ "WinEnter", "BufWinEnter", "TermOpen" }, {
153-
group = vim.api.nvim_create_augroup("on_term_enter", { clear = true }),
154-
callback = function(event)
155-
if vim.startswith(vim.api.nvim_buf_get_name(event.buf), "term://") then
156-
vim.cmd.startinsert()
157-
end
141+
vim.cmd.startinsert()
158142
end,
159143
})

home/nvim/lua/lsp.lua

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,33 @@ local function root_dir(patterns)
1212
upward = true,
1313
})[1])
1414
end
15+
16+
-- remove defaults
17+
vim.keymap.del("n", "gO")
18+
vim.keymap.del("n", "gra")
19+
vim.keymap.del("n", "gri")
20+
vim.keymap.del("n", "grn")
21+
vim.keymap.del("n", "grr")
22+
23+
-- add my own
24+
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, { desc = "lsp: rename symbol" })
25+
vim.keymap.set("n", "<leader>?", vim.lsp.buf.code_action, { desc = "lsp: run code action" })
26+
vim.keymap.set("n", "go", vim.lsp.buf.document_symbol, { desc = "lsp: show symbols" })
27+
vim.keymap.set("n", "gO", vim.lsp.buf.workspace_symbol, { desc = "lsp: show workspacesymbols" })
28+
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "lsp: show definition" })
29+
vim.keymap.set("n", "gD", vim.lsp.buf.type_definition, { desc = "lsp: show type definition" })
30+
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { desc = "lsp: show implementations" })
31+
vim.keymap.set("n", "gr", function()
32+
vim.lsp.buf.references({ includeDeclaration = false })
33+
end, { desc = "lsp: show references" })
34+
vim.keymap.set("n", "gh", vim.lsp.buf.incoming_calls, { desc = "lsp: show callers" })
35+
vim.keymap.set("n", "gH", vim.lsp.buf.outgoing_calls, { desc = "lsp: show callees" })
36+
vim.keymap.set("n", "<leader>sd", vim.diagnostic.setqflist, { desc = "lsp: list diagnostics" })
37+
1538
vim.lsp.config("gopls", {
1639
cmd = { "gopls" },
1740
filetypes = { "go", "gomod", "gowork", "gotmpl" },
18-
on_attach = function(client, _)
41+
on_attach = function(_, _)
1942
-- modify some semantic tokens
2043
vim.api.nvim_create_autocmd("LspTokenUpdate", {
2144
callback = function(args)
@@ -58,11 +81,13 @@ vim.lsp.config("gopls", {
5881
},
5982
},
6083
})
84+
6185
vim.lsp.config("templ", {
6286
cmd = { "templ", "lsp" },
6387
filetypes = { "templ" },
6488
root_dir = root_dir({ "go.mod", "go.sum" }),
6589
})
90+
6691
vim.lsp.config("javascript", {
6792
init_options = {
6893
hostInfo = "neovim",
@@ -79,6 +104,7 @@ vim.lsp.config("javascript", {
79104
root_dir = root_dir(),
80105
single_file_support = true,
81106
})
107+
82108
vim.lsp.config("lua_ls", {
83109
cmd = { "lua-language-server" },
84110
filetypes = { "lua" },
@@ -94,22 +120,21 @@ vim.lsp.config("lua_ls", {
94120
},
95121
},
96122
})
123+
97124
vim.lsp.config("nixd", {
98125
cmd = { "nixd" },
99126
filetypes = { "nix" },
100127
single_file_support = true,
101128
root_dir = root_dir(),
102129
})
103130

104-
vim.lsp.enable({ "gopls", "nixd", "templ", "javascript", "lua_ls" })
105-
106-
vim.api.nvim_create_autocmd("LspAttach", {
107-
group = vim.api.nvim_create_augroup("on_lsp_attach", {}),
108-
callback = function(event)
109-
-- commands
110-
vim.api.nvim_buf_create_user_command(event.buf, "LspRestart", function(_)
111-
vim.lsp.stop_client(vim.lsp.get_clients(), true)
112-
vim.cmd("edit!")
113-
end, { desc = "Restart all active LSP clients" })
114-
end,
131+
vim.lsp.config("typos-lsp", {
132+
cmd = { "typos-lsp" },
133+
root_dir = root_dir(),
134+
single_file_support = true,
135+
init_options = {
136+
diagnosticSeverity = "hint",
137+
},
115138
})
139+
140+
vim.lsp.enable({ "gopls", "typos-lsp", "nixd", "templ", "javascript", "lua_ls" })

home/nvim/lua/maps.lua

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,16 @@ vim.keymap.set("n", "gl", function()
2828
local lcount = vim.api.nvim_buf_line_count(0)
2929
local last_change = vim.api.nvim_buf_get_mark(0, ".")
3030
if last_change[1] > 0 and last_change[1] <= lcount then
31-
pcall(vim.api.nvim_win_set_cursor, 0, last_change)
31+
if pcall(vim.api.nvim_win_set_cursor, 0, last_change) then
32+
vim.cmd.normal("m'")
33+
end
3234
return
3335
end
3436
local last_leave = vim.api.nvim_buf_get_mark(0, '"')
3537
if last_leave[1] > 0 and last_leave[1] <= lcount then
36-
pcall(vim.api.nvim_win_set_cursor, 0, last_leave)
38+
if pcall(vim.api.nvim_win_set_cursor, 0, last_leave) then
39+
vim.cmd.normal("m'")
40+
end
3741
return
3842
end
3943
end, { desc = "jump to last leave or last edit" })
@@ -71,6 +75,8 @@ end, { silent = true, desc = "go to next buffer" })
7175
vim.keymap.set("n", "<s-tab>", function()
7276
vim.cmd("bp")
7377
end, { silent = true, desc = "go to previous buffer" })
78+
79+
-- clear accumulated buffers
7480
vim.keymap.set("n", "<leader>x", function()
7581
vim.notify("Clearing buffers...")
7682
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
@@ -108,13 +114,6 @@ vim.keymap.set("n", "dd", function()
108114
end
109115
end, { desc = "delete line", expr = true })
110116

111-
-- no lsp defaults
112-
vim.keymap.del("n", "gO")
113-
vim.keymap.del("n", "gra")
114-
vim.keymap.del("n", "gri")
115-
vim.keymap.del("n", "grn")
116-
vim.keymap.del("n", "grr")
117-
118117
-- open jumplist
119118
vim.keymap.set("n", "<leader>sj", function()
120119
local has_snacks = pcall(require, "snacks")
@@ -167,20 +166,7 @@ vim.keymap.set("n", "<leader>sC", function()
167166
end
168167
end, { desc = "Changelist" })
169168

170-
-- toggle quickfix
169+
-- toggle quickfix (overwritten by snacks plugin)
171170
vim.keymap.set("n", "<leader><leader>", function()
172171
vim.cmd.cwindow()
173172
end, { desc = "open quickfix" })
174-
175-
-- lsp
176-
vim.keymap.set("n", "<cr>", vim.diagnostic.open_float, { desc = "lsp: open diagnostic" })
177-
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, { desc = "lsp: rename symbol" })
178-
vim.keymap.set("n", "<leader>?", vim.lsp.buf.code_action, { desc = "lsp: run code action" })
179-
vim.keymap.set("n", "go", vim.lsp.buf.document_symbol, { desc = "lsp: show symbols" })
180-
vim.keymap.set("n", "gO", vim.lsp.buf.workspace_symbol, { desc = "lsp: show workspacesymbols" })
181-
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "lsp: show definition" })
182-
vim.keymap.set("n", "gD", vim.lsp.buf.type_definition, { desc = "lsp: show type definition" })
183-
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { desc = "lsp: show implementations" })
184-
vim.keymap.set("n", "<leader>sd", vim.diagnostic.setqflist, { desc = "lsp: list diagnostics" })
185-
186-
vim.keymap.set("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Manage plugins" })

0 commit comments

Comments
 (0)