diff options
Diffstat (limited to 'neovim/init.lua')
| -rw-r--r-- | neovim/init.lua | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/neovim/init.lua b/neovim/init.lua new file mode 100644 index 0000000..542348c --- /dev/null +++ b/neovim/init.lua @@ -0,0 +1,293 @@ +-- general options {{{ +vim.opt.clipboard = {} +vim.api.nvim_set_keymap( + "n", + "s", + "<Plug>Ysurround", + {silent=true,noremap=true} +) + +-- don't load standard plugins + +vim.g.loaded_2html_plugin = false +vim.g.loaded_fzf = false +vim.g.loaded_man = false +vim.g.loaded_gzip = false +vim.g.loaded_health = false +vim.g.loaded_matchit = false +vim.g.loaded_matchparen = false +vim.g.loaded_netrwPlugin = false +vim.g.loaded_rplugin = false +vim.g.loaded_shada = false +vim.g.loaded_spellfile = false +vim.g.loaded_tarPlugin = false +vim.g.loaded_tohtml = false +vim.g.loaded_tutor = false +vim.g.loaded_zipPlugin = false + +vim.cmd [[filetype plugin on]] +vim.cmd [[filetype indent on]] +vim.cmd [[colorscheme gruvbox-material]] +vim.cmd [[highlight WinSeparator guibg=None]] +vim.opt.laststatus = 3 +vim.opt.winbar = "%=%m %f" + + +vim.g.dirvish_mode = ':sort | sort ,^.*[^/]$, r' + +vim.opt.foldopen = "block,hor,jump,mark,percent,quickfix,search,tag" +vim.opt.complete = ".,w,k,kspell,b" +vim.opt.completeopt = "menuone,noselect" + + +vim.opt.secure = true +vim.opt.exrc = true + +-- relativenumbers and absolute number +vim.opt.relativenumber = true +vim.opt.number = true + +-- don't show previous search pattern +vim.opt.hlsearch = false + +-- don't free buffer memory when abandoned +vim.opt.hidden = true + +-- 1 tab == 4 spaces +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 + +-- use spaces instead of tabs +vim.opt.expandtab = true + +vim.opt.smartindent = true +vim.opt.autoindent = true + +-- show special characters as listed +vim.opt.list = true +vim.opt.listchars = { tab = ' ', eol = "" } +vim.opt.showbreak = '' + +-- make pasting better but makes insert mappings stop working... +-- vim.opt.paste = true + +-- magic vim patterns +vim.opt.magic = true + +-- make splitting consistent +vim.opt.splitbelow = true + +vim.opt.wrap = false +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv('HOME') .. "/.local/share/nvim/undo" +vim.opt.undofile = true +vim.opt.incsearch = true +vim.opt.termguicolors = true +vim.opt.scrolloff = 8 +vim.opt.smd = false +vim.opt.signcolumn = "yes" +vim.opt.inccommand = "split" +vim.opt.wmw = 10 +vim.opt.isfname:append("@-@") +vim.opt.diffopt:append("vertical") +vim.opt.shortmess:append("c") +vim.opt.shell = "/bin/zsh" +-- }}} + +-- load global and utility functions + +vim.g.mapleader = " " +vim.g.maplocalleader = " " +local vimrc = require('vimrc') +-- save session file in cwd +vimrc.cwd_save_session() + +-- tree-sitter {{{ +require('vimrc').setup_treesitter() +-- }}} + +-- {{{ git +vim.cmd([[command! -bang Gap :G commit -am 'fixmeuplater' | G push]]) +-- }}} + +-- completion {{{ +vim.api.nvim_set_keymap('n', ']p', ':tabn<cr>', { silent = true, noremap = true}) +vim.api.nvim_set_keymap('n', '[p', ':tabp<cr>', { silent = true, noremap = true}) + +require'tnychain'.setup( + { + complete_key = '<c-n>', + repeat_chain = '<c-p>' + } +) + +-- require'vimrc.snippets'.setup() + +-- }}} + +-- buffers {{{ +vim.opt.switchbuf = "useopen,usetab" +vim.opt.stal = 2 + +vim.api.nvim_set_keymap( + "n", + "<leader>;", + "<C-^>", + { silent = true, noremap = true } +) + +-- taken from: https://github.com/Furkanzmc/dotfiles/blob/master/vim/init.lua +-- searching and replacing in buffers +vim.api.nvim_set_keymap( + "v", + "<leader>s", + ":call buffers#visual_selection('search', '')<CR>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap( + "v", + "<leader>r", + ":call buffers#visual_selection('replace', '')<CR>", + { silent = true, noremap = true } +) +vim.cmd([[command -nargs=1 -complete=file E execute('silent! !mkdir -p "$(dirname "<args>")"') <Bar> e <args>]]) +-- wiping buffers and wiping nofile-buffers +vim.cmd([[command! -nargs=1 -bang Bdeletes :call buffers#wipe_matching('<args>', <q-bang>)]]) +vim.cmd([[command! Bdnonexisting :call buffers#wipe_nonexisting_files()]]) + +vim.cmd([[command! CleanTrailingWhiteSpace :lua require"vimrc.buffers".clean_trailing_spaces()]]) + +vim.cmd([[augroup vimrc_plugin_buffers]]) +vim.cmd([[au!]]) +vim.cmd( + [[autocmd BufWritePre *.md,*.hcl,*.tf,*.py,*.cpp,*.qml,*.js,*.txt,*.json,*.html,*.lua,*.yaml,*.yml,*.bash,*.sh,*.go :lua require"vimrc.buffers".clean_trailing_spaces()]] +) +vim.cmd( + [[autocmd BufReadPost * lua require"vimrc.buffers".setup_white_space_highlight(vim.fn.bufnr())]] +) +vim.cmd( + [[autocmd BufReadPre *.tf,*.hcl packadd vim-terraform]] +) +vim.cmd([[augroup END]]) + +-- }}} + +-- quickfix {{{ +vim.api.nvim_set_keymap( + "n", + "<C-q>o", + ":copen<cr>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap( + "n", + "<C-q>z", + ":cclose<cr>", + { silent = true, noremap = true } +) + +vim.api.nvim_set_keymap( + "n", + "<C-q>lo", + ":lopen<cr>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap( + "n", + "<C-q>lz", + ":lclose<cr>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap("n", "]q", ":cnext<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[q", ":cprevious<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "]Q", ":cfirst<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[Q", ":clast<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "]l", ":lnext<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[l", ":lprevious<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "]L", ":lfirst<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[L", ":llast<cr>", { silent = true, noremap = true }) +-- }}} + +-- firvish {{{ +require'firvish'.setup() +vim.g.firvish_use_default_mappings=1 +require'vimrc'.setup_jq_function() +require'vimrc'.setup_build_function() +-- }}} + +-- {{{ trouble +require"trouble".setup { } +-- }}} + +-- {{{ tests +require"nvim-test".setup{} +vim.api.nvim_set_keymap( + "n", + "<leader>t", + "<cmd>TestFile<CR>", + {silent = true, noremap = true} +) +-- }}} + +-- lsp {{{ +vim.cmd [[augroup vimrc_nvim_lsp_setup]] +vim.cmd [[au!]] +vim.cmd [[au VimEnter * lua require'vimrc.lsp'.setup()]] +vim.cmd [[augroup END]] +-- }}} + +-- dap {{{ +vim.cmd [[augroup vimrc_nvim_dap_setup]] +vim.cmd [[au!]] +vim.cmd [[au VimEnter * lua require('vimrc.dap').setup_dap()]] +vim.cmd [[augroup END]] +-- }}} + +-- terminal {{{ +-- open close terminal +vim.cmd [[command! Term :lua require('vimrc.term').toggle()]] +-- run current file +vim.cmd [[command! Run :lua require('vimrc.term').run()]] +-- send selection +vim.cmd [[command! -range Send :lua require('vimrc.term').sendSelection()]] +vim.api.nvim_set_keymap( + "t", + "<c-q><c-w>", + "<c-\\><c-n>", + { silent = true, noremap = true } +) +-- }}} + +-- statusline {{{ +-- require('el').setup {} +-- TODO: move to colortemplates +vim.cmd [[hi! link Winbar StatusLine]] +-- }}} + +-- init autocommand {{{ +vim.cmd([[augroup vimrc_init]]) +vim.cmd([[autocmd!]]) +vim.cmd( + [[autocmd BufReadPre,FileReadPre *.rest :if !exists("g:vimrc_rest_nvim_loaded") | packadd vim-rest-console | let g:vimrc_rest_nvim_loaded = v:true | endif | :e]] +) +vim.cmd( + [[autocmd TextYankPost * silent! lua vim.highlight.on_yank{on_visual=false, higroup="IncSearch", timeout=100}]] +) +vim.cmd( + [[ autocmd TextYankPost * if v:event.operator is 'y' && v:event.regname is '' | execute 'OSCYankReg "' | endif ]] +) +vim.cmd( + [[autocmd VimEnter * if filereadable(".exrc.lua") | call execute("luafile .exrc.lua") | endif]] +) +vim.cmd( + [[autocmd VimEnter * if filereadable(".env") | echo execute("Dotenv") | call execute("Dotenv .env") | endif]] +) +-- temp fix for screen redrawing issues +-- cmd( +-- [[autocmd BufEnter * mod]] +-- ) +vim.cmd([[augroup END]]) +-- }}} +-- vim: fdm=marker |
