neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim.git
Log | Files | Refs

commit 8767bc045160fd067c95cb8a4d03af5c906be008
parent c52cad47c6884f8779e9b44ea498df564d6f4718
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Sun, 19 Dec 2021 15:04:56 +0100

update

Diffstat:
Mftplugin/dart.lua | 2+-
Aftplugin/gitcommit.lua | 8++++++++
Aftplugin/neorg.lua | 10++++++++++
Mftplugin/sh.lua | 4++--
Mftplugin/zsh.lua | 12++++++++++--
Minit.lua | 8+++++---
Mlua/tms/p/cmp/exe_source.lua | 4++--
Alua/tms/p/cmp/glab_source.lua | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlua/tms/p/cmp/init.lua | 15++++++++++-----
Alua/tms/p/neorg.lua | 28++++++++++++++++++++++++++++
Mlua/tms/p/nullls.lua | 4++--
Mlua/tms/p/treesitter.lua | 27+++++++++++++++++++++++++++
Mlua/tms/plugins.lua | 12+++++++++++-
13 files changed, 172 insertions(+), 18 deletions(-)

diff --git a/ftplugin/dart.lua b/ftplugin/dart.lua @@ -19,5 +19,5 @@ else vim.cmd [[comp dart]] end -require('tms.p.cmp').enable_autocomplete() +-- require('tms.p.cmp').enable_autocomplete() diff --git a/ftplugin/gitcommit.lua b/ftplugin/gitcommit.lua @@ -0,0 +1,8 @@ +require('cmp').setup.buffer { + sources = { + -- + {name = 'glab_dpgw'}, + {name = 'path'}, + {name = 'buffer', keyword_length = 5}, + }, +} diff --git a/ftplugin/neorg.lua b/ftplugin/neorg.lua @@ -0,0 +1,10 @@ +require('cmp').setup.buffer { + -- + -- completion = {autocomplete = false}, + sources = { + -- + {name = 'neorg'}, + {name = 'buffer'}, + {name = 'path'}, + }, +} diff --git a/ftplugin/sh.lua b/ftplugin/sh.lua @@ -1,4 +1,4 @@ vim.cmd [[comp bash]] -local ok, cmp = pcall(require, 'cmp') -if ok then cmp.setup.buffer {sources = {{name = 'nvim_lsp'}, {name = 'exe'}, {name = 'path'}}} end +local cmp = require('cmp') +cmp.setup.buffer {sources = {{name = 'nvim_lsp'}, {name = 'exe'}, {name = 'path'}}} diff --git a/ftplugin/zsh.lua b/ftplugin/zsh.lua @@ -1,4 +1,12 @@ vim.cmd [[comp zsh]] -local ok, cmp = pcall(require, 'cmp') -if ok then cmp.setup.buffer {sources = {{name = 'nvim_lsp'}, {name = 'exe'}, {name = 'path'}}} end +require('cmp').setup.buffer { + -- + completion = {autocomplete = false}, + sources = { + -- + {name = 'nvim_lsp'}, + {name = 'exe'}, + {name = 'path'}, + }, +} diff --git a/init.lua b/init.lua @@ -32,7 +32,7 @@ vim.opt.ignorecase = true vim.opt.inccommand = 'split' vim.opt.incsearch = true vim.opt.mouse = 'a' -vim.opt.pumheight = 20 +vim.opt.pumheight = 5 vim.opt.shiftround = true vim.opt.shortmess = vim.opt.shortmess + 'c' vim.opt.showbreak = '">\\ "' @@ -57,6 +57,7 @@ vim.opt.foldtext = 'MyFoldText()' vim.opt.list = false vim.opt.laststatus = 1 vim.opt.statusline = ' ' +vim.opt.ruler = false vim.opt.listchars = {space = '·', tab = '» ', extends = '›', precedes = '‹', nbsp = '_', trail = '_', eol = '$'} vim.opt.fillchars = {eob = '•', fold = ' '} vim.opt.number = false @@ -93,8 +94,8 @@ nnoremap {'<leader>q', '<cmd>quit<cr>'} nnoremap {'<leader>Q', '<cmd>quit!<cr>'} nnoremap {'<leader>M', '<cmd>messages<cr>'} nnoremap {'<leader>so', '<cmd>source<cr>'} -nnoremap {'<leader>o', '<cmd>BufOnly<cr>'} -nnoremap {'<leader>O', '<cmd>BufOnly!<cr>'} +nnoremap {'<leader>bo', '<cmd>BufOnly<cr>'} +nnoremap {'<leader>bO', '<cmd>BufOnly!<cr>'} -- window movement nnoremap {'<a-h>', '<c-w>h'} nnoremap {'<a-j>', '<c-w>j'} @@ -168,6 +169,7 @@ au.addListeners({ ['user-cursorline'] = {[[WinEnter * setlocal cursorline]], [[WinLeave * setlocal nocursorline]]}, ['user-yank-high'] = {[[TextYankPost * silent! lua require'vim.highlight'.on_yank()]]}, ['user-colorscheme'] = {[[ColorScheme * lua require('tms.u.reload').colors()]]}, + -- ['user-pum'] = {[[CompleteChanged * echo v:event]]} }) -- commands diff --git a/lua/tms/p/cmp/exe_source.lua b/lua/tms/p/cmp/exe_source.lua @@ -1,6 +1,6 @@ local source = {} -local get_files = function(callback) +local executable_files = function(callback) local job = require('plenary.job') job:new({ command = 'zsh', @@ -17,7 +17,7 @@ end ---Source constructor. source.new = function() local self = setmetatable({}, {__index = source}) - get_files(function(items) self.files = items end) + executable_files(function(items) self.files = items end) return self end diff --git a/lua/tms/p/cmp/glab_source.lua b/lua/tms/p/cmp/glab_source.lua @@ -0,0 +1,56 @@ +local source = {} + +local glab_issues = function(callback) + require('plenary.job'):new({ + command = 'glab_all_issues', + args = {}, + on_exit = function(j, code) + if code > 0 then callback({}) end + local issues = {} + for _, item in ipairs(j:result()) do + local id, info = string.match(item, '#(%d+)\t(.-)\t') + table.insert(issues, { + -- + label = '#' .. id .. ' ' .. info, + insertText = id, + kind = require('cmp').lsp.CompletionItemKind.Text, + }) + end + callback(issues) + end, + }):start() +end + +---Source constructor. +source.new = function() + local self = setmetatable({}, {__index = source}) + self.issues = {} + return self +end + +---Return trigger characters. +---@param params cmp.SourceBaseApiParams +---@return string[] +function source:get_trigger_characters(params) return {'#'} end + +---Invoke completion (required). +--- If you want to abort completion, just call the callback without arguments. +---@param params cmp.SourceCompletionApiParams +---@param callback fun(response: lsp.CompletionResponse|nil) +function source:complete(params, callback) + if not params.context.cursor_before_line:find('dpgw#$') then return end + if #self.issues == 0 then + glab_issues(function(issues) + self.issues = issues + callback(self.issues) + end) + end + + if #self.issues > 0 then + callback(self.issues) + else + callback() + end +end + +return source diff --git a/lua/tms/p/cmp/init.lua b/lua/tms/p/cmp/init.lua @@ -1,13 +1,17 @@ local M = {} -local register_sources = function() require('cmp').register_source('exe', require('tms.p.cmp.exe_source').new()) end +local setup_sources = function() + require('cmp_dictionary').setup({}) + require('cmp').register_source('exe', require('tms.p.cmp.exe_source').new()) + require('cmp').register_source('glab_dpgw', require('tms.p.cmp.glab_source').new()) +end M.setup = function() - register_sources() + setup_sources() local cmp = require('cmp') cmp.setup({ - completion = {autocomplete = false}, + -- completion = {autocomplete = false}, documentation = {border = 'single'}, snippet = {expand = function(args) require('luasnip').lsp_expand(args.body) end}, mapping = { @@ -17,7 +21,6 @@ M.setup = function() ['<C-e>'] = cmp.mapping.close(), ['<C-y>'] = cmp.mapping.confirm({behavior = cmp.ConfirmBehavior.Replace, select = true}), ['<C-o>'] = cmp.mapping.confirm({behavior = cmp.ConfirmBehavior.Replace, select = true}), - ['<CR>'] = cmp.mapping.confirm({behavior = cmp.ConfirmBehavior.Replace, select = true}), ['<Left>'] = cmp.mapping.close(), ['<Down>'] = cmp.mapping.select_next_item(), ['<Up>'] = cmp.mapping.select_prev_item(), @@ -34,7 +37,7 @@ M.setup = function() {name = 'treesitter'}, {name = 'dictionary'}, }), - experimental = {ghost_text = true, native_menu = false}, + experimental = {ghost_text = true}, }) -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). @@ -48,6 +51,8 @@ M.setup = function() end +M.disable_autocomplete = function() require('cmp').setup.buffer {completion = {autocomplete = false}} end + M.enable_autocomplete = function() local cmp = require('cmp') cmp.setup.buffer {completion = {autocomplete = {cmp.TriggerEvent.TextChanged}}} diff --git a/lua/tms/p/neorg.lua b/lua/tms/p/neorg.lua @@ -0,0 +1,28 @@ +local M = {} + +M.setup = function() + require('neorg').setup({ + -- Tell Neorg what modules to load + load = { + ['core.integrations.treesitter'] = {}, + ['core.mode'] = {}, + ['core.norg.news'] = {}, -- Handles the displaying of Neorg news and other forms of media in a popup. + ['core.norg.qol.todo_items'] = {}, + ['core.norg.esupports'] = {}, + ['core.norg.esupports.metagen'] = {}, + ['core.norg.esupports.hop'] = {}, + ['core.norg.manoeuvre'] = {}, + ['core.neorgcmd'] = {}, + ['core.autocommands'] = {}, + -- ['core.norg.concealer'] = {}, -- Allows for use of icons + ['core.norg.dirman'] = { -- Manage your directories with Neorg + config = {workspaces = {my = '~/neorg'}}, + }, + ['core.gtd.base'] = {}, -- todo + ['core.norg.completion'] = {config = {engine = 'nvim-cmp'}}, + ['core.keybinds'] = {config = {default_keybinds = true, neorg_leader = '<Leader>o'}}, + }, + }) +end + +return M diff --git a/lua/tms/p/nullls.lua b/lua/tms/p/nullls.lua @@ -24,7 +24,8 @@ M.setup = function() local null_ls = require('null-ls') local h = require('null-ls.helpers') local builtins = null_ls.builtins - null_ls.config({ + null_ls.setup({ + -- on_attach = nil, sources = { -- formatting builtins.formatting.prettier.with { @@ -47,7 +48,6 @@ M.setup = function() zsh_diag(), }, }) - require('tms.lsp').add('null-ls') end return M diff --git a/lua/tms/p/treesitter.lua b/lua/tms/p/treesitter.lua @@ -1,6 +1,33 @@ local M = {} M.setup = function() + + local parser_configs = require('nvim-treesitter.parsers').get_parser_configs() + + parser_configs.norg = { + install_info = { + url = 'https://github.com/nvim-neorg/tree-sitter-norg', + files = {'src/parser.c', 'src/scanner.cc'}, + branch = 'main', + }, + } + + parser_configs.norg_meta = { + install_info = { + url = 'https://github.com/nvim-neorg/tree-sitter-norg-meta', + files = {'src/parser.c'}, + branch = 'main', + }, + } + + parser_configs.norg_table = { + install_info = { + url = 'https://github.com/nvim-neorg/tree-sitter-norg-table', + files = {'src/parser.c'}, + branch = 'main', + }, + } + require'nvim-treesitter.configs'.setup { ensure_intalled = 'maintained', highlight = {enable = true --[[ , disable = {'scss'} --]] }, diff --git a/lua/tms/plugins.lua b/lua/tms/plugins.lua @@ -200,6 +200,11 @@ return packer.startup({ end, } use {'luukvbaal/stabilize.nvim'} + use { + 'nvim-neorg/neorg', + requires = {'nvim-lua/plenary.nvim'}, + config = function() require('tms.p.neorg').setup() end, + } -- quickfix list use {'kevinhwang91/nvim-bqf', config = function() require('tms.p.bqf').setup() end} @@ -239,7 +244,12 @@ return packer.startup({ vim.keymap.xmap {'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>'} end, } - use 'sindrets/diffview.nvim' -- view diffs for multiple files + use { -- view diffs for multiple files + 'sindrets/diffview.nvim', + config = function() -- + vim.keymap.nmap {'<leader>f', '<cmd>DiffViewOpen<cr>'} + end, + } use { -- git integration 'tpope/vim-fugitive', config = function()