Compare commits

...

2 Commits

Author SHA1 Message Date
Amanda Graven f5b5d5d0ae none-ls, codelens maps, telescope subdir maps 2023-10-18 18:31:48 +02:00
Amanda Graven a1fe12252f Folding with nvim-ufo, quickfix mappings 2023-10-18 18:29:53 +02:00
1 changed files with 92 additions and 25 deletions

117
init.lua
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')
@ -166,7 +180,8 @@ au('User', {
vim.keymap.set('', 'n', 'gj', {silent = true, buffer = true})
vim.keymap.set('', 'e', 'gk', {silent = true, buffer = true})
end
end
end,
desc = 'Override Startify mappings',
})
au('BufWritePost', {
pattern = '*/.config/nvim/init.lua',
@ -251,6 +266,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 +301,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 --
@ -300,7 +323,7 @@ require'packer'.startup(function(use)
use 'mfussenegger/nvim-jdtls'
use 'simrat39/rust-tools.nvim'
use 'pmizio/typescript-tools.nvim'
use {'jose-elias-alvarez/null-ls.nvim', requires = {'nvim-lua/plenary.nvim'}, config = function ()
use {'nvimtools/none-ls.nvim', requires = {'nvim-lua/plenary.nvim'}, config = function ()
local null_ls = require'null-ls'
null_ls.setup {
sources = {
@ -412,7 +435,9 @@ require'packer'.startup(function(use)
}
end}
use {'theHamsta/nvim-dap-virtual-text', config = function()
require'nvim-dap-virtual-text'.setup{}
require'nvim-dap-virtual-text'.setup {
clear_on_continue = true,
}
end}
use {'mxsdev/nvim-dap-vscode-js', requires = {'mfussenegger/nvim-dap'}, config = function()
require'dap-vscode-js'.setup {
@ -519,6 +544,10 @@ require'packer'.startup(function(use)
integrations = {
diffview = true,
},
signs = {
item = {"", ""},
section = {"", ""},
},
}
end}
use {'rcarriga/nvim-notify', after = 'telescope.nvim', config = function ()
@ -533,7 +562,11 @@ require'packer'.startup(function(use)
end}
use 'mhinz/vim-startify'
use {'nvim-telescope/telescope.nvim', after = 'which-key.nvim', config = function()
require'telescope'.setup {
local ok, telescope = pcall(require, 'telescope')
if not ok then return end
telescope.builtin = require'telescope.builtin'
telescope.themes = require'telescope.themes'
telescope.setup {
defaults = {
sorting_strategy = 'ascending',
mappings = {
@ -559,8 +592,10 @@ require'packer'.startup(function(use)
-- TODO; check if this is right
full_path = true,
},
['ui-select'] = {
require'telescope.themes'.get_cursor()
['ui-select'] = telescope.themes.get_cursor {
layout_config = {
height = 15,
},
},
},
}
@ -570,9 +605,19 @@ require'packer'.startup(function(use)
["<Space>"] = {'<Cmd>Telescope<CR>', 'List pickers'},
f = {'<Cmd>Telescope find_files<CR>', 'Files'},
F = {'<Cmd>Telescope file_browser<CR>', 'File browser'},
['<C-f>'] = {function ()
vim.ui.input({ completion = 'dir' }, function (input)
telescope.builtin.find_files { search_dirs = {input} }
end)
end, 'Files in subdirectory'},
d = {'<Cmd>Telescope find_files find_command=fd,--type,d,-I<CR>', 'Directories'},
r = {'<Cmd>Telescope oldfiles<CR>', 'Recent files'},
g = {'<Cmd>Telescope live_grep<CR>', 'Grep'},
G = {function ()
vim.ui.input({ completion = 'dir' }, function(input)
telescope.builtin.live_grep { search_dirs = {input} }
end)
end, 'Grep in subdirectory'},
b = {'<Cmd>Telescope buffers<CR>', 'Buffers'},
e = {'<Cmd>Telescope diagnostics<CR>', 'Diagnostics'},
h = {'<Cmd>Telescope help_tags<CR>', 'Help page'},
@ -698,8 +743,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 +770,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 +842,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 +889,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 +906,14 @@ 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'}
l = {vim.lsp.codelens.refresh, 'Show codelenses'},
L = {vim.lsp.codelens.run, 'Run codelens'},
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 +941,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 +1012,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 +1024,8 @@ au('FileType', {
end)(),
},
capabilities = capabilities,
on_attach = function (client, bufnr)
on_attach(client, bufnr)
jdtls.setup_dap()
@ -1171,6 +1226,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'})