Folding with nvim-ufo, quickfix mappings

main
Amanda Graven 2023-09-04 15:57:31 +02:00
parent 605216bcbb
commit a1fe12252f
1 changed files with 61 additions and 19 deletions

View File

@ -39,6 +39,7 @@ o.title = true -- Set title of terminal window
o.updatetime = 300 -- Write swap file every 300 ms (supposedly reduces delays)
o.foldlevel = 99 -- Keep all folds open
o.foldlevelstart = 99
o.foldenable = true -- Don't disable folds
o.conceallevel = 2 -- Hide concealed text, use replacement if defined
opt.listchars = { -- Symbols for whitespace chars when 'list' is enabled
tab = '🭰 ',
@ -48,6 +49,9 @@ opt.listchars = { -- Symbols for whitespace chars when 'list' is ena
opt.fillchars = { -- Characters to fill certain types of empty space with
diff = ' ',
fold = ' ',
foldopen= '',
foldsep=' ',
foldclose=''
}
opt.diffopt:append({'indent-heuristic', 'algorithm:histogram'})
@ -111,14 +115,24 @@ do
-- which-key might not be available yet
local ok, which_key = pcall(require, 'which-key')
if ok then
which_key.register { ['<C-w>!'] = {'<Cmd>copen<CR>', 'Quickfix window'} }
which_key.register { ['<F2>'] = {'<Cmd>set number! relativenumber!<CR>', 'Toggle relative numbers'} }
which_key.register { ['<F3>'] = {'<Cmd>set number!<CR>', 'Toggle line numbers'} }
which_key.register { ['<A-h>'] = {'<C-w>h', 'Go to the left window'} }
which_key.register { ['<A-l>'] = {'<C-w>l', 'Go to the right window'} }
which_key.register { ['<A-n>'] = {'<C-w>n', 'Go to the up window'} }
which_key.register { ['<A-e>'] = {'<C-w>e', 'Go to the down window'} }
which_key.register {
['<C-w>!'] = {'<Cmd>copen<CR>', 'Quickfix window'},
['<F2>'] = {'<Cmd>set number! relativenumber!<CR>', 'Toggle relative numbers'},
['<F3>'] = {'<Cmd>set number!<CR>', 'Toggle line numbers'},
['<A-h>'] = {'<C-w>h', 'Go to the left window'},
['<A-l>'] = {'<C-w>l', 'Go to the right window'},
['<A-j>'] = {'<C-w>j', 'Go to the up window'},
['<A-k>'] = {'<C-w>k', 'Go to the down window'},
['+'] = {zoom_in, "Zoom in"},
['-'] = {zoom_out, "Zoom out"},
['<Leader>q'] = {
name = 'Quickfix',
q = {'<Cmd>copen<CR>', 'Quickfix list'},
c = {'<Cmd>cclose<CR>', 'Close quickfix'},
n = {'<Cmd>cnext<CR>', 'Next quickfix'},
p = {'<Cmd>cprev<CR>', 'Previous quickfix'},
}
}
which_key.register { ['<C-l>'] = {function ()
local ok, notify = pcall(require, 'notify')
@ -251,6 +265,7 @@ require'packer'.startup(function(use)
use 'mboughaba/i3config.vim'
use 'plasticboy/vim-markdown'
use 'mracos/mermaid.vim'
use 'lifepillar/pgsql.vim'
use 'ajouellette/sway-vim-syntax'
use 'cespare/vim-toml'
use 'rust-lang/rust.vim'
@ -285,6 +300,13 @@ require'packer'.startup(function(use)
use {'julian/vim-textobj-variable-segment', requires = {'kana/vim-textobj-user'}, branch = 'main'}
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'}
use 'windwp/nvim-ts-autotag'
use {'kevinhwang91/nvim-ufo', requires = 'kevinhwang91/promise-async', config = function()
local ok, ufo = pcall(require, 'ufo')
if not ok then return end
vim.keymap.set('n', 'zR', ufo.openAllFolds)
vim.keymap.set('n', 'zR', ufo.closeAllFolds)
ufo.setup {}
end}
use 'hrsh7th/vim-vsnip'
-- LSP --
@ -698,8 +720,8 @@ vim.keymap.set('n', '<Leader>G', '<Cmd>tab Git<CR>', {desc = 'Git status (new ta
require'gitsigns'.setup {
on_attach = function ()
local gitsigns = require'gitsigns'
vim.keymap.set('n', ']h', gitsigns.next_hunk, {desc = 'Next hunk'})
vim.keymap.set('n', '[h', gitsigns.prev_hunk, {desc = 'Previous hunk'})
vim.keymap.set('n', ']c', gitsigns.next_hunk, {desc = 'Next hunk'})
vim.keymap.set('n', '[c', gitsigns.prev_hunk, {desc = 'Previous hunk'})
--- Prompt interactively for global comparison base
local function change_base()
@ -725,7 +747,7 @@ require'gitsigns'.setup {
d = {gitsigns.toggle_deleted, 'Toggle deleted lines'},
w = {gitsigns.toggle_word_diff, 'Toggle word diffs'},
l = {gitsigns.blame_line, 'Blame current line'},
L = {gitsigns.toggle_line_blame, 'Toggle line blame'},
L = {gitsigns.toggle_current_line_blame, 'Toggle line blame'},
b = {':Gitsigns change_base ', 'Change diff base'},
B = {gitsigns.reset_base, 'Reset diff base'},
}
@ -797,7 +819,7 @@ cmp.setup {
{'i', 's'}
),
-- Scroll documentation up
['<C-e'] = cmp.mapping(cmp.mapping.scroll_docs(4), {'i', 'c'}),
['<C-e>'] = cmp.mapping(cmp.mapping.scroll_docs(4), {'i', 'c'}),
-- Scroll documentation down
['<C-y>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), {'i', 'c'}),
-- Complete common substring
@ -844,7 +866,13 @@ cmp.setup.filetype({'dap-repl', 'dapui_watches', 'dapui_hover'}, {
{ name = 'dap' },
},
})
-- Which client functionality to tell LSP servers we support
local capabilities = require'cmp_nvim_lsp'.default_capabilities()
-- nvim-ufo folding capabilities
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
---- lsp: language servers ----
--- Performs keymaps and other setup specific to buffers with LSP enabled
@ -855,12 +883,12 @@ local function on_attach(client, bufnr)
require'which-key'.register({
['<Leader>l'] = {
D = {vim.lsp.buf.declaration, 'Declaration'},
d = {vim.lsp.buf.definition, 'Definition'},
i = {vim.lsp.buf.implementation, 'Implementation'},
d = {'<Cmd>Telescope lsp_definitions<CR>', 'Definition'},
i = {'<Cmd>Telescope lsp_implementations<CR>', 'Implementation'},
a = {vim.lsp.buf.code_action, 'Code action'},
r = {vim.lsp.buf.rename, 'Rename'},
t = {vim.lsp.buf.type_definition, 'Type definition'},
u = {vim.lsp.buf.references, 'Usages/references'}
t = {'<Cmd>Telescope lsp_type_definitions<CR>', 'Type definition'},
u = {'<Cmd>Telescope lsp_references<CR>', 'Usages/references'}
},
g = {
d = {vim.lsp.buf.definition, 'Goto definition'},
@ -888,7 +916,7 @@ local function on_attach(client, bufnr)
['<C-k>'] = {vim.lsp.buf.signature_help, 'Function signature'},
}, {buffer = bufnr})
require'which-key'.register({
['<M-k'] = {vim.lsp.buf.signature_help, 'Function signature'}
['<M-k>'] = {vim.lsp.buf.signature_help, 'Function signature'}
}, {buffer = bufnr, mode = 'i'})
vim.bo.tagfunc = 'v:lua.vim.lsp.tagfunc'
@ -959,11 +987,11 @@ au('FileType', {
bundles = (function ()
-- add java-debug-adapter
local bundles = {
vim.fn.glob(vim.fn.stdpath('data') .. '/mason/packages/java-debug-adapter/extension/server/com.microsoft.java.debug.plugin-*.jar', 1)
vim.fn.glob(vim.fn.stdpath('data') .. '/mason/packages/java-debug-adapter/extension/server/com.microsoft.java.debug.plugin-*.jar', true)
}
-- add java-test
vim.list_extend(bundles, vim.split(
vim.fn.glob(vim.fn.stdpath'data' .. '/mason/packages/java-test/extension/server/*.jar', 1),
vim.fn.glob(vim.fn.stdpath'data' .. '/mason/packages/java-test/extension/server/*.jar', true),
'\n'
))
@ -971,6 +999,8 @@ au('FileType', {
end)(),
},
capabilities = capabilities,
on_attach = function (client, bufnr)
on_attach(client, bufnr)
jdtls.setup_dap()
@ -1171,6 +1201,18 @@ require('nvim-tree').setup {
width = 45,
},
}
-- Handle restoring sessions with nvim-tree windows properly
au('BufEnter', {
pattern = 'NvimTree*',
callback = function()
local api = require('nvim-tree.api')
local view = require('nvim-tree.view')
if not view.is_visible() then
api.tree.open()
end
end,
})
vim.cmd'highlight NvimTreeOpenedFile guifg=NONE guibg=NONE gui=italic'
vim.keymap.set('n', '<Leader>t', '<Cmd>NvimTreeFindFile<CR>', {desc = 'Nvim Tree'})