Compare commits

...

7 Commits

Author SHA1 Message Date
Rob Watson 431566d260 feat(nvim): migrate to gitsigns.nvim 2023-10-01 08:43:03 +02:00
Rob Watson 5762d37163 fix(nvim): cmp config 2023-10-01 08:10:27 +02:00
Rob Watson 8f9a26b5ce fix(nvim): gopls config 2023-10-01 08:10:15 +02:00
Rob Watson 565e336cb8 fix(nvim): lualine config 2023-10-01 08:09:56 +02:00
Rob Watson 9535194a33 fix(nvim): remove Get_project_node_modules_path() 2023-10-01 08:09:02 +02:00
Rob Watson 7c1ab65e48 feat(nvim): add ES shortcuts 2023-10-01 08:06:50 +02:00
Rob Watson e4a676d7c8 chore(nvim): remove whitespace in sql buftype 2023-10-01 08:06:28 +02:00
7 changed files with 113 additions and 27 deletions

18
nvimrc
View File

@ -105,7 +105,7 @@ augroup vimrc
" https://github.com/fatih/vim-go/issues/1757#issuecomment-565130503
autocmd FileType qf if (getwininfo(win_getid())[0].loclist != 1) | wincmd J | endif
" Remove trailing whitespace pre-save:
autocmd FileType go,ruby,markdown,rust,python,markdown,lua autocmd BufWritePre <buffer> silent! %s/\s\+$//e
autocmd FileType go,ruby,markdown,rust,python,markdown,lua,sql autocmd BufWritePre <buffer> silent! %s/\s\+$//e
augroup end
" Don't remember the current directory for a given file:
@ -126,6 +126,8 @@ imap <left> <nop>
imap <right> <nop>
nmap ]q :cn<cr>
nmap [q :cp<cr>
nmap + ]
nmap ` [
nnoremap <silent> <leader>w :up<cr>
nnoremap <silent> <leader>/ :nohlsearch<cr>
@ -180,7 +182,6 @@ endfunction
nnoremap <leader>as :Git<cr>
nnoremap <leader>ab :Git blame<cr>
nnoremap <leader>ac :Commits<cr>
nnoremap <leader>ah :GitGutterLineHighlightsToggle<cr>
nnoremap <leader>aY :call CopyGitURLToLineOrRange()<cr>
vnoremap <leader>aY :call CopyGitURLToLineOrRange()<cr>
nnoremap <leader>ao :call OpenGitURLToLineOrRange()<cr>
@ -240,15 +241,10 @@ packadd! nvim-web-devicons " https://github.com/nvim-tree/nvim-web-devicons.git
lua require "lightline_config"
" vim-gitgutter configuration
packadd! vim-gitgutter " https://github.com/airblade/vim-gitgutter.git
set signcolumn=yes
nmap ]h <Plug>(GitGutterNextHunk)
nmap [h <Plug>(GitGutterPrevHunk)
omap ih <Plug>(GitGutterTextObjectInnerPending)
omap ah <Plug>(GitGutterTextObjectOuterPending)
xmap ih <Plug>(GitGutterTextObjectInnerVisual)
xmap ah <Plug>(GitGutterTextObjectOuterVisual)
" gitsigns.nvim
packadd! gitsigns.nvim " https://github.com/lewis6991/gitsigns.nvim.git
lua require "gitsigns_config"
" enable inline vim highlighting:
let g:vimsyn_embed= 'lPr'

View File

@ -1,6 +1,6 @@
local prettier = function()
return {
exe = Get_project_node_modules_path() .. "/.bin/prettier",
exe = vim.fn.getcwd() .. "/node_modules/.bin/prettier",
args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
stdin = true,
}

View File

@ -0,0 +1,93 @@
require("gitsigns").setup({
signs = {
add = { text = "" },
change = { text = "~" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "%" },
untracked = { text = "" },
},
signcolumn = true,
numhl = false,
linehl = false,
word_diff = false,
watch_gitdir = {
follow_files = true,
},
attach_to_untracked = true,
current_line_blame = true,
current_line_blame_opts = {
virt_text = true,
virt_text_pos = "eol",
delay = 1000,
ignore_whitespace = false,
},
current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>",
sign_priority = 6,
update_debounce = 100,
status_formatter = nil,
max_file_length = 40000,
preview_config = {
border = "single",
style = "minimal",
relative = "cursor",
row = 0,
col = 1,
},
yadm = {
enable = false,
},
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
map("n", "]h", function()
if vim.wo.diff then
return "]h"
end
vim.schedule(function()
gs.next_hunk()
end)
return "<Ignore>"
end, { expr = true })
map("n", "[h", function()
if vim.wo.diff then
return "[h"
end
vim.schedule(function()
gs.prev_hunk()
end)
return "<Ignore>"
end, { expr = true })
map("n", "<leader>hs", gs.stage_hunk)
map("n", "<leader>hr", gs.reset_hunk)
map("v", "<leader>hs", function()
gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end)
map("v", "<leader>hr", function()
gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
end)
map("n", "<leader>hS", gs.stage_buffer)
map("n", "<leader>hu", gs.undo_stage_hunk)
map("n", "<leader>hR", gs.reset_buffer)
map("n", "<leader>hp", gs.preview_hunk)
map("n", "<leader>hb", function()
gs.blame_line({ full = true })
end)
map("n", "<leader>tb", gs.toggle_current_line_blame)
map("n", "<leader>hd", gs.diffthis)
map("n", "<leader>hD", function()
gs.diffthis("~")
end)
map("n", "<leader>td", gs.toggle_deleted)
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
end,
})

View File

@ -1,16 +1,3 @@
-- Return the node_modules path for this project. If the project root contains a
-- frontend/ directory, assume node_modules lives there.
function Get_project_node_modules_path()
local root_path = vim.fn.getcwd()
local frontend_path = root_path .. "/frontend"
local is_frontend = vim.fn.isdirectory(frontend_path) ~= 0
local base_path = root_path
if is_frontend then
base_path = frontend_path
end
return base_path .. "/node_modules"
end
-- Return the project's go module path from go.mod, or an empty string if the file cannot be read.
function Get_project_go_module_path()
local root_path = vim.fn.getcwd()

View File

@ -66,7 +66,7 @@ require("lualine").setup({
},
},
lualine_y = { { "progress", padding = { left = 1, right = 0 } } },
lualine_z = { { "location", padding = { left = 1, right = 0 } } },
lualine_z = { { "location", padding = { left = 1, right = 1 } } },
},
inactive_sections = {
lualine_a = {},

View File

@ -57,6 +57,7 @@ nvim_lsp.gopls.setup({
-- Disalbing linksInHover may not be working as expected:
linksInHover = false,
usePlaceholders = true,
experimentalPostfixCompletions = true,
analyses = {
unusedparams = true,
shadow = true,
@ -66,6 +67,9 @@ nvim_lsp.gopls.setup({
},
},
},
init_options = {
usePlaceholders = true,
},
capabilities = capabilities,
on_attach = on_attach,
})

View File

@ -1,9 +1,15 @@
local cmp = require("cmp")
-- local cmp_buffer = require("cmp_buffer")
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
cmp.setup({
completion = {
completeopt = "menu,menuone,noselect",
completeopt = "menu,menuone,noinsert,noselect",
},
snippet = {
expand = function(args)