Skip to content

Commit 23f6556

Browse files
committed
nvim: fixes
1 parent b5a0687 commit 23f6556

File tree

3 files changed

+96
-54
lines changed

3 files changed

+96
-54
lines changed

home/nvim/ftplugin/go.lua

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,37 +32,24 @@ vim.api.nvim_create_autocmd("LspAttach", {
3232

3333
-- surrounding test name
3434
function SurroundingTestName()
35-
local inTestfile = false
35+
-- return immediately if we're not in a test file
3636
if vim.fn.expand("%:t"):sub(-#"_test.go", -1) ~= "_test.go" then
37-
return inTestfile, ""
38-
else
39-
inTestfile = true
37+
return false, ""
4038
end
4139
-- see if we can find a specific test to run
42-
local cursor = vim.api.nvim_win_get_cursor(0)
43-
local lsp_response, lsp_err = vim.lsp.buf_request_sync(
44-
0,
45-
"textDocument/documentSymbol",
46-
{ textDocument = vim.lsp.util.make_text_document_params() },
47-
1000
48-
)
49-
if lsp_err ~= nil or lsp_response == nil then
50-
return inTestfile, ""
51-
end
52-
53-
for _, symbol in pairs(lsp_response[1].result) do
54-
if
55-
symbol["detail"] ~= nil
56-
and symbol.detail:sub(1, 4) == "func"
57-
and symbol.name:sub(1, 4) == "Test"
58-
and cursor[1] > symbol.range.start.line
59-
and cursor[1] < symbol.range["end"].line
60-
then
61-
return inTestfile, symbol.name
40+
local node = vim.treesitter.get_node()
41+
while node do
42+
if node:type() == "function_declaration" or node:type() == "method_declaration" then
43+
local name = node:named_child(0)
44+
if name then
45+
return true, vim.treesitter.get_node_text(name, 0)
46+
end
47+
break
6248
end
49+
node = node:parent()
6350
end
6451

65-
return inTestfile, ""
52+
return true, ""
6653
end
6754

6855
vim.keymap.set("n", "gY", function()

home/nvim/lua/lsp.lua

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
local function root_dir(patterns)
2-
patterns = patterns or {}
2+
patterns = patterns or { ".git/", "README.md", "flake.nix" }
33
local matches = vim.fs.find(patterns, {
44
upward = true,
55
})
66
if matches then
77
return vim.fs.dirname(matches[1])
88
end
9-
10-
local default_patterns = { ".git/", "README.md", "flake.nix" }
11-
return vim.fs.dirname(vim.fs.find(default_patterns, {
12-
upward = true,
13-
})[1])
9+
return "~"
1410
end
1511

1612
-- remove defaults
@@ -22,8 +18,17 @@ vim.keymap.del("n", "grr")
2218

2319
-- add my own
2420
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" })
21+
vim.keymap.set({ "n", "x" }, "<leader>?", function()
22+
local line = vim.api.nvim_win_get_cursor(0)[1]
23+
for _, lens in pairs(vim.lsp.codelens.get(0)) do
24+
if lens.range.start.line == (line - 1) and lens.command and lens.command.command ~= "" then
25+
vim.lsp.codelens.run()
26+
return
27+
end
28+
end
29+
vim.lsp.buf.code_action()
30+
end, { desc = "lsp: run codelens or code action" })
31+
vim.keymap.set({ "n", "x" }, "go", vim.lsp.buf.document_symbol, { desc = "lsp: show symbols" })
2732
vim.keymap.set("n", "gO", vim.lsp.buf.workspace_symbol, { desc = "lsp: show workspacesymbols" })
2833
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "lsp: show definition" })
2934
vim.keymap.set("n", "gD", vim.lsp.buf.type_definition, { desc = "lsp: show type definition" })
@@ -39,6 +44,14 @@ vim.lsp.config("gopls", {
3944
cmd = { "gopls" },
4045
filetypes = { "go", "gomod", "gowork", "gotmpl" },
4146
on_attach = function(_, _)
47+
vim.o.foldexpr = "v:lua.vim.lsp.foldexpr()"
48+
49+
-- display code lenses
50+
vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, {
51+
callback = function(args)
52+
vim.lsp.codelens.refresh({ bufnr = args.buf })
53+
end,
54+
})
4255
-- modify some semantic tokens
4356
vim.api.nvim_create_autocmd("LspTokenUpdate", {
4457
callback = function(args)
@@ -66,6 +79,9 @@ vim.lsp.config("gopls", {
6679
},
6780
semanticTokens = true,
6881
staticcheck = true,
82+
analyses = {
83+
ST1000 = false,
84+
},
6985
vulncheck = "Imports",
7086
hints = {
7187
assignVariableTypes = true,
@@ -76,8 +92,6 @@ vim.lsp.config("gopls", {
7692
parameterNames = true,
7793
rangeVariableTypes = true,
7894
},
79-
completeUnimported = true,
80-
deepCompletion = true,
8195
},
8296
},
8397
})
@@ -137,4 +151,24 @@ vim.lsp.config("typos-lsp", {
137151
},
138152
})
139153

140-
vim.lsp.enable({ "gopls", "typos-lsp", "nixd", "templ", "javascript", "lua_ls" })
154+
vim.lsp.config("harper", {
155+
cmd = { "harper-ls", "--stdio" },
156+
filetypes = { "markdown" },
157+
root_dir = root_dir(),
158+
settings = {
159+
["harper-ls"] = {
160+
linters = {
161+
SpellCheck = false,
162+
ToDoHyphen = false,
163+
},
164+
},
165+
},
166+
})
167+
168+
vim.lsp.config("fish", {
169+
cmd = { "fish-lsp", "start" },
170+
filetypes = { "fish" },
171+
root_dir = root_dir(),
172+
})
173+
174+
vim.lsp.enable({ "gopls", "typos-lsp", "nixd", "templ", "javascript", "lua_ls", "harper", "fish" })

home/nvim/lua/plugins.lua

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ return inject_all({
3434
appearance = {
3535
use_nvim_cmp_as_default = true,
3636
},
37+
cmdline = {
38+
enabled = true,
39+
keymap = {
40+
preset = "cmdline",
41+
["<c-space>"] = { "select_and_accept" },
42+
},
43+
},
3744
completion = {
3845
accept = {
3946
auto_brackets = {
@@ -474,6 +481,7 @@ return inject_all({
474481
},
475482
N = require("mini.extra").gen_ai_spec.number(),
476483
F = function(ai, _, _)
484+
-- TODO: write using lua ts api
477485
if ai == "i" then
478486
return require("mini.ai").gen_spec.treesitter({ i = "@function.name", a = "@function.name" }, {})(
479487
"i",
@@ -693,8 +701,7 @@ return inject_all({
693701
},
694702

695703
{
696-
"echasnovski/mini-git",
697-
name = "mini.git",
704+
"echasnovski/mini.git",
698705
opts = {},
699706
},
700707

@@ -946,8 +953,7 @@ return inject_all({
946953
"echasnovski/mini.icons",
947954
},
948955
{
949-
"echasnovski/mini-git",
950-
name = "mini.git",
956+
"echasnovski/mini.git",
951957
},
952958
{
953959
"echasnovski/mini.diff",
@@ -1083,21 +1089,41 @@ return inject_all({
10831089
{ "MunifTanjim/nui.nvim" },
10841090
},
10851091
opts = {
1092+
cmdline = {
1093+
enabled = true,
1094+
},
1095+
messages = {
1096+
enabled = true,
1097+
view_search = false,
1098+
},
1099+
popupmenu = {
1100+
enabled = false,
1101+
backend = "cmp",
1102+
},
1103+
notify = {
1104+
enabled = true,
1105+
},
10861106
lsp = {
1107+
progress = {
1108+
enabled = true,
1109+
},
1110+
override = {
1111+
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
1112+
["vim.lsp.util.stylize_markdown"] = true,
1113+
},
10871114
hover = {
10881115
silent = true,
10891116
opts = {
10901117
border = "solid",
10911118
max_width = 100,
10921119
},
10931120
},
1094-
override = {
1095-
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
1096-
["vim.lsp.util.stylize_markdown"] = true,
1097-
},
10981121
signature = {
10991122
enabled = false,
11001123
},
1124+
message = {
1125+
enabled = true,
1126+
},
11011127
},
11021128
presets = {
11031129
bottom_search = true,
@@ -1142,7 +1168,7 @@ return inject_all({
11421168

11431169
{
11441170
"kevinhwang91/nvim-bqf",
1145-
ft = "qf",
1171+
event = "VeryLazy",
11461172
dependencies = {
11471173
{
11481174
"junegunn/fzf",
@@ -1423,14 +1449,14 @@ return inject_all({
14231449
{ desc = "open dap-view" },
14241450
},
14251451
{ -- step over/next
1426-
"s",
1452+
"n",
14271453
function()
14281454
dap.step_over()
14291455
end,
14301456
{ desc = "step forward" },
14311457
},
14321458
{ -- step back
1433-
"S",
1459+
"N",
14341460
function()
14351461
dap.step_back()
14361462
end,
@@ -1704,7 +1730,7 @@ return inject_all({
17041730
desc = "find more files smartly",
17051731
},
17061732
{
1707-
"<leader>,",
1733+
"<leader>;",
17081734
function()
17091735
Snacks.picker.buffers()
17101736
end,
@@ -1916,8 +1942,7 @@ return inject_all({
19161942
"folke/snacks.nvim",
19171943
dependencies = {
19181944
{
1919-
"echasnovski/mini-git",
1920-
name = "mini.git",
1945+
"echasnovski/mini.git",
19211946
},
19221947
},
19231948
keys = {
@@ -2196,7 +2221,6 @@ return inject_all({
21962221
bigfile = { enabled = true },
21972222
input = { enabled = true },
21982223
image = { enabled = true },
2199-
notifier = { enabled = true },
22002224
quickfile = { enabled = true },
22012225
scroll = {
22022226
enabled = true,
@@ -2206,9 +2230,6 @@ return inject_all({
22062230
},
22072231
statuscolumn = { enabled = true },
22082232
styles = {
2209-
notification = {
2210-
wo = { wrap = true },
2211-
},
22122233
zen = {
22132234
backdrop = {
22142235
transparent = false,

0 commit comments

Comments
 (0)