From 5fda4d6ab460d98b20471f6b4bc97eeb14308fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Dudr?= Date: Wed, 15 Feb 2023 01:15:42 +0100 Subject: [PATCH] nvim: fuck window local options --- dot_config/nvim/lua/configs/colors.lua | 2 + dot_config/nvim/lua/configs/options.lua | 91 ++++++++++++------- .../nvim/lua/configs/packages/colors.lua | 3 + dot_config/nvim/lua/configs/packages/dap.lua | 87 ++++++++++++++++++ dot_config/nvim/lua/configs/packages/lsp.lua | 19 +++- dot_config/nvim/lua/configs/packages/misc.lua | 5 +- .../nvim/lua/configs/packages/nvim-cmp.lua | 30 +++--- 7 files changed, 183 insertions(+), 54 deletions(-) create mode 100644 dot_config/nvim/lua/configs/packages/dap.lua diff --git a/dot_config/nvim/lua/configs/colors.lua b/dot_config/nvim/lua/configs/colors.lua index 3135dc4..25d95ba 100644 --- a/dot_config/nvim/lua/configs/colors.lua +++ b/dot_config/nvim/lua/configs/colors.lua @@ -55,6 +55,7 @@ local aliases = { warn = 'orange', info = 'bright_blue', hint = 'aqua', + ok = 'green', } for alias, target in pairs(aliases) do @@ -107,6 +108,7 @@ end ---|'warn' ---|'info' ---|'hint' +---|'ok' ---|'NONE' --}}} -- style type {{{ diff --git a/dot_config/nvim/lua/configs/options.lua b/dot_config/nvim/lua/configs/options.lua index 764ecd7..2d9e985 100644 --- a/dot_config/nvim/lua/configs/options.lua +++ b/dot_config/nvim/lua/configs/options.lua @@ -9,12 +9,8 @@ function M.setup() vim.o.autoindent = true vim.o.autoread = true vim.o.completeopt = 'menuone,noinsert,noselect' - vim.o.cursorline = true vim.o.expandtab = true vim.o.fileencodings = 'ucs-bom,utf-8,default,windows-1250,cp852' - vim.o.foldcolumn = 'auto:1' - vim.o.foldenable = true - vim.o.foldmethod = 'marker' vim.o.foldopen = 'hor,mark,percent,quickfix,search,tag,undo' -- removed block so { and friends don't open fold vim.o.hidden = true vim.o.ignorecase = true @@ -22,15 +18,12 @@ function M.setup() vim.o.incsearch = true vim.o.list = false vim.o.mouse = '' - vim.o.number = true vim.o.path = '**' - vim.o.relativenumber = false vim.o.ruler = true vim.o.scrolloff = 3 vim.o.shiftwidth = 4 vim.o.showcmd = true vim.o.sidescrolloff = 5 - vim.o.signcolumn = 'yes' vim.o.smartcase = true vim.o.smartindent = true vim.o.softtabstop = 4 @@ -42,41 +35,76 @@ function M.setup() --vim.o.clipboard = "unnamedplus" vim.o.guifont = 'Hack:12h' - vim.o.list = true + local function set_winopts() + vim.o.cursorline = true + vim.o.foldcolumn = 'auto:1' + vim.o.foldenable = true + vim.o.foldmethod = 'marker' + vim.o.number = true + vim.o.signcolumn = 'yes' + vim.o.relativenumber = false + vim.o.list = true + 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 + + if vim.fn.has('nvim-0.9') then + vim.o.statuscolumn = '%C%3l %s' + end + end + set_winopts() + 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 - .. '%=' -- rest is right - .. '%y ' -- filetype - .. '%-7.(%3.l:%-3.(%c%V%)%) %P' -- ruler - - - vim.api.nvim_create_autocmd('FileType', { - pattern = { 'qf', 'man', 'help', 'tsplayground', 'checkhealth', 'OverseerList' }, + vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWinEnter', 'FileType' }, { + pattern = '*', callback = function(args) + set_winopts() 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' + local buftype = vim.bo[buf].buftype + if buftype == 'nofile' or buftype == 'help' then + vim.o.list = false + vim.bo[buf].buflisted = false + vim.wo.number = false + vim.wo.signcolumn = 'auto' + -- vim.wo.foldcolumn = 0 + vim.wo.statuscolumn = '' + vim.keymap.set('n', 'q', ':q', { buffer = buf }) + if vim.bo[buf].filetype ~= 'qf' then + vim.wo.statusline = '%f' + end end end, }) + + -- vim.api.nvim_create_autocmd('FileType', { + -- pattern = { 'qf', 'man', 'help', 'tsplayground', 'checkhealth', 'OverseerList' }, + -- 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) @@ -92,9 +120,6 @@ function M.setup() end, }) - if vim.fn.has('nvim-0.9') then - vim.o.statuscolumn = '%C%3l %s' - end if vim.g.neoray then -- {{{ vim.cmd.NeoraySet('CursorAnimTime', 0) diff --git a/dot_config/nvim/lua/configs/packages/colors.lua b/dot_config/nvim/lua/configs/packages/colors.lua index 67cfc9b..0a8e808 100644 --- a/dot_config/nvim/lua/configs/packages/colors.lua +++ b/dot_config/nvim/lua/configs/packages/colors.lua @@ -155,10 +155,13 @@ function M.config() gr:hl('IndentBlanklineContextChar', 'orange', nil, { 'nocombine' }) + link('DiagnosticSignOk', 'GruvboxGreenSign') + gr:hl('DiagnosticVirtualTextError', 'error', nil, { 'italic', }) gr:hl('DiagnosticVirtualTextWarn', 'warn', nil, { 'italic', }) gr:hl('DiagnosticVirtualTextInfo', 'info', nil, { 'italic', }) gr:hl('DiagnosticVirtualTextHint', 'hint', nil, { 'italic', }) + gr:hl('DiagnosticVirtualTextOk', 'ok', nil, { 'italic', }) gr:hl('@attribute', 'aqua') diff --git a/dot_config/nvim/lua/configs/packages/dap.lua b/dot_config/nvim/lua/configs/packages/dap.lua new file mode 100644 index 0000000..7b0e6a8 --- /dev/null +++ b/dot_config/nvim/lua/configs/packages/dap.lua @@ -0,0 +1,87 @@ +return { + { 'mfussenegger/nvim-dap', + dependencies = { + 'rcarriga/nvim-dap-ui', + }, + keys = { + { '', function() require('dap').step_over() end }, + { '', function() require('dap').step_into() end }, + { '', function() require('dap').step_out() end }, + { '', function() require('dap').continue({}) end }, + { '', function() require('dap').toggle_breakpoint() end }, + { 'DD', function() require('dapui').toggle() end }, + { 'DE', function() + vim.ui.input({ prompt = 'DAP Evalulate expression: ' }, + function(input) + require('dapui').eval(input) + end) + end, }, + }, + opts = { + php = { -- {{{ + adapter = { + type = 'executable', + command = 'node', + args = { vim.env.HOME .. '/.local/share/nvim/lazy/vscode-php-debug/out/phpDebug.js' }, + }, + confs = { + { + type = 'php', + request = 'launch', + name = 'Listen for Xdebug', + port = 9000, + }, + }, + }, -- }}} + }, + config = function(_plug, opts) + -- signs - move to colorsheme? {{{ + vim.fn.sign_define('DapBreakpoint', { + text = '⦿', + texthl = 'DiagnosticSignError', + linehl = '', + numhl = '' + }) + vim.fn.sign_define('DapBreakpointCondition', { + text = '✪', + texthl = 'DiagnosticSignError', + linehl = '', + numhl = '' + }) + vim.fn.sign_define('DapLogPoint', { text = '󱂅', texthl = '', linehl = '', numhl = '' }) + vim.fn.sign_define('DapStopped', { text = '', texthl = 'DiagnosticSignOk', linehl = '', numhl = '' }) + vim.fn.sign_define('DapBreakpointRejected', { text = '🛑', texthl = '', linehl = '', numhl = '' }) + --- }}} + + local dap = require('dap') + + for lang, opt in pairs(opts) do + dap.configurations[lang] = opt.confs + dap.adapters[lang] = opt.adapter + end + + local dapui = require('dapui') + dapui.setup() + + dap.listeners.after.event_initialized['dapui_config'] = function() + dapui.open() + end + dap.listeners.before.event_terminated['dapui_config'] = function() + dapui.close() + end + dap.listeners.before.event_exited['dapui_config'] = function() + dapui.close() + end + end, + }, + { 'xdebug/vscode-php-debug', + build = { 'npm install && npm run build' }, + config = false, + module = false, + lazy = true, + }, + { 'leoluz/nvim-dap-go', + ft = 'go', + config = true, + }, +} diff --git a/dot_config/nvim/lua/configs/packages/lsp.lua b/dot_config/nvim/lua/configs/packages/lsp.lua index bd01579..b08e796 100644 --- a/dot_config/nvim/lua/configs/packages/lsp.lua +++ b/dot_config/nvim/lua/configs/packages/lsp.lua @@ -10,6 +10,18 @@ local function formatting_filter(c) return true end +local function navic_attach(client, bufnr) + require('nvim-navic').attach(client, bufnr) + vim.wo.winbar = "%{%v:lua.require'nvim-navic'.get_location()%}" + vim.api.nvim_create_autocmd('LspDetach', { + pattern = vim.api.nvim_buf_get_name(bufnr), + once = true, + callback = function () + vim.cmd.setlocal('winbar<') + end + }) +end + local function on_attach(args) -- {{{ -- require "lsp_signature".on_attach() -- require'completion'.on_attach() @@ -19,7 +31,7 @@ local function on_attach(args) -- {{{ local client = vim.lsp.get_client_by_id(args.data.client_id) if (client.server_capabilities.documentSymbolProvider) then - require('nvim-navic').attach(client, bufnr) + navic_attach(client, bufnr) end -- Mappings. @@ -175,7 +187,7 @@ local function config() sdk_include_prereleases = true, analyze_open_documents_only = true, }, -- }}} - sumneko_lua = { -- {{{ + lua_ls = { -- {{{ settings = { Lua = { workleader = { @@ -247,8 +259,7 @@ local function config() end return { - { - 'neovim/nvim-lspconfig', + { 'neovim/nvim-lspconfig', dependencies = { { 'j-hui/fidget.nvim', config = true }, { 'ray-x/lsp_signature.nvim', opts = { hint_prefix = '⥊ ', floating_window = false, hint_scheme = 'Identifier' } }, diff --git a/dot_config/nvim/lua/configs/packages/misc.lua b/dot_config/nvim/lua/configs/packages/misc.lua index f28326a..4842229 100644 --- a/dot_config/nvim/lua/configs/packages/misc.lua +++ b/dot_config/nvim/lua/configs/packages/misc.lua @@ -10,7 +10,7 @@ return { show_current_context = true, show_current_context_start = false, }, }, - { 'echasnovski/mini.trailspace', version = '*', config = function() require('mini.trailspace').setup({}) end }, + { 'echasnovski/mini.trailspace', version = '*', config = function() require('mini.trailspace').setup({}) end }, -- stolen from LazyVim { @@ -52,7 +52,7 @@ return { { 'xi', 'OverseerInfo', desc = 'Overseer info' }, { 'xa', 'OverseerTaskAction', desc = 'Overseer action' }, { 'xr', 'OverseerRun', desc = 'Overseer run' }, - } + }, }, @@ -66,6 +66,7 @@ return { { 'vlada-dudr/vdebug', lazy = true, + enabled = false, keys = { { '', desc = 'Start Vdebug' }, { '', desc = 'Vdebug breakpoint' }, diff --git a/dot_config/nvim/lua/configs/packages/nvim-cmp.lua b/dot_config/nvim/lua/configs/packages/nvim-cmp.lua index 8a48d1f..9943b2e 100644 --- a/dot_config/nvim/lua/configs/packages/nvim-cmp.lua +++ b/dot_config/nvim/lua/configs/packages/nvim-cmp.lua @@ -51,21 +51,21 @@ function M.config() }) -- -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' }, - }, - }) - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' }, - }, { - { name = 'cmdline' }, - }), - }) + -- cmp.setup.cmdline({ '/', '?' }, { + -- mapping = cmp.mapping.preset.cmdline(), + -- sources = { + -- { name = 'buffer' }, + -- }, + -- }) + -- -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + -- cmp.setup.cmdline(':', { + -- mapping = cmp.mapping.preset.cmdline(), + -- sources = cmp.config.sources({ + -- { name = 'path' }, + -- }, { + -- { name = 'cmdline' }, + -- }), + -- }) end return M