1
0
Fork 0
mirror of https://github.com/pnx/dotfiles synced 2026-06-16 11:24:55 +02:00

moar nvim: snippets and other things

This commit is contained in:
Henrik Hautakoski 2024-05-18 14:56:00 +02:00
parent bcb84e54eb
commit 0fb3cfeef9
14 changed files with 426 additions and 138 deletions

View file

@ -1,4 +1,5 @@
local autocmd = vim.api.nvim_create_autocmd
local augroup = vim.api.nvim_create_augroup
-- Highlight on yank
autocmd('TextYankPost', {

View file

@ -1,61 +1,73 @@
return function()
local cmp = require('cmp')
local lspkind = require('utils.lspkind')
local icons = require('config.icons')
local cmp = require("cmp")
local utils = require("utils.cmd")
local luasnip = require("luasnip")
local lspkind = require("utils.lspkind")
local icons = require("config.icons")
local selectPrev = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert })
local selectNext = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert })
local selectPrev = utils.selectPrev({ behavior = cmp.SelectBehavior.Insert })
local selectNext = utils.selectNext({ behavior = cmp.SelectBehavior.Insert })
local windowstyle = {
border = vim.g.float_border or 'none',
winhighlight = 'Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None',
}
local windowstyle = {
border = vim.g.float_border or "none",
winhighlight = "Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None",
}
return {
preselect = false,
completion = {
completeopt = "menuone,longest,noinsert,preview"
},
view = {
entries = { name = 'custom', selection_order = 'near_cursor' },
},
window = {
documentation = windowstyle,
completion = windowstyle
},
mapping = {
["<Up>"] = selectPrev,
["<S-Tab>"] = selectPrev,
["<Down>"] = selectNext,
["<Tab>"] = selectNext,
["<C-c>"] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
},
snippet = {
expand = function(args)
require('luasnip').lsp_expand(args.body)
end,
},
formatting = {
fields = { "abbr", "kind", "menu" },
format = lspkind.format({
mode = 'symbol',
preset = 'codicons',
symbol_map = icons.symbols,
maxwidth = 40,
ellipsis_char = "...",
}),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'buffer' },
{ name = 'path' },
{ name = 'luasnip' }
},
experimental = {
ghost_text = {
hl_group = "NonText",
},
},
}
return {
preselect = false,
completion = {
completeopt = "menuone,longest,noinsert,preview",
},
view = {
entries = { name = "custom", selection_order = "near_cursor" },
},
window = {
documentation = windowstyle,
completion = windowstyle,
},
mapping = {
["<Up>"] = selectPrev,
["<S-Tab>"] = selectPrev,
["<Down>"] = selectNext,
["<Tab>"] = selectNext,
["<C-c>"] = cmp.mapping.abort(),
["<CR>"] = utils.confirm({ select = true }),
},
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
formatting = {
fields = { "abbr", "kind", "menu" },
format = lspkind.format({
mode = "symbol",
preset = "codicons",
symbol_map = icons.symbols,
maxwidth = 40,
ellipsis_char = "...",
}),
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
{
name = "spell",
option = {
keep_all_entries = false,
enable_in_context = function()
return true
end,
preselect_correct_word = true,
},
},
},
experimental = {
ghost_text = {
hl_group = "NonText",
},
},
}
end

View file

@ -51,6 +51,14 @@ return {
staged = "",
conflict = "",
},
todo = {
default = '',
warn = '',
perf = '',
bug = '',
hack = '',
test = '󰄉',
},
diagnostics = {
error = '',
warn = '',
@ -66,7 +74,7 @@ return {
unknown = '',
},
symbols = {
Text = "",
Text = "TXT",
Method = "",
Function = "󰊕",
Constructor = "",

View file

@ -46,7 +46,7 @@ return {
{ { "n", "v" }, "<leader>p", [["+p]], { desc = "Paste from system clipboard register" } },
-- File operations
-- { "n", "<leader>Fe", "<cmd>Ex<CR>", { silent = true, desc = "Open Netrw" } },
{ "n", "gf", "<cmd>e <cfile><CR>", { silent = true, desc = "Open (or create) file under cursor" } },
{ "n", "<leader>Fc", ":CreateFile ", { silent = true, desc = "Create new file" } },
{ "n", "<leader>Fx", "<cmd>!chmod +x %<CR>", { silent = true, desc = "Set execute flag on current file" } },
@ -71,11 +71,15 @@ return {
{ "n", "<leader>rw", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
{ desc = "search+replace word under cursor" } },
{ { "x" }, "<leader>fhx", [[:s/\(\x\{2\}\)/0x\1, /g]], { desc = "Format hex" } },
{ { "x" }, "<leader>fha", [[:s/0x\(\x\{1\}\X\)/0x0\1/g]], { desc = "Format each hex number to be 2 characters long" } },
{ { "x" }, "<leader>fhn", [[:s/\(\(0x\x\{1,2\}, \)\{8\}\)/\1\r/g]], { desc = "Format hex with 8 bytes per row" } },
-- Hex formatting
{ "x", "<leader>fhx", [[:s/\(\x\{2\}\)/0x\1, /g]], { desc = "Format hex" } },
{ "x", "<leader>fha", [[:s/0x\(\x\{1\}\X\)/0x0\1/g]], { desc = "Format each hex number to be 2 characters long" } },
{ "x", "<leader>fhn", [[:s/\(\(0x\x\{1,2\}, \)\{8\}\)/\1\r/g]], { desc = "Format hex with 8 bytes per row" } },
-- {{"x"}, "<leader>hb", [[:'<,'>s/\(\x\{2\}\)/0x\1, /g<cr>]], { desc = "Format a hex string to byte array"}},
-- Case formatting
{ "x", "<leader>fcsc", [[:s/\%V\([a-z]\+\)_\?/\u\1/g]], { desc = "Convert text from snake_case to CamelCase" } },
-- diagnostics
{ "n", "<leader>do", vim.diagnostic.open_float, { desc = "Open diagnostics" } },
{ "n", "<leader>dn", vim.diagnostic.get_next, { desc = "Goto next" } },
@ -85,14 +89,17 @@ return {
{ "n", "<leader>m", ":terminal tmuxs<cr>i", { desc = "Open tmux manager" } },
{ "n", "Q", "<nop>" },
{ "n", "Q", "<nop>" }, -- NOPE
},
whichkey = {
mode = { "n", "v" },
mode = { "n", "v", "x" },
["<leader>r"] = { name = "+Rename" },
["<leader>b"] = { name = "+Buffers" },
["<leader>f"] = { name = "+Format" },
["<leader>fc"] = { name = "+Case" },
["<leader>fcs"] = { name = "+snake_case" },
["<leader>fh"] = { name = "+Hex" },
["<leader>F"] = { name = "+Files" },
["<leader>d"] = { name = "+Diagnostics" },
["<leader>s"] = { name = "+Search" },

View file

@ -1,6 +1,7 @@
vim.g.lsp_zero_ui_float_border = vim.g.float_border or 'none'
return {
document_highlight = true,
servers = {
-- PHP
phpactor = {

View file

@ -35,7 +35,7 @@ set.wrap = false -- Disable line wrap
set.pumheight = 20
set.laststatus = 3
set.splitkeep = "screen"
set.scrolloff = 20
set.scrolloff = 10
-- Configure how new splits should be opened
set.splitright = true
@ -67,6 +67,10 @@ set.incsearch = true
set.ignorecase = true
set.smartcase = true
-- Spell stuff, because i cant english
set.spell = true
set.spelllang = { 'en_us' }
-- line numbers
set.number = true
set.relativenumber = true