From 36f68c6ab15230d58662632a5f32d6ad340d7b84 Mon Sep 17 00:00:00 2001 From: Amanda Graven Date: Fri, 5 Jan 2024 09:06:34 +0100 Subject: [PATCH] Formatting, remove outdated plugins, add dadbod-ui --- init.lua | 161 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 57 deletions(-) diff --git a/init.lua b/init.lua index 81d2705..78f03e0 100644 --- a/init.lua +++ b/init.lua @@ -1,8 +1,5 @@ --- Do fast startup if we can -do - local ok, _ = pcall(require, 'impatient') - if not ok then vim.notify('impatient unavailable') end -end +-- Enable experimental faster module loader +vim.loader.enable() ---- Built in settings ---- -- Create a convenient aliases @@ -15,12 +12,13 @@ local opt = vim.opt local workman = false -- Set font -o.guifont = 'Iosevka Term Slab,Iosevka:h10' +o.guifont = 'IosevkaTermSlab Nerd Font,IosevkaTerm Nerd Font,Iosevka Term Slab,Iosevka:h10:#e-subpixelantialias' +vim.g.neovide_floating_z_height = 1 if fn.hostname() == 'tappy' then g.neovide_refresh_rate = 144 end -opt.guicursor:append('a:blinkon1000') -- Blink cursor once a second for all modes +opt.guicursor:append('a:blinkon1000-blinkoff1000-blinkwait1000') -- Blink cursor once a second for all modes o.mouse = 'a' -- Enable mouse input o.termguicolors = true -- Enable 24bit terminal colors g.neovide_confirm_quit = 1 -- Confirm closing neovide window when changes are unsaved @@ -30,6 +28,9 @@ o.clipboard = 'unnamedplus' -- Use system clipboard by default o.hidden = true -- Allow buffers to not be attached to a window o.linebreak = true -- Enable word-wrapping at the end of visual lines o.breakindent = true -- preserve indentention on lines continuing from a wrap +opt.breakindentopt = { + sbr = true -- Line break character should appear before virtual indentention +} o.hlsearch = true -- Highlight search results o.scrolloff = 5 -- Margin between cursor and screen top/bottom o.showmatch = true -- Highlight matching brackets @@ -50,9 +51,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='' + foldopen = '', + foldsep = ' ', + foldclose = '' } opt.diffopt:append({'indent-heuristic', 'algorithm:histogram'}) if fn.has('nvim-0.10') then @@ -103,6 +104,9 @@ function _G.zoom(delta) local properties = { title = 'Font size', hide_from_history = true, + on_close = function() + zoom_notification = nil + end } if zoom_notification ~= nil then properties.replace = zoom_notification.id @@ -148,7 +152,7 @@ do which_key.register { [''] = {function() local ok, notify = pcall(require, 'notify') if ok then - notify.dismiss{} + notify.dismiss {} end vim.lsp.buf.clear_references() vim.cmd('nohlsearch|diffupdate|normal! ') @@ -277,7 +281,6 @@ require'packer'.startup(function(use) -- Filetype plugins -- use 'rhysd/vim-crystal' - use 'editorconfig/editorconfig-vim' use 'bakpakin/fennel.vim' use 'mboughaba/i3config.vim' use 'plasticboy/vim-markdown' @@ -285,23 +288,32 @@ require'packer'.startup(function(use) use 'lifepillar/pgsql.vim' use 'ajouellette/sway-vim-syntax' use 'cespare/vim-toml' - use 'rust-lang/rust.vim' -- Editing -- use 'LunarWatcher/auto-pairs' use 'ojroques/nvim-bufdel' use {'stevearc/conform.nvim', config = function() - require'conform'.setup {} + require'conform'.setup { + format_on_save = { + lsp_fallback = true, + filter = function(client) + return client.name == 'rust-analyzer' + end + } + } vim.api.nvim_create_user_command( 'Conform', function() - require'conform'.format() + require'conform'.format { + lsp_fallback = true, + } end, - {} + { + desc = 'Format buffer', + } ) end} - --use 'yuttie/comfortable-motion.vim' - use {'jbyuki/instant.nvim', config = function () + use {'jbyuki/instant.nvim', config = function() vim.g.instant_username = 'agraven' end} use {'mizlan/iswap.nvim', config = function() @@ -309,7 +321,7 @@ require'packer'.startup(function(use) require'which-key'.register{['s'] = {'ISwapWith','Swap'}} end} use 'bfredl/nvim-luadev' -- lua scratchpad - use {'windwp/nvim-projectconfig', config = function () + use {'windwp/nvim-projectconfig', config = function() require'nvim-projectconfig'.setup { -- Load project configuration when changing directory autocmd = true, @@ -317,10 +329,8 @@ require'packer'.startup(function(use) end} use 'tpope/vim-repeat' use 'tpope/vim-sleuth' - -- spellsitter: syntax aware spellchecking - use {'lewis6991/spellsitter.nvim', config = function() require'spellsitter'.setup() end} use 'tpope/vim-surround' - use {'vim-test/vim-test', config = function () + use {'vim-test/vim-test', config = function() vim.g['test#neovim#term_position'] = 'vert' vim.g['test#strategy'] = 'neovim' end} @@ -349,7 +359,7 @@ require'packer'.startup(function(use) use 'mfussenegger/nvim-jdtls' use 'simrat39/rust-tools.nvim' use 'pmizio/typescript-tools.nvim' - use {'nvimtools/none-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 = { @@ -359,7 +369,7 @@ require'packer'.startup(function(use) } end} use 'SmiteshP/nvim-navic' - use {'utilyre/barbecue.nvim', config = function () + use {'utilyre/barbecue.nvim', config = function() require'barbecue'.setup { show_modified = true, } @@ -368,10 +378,14 @@ require'packer'.startup(function(use) -- UI elements -- use 'vim-airline/vim-airline' use 'vim-airline/vim-airline-themes' - use {'taketwo/barbar.nvim', branch = 'schedule-wrap'} + use 'romgrk/barbar.nvim' use {'luckasRanarison/clear-action.nvim', config = function() require'clear-action'.setup { - signs = { enable = false }, + signs = { + enable = true, + combine = true, + show_count = false, + }, popup = { enable = true }, } end} @@ -379,9 +393,23 @@ require'packer'.startup(function(use) vim.g.bookmark_no_default_key_mappings = 1 vim.g.bookmark_save_per_working_dir = 1 end} + use {'kristijanhusak/vim-dadbod-ui', requires = {'tpope/vim-dadbod', 'kristijanhusak/vim-dadbod-completion'}, config = function() + vim.g.db_ui_use_nerd_fonts = 1 + vim.g.db_ui_auto_execute_table_helpers = 1 + vim.g.db_ui_win_position = 'right' + vim.o.previewheight = 40 + vim.api.nvim_create_autocmd('FileType', { + group = 'luarc', + pattern = {'sql','mysql','plsql'}, + callback = function() + require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} }) + end, + desc = 'SQL dadbod completion', + }) + end} use {'mfussenegger/nvim-dap', config = function() local dap = require'dap' - vim.fn.sign_define('DapBreakpoint', {text='⯃', texthl='DiagnosticError'}) + vim.fn.sign_define('DapBreakpoint', {text = '⯃', texthl = 'DiagnosticError'}) dap.adapters.codelldb = { type = 'server', port = '${port}', @@ -533,7 +561,7 @@ require'packer'.startup(function(use) enhanced_diff_hl = true, } end} - use {'stevearc/dressing.nvim', config = function() + use {'stevearc/dressing.nvim', after = 'telescope.nvim', config = function() vim.cmd'highlight link FloatTitle TelescopeBorder' require'dressing'.setup { input = { @@ -587,7 +615,7 @@ require'packer'.startup(function(use) }, } end} - use {'rcarriga/nvim-notify', after = 'telescope.nvim', config = function () + use {'rcarriga/nvim-notify', after = 'telescope.nvim', config = function() require'notify'.setup { stages = 'fade' } @@ -596,9 +624,18 @@ require'packer'.startup(function(use) end} use {'stevearc/overseer.nvim', after = 'nvim-dap', config = function() require'overseer'.setup() - vim.keymap.set('n', 'rr', 'OverseerToggle right', { desc = "Open" }) - vim.keymap.set('n', 'rn', 'OverseerRun', { desc = "New task" }) - vim.keymap.set('n', 'rc', 'OverseerRunCmd', { desc = "Run shell command" }) + require'which-key'.register { + ['r'] = { + name = 'Overseer (run tasks)', + r = {'OverseerToggle right', 'Open' }, + R = {'OverseerToggle bottom', 'Open (bottom)' }, + n = {'OverseerRun', 'New task' }, + c = {'OverseerRunCmd', 'Run shell command' }, + l = {'OverseerLoadBundle!', 'Load task list'}, + L = {'OverseerLoadBundle', 'Load and start task list'}, + s = {'OverseerSaveBundle', 'Save task list'} + } + } end} use 'mhinz/vim-startify' use {'nvim-telescope/telescope.nvim', after = 'which-key.nvim', config = function() @@ -649,8 +686,8 @@ require'packer'.startup(function(use) function() vim.ui.input( { completion = 'dir' }, - function(input) telescope.builtin.find_files { search_dirs = {input} } - end) + function(input) telescope.builtin.find_files { search_dirs = {input} } end + ) end, 'Files in subdirectory' }, @@ -689,7 +726,7 @@ require'packer'.startup(function(use) require'telescope'.load_extension('ui-select') end} use {'nvim-telescope/telescope-dap.nvim', after = 'telescope.nvim', config = function() - require'telescope'.load_extension'dap' + require'telescope'.load_extension('dap') end} use {'debugloop/telescope-undo.nvim', after = 'telescope.nvim', config = function() require'telescope'.load_extension('undo') @@ -703,17 +740,13 @@ require'packer'.startup(function(use) } end} use 'kyazdani42/nvim-tree.lua' - use 'simrat39/symbols-outline.nvim' + use 'hedyhli/outline.nvim' use {'folke/which-key.nvim', config = function() require'which-key'.setup() end} -- Utility and libraries use 'nvim-lua/plenary.nvim' use 'ryanoasis/vim-devicons' use 'kyazdani42/nvim-web-devicons' - if not vim.fn.has('nvim-0.8') then - use 'antoinemadec/FixCursorHold.nvim' - end - use 'lewis6991/impatient.nvim' -- speeds up load times use {'ellisonleao/dotenv.nvim', config = function() require'dotenv'.setup { enable_on_load = false, @@ -772,19 +805,29 @@ require'which-key'.register { [''] = {'BufferPick', 'Pick buffer'}, [''] = {'BufferPin', 'Pin buffer'}, [''] = {'BufferClose', 'Delete buffer'}, + [''] = {'BufferPickDelete', 'Delete picked buffer'}, [''] = {'BufferMovePrevious', 'Move buffer left'}, ['>'] = {'BufferMoveNext', 'Move buffer right'}, } +require'which-key'.register { + ['b'] = { + name = 'Buffers', + [','] = { 'BufferPrevious', 'Next buffer'}, + ['.'] = { 'BufferNext', 'Previous buffer'}, + b = {'BufferPick', 'Pick buffer'}, + p = {'BufferPin', 'Pin buffer'}, + d = {'BufferClose', 'Delete buffer'}, + x = {'BufferPickDelete', 'Delete picked buffer'}, + h = {'BufferMovePrevious', 'Move buffer left'}, + l = {'BufferMoveNext', 'Move buffer right'}, + } +} ---- devicons ---- require'nvim-web-devicons'.setup { default = true } ----- editorconfig ---- -g.EditorConfig_exclude_patterns = {'fugitive://.*'} - - ---- fidget ---- require'fidget'.setup {} @@ -828,6 +871,8 @@ require'gitsigns'.setup { L = {gitsigns.toggle_current_line_blame, 'Toggle line blame'}, b = {':Gitsigns change_base ', 'Change diff base'}, B = {gitsigns.reset_base, 'Reset diff base'}, + p = {gitsigns.preview_hunk_inline, 'Preview hunk'}, + P = {gitsigns.preview_hunk, 'Preview hunk popup'}, } } end @@ -903,7 +948,7 @@ cmp.setup { -- Complete common substring [''] = cmp.mapping(cmp.mapping.complete_common_string(), {'i', 'c'}), -- Complete - [''] = cmp.mapping(cmp.mapping.complete{}, {'i', 'c'}), + [''] = cmp.mapping(cmp.mapping.complete {}, {'i', 'c'}), -- Confirm [''] = cmp.mapping(cmp.mapping.confirm { select = false }, {'i', 'c'}), }, @@ -960,7 +1005,7 @@ au('LspAttach', { if not client then return end local function code_action() local ok, clear_action = pcall(require, 'clear-action') - if ok then + if ok and client.name ~= 'jdtls' then clear_action.code_action() else vim.lsp.buf.code_action() @@ -1144,7 +1189,6 @@ g.rustfmt_emit_files = 1 -- Use nigtly rustfmt for unstable settings g.rustfmt_command = 'rustup run nightly rustfmt' --- use cargo-lints if available ---- rust-tools ---- require'rust-tools'.setup { tools = { @@ -1186,6 +1230,9 @@ require'rust-tools'.setup { -- Enable proc macro support enable = true, }, + rustfmt = { + extraArgs = { '+nightly' } + }, }, }, }, @@ -1210,17 +1257,15 @@ g.startify_lists = { ---- symbols-outline ---- -require'symbols-outline'.setup { - -- Don't display preview automatically - auto_preview = false, - -- Don't highlight the hovered item - highlight_hovered_item = true, - -- Width should be in colums, not percent - relative_width = false, - -- width of the symbols window - width = 30, +require'outline'.setup { + outline_window = { + -- Use absolute number of columns instead of percentage for sizing + relative_width = false, + -- Window should be 30 columns wide + width = 30, + }, } -require'which-key'.register({['o'] = {'SymbolsOutline', 'Symbols outline'}}) +require'which-key'.register({['o'] = {'Outline', 'Symbols outline'}}) ---- tree ---- @@ -1246,6 +1291,8 @@ require('nvim-tree').setup { git = { -- Don't hide .gitignore'd files by default ignore = false, + -- Extend timeout + timeout = 5000, }, -- Reload the tree when its window is focused reload_on_bufenter = true,