1
0

more refinement

This commit is contained in:
2025-03-31 20:18:34 +02:00
parent cfb96ceb85
commit 7c500df9f3
17 changed files with 363 additions and 110 deletions

Binary file not shown.

View File

@@ -0,0 +1,6 @@
return {
cmd = { "terraform-ls", "serve" },
root_markers = { ".terraform.lock", "backend.tf" },
filetypes = { "terraform", "tf" },
settings = {},
}

View File

@@ -18,7 +18,7 @@ vim.opt.backup = false -- creates a backup file
-- if a file is being edited by another program (or was written to file while editing with another program), it is not
-- allowed to be edited
vim.opt.writebackup = false
vim.opt.completeopt = "menuone,noselect" -- Set completeopt to have a better completion experience
vim.o.completeopt = "menuone,noinsert,popup,fuzzy"
vim.opt.termguicolors = true -- set termguicolors to enable highlight groups
vim.opt.whichwrap = "bs<>[]hl" -- which "horizontal" keys are allowed to travel to prev/next line
vim.opt.wrap = false -- display lines as one long line

View File

@@ -4,6 +4,7 @@
vim.lsp.enable("luals")
vim.lsp.enable("rust")
vim.lsp.enable("bashls")
vim.lsp.enable("terraform")
vim.lsp.config("*", {
capabilities = {
@@ -30,88 +31,116 @@ vim.api.nvim_create_autocmd("LspAttach", {
})
-- ]]
---[[AUTOCOMPLETION SETUP
vim.o.completeopt = "menuone,noinsert,popup,fuzzy"
-- [[INLAY HINTS
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
client.server_capabilities.completionProvider.triggerCharacters = vim.split("qwertyuiopasdfghjklzxcvbnm. ", "")
vim.api.nvim_create_autocmd({ "TextChangedI" }, {
buffer = args.buf,
callback = function()
vim.lsp.completion.get()
end,
})
-- if client:supports_method("textDocument/implementation") then
-- Create a keymap for vim.lsp.buf.implementation ...
-- end
if client.server_capabilities.inlayHintProvider then
vim.lsp.inlay_hint.enable(true, { bufnr = vim.fn.bufnr() })
end
vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true })
---
---[[Code required to add documentation popup for an item
local _, cancel_prev = nil, function() end
vim.api.nvim_create_autocmd("CompleteChanged", {
buffer = args.buf,
callback = function()
if client:supports_method("textDocument/implementation") then
cancel_prev()
local info = vim.fn.complete_info({ "selected" })
local completionItem =
vim.tbl_get(vim.v.completed_item, "user_data", "nvim", "lsp", "completion_item")
if nil == completionItem then
return
end
_, cancel_prev = vim.lsp.buf_request(
args.buf,
vim.lsp.protocol.Methods.completionItem_resolve,
completionItem,
function(err, item, ctx)
if not item then
return
end
local docs = (item.documentation or {}).value
local win = vim.api.nvim__complete_set(info["selected"], { info = docs })
if win.winid and vim.api.nvim_win_is_valid(win.winid) then
vim.treesitter.start(win.bufnr, "markdown")
vim.wo[win.winid].conceallevel = 3
end
end
)
end
end,
})
---]]
end,
})
-- ]]
-- Expanding multiline snippets
vim.api.nvim_create_augroup("user-snippet-expand", {})
vim.api.nvim_create_autocmd("CompleteDone", {
group = "user-snippet-expand",
desc = "Expand LSP snippet",
pattern = "*",
callback = function(opts)
local comp = vim.v.completed_item
local item = vim.tbl_get(comp, "user_data", "nvim", "lsp", "completion_item")
--
-- vim.api.nvim_create_autocmd("LspAttach", {
-- callback = function(args)
-- local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
-- client.server_capabilities.completionProvider.triggerCharacters = vim.split("qwertyuiopasdfghjklzxcvbnm. ", "")
-- vim.api.nvim_create_autocmd({ "TextChangedI" }, {
-- buffer = args.buf,
-- callback = function()
-- vim.lsp.completion.get()
-- end,
-- })
-- -- if client:supports_method("textDocument/implementation") then
-- -- Create a keymap for vim.lsp.buf.implementation ...
-- -- end
-- if client.server_capabilities.inlayHintProvider then
-- vim.lsp.inlay_hint.enable(true, { bufnr = vim.fn.bufnr() })
-- end
-- check that we were given a snippet
if not item or not item.insertTextFormat or item.insertTextFormat == 1 then
return
end
-- remove the inserted text
local cursor = vim.api.nvim_win_get_cursor(0)
local line = vim.api.nvim_get_current_line()
local lnum = cursor[1] - 1
local start_char = cursor[2] - #comp.word
vim.api.nvim_buf_set_text(opts.buf, lnum, start_char, lnum, #line, { "" })
-- insert snippet
local snip_text = vim.tbl_get(item, "textEdit", "newText") or item.insertText
assert(snip_text, "Language server indicated it had a snippet, but no snippet text could be found!")
require("luasnip").lsp_expand(snip_text)
end,
})
---AUTOCOMPLETION SETUP END]]
---[[AUTOCOMPLETION SETUP
-- vim.api.nvim_create_autocmd("LspAttach", {
-- callback = function(args)
-- local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
-- client.server_capabilities.completionProvider.triggerCharacters = vim.split("qwertyuiopasdfghjklzxcvbnm. ", "")
-- vim.api.nvim_create_autocmd({ "TextChangedI" }, {
-- buffer = args.buf,
-- callback = function()
-- vim.lsp.completion.get()
-- end,
-- })
-- -- if client:supports_method("textDocument/implementation") then
-- -- Create a keymap for vim.lsp.buf.implementation ...
-- -- end
-- if client.server_capabilities.inlayHintProvider then
-- vim.lsp.inlay_hint.enable(true, { bufnr = vim.fn.bufnr() })
-- end
-- vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true })
-- ---
-- ---[[Code required to add documentation popup for an item
-- local _, cancel_prev = nil, function() end
-- vim.api.nvim_create_autocmd("CompleteChanged", {
-- buffer = args.buf,
-- callback = function()
-- if client:supports_method("textDocument/implementation") then
-- cancel_prev()
-- local info = vim.fn.complete_info({ "selected" })
-- local completionItem =
-- vim.tbl_get(vim.v.completed_item, "user_data", "nvim", "lsp", "completion_item")
-- if nil == completionItem then
-- return
-- end
-- _, cancel_prev = vim.lsp.buf_request(
-- args.buf,
-- vim.lsp.protocol.Methods.completionItem_resolve,
-- completionItem,
-- function(err, item, ctx)
-- if not item then
-- return
-- end
-- local docs = (item.documentation or {}).value
-- local win = vim.api.nvim__complete_set(info["selected"], { info = docs })
-- if win.winid and vim.api.nvim_win_is_valid(win.winid) then
-- vim.treesitter.start(win.bufnr, "markdown")
-- vim.wo[win.winid].conceallevel = 3
-- end
-- end
-- )
-- end
-- end,
-- })
-- ---]]
-- end,
-- })
--
-- -- Expanding multiline snippets
-- vim.api.nvim_create_augroup("user-snippet-expand", {})
-- vim.api.nvim_create_autocmd("CompleteDone", {
-- group = "user-snippet-expand",
-- desc = "Expand LSP snippet",
-- pattern = "*",
-- callback = function(opts)
-- local comp = vim.v.completed_item
-- local item = vim.tbl_get(comp, "user_data", "nvim", "lsp", "completion_item")
--
-- -- check that we were given a snippet
-- if not item or not item.insertTextFormat or item.insertTextFormat == 1 then
-- return
-- end
--
-- -- remove the inserted text
-- local cursor = vim.api.nvim_win_get_cursor(0)
-- local line = vim.api.nvim_get_current_line()
-- local lnum = cursor[1] - 1
-- local start_char = cursor[2] - #comp.word
-- vim.api.nvim_buf_set_text(opts.buf, lnum, start_char, lnum, #line, { "" })
--
-- -- insert snippet
-- local snip_text = vim.tbl_get(item, "textEdit", "newText") or item.insertText
-- assert(snip_text, "Language server indicated it had a snippet, but no snippet text could be found!")
-- require("luasnip").lsp_expand(snip_text)
-- end,
-- })
-- ---AUTOCOMPLETION SETUP END]]

Binary file not shown.

View File

@@ -0,0 +1,105 @@
return {
{
"L3MON4D3/LuaSnip",
version = "v2.*",
dependencies = {
"rafamadriz/friendly-snippets",
},
-- install jsregexp (optional!).
build = "make install_jsregexp",
config = function()
local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local i = ls.insert_node
ls.add_snippets("lua", {
s("hello", {
t('print("hello world!")'),
}),
})
end,
},
{
"saghen/blink.cmp",
-- use a release tag to download pre-built binaries
version = "1.*",
dependencies = {
"moyiz/blink-emoji.nvim",
},
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
-- 'super-tab' for mappings similar to vscode (tab to accept)
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- All presets have the following mappings:
-- C-space: Open menu or open docs if already open
-- C-n/C-p or Up/Down: Select next/previous item
-- C-e: Hide menu
-- C-k: Toggle signature help (if signature.enabled = true)
--
-- See :h blink-cmp-config-keymap for defining your own keymap
keymap = { preset = "default" },
appearance = {
nerd_font_variant = "mono",
},
-- (Default) Only show the documentation popup when manually triggered
completion = { documentation = { auto_show = true } },
cmdline = {
keymap = {
-- recommended, as the default keymap will only show and select the next item
["<Tab>"] = { "show", "accept" },
},
completion = {
menu = { auto_show = true },
ghost_text = { enabled = true },
},
},
snippets = { preset = "luasnip" },
-- Default list of enabled providers defined so that you can extend it
-- elsewhere in your config, without redefining it, due to `opts_extend`
sources = {
default = { "lsp", "path", "snippets", "buffer", "emoji" },
providers = {
cmdline = {
min_keyword_length = function(ctx)
-- when typing a command, only show when the keyword is 3 characters or longer
if ctx.mode == "cmdline" and string.find(ctx.line, " ") == nil then
return 3
end
return 0
end,
},
emoji = {
module = "blink-emoji",
name = "Emoji",
score_offset = 15, -- Tune by preference
opts = { insert = true }, -- Insert emoji (default) or complete its name
should_show_items = function()
return vim.tbl_contains(
-- Enable emoji completion only for git commits and markdown.
-- By default, enabled for all file-types.
{ "gitcommit", "markdown" },
vim.o.filetype
)
end,
},
},
},
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
--
-- See the fuzzy documentation for more information
fuzzy = { implementation = "prefer_rust_with_warning" },
},
opts_extend = { "sources.default" },
},
}

View File

@@ -1,22 +0,0 @@
return {
{
"L3MON4D3/LuaSnip",
dependencies = {
"rafamadriz/friendly-snippets",
},
-- install jsregexp (optional!).
build = "make install_jsregexp",
config = function()
local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local i = ls.insert_node
ls.add_snippets("lua", {
s("hello", {
t('print("hello world!")'),
}),
})
end,
},
}

View File

@@ -43,11 +43,22 @@ return {
"node_modules",
"target",
".terraform",
".git",
".venv",
"Cargo.toml",
".git",
-- Ignore git submodules
"^./.git/",
"^./*/.git/",
".gitmodules",
".gitignore",
".*/%.git/.*", -- Ignore any .git directories in subdirectories
},
hidden = true,
-- Ignore git submodules
follow = true,
},
git_files = {
recurse_submodules = false,
show_untracked = true,
},
buffers = {
initial_mode = "normal",