diff --git a/dot_config/nvim/after/ftplugin/help.vim b/dot_config/nvim/after/ftplugin/help.vim deleted file mode 100644 index e292fdb..0000000 --- a/dot_config/nvim/after/ftplugin/help.vim +++ /dev/null @@ -1,3 +0,0 @@ -nnoremap q :q -setlocal nonumber -setlocal signcolumn=auto diff --git a/dot_config/nvim/after/ftplugin/man.vim b/dot_config/nvim/after/ftplugin/man.vim deleted file mode 100644 index fa4c396..0000000 --- a/dot_config/nvim/after/ftplugin/man.vim +++ /dev/null @@ -1,3 +0,0 @@ -nnoremap q :q -setlocal nonumber -setlocal signcolumn=auto diff --git a/dot_config/nvim/after/ftplugin/qf.vim b/dot_config/nvim/after/ftplugin/qf.vim deleted file mode 100644 index fa4c396..0000000 --- a/dot_config/nvim/after/ftplugin/qf.vim +++ /dev/null @@ -1,3 +0,0 @@ -nnoremap q :q -setlocal nonumber -setlocal signcolumn=auto diff --git a/dot_config/nvim/lua/configs/colors.lua b/dot_config/nvim/lua/configs/colors.lua index 83b6a70..c7894ae 100644 --- a/dot_config/nvim/lua/configs/colors.lua +++ b/dot_config/nvim/lua/configs/colors.lua @@ -107,6 +107,7 @@ end ---|'warn' ---|'info' ---|'hint' +---|'NONE' --}}} -- style type {{{ --- @alias style @@ -122,7 +123,6 @@ end ---|'italic' ---|'standout' ---|'nocombine' -NONE -- }}} ---@param fg ?color diff --git a/dot_config/nvim/lua/configs/keys.lua b/dot_config/nvim/lua/configs/keys.lua index fa943da..231ce5c 100644 --- a/dot_config/nvim/lua/configs/keys.lua +++ b/dot_config/nvim/lua/configs/keys.lua @@ -9,7 +9,12 @@ function M.setup() vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to next diagnostic' }) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to prev diagnostic' }) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Diagnostic to loclist' }) - + vim.keymap.set('n', 'n', "'Nn'[v:searchforward]", { expr = true, desc = 'Next search result' }) + vim.keymap.set('x', 'n', "'Nn'[v:searchforward]", { expr = true, desc = 'Next search result' }) + vim.keymap.set('o', 'n', "'Nn'[v:searchforward]", { expr = true, desc = 'Next search result' }) + vim.keymap.set('n', 'N', "'nN'[v:searchforward]", { expr = true, desc = 'Prev search result' }) + vim.keymap.set('x', 'N', "'nN'[v:searchforward]", { expr = true, desc = 'Prev search result' }) + vim.keymap.set('o', 'N', "'nN'[v:searchforward]", { expr = true, desc = 'Prev search result' }) end return M diff --git a/dot_config/nvim/lua/configs/neoray.lua b/dot_config/nvim/lua/configs/neoray.lua deleted file mode 100644 index 776a118..0000000 --- a/dot_config/nvim/lua/configs/neoray.lua +++ /dev/null @@ -1,15 +0,0 @@ -vim.o.guifont = 'Noto Sans Mono:14h' - -if not vim.g.neoray then - return -end - -vim.cmd.NeoraySet('CursorAnimTime', 0) -vim.cmd.NeoraySet('Transparency', '0.95') -vim.cmd.NeoraySet('TargetTPS', 120) -vim.cmd.NeoraySet('ContextMenuOn', false) -vim.cmd.NeoraySet('BoxDrawingOn', true) -vim.cmd.NeoraySet('WindowSize', '100x40') -vim.cmd.NeoraySet('WindowState', 'none') -vim.cmd.NeoraySet('KeyZoomIn', '<>') -vim.cmd.NeoraySet('KeyZoomOut', '<>') diff --git a/dot_config/nvim/lua/configs/noice.lua b/dot_config/nvim/lua/configs/noice.lua deleted file mode 100644 index 83c34e8..0000000 --- a/dot_config/nvim/lua/configs/noice.lua +++ /dev/null @@ -1,18 +0,0 @@ -require('noice').setup({ - lsp = { - -- override markdown rendering so that **cmp** and other plugins use **Treesitter** - override = { - ['vim.lsp.util.convert_input_to_markdown_lines'] = true, - ['vim.lsp.util.stylize_markdown'] = true, - ['cmp.entry.get_documentation'] = true, - }, - }, - -- you can enable a preset for easier configuration - presets = { - bottom_search = true, -- use a classic bottom cmdline for search - command_palette = false, -- position the cmdline and popupmenu together - long_message_to_split = true, -- long messages will be sent to a split - inc_rename = false, -- enables an input dialog for inc-rename.nvim - lsp_doc_border = false, -- add a border to hover docs and signature help - }, -}) diff --git a/dot_config/nvim/lua/configs/options.lua b/dot_config/nvim/lua/configs/options.lua index a565621..4d9ea57 100644 --- a/dot_config/nvim/lua/configs/options.lua +++ b/dot_config/nvim/lua/configs/options.lua @@ -30,7 +30,7 @@ function M.setup() vim.o.shiftwidth = 4 vim.o.showcmd = true vim.o.sidescrolloff = 5 - vim.o.signcolumn = 'auto' + vim.o.signcolumn = 'yes' vim.o.smartcase = true vim.o.smartindent = true vim.o.softtabstop = 4 @@ -40,25 +40,73 @@ function M.setup() vim.o.splitbelow = true vim.o.splitright = true --vim.o.clipboard = "unnamedplus" + vim.o.guifont = 'Hack:12h' + + + vim.o.list = true + vim.o.listchars = 'tab:❮⋯❯,trail:⸬,nbsp:·' vim.o.grepprg = 'rg --vimgrep --no-ignore --smart-case $*' vim.o.grepformat = '%f:%l:%c:%m' - vim.o.statusline = - '%{fnamemodify(getcwd(),":t")} ' -- basename of cwd - .. '%(%{get(b:,"gitsigns_head","")} %)' -- branch - .. '%<%f%( [%M%R%W]%)' -- filename and modification flags + vim.o.statusline = '' + .. ' %{fnamemodify(getcwd(),":t")}' -- basename of cwd + .. '%( │  %{get(b:,"gitsigns_head","")}%)' -- branch + .. ' │  %<%f%( [%M%R%W]%)' -- filename and modification flags .. '%=' -- rest is right .. '%y ' -- filetype .. '%-7.(%3.l:%-3.(%c%V%)%) %P' -- ruler + + vim.api.nvim_create_autocmd('FileType', { - pattern = 'neo-tree', - callback = function () - vim.wo.statusline = '%{getcwd()}' + pattern = { 'qf', 'man', 'help' }, + callback = function(args) + local buf = args.buf + local bo = vim.bo[buf] + if bo.filetype == 'help' and bo.buftype ~= 'help' then + return + end + vim.bo[buf].buflisted = false + vim.wo.number = false + vim.wo.signcolumn = 'auto' + vim.keymap.set('n', 'q', ':q', { buffer = buf }) + + if vim.bo[buf].filetype ~= 'qf' then + vim.wo.statusline = '%Y %f%=%l:%v %P' + end + end }) + vim.api.nvim_create_autocmd({ 'BufEnter', 'FileType' }, { + pattern = { 'Trouble' }, + callback = function(args) + local opts = require('trouble.config').options + local words = vim.split(opts.mode, '[%W]', {}) + for i, word in ipairs(words) do + words[i] = word:sub(1, 1):upper() .. word:sub(2) + end + + vim.b[args.buf].trouble_mode = table.concat(words, ' ') + + vim.wo.statusline = '%Y [%{b:trouble_mode}]%=%P' + end + }) + + if vim.g.neoray then + vim.cmd.NeoraySet('CursorAnimTime', 0) + vim.cmd.NeoraySet('Transparency', '0.95') + vim.cmd.NeoraySet('TargetTPS', 120) + vim.cmd.NeoraySet('ContextMenuOn', false) + vim.cmd.NeoraySet('BoxDrawingOn', true) + vim.cmd.NeoraySet('WindowSize', '100x40') + vim.cmd.NeoraySet('WindowState', 'none') + vim.cmd.NeoraySet('KeyZoomIn', '<>') + vim.cmd.NeoraySet('KeyZoomOut', '<>') + end + + end return M diff --git a/dot_config/nvim/lua/configs/packages/colors.lua b/dot_config/nvim/lua/configs/packages/colors.lua index b12e89d..1972ede 100644 --- a/dot_config/nvim/lua/configs/packages/colors.lua +++ b/dot_config/nvim/lua/configs/packages/colors.lua @@ -236,6 +236,7 @@ function M.config() link('CmpItemAbbrMatch', 'GruvboxAquaBold') link('CmpItemAbbrMatchFuzzy', 'GruvboxAquaBold') + link('WhiteSpace', 'GruvboxBg3') -- make it more bright gr:hl('LineNr', 'gray', 'dark0_hard', { 'underdotted' }) gr:hl('LspCodeLens', 'gray', nil, { 'italic' }) diff --git a/dot_config/nvim/lua/configs/packages/lsp.lua b/dot_config/nvim/lua/configs/packages/lsp.lua index e03b19b..07da490 100644 --- a/dot_config/nvim/lua/configs/packages/lsp.lua +++ b/dot_config/nvim/lua/configs/packages/lsp.lua @@ -1,21 +1,3 @@ -local M = { - 'neovim/nvim-lspconfig', - dependencies = { - 'folke/neodev.nvim', - 'b0o/schemastore.nvim', - 'SmiteshP/nvim-navic', - { 'j-hui/fidget.nvim', config = true }, - { 'ray-x/lsp_signature.nvim', opts = { hint_prefix = '⥊ ', floating_window = false, hint_scheme = 'Identifier' } }, - 'hrsh7th/nvim-cmp', - 'Hoffs/omnisharp-extended-lsp.nvim', - }, - keys = { - { 'li', 'LspInfo', desc = 'Lsp info' }, - { 'll', 'LspLog', desc = 'Lsp log' }, - }, - lazy = false -} - local function formatting_filter(c) local bl = { 'phpactor' @@ -41,57 +23,50 @@ local function on_attach(args) -- {{{ end -- Mappings. - local opts = { noremap = true, silent = true, buffer = args.buf } local function mkOpts(desc) return { noremap = true, silent = true, buffer = args.buf, desc = desc } end - -- use LSP default tagfunc - -- if client.server_capabilities.definitionProvider then - -- vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) - -- end - - if client.server_capabilities.declarationProvider then - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, mkOpts('LSP declaration')) - end - + -- null-ls has mostly no hover and therefore trashes manpages for shell if client.supports_method('textDocument/hover') and client.name ~= 'null-ls' then vim.keymap.set('n', 'K', vim.lsp.buf.hover, mkOpts('LSP hover')) end - if client.server_capabilities.implementationProvider then - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, mkOpts('LSP implementation')) - end - if client.server_capabilities.signatureHelpProvider then vim.keymap.set('n', '', vim.lsp.buf.signature_help, mkOpts('LSP signature help')) vim.keymap.set('i', '', vim.lsp.buf.signature_help, mkOpts('LSP signature help')) end - if client.server_capabilities.codeLensProvider then - vim.api.nvim_create_autocmd( - { 'BufEnter', 'CursorHold', 'InsertLeave' }, { - callback = vim.lsp.codelens.refresh, - buffer = bufnr, - }) - vim.keymap.set('n', 'cl', vim.lsp.codelens.run, mkOpts('LSP Run code lens')) - end - - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, mkOpts('LSP type definition')) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, mkOpts('LSP rename')) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, mkOpts('LSP Code action')) - vim.keymap.set('v', 'ca', vim.lsp.buf.code_action, mkOpts('LSP Code action')) + vim.api.nvim_create_autocmd( + { 'BufEnter', 'CursorHold', 'InsertLeave' }, { + callback = vim.lsp.codelens.refresh, + buffer = bufnr, + }) + vim.keymap.set('n', 'cl', vim.lsp.codelens.run, mkOpts('LSP Run code lens')) + vim.keymap.set('n', 'ci', vim.lsp.buf.implementation, mkOpts('LSP implementation')) + vim.keymap.set('n', 'cd', vim.lsp.buf.type_definition, mkOpts('LSP type definition')) + vim.keymap.set('n', 'cD', vim.lsp.buf.declaration, mkOpts('LSP declaration')) + vim.keymap.set('n', 'cR', vim.lsp.buf.rename, mkOpts('LSP rename')) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, mkOpts('LSP Code action')) + vim.keymap.set('v', 'ca', vim.lsp.buf.code_action, mkOpts('LSP Code action')) + vim.keymap.set('n', 'cci', vim.lsp.buf.incoming_calls, mkOpts('LSP incoming calls')) + vim.keymap.set('n', 'cco', vim.lsp.buf.outgoing_calls, mkOpts('LSP outgoing calls')) -- vim.keymap.set('n', 'gr', vim.lsp.buf.references, mkOpts('LSP references')) - vim.keymap.set('n', 'gr', 'Trouble lsp_references', mkOpts('LSP references')) + vim.keymap.set('n', 'cr', 'Trouble lsp_references', mkOpts('LSP references')) + + vim.keymap.set( + { 'v', 'n' }, 'F', function() + vim.lsp.buf.format({ async = true, filter = formatting_filter, }) + end, + mkOpts('Lsp Format') + ) - vim.keymap.set('n', 'F', function() vim.lsp.buf.format({ async = true, filter = formatting_filter, }) end, - opts) if (formatting_filter(client)) then vim.api.nvim_buf_set_option(bufnr, 'formatexpr', 'v:lua.vim.lsp.formatexpr(#{timeout_ms:250})') end end -- }}} -function M.config() +local function config() require('neodev').setup({}) vim.api.nvim_create_autocmd('LspAttach', { @@ -129,7 +104,7 @@ function M.config() sumneko_lua = { -- {{{ settings = { Lua = { - workspace = { + workleader = { checkThirdParty = false, }, completion = { @@ -195,25 +170,24 @@ function M.config() conf.capabilities = capabilities nvim_lsp[name].setup(conf) end - - --[[ local util = require("lspconfig.util") - require("lspconfig.configs").coffeesense = { - default_config = { - cmd = { '/home/vladimir/devel/coffeesense/server/bin/coffeesense-language-server' }, - filetypes = { 'coffee' }, - root_dir = function(pattern) - local cwd = vim.loop.cwd() - local root = util.root_pattern('package.json', '.git')(pattern) - - -- prefer cwd if root is a descendant - return util.path.is_descendant(cwd, root) and cwd or root - end, - } - } - - require("lspconfig").coffeesense.setup({}) ]] - - end -return M +return { + { + 'neovim/nvim-lspconfig', + dependencies = { + { 'j-hui/fidget.nvim', config = true }, + { 'ray-x/lsp_signature.nvim', opts = { hint_prefix = '⥊ ', floating_window = false, hint_scheme = 'Identifier' } }, + }, + keys = { + { 'li', 'LspInfo', desc = 'Lsp info' }, + { 'll', 'LspLog', desc = 'Lsp log' }, + }, + event = 'BufRead', + config = config, + }, + { 'SmiteshP/nvim-navic', lazy = true }, + { 'Hoffs/omnisharp-extended-lsp.nvim', lazy = true }, + { 'b0o/schemastore.nvim', lazy = true }, + { 'folke/neodev.nvim', lazy = true } +} diff --git a/dot_config/nvim/lua/configs/packages/misc.lua b/dot_config/nvim/lua/configs/packages/misc.lua index fa147c7..3789baf 100644 --- a/dot_config/nvim/lua/configs/packages/misc.lua +++ b/dot_config/nvim/lua/configs/packages/misc.lua @@ -7,10 +7,27 @@ return { show_current_context = true, show_current_context_start = false, }}, - { 'echasnovski/mini.surround', version = '*', config = function() require('mini.surround').setup({}) end }, - -- { 'echasnovski/mini.indentscope', version = '*', config = function() require('mini.indentscope').setup({}) end }, { 'echasnovski/mini.trailspace', version = '*', config = function() require('mini.trailspace').setup({}) end }, + -- stolen from LazyVim + { + "stevearc/dressing.nvim", + lazy = true, + init = function() + ---@diagnostic disable-next-line: duplicate-set-field + vim.ui.select = function(...) + require("lazy").load({ plugins = { "dressing.nvim" } }) + return vim.ui.select(...) + end + ---@diagnostic disable-next-line: duplicate-set-field + vim.ui.input = function(...) + require("lazy").load({ plugins = { "dressing.nvim" } }) + return vim.ui.input(...) + end + end, + }, + + { 'numToStr/Comment.nvim', config = true, @@ -29,7 +46,29 @@ return { { 'dyng/ctrlsf.vim', cmd = 'CtrlSF' }, - { 'andymass/vim-matchup' }, + { 'andymass/vim-matchup', + event = 'BufRead', + config = function() + vim.g.matchup_matchparen_offscreen = {} + end }, + + { + 'echasnovski/mini.surround', + version = '*', + event = 'BufEnter', + config = function() + require('mini.surround').setup({}) + end + }, + + { 'echasnovski/mini.statusline', + enabled = false, + event = 'VeryLazy', + version = '*', + config = function() + require('mini.statusline').setup({}) + end + }, { 'fpob/nette.vim', ft = 'nette' }, { 'ziglang/zig.vim', ft = 'zig' }, @@ -49,7 +88,16 @@ return { { 'td', 'Trouble document_diagnostics', desc = 'Trouble toggle' } }, config = { - mode = 'document_diagnostics' + mode = 'document_diagnostics', + signs = { + -- icons / text used for a diagnostic + error = "", + warning = "", + hint = "", + information = "", + other = "" + }, + } }, diff --git a/dot_config/nvim/lua/configs/packages/neotree.lua b/dot_config/nvim/lua/configs/packages/neotree.lua index d5d1f2e..af65b4f 100644 --- a/dot_config/nvim/lua/configs/packages/neotree.lua +++ b/dot_config/nvim/lua/configs/packages/neotree.lua @@ -32,6 +32,14 @@ function M.config() -- return a.type > b.type -- end -- end , -- this sorts files and directories descendantly + event_handlers = { + { + event = 'neo_tree_window_after_open', + handler = function (ev) + vim.api.nvim_win_set_option(ev.winid, 'statusline', ' %{fnamemodify(getcwd(),":~")}') + end + } + }, default_component_configs = { container = { enable_character_fade = true diff --git a/dot_config/nvim/lua/configs/packages/nvim-cmp.lua b/dot_config/nvim/lua/configs/packages/nvim-cmp.lua index 7538c4f..836f006 100644 --- a/dot_config/nvim/lua/configs/packages/nvim-cmp.lua +++ b/dot_config/nvim/lua/configs/packages/nvim-cmp.lua @@ -11,7 +11,7 @@ local M = { } function M.opts() - local cmp = require 'cmp' + local cmp = require('cmp') local kind_func = require('lspkind').cmp_format({}) cmp.setup({ diff --git a/dot_config/nvim/lua/configs/packages/telescope.lua b/dot_config/nvim/lua/configs/packages/telescope.lua index f66171a..f02e2b9 100644 --- a/dot_config/nvim/lua/configs/packages/telescope.lua +++ b/dot_config/nvim/lua/configs/packages/telescope.lua @@ -1,9 +1,7 @@ local M = { 'nvim-telescope/telescope.nvim', dependencies = { - 'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim', - 'nvim-telescope/telescope-ui-select.nvim', { 'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' @@ -65,7 +63,6 @@ function M.config() } telescope.load_extension('fzf') - telescope.load_extension('ui-select') local augr = vim.api.nvim_create_augroup('Telescope', {}) vim.api.nvim_create_autocmd('FileType', { diff --git a/dot_config/nvim/lua/configs/packages/treesitter.lua b/dot_config/nvim/lua/configs/packages/treesitter.lua index 4f2de1d..b90386c 100644 --- a/dot_config/nvim/lua/configs/packages/treesitter.lua +++ b/dot_config/nvim/lua/configs/packages/treesitter.lua @@ -5,7 +5,8 @@ local M = { 'nvim-treesitter/nvim-treesitter-textobjects', { 'yioneko/nvim-yati', tag = 'legacy' } -- { dir = '/home/sogun/devel/nvim-yati/', } - } + }, + event = 'BufRead', } function M.config() diff --git a/dot_config/nvim/lua/configs/packages/which-key.lua b/dot_config/nvim/lua/configs/packages/which-key.lua index d075703..a38ea96 100644 --- a/dot_config/nvim/lua/configs/packages/which-key.lua +++ b/dot_config/nvim/lua/configs/packages/which-key.lua @@ -6,6 +6,9 @@ return { ['f'] = { name = "+file"}, ['g'] = { name = "+git"}, ['l'] = { name = "+LSP"}, + ['t'] = { name = "+Trouble"}, + ['c'] = { name = "+Code"}, + ['cc'] = { name = "+calls"}, }) end, }