aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2023-11-06 17:14:37 -0600
committerToby Vincent <tobyv@tobyvin.dev>2023-11-06 17:14:37 -0600
commit08797f4958f5948348068f2c08765e70c6889147 (patch)
tree9683319797f853392b90cba71c46956c8fd25b75
parent2363ce941d2ecedc9ac5e6e4cd478d039e799d85 (diff)
feat(nvim): update to nvim v0.10.0-dev-324fad1nvim-v0.10.0
-rw-r--r--nvim/.config/nvim/lua/tobyvin/keymaps.lua16
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp.lua87
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua73
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua12
-rw-r--r--nvim/.config/nvim/lua/tobyvin/options.lua1
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/dap.lua6
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua21
7 files changed, 120 insertions, 96 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/keymaps.lua b/nvim/.config/nvim/lua/tobyvin/keymaps.lua
index a01557a..8afa44d 100644
--- a/nvim/.config/nvim/lua/tobyvin/keymaps.lua
+++ b/nvim/.config/nvim/lua/tobyvin/keymaps.lua
@@ -13,6 +13,22 @@ vim.keymap.set({ "n", "v" }, "<leader>Y", [["+Y]], { desc = "yank lines into sel
vim.keymap.set({ "n", "v" }, "<leader>p", [["+p]], { desc = "put lines from selection register" })
vim.keymap.set({ "n", "v" }, "<leader>P", [["+P]], { desc = "put lines from selection register" })
+vim.keymap.set({ "i", "s" }, "<Tab>", function()
+ if vim.snippet.jumpable(1) then
+ return "<cmd>lua vim.snippet.jump(1)<cr>"
+ else
+ return "<Tab>"
+ end
+end, { expr = true })
+
+vim.keymap.set({ "i", "s" }, "<S-Tab>", function()
+ if vim.snippet.jumpable(-1) then
+ return "<cmd>lua vim.snippet.jump(-1)<cr>"
+ else
+ return "<Tab>"
+ end
+end, { expr = true })
+
vim.keymap.set("n", "gqq", function()
local cursor = vim.api.nvim_win_get_cursor(0)
vim.cmd.normal("gggqG")
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp.lua b/nvim/.config/nvim/lua/tobyvin/lsp.lua
index d60111e..1b96855 100644
--- a/nvim/.config/nvim/lua/tobyvin/lsp.lua
+++ b/nvim/.config/nvim/lua/tobyvin/lsp.lua
@@ -8,91 +8,14 @@ vim.api.nvim_create_autocmd("LspAttach", {
group = augroup,
desc = "setup lsp",
callback = function(args)
- ---@type lsp.Client
local client = vim.lsp.get_client_by_id(args.data.client_id)
-
- if client.server_capabilities.documentHighlightProvider then
- vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
- group = augroup,
- buffer = args.buf,
- callback = vim.lsp.buf.document_highlight,
- desc = "highlight references",
- })
-
- vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
- group = augroup,
- buffer = args.buf,
- callback = vim.lsp.buf.clear_references,
- desc = "clear references",
- })
- end
-
- if client.server_capabilities.hoverProvider then
- vim.keymap.set({ "n", "v" }, "K", vim.lsp.buf.hover, { desc = "hover", buffer = args.buf })
- end
-
- if client.server_capabilities.signatureHelpProvider then
- vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, {
- desc = "signature help",
- buffer = args.buf,
- })
- end
-
- local on_list = function(options)
- vim.fn.setqflist({}, " ", options)
- vim.api.nvim_command("cfirst")
- end
-
- if client.server_capabilities.declarationProvider then
- vim.keymap.set("n", "gD", function()
- vim.lsp.buf.declaration({ on_list = on_list })
- end, { desc = "declaration", buffer = args.buf })
- end
-
- if client.server_capabilities.definitionProvider then
- vim.keymap.set("n", "gd", function()
- vim.lsp.buf.definition({ on_list = on_list })
- end, { desc = "definition", buffer = args.buf })
- end
-
- if client.server_capabilities.typeDefinitionProvider then
- vim.keymap.set("n", "go", function()
- vim.lsp.buf.type_definition({ on_list = on_list })
- end, { desc = "type definition", buffer = args.buf })
- end
-
- if client.server_capabilities.implementationProvider then
- vim.keymap.set("n", "gi", function()
- vim.lsp.buf.implementation({ on_list = on_list })
- end, { desc = "implementation", buffer = args.buf })
- end
-
- if client.server_capabilities.referencesProvider then
- vim.keymap.set("n", "gr", function()
- vim.lsp.buf.references(nil, { on_list = on_list })
- end, { desc = "references", buffer = args.buf })
- end
-
- if client.server_capabilities.renameProvider then
- vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, {
- desc = "rename",
- buffer = args.buf,
- })
- end
-
- if client.server_capabilities.codeActionProvider then
- vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, {
- desc = "code action",
- buffer = args.buf,
- })
+ if not client then
+ return
end
- if client.server_capabilities.experimental then
- if client.server_capabilities.experimental.externalDocs then
- vim.keymap.set("n", "gx", vim.lsp.buf.external_docs, {
- desc = "external_docs",
- buffer = args.buf,
- })
+ for method, setup_handler in pairs(require("tobyvin.lsp.capabilities")) do
+ if client.supports_method(method, { bufnr = args.buf }) then
+ setup_handler(args.buf)
end
end
end,
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua b/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua
new file mode 100644
index 0000000..3d2d765
--- /dev/null
+++ b/nvim/.config/nvim/lua/tobyvin/lsp/capabilities.lua
@@ -0,0 +1,73 @@
+local on_list = function(options)
+ vim.fn.setqflist({}, " ", options)
+ vim.api.nvim_command("cfirst")
+end
+
+local M = {
+ ["textDocument/documentHighlight"] = function(bufnr)
+ vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
+ buffer = bufnr,
+ callback = vim.lsp.buf.document_highlight,
+ desc = "lsp document highlight",
+ })
+ vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
+ buffer = bufnr,
+ callback = vim.lsp.buf.clear_references,
+ desc = "lsp clear references",
+ })
+ end,
+ ["textDocument/signatureHelp"] = function(bufnr)
+ vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, {
+ buffer = bufnr,
+ desc = "signature help",
+ })
+ end,
+ ["textDocument/declaration"] = function(bufnr)
+ vim.keymap.set("n", "gD", function()
+ vim.lsp.buf.declaration({ on_list = on_list })
+ end, { buffer = bufnr, desc = "declaration" })
+ end,
+ ["textDocument/definition"] = function(bufnr)
+ vim.keymap.set("n", "gd", function()
+ vim.lsp.buf.definition({ on_list = on_list })
+ end, { buffer = bufnr, desc = "definition" })
+ end,
+ ["textDocument/typeDefinition"] = function(bufnr)
+ vim.keymap.set("n", "go", function()
+ vim.lsp.buf.type_definition({ on_list = on_list })
+ end, { buffer = bufnr, desc = "type definition" })
+ end,
+ ["textDocument/implementation"] = function(bufnr)
+ vim.keymap.set("n", "gi", function()
+ vim.lsp.buf.implementation({ on_list = on_list })
+ end, { buffer = bufnr, desc = "implementation" })
+ end,
+ ["textDocument/inlayHint"] = function(bufnr)
+ vim.lsp.inlay_hint(bufnr, true)
+ end,
+ ["textDocument/references"] = function(bufnr)
+ vim.keymap.set("n", "gr", function()
+ vim.lsp.buf.references(nil, { on_list = on_list })
+ end, { buffer = bufnr, desc = "references" })
+ end,
+ ["textDocument/rename"] = function(bufnr)
+ vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, {
+ buffer = bufnr,
+ desc = "rename",
+ })
+ end,
+ ["textDocument/codeAction"] = function(bufnr)
+ vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, {
+ buffer = bufnr,
+ desc = "code action",
+ })
+ end,
+ ["experimental/externalDocs"] = function(bufnr)
+ vim.keymap.set("n", "gx", vim.lsp.buf.external_docs, {
+ buffer = bufnr,
+ desc = "external_docs",
+ })
+ end,
+}
+
+return M
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua
index a095d43..0e5b7d6 100644
--- a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua
+++ b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua
@@ -1,17 +1,15 @@
+local ms = vim.lsp.protocol.Methods
+
local M = {
- ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
+ [ms.textDocument_hover] = vim.lsp.with(vim.lsp.handlers.hover, {
border = "single",
}),
- ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
+ [ms.textDocument_signatureHelp] = vim.lsp.with(vim.lsp.handlers.signature_help, {
border = "single",
}),
["experimental/externalDocs"] = function(_, url)
if url then
- if vim.fn.executable("xdg-open") == 1 then
- require("plenary.job"):new({ command = "xdg-open", args = { url } }):start()
- else
- pcall(vim.fn["netrw#BrowseX"], url, 0)
- end
+ vim.ui.open(url)
end
end,
}
diff --git a/nvim/.config/nvim/lua/tobyvin/options.lua b/nvim/.config/nvim/lua/tobyvin/options.lua
index c4a0d99..ad19ffd 100644
--- a/nvim/.config/nvim/lua/tobyvin/options.lua
+++ b/nvim/.config/nvim/lua/tobyvin/options.lua
@@ -30,6 +30,7 @@ vim.opt.showbreak = string.rep(" ", 3)
vim.opt.signcolumn = "yes:1"
vim.opt.smartcase = true
vim.opt.smartindent = true
+vim.opt.smoothscroll = true
vim.opt.spelloptions = { "camel" }
vim.opt.splitbelow = true
vim.opt.splitright = true
diff --git a/nvim/.config/nvim/lua/tobyvin/utils/dap.lua b/nvim/.config/nvim/lua/tobyvin/utils/dap.lua
index 85bbf83..69a7bb2 100644
--- a/nvim/.config/nvim/lua/tobyvin/utils/dap.lua
+++ b/nvim/.config/nvim/lua/tobyvin/utils/dap.lua
@@ -5,7 +5,7 @@ function M.cargo_inspector(config)
-- Create a buffer to receive compiler progress messages
local compiler_msg_buf = vim.api.nvim_create_buf(false, true)
- vim.api.nvim_buf_set_option(compiler_msg_buf, "buftype", "nofile")
+ vim.bo[compiler_msg_buf].buftype = "nofile"
-- And a floating window in the corner to display those messages
local window_width = math.max(#final_config.name + 1, 50)
@@ -14,8 +14,8 @@ function M.cargo_inspector(config)
relative = "editor",
width = window_width,
height = window_height,
- col = vim.api.nvim_get_option("columns") - window_width - 1,
- row = vim.api.nvim_get_option("lines") - window_height - 1,
+ col = vim.wo.columns:get() - window_width - 1,
+ row = vim.wo.lines:get() - window_height - 1,
border = "rounded",
style = "minimal",
})
diff --git a/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua b/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua
index b128baf..e794b95 100644
--- a/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua
+++ b/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua
@@ -36,14 +36,27 @@ local M = {
return {}
end
- local Job = require("plenary.job")
- local job = Job:new({ command = "fortune", args = { "-s" } })
+ local opts = {
+ text = true,
+ timeout = 30,
+ }
+ local cowsay
if vim.fn.executable("cowsay") == 1 then
- job = Job:new({ command = "cowsay", writer = job })
+ cowsay = vim.system({ "cowsay" }, { text = true, stdin = true })
+ opts.stdout = function(_, data)
+ cowsay:write(data)
+ end
+ end
+
+ local stdout = vim.system({ "fortune", "-s" }, opts):wait().stdout
+
+ if cowsay then
+ cowsay:write(nil)
+ stdout = cowsay:wait().stdout
end
- return job:sync()
+ return vim.split(stdout or "", "\n")
end,
{
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ",