summary refs log tree commit diff
path: root/.vim/init.lua
diff options
context:
space:
mode:
Diffstat (limited to '.vim/init.lua')
-rw-r--r--.vim/init.lua118
1 files changed, 80 insertions, 38 deletions
diff --git a/.vim/init.lua b/.vim/init.lua
index 1c01c3a..3a60921 100644
--- a/.vim/init.lua
+++ b/.vim/init.lua
@@ -1,4 +1,4 @@
--- vim: fdm=marker
+-- vim: fdm=marker fdl=0
 local cmd = vim.cmd
 local g = vim.g
 
@@ -60,14 +60,10 @@ opt.undolevels = 1000
 opt.updatetime = 200
 opt.wrap = true
 
-require('globals')
-require('plugins')
-require('hardmode')
-
 -- configure :grep to use ripgrep if it's available
 if vim.fn.executable('rg') then
-  vim.opt.grepprg = 'rg --vimgrep --smart-case --hidden'
-  vim.opt.grepformat = '%f:%l:%c:%m'
+  opt.grepprg = 'rg --vimgrep --smart-case --hidden'
+  opt.grepformat = '%f:%l:%c:%m'
 end
 
 -- persistent undo
@@ -75,8 +71,8 @@ local undodir = vim.fn.stdpath('cache') .. '/undodir_' .. vim.env.USER
 if vim.fn.isdirectory(undodir) == 0 then
   vim.fn.mkdir(undodir, 'p', '0700')
 end
-vim.g.undodir = undodir
-vim.opt.undofile = true
+g.undodir = undodir
+opt.undofile = true
 -- }}}
 
 -- COLORS -- {{{
@@ -84,38 +80,78 @@ vim.opt.undofile = true
 cmd [[ colorscheme lush ]]
 -- }}}
 
+require('globals')
+require('plugins')
+require('hardmode')
+
+-- Configure builtin diagnositics {{{
+vim.diagnostic.config {
+  underline        = true,
+  virtual_text     = false,
+  signs            = true,
+  float            = false,
+  update_in_insert = false,
+
+  virtual_lines     = { prefix = '⬐  ' },
+}
+vim.fn.sign_define({
+  {name='DiagnosticSignError', text='✗', texthl='DiagnosticSignError'},
+  -- {name='DiagnosticSignWarn',  text='⚡', texthl='DiagnosticSignWarn'},
+  {name='DiagnosticSignWarn',  text='⚐',  texthl='DiagnosticSignWarn'},
+  {name='DiagnosticSignInfo',  text='ℹ',  texthl='DiagnosticSignInfo'},
+  {name='DiagnosticSignHint',  text='🞶',  texthl='DiagnosticSignHint'}
+})
+-- }}}
+
 -- KEY BINDS -- {{{
-local nnoremap = require('astronauta.keymap').nnoremap
-local vnoremap = require('astronauta.keymap').vnoremap
-local tnoremap = require('astronauta.keymap').tnoremap
-
-nnoremap { 'Q', function() cmd [[ quitall ]] end, silent = false }
-nnoremap { 'gb', function() cmd [[ bnext ]] end }
-nnoremap { 'gB', function() cmd [[ bprevious ]] end }
-nnoremap { '<tab>',  function() cmd [[ exe 'normal zA' | IndentBlanklineRefresh ]] end }
-
--- nnoremap { '{', [[ {zz ]] }
--- nnoremap { '}', [[ }zz ]] }
-vim.cmd [[nnoremap c "_c]]
-vim.cmd [[nnoremap C "_C]]
-vim.cmd [[vnoremap c "_c]]
-vim.cmd [[vnoremap C "_C]]
-
-tnoremap { '<esc>', [[ <c-\><c-n> ]] }
-tnoremap { '<leader>qq', [[ <c-\><c-n> :bdelete!<cr> ]] }
-vnoremap { 'T', function() cmd [[ retab! | call feedkeys("\<esc>") ]] end }
+vim.keymap.set('n',     'Q', [[ :quitall<cr> ]], {silent = true})
+vim.keymap.set('n',    'gb', [[ :bnext<cr> ]], {silent = true})
+vim.keymap.set('n',    'gB', [[ :bprevious<cr> ]], {silent = true})
+vim.keymap.set('n', '<tab>', [[ :exe 'normal za' | IndentBlanklineRefresh<cr> ]], {silent = true})
+
+vim.keymap.set('n',  ']d', vim.diagnostic.goto_next)
+vim.keymap.set('n',  '[d', vim.diagnostic.goto_prev)
+vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float)
+
+-- swap gf and gF
+vim.keymap.set('n', 'gf', [[ gF ]])
+vim.keymap.set('v', 'gf', [[ gF ]])
+
+-- vim.keymap.set('n', '{', [[ {zz ]])
+-- vim.keymap.set('n', '}', [[ }zz ]])
+-- this makes c<anything> jump to the start of the line
+-- vim.keymap.set({'n', 'v'}, 'c', '_c')
+-- vim.keymap.set({'n', 'v'}, 'C', '_C')
+
+vim.keymap.set('t',      '<esc>', [[ <c-\><c-n> ]])
+vim.keymap.set('t', '<leader>qq', [[ <c-\><c-n> :bdelete!<cr> ]])
+vim.keymap.set('v',          'T',
+  function()
+    vim.cmd [[retab!]]
+    vim.fn.feedkeys("\\<esc>")
+  end)
 
 local misc = require('misc')
-nnoremap { 'gf',  function() misc.file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end }
-nnoremap { 'gF',  function() misc.open_under_cursor() end }
-nnoremap { 'gx',  function() misc.open_under_cursor('url-launcher') end }
-nnoremap { 'gGw', function() misc.word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end }
-nnoremap { 'gGe', function() misc.expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end }
-nnoremap { 'gGf', function() misc.file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end }
-nnoremap { 'gs',  function() misc.word_under_cursor(function(s) vim.fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\<left>\<left>") ]] end) end }
-
-nnoremap { '<leader>r', misc.live_grep }
-nnoremap { '<leader>f', misc.find_files }
+vim.keymap.set('n',  'gd', function() misc.open_under_cursor(nil, true) end)
+-- vim.keymap.set('n',  'gf', function() misc.file_under_cursor(function(s) vim.cmd('edit ' .. s) end) end)
+vim.keymap.set('n',  'gx', function() misc.open_under_cursor('url-launcher') end)
+vim.keymap.set('n',  'gu', function() misc.open_under_cursor('url-launcher') end)
+vim.keymap.set('n', 'gGw', function() misc.word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end)
+vim.keymap.set('n', 'gGe', function() misc.expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end)
+vim.keymap.set('n', 'gGf', function() misc.file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end)
+vim.keymap.set('n',  'gss', 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)
+vim.keymap.set('n', '<leader>f', misc.find_files)
+
+vim.keymap.set('n', 'dgl', 'diffget LOCAL')
+vim.keymap.set('n', 'dgr', 'diffget REMOTE')
+vim.keymap.set('n', 'dpl', 'diffpush LOCAL')
+vim.keymap.set('n', 'dpr', 'diffpush REMOTE')
+
+vim.keymap.set('x', '<leader>bf',
+  [[<ESC><CMD>lua require("misc").fold_block()<CR>]],
+  { noremap = true, silent = true })
 -- }}}
 
 -- AUTO GROUPS -- {{{
@@ -145,6 +181,12 @@ augroup {
   help_quit = {
     {'FileType', 'help', [[ nnoremap <buffer><silent> q <cmd>bdel<cr> ]]}
   },
+  detect_gomod = {
+    {'BufRead,BufNewFile', 'go.mod', [[setlocal filetype=gomod]]}
+  },
+  detect_bindir_scripts = {
+    {'BufRead,BufNewFile', '/home/robert/bin/*', [[setlocal filetype=sh]]}
+  }
 }
 -- }}}