diff options
Diffstat (limited to '')
| -rw-r--r-- | .vim/init.lua | 191 |
1 files changed, 118 insertions, 73 deletions
diff --git a/.vim/init.lua b/.vim/init.lua index f6118c0..d46dbfc 100644 --- a/.vim/init.lua +++ b/.vim/init.lua @@ -1,4 +1,15 @@ -- vim: fdm=marker fdl=0 + +vim.cmd [[ + function! LessInitFunc() + set nolist + set nocursorcolumn nocursorline + set laststatus=0 + set readonly + set nonumber + endfunction +]] + local g = vim.g g.mapleader = ' ' -- <leader> key to <space> g.maplocalleader = '\\' @@ -24,7 +35,8 @@ opt.fillchars:append({ }) opt.foldenable = true opt.foldmethod = 'expr' -opt.foldexpr = 'nvim_treesitter#foldexpr()' +opt.foldexpr = "v:lua.vim.treesitter.foldexpr()" +opt.foldtext = 'v:lua.vim.treesitter.foldtext()' -- opt.foldlevel = 0 opt.foldlevelstart = 999 opt.hidden = true @@ -44,7 +56,7 @@ opt.listchars:append({ opt.mouse = 'a' opt.number = true opt.relativenumber = false -opt.pumheight = 0 -- use available screenspace +opt.pumheight = 12 -- 0 use available screenspace opt.redrawtime = 1500 opt.ruler = true opt.scrolloff = 3 @@ -99,18 +111,16 @@ g.undodir = undodir opt.undofile = true -- }}} -g.do_filetype_lua = true --- g.do_legacy_filetype = false --- g.did_load_filetypes = 0 - -vim.g.night_and_day = 'night' +opt.background = 'dark' +require('internal.syncbg').setup() require('_globals') require('plugins') -require('internal.align').setup({ bindings = true }) require('internal.hardmode') +-- TODO: load internal.* like normal plugins using lazy + -- DIAGNOSITIC {{{ vim.diagnostic.config({ signs = true, @@ -119,33 +129,23 @@ vim.diagnostic.config({ }, float = { severity = { min = vim.diagnostic.severity.INFO }, - focusable = false, - source = 'always', - prefix = '', - scope = 'cursor', }, virtual_text = { - severity = { max = vim.diagnostic.severity.HINT }, - source = true, - prefix = '', + severity = { min = vim.diagnostic.severity.ERROR }, }, - -- virtual_lines = { prefix = '⬐ ' }, - - update_in_insert = false, severity_sort = true, }) vim.fn.sign_define({ - { name = 'DiagnosticSignError', text = '✗', texthl = 'DiagnosticSignError' }, - -- {name='DiagnosticSignWarn', text='⚡', texthl='DiagnosticSignWarn'}, - { name = 'DiagnosticSignWarn', text = '⚐', texthl = 'DiagnosticSignWarn' }, + { name = 'DiagnosticSignError', text = '✗', texthl = 'DiagnosticSignError', linehl = 'Search' }, + { name = 'DiagnosticSignWarn', text = '▷', texthl = 'DiagnosticSignWarn' }, { name = 'DiagnosticSignInfo', text = 'ℹ', texthl = 'DiagnosticSignInfo' }, { name = 'DiagnosticSignHint', text = '🞶', texthl = 'DiagnosticSignHint' }, }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'next diagnostic' }) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'prev diagnostic' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Next diagnostic' }) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Prev diagnostic' }) vim.keymap.set( 'n', - '<localleader>d', + 'DD', vim.diagnostic.open_float, { desc = 'show line diagnositics' } ) @@ -168,7 +168,8 @@ vim.keymap.set('n', '<tab>', [[ :normal za<cr> ]], { silent = true }) vim.keymap.set({ 'n', 'v' }, 'gf', function() local Path = require('plenary.path') - local cfile = vim.fn.expand('<cfile>') + -- call twice to expand env vars + local cfile = vim.fn.expand(vim.fn.expand('<cfile>')) if string.sub(cfile, 0, 7) == 'file://' then cfile = string.sub(cfile, 8) end @@ -191,33 +192,11 @@ vim.keymap.set('v', 'T', function() vim.api.nvim_input('<esc>') end) -local misc = require('internal.misc') -vim.keymap.set('n', 'gd', function() - misc.open_under_cursor(nil, true) -end, { desc = 'open under cursor' }) -vim.keymap.set('n', 'gx', function() - misc.open_under_cursor('url-launcher') -end, { desc = 'url-launcher' }) -vim.keymap.set('n', 'gu', function() - misc.open_under_cursor('url-launcher') -end, { desc = 'url-launcher' }) --- vim.keymap.set('n', '<localleader>gs', function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end) - -vim.keymap.set('n', '<leader>r', misc.live_grep, { desc = 'live grep (rg)' }) -vim.keymap.set('n', '<leader>f', misc.find_files, { desc = 'find files (fd)' }) - vim.keymap.set('n', '<localleader>dgl', 'diffget LOCAL', { desc = 'diff get local' }) vim.keymap.set('n', '<localleader>dgr', 'diffget REMOTE', { desc = 'diff get remote' }) vim.keymap.set('n', '<localleader>dpl', 'diffpush LOCAL', { desc = 'diff push local' }) vim.keymap.set('n', '<localleader>dpr', 'diffpush REMOTE', { desc = 'diff push remote' }) -vim.keymap.set( - 'x', - '<localleader>f', - [[<ESC><CMD>lua require("internal.misc").fold_block()<CR>]], - { noremap = true, silent = true, desc = 'fold block' } -) - -- vim.keymap.set('v', '<c-r>', [[y:%s/<c-r>h//gc<left><left><left>]], { noremap = true, silent = true }) vim.keymap.set('n', 'yP', function() local fnln = (vim.fn.expand('%:p') .. ':' .. vim.fn.line('.')) @@ -231,6 +210,16 @@ vim.keymap.set('n', 'yT', function() end, { desc = 'yank file name' }) -- }}} +-- MENU -- {{{ +vim.cmd [[unmenu PopUp.-1-]] +vim.cmd [[unmenu PopUp.How-to\ disable\ mouse]] + +vim.cmd [[nnoremenu PopUp.Inspect :normal K<cr>]] +vim.cmd [[nnoremenu PopUp.Goto :normal gd<cr>]] +vim.cmd [[nnoremenu PopUp.References :normal gR<cr>]] +vim.cmd [[nnoremenu PopUp.Diagnostic :normal DD<cr>]] +-- }}} + -- AUTO GROUPS -- {{{ local augroup = vim.api.nvim_create_augroup local autocmd = vim.api.nvim_create_autocmd @@ -251,7 +240,7 @@ do if (not qf == vim.empty_dict()) and qf and qf.size > 0 then -- check if the quickfix buffer is already open for bufnr in ipairs(vim.api.nvim_list_bufs()) do - if vim.api.nvim_buf_get_option(bufnr, 'buftype') == 'quickfix' then + if vim.api.nvim_buf_get_option_value(bufnr, 'buftype') == 'quickfix' then return end end @@ -334,38 +323,87 @@ autocmd({ 'BufRead', 'BufNewFile' }, { group = augroup('DetectBinDir', {}), }) -autocmd({ 'TermOpen' }, { - pattern = 'term://*', - callback = function() - local bufnr = vim.api.nvim_get_current_buf() - vim.opt_local.number = false - vim.opt_local.relativenumber = false - vim.opt_local.signcolumn = 'no' - vim.cmd.split('#0') -- split the previous window - vim.api.nvim_win_set_height(vim.fn.win_findbuf(bufnr)[1], 20) - vim.cmd.startinsert() +-- autocmd({ 'FileType' }, { +-- pattern = 'dirbuf', +-- callback = function() +-- if not vim.startswith(vim.api.nvim_buf_get_name(0), '/home/robert/zettelkasten') then return end +-- vim.notify('hi') +-- for i, l in ipairs(vim.api.nvim_buf_get_lines(0, 0, -1, true)) do +-- vim.notify(vim.inspect(i, l)) +-- end +-- end, +-- group = augroup('DetectZkDirbuf', {}), +-- }) + +-- autocmd({ 'TermOpen' }, { +-- pattern = 'term://*', +-- callback = function() +-- local bufnr = vim.api.nvim_get_current_buf() +-- vim.opt_local.number = false +-- vim.opt_local.relativenumber = false +-- vim.opt_local.signcolumn = 'no' +-- vim.cmd.split('#0') -- split the previous window +-- vim.api.nvim_win_set_height(vim.fn.win_findbuf(bufnr)[1], 20) +-- vim.cmd.startinsert() +-- end, +-- group = augroup('CustomizeTermBuffer', {}), +-- }) + +-- custom diagnostic settings for zk +autocmd({ 'DiagnosticChanged' }, { + pattern = '*.md', + callback = function(args) + if not (args.data.diagnostics or args.data.diagnostics[1].source == 'zk') then + return + end + if vim.b.did_configure_diagnostics then + return + end + for key, ns in pairs(vim.api.nvim_get_namespaces()) do + if vim.startswith(key, 'vim.lsp.zk') then + vim.b.did_configure_diagnostics = true + vim.diagnostic.config({ + signs = { + severity = vim.diagnostic.severity.INFO, + }, + virtual_text = { + source = false, + prefix = '', + }, + }, ns) + end + end end, - group = augroup('CustomizeTermBuffer', {}), + group = augroup('DiagnosticConfigZk', {}), }) --- }}} --- USER COMMANDS -- {{{ -vim.api.nvim_create_user_command('Make', function(opts) - require('internal.job').make(opts.fargs) -end, { nargs = '*', desc = 'run make target' }) -vim.api.nvim_create_user_command('Sh', function(opts) - require('internal.job').sh(table.concat(opts.fargs, ' ')) -end, { nargs = '*', desc = 'run shell command' }) - -require('internal.misc').setup({ - grep = true, - find = true, - sortline = true, -}) +do + local group = augroup('VisualModeRelativeNumber', {}) + autocmd({ 'ModeChanged' }, { + pattern = '*:[vV\x16]*', + callback = function() + vim.opt_local.relativenumber = true + end, + group = group, + }) + autocmd({ 'ModeChanged' }, { + pattern = '[vV\x16]*:*', + callback = function() + -- vim.opt_local.relativenumber = (vim.api.nvim_get_mode().mode ~= '^[vV\x16]') + vim.opt_local.relativenumber = false + end, + group = group, + }) +end -- }}} +require('internal.misc').setup() +require('internal.find').setup() +require('internal.sortline').setup() + _G.statusline_enable_notifysend = false require('internal.statusline') + require('internal.job').setup({}) -- TODO: remove eventually @@ -393,5 +431,12 @@ vim.filetype.add({ }, filename = { ['Caddyfile'] = 'conf', + ['TODO'] = 'todofile', }, + pattern = { + ['${ZK_NOTEBOOK_DIR}/.*md$'] = 'zk.markdown', + } }) + +-- use bash parsers for gentoo ebuilds +vim.treesitter.language.register('bash', 'ebuild') |