summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua/config
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/config')
-rw-r--r--.config/nvim/lua/config/bindings.lua69
-rw-r--r--.config/nvim/lua/config/hooks.lua8
-rw-r--r--.config/nvim/lua/config/langs.lua11
-rw-r--r--.config/nvim/lua/config/lazy.lua117
-rw-r--r--.config/nvim/lua/config/settings.lua93
5 files changed, 298 insertions, 0 deletions
diff --git a/.config/nvim/lua/config/bindings.lua b/.config/nvim/lua/config/bindings.lua
new file mode 100644
index 0000000..2c5f869
--- /dev/null
+++ b/.config/nvim/lua/config/bindings.lua
@@ -0,0 +1,69 @@
+vim.keymap.set('n', '<M-x>', ':', { noremap = true, silent = false })
+vim.keymap.set('n', '<M-k>', ':bprevious<CR>', { noremap = true, silent = true })
+-- vim.keymap.set('n', '<C-u>', '<C-u>zz', { noremap = true, silent = true })
+-- vim.keymap.set('n', '<C-d>', '<C-d>zz', { noremap = true, silent = true })
+-- vim.keymap.set('n', '<C-b>', '<C-b>zz', { noremap = true, silent = true })
+-- vim.keymap.set('n', '<C-f>', '<C-f>zz', { noremap = true, silent = true })
+vim.keymap.set('n', '<M-j>', ':bnext<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<C-h>', '<C-w>h', { noremap = true, silent = false })
+vim.keymap.set('n', '<C-j>', '<C-w>j', { noremap = true, silent = false })
+vim.keymap.set('n', '<C-k>', '<C-w>k', { noremap = true, silent = false })
+vim.keymap.set('n', '<C-l>', '<C-w>l', { noremap = true, silent = false })
+vim.keymap.set('n', '<C-o>', '<C-w>o', { noremap = true, silent = false })
+vim.keymap.set('n', '<C-q>', '<C-w>q', { noremap = true, silent = false })
+vim.keymap.set('n', '*', '*zz', { noremap = true, silent = false })
+vim.keymap.set('i', '<C-j>', 'pumvisible() ? "<C-n>" : "<C-j>"', { expr = true })
+vim.keymap.set('i', '<C-k>', 'pumvisible() ? "<C-p>" : "<C-k>"', { expr = true })
+vim.keymap.set('i', '<CR>', 'pumvisible() ? asyncomplete#close_popup() : "\\<cr>"', { expr = true })
+vim.keymap.set('n', '<F2>', vim.cmd.NvimTreeToggle, { noremap = true, silent = true })
+vim.keymap.set('n', '<F4>', ':!make<space>-j9<space>', { noremap = true, silent = false })
+vim.keymap.set('n', '<F3>', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<F5>', vim.cmd.UndotreeToggle, { noremap = true, silent = true })
+vim.g.floaterm_keymap_toggle = '<F1>'
+vim.g.floaterm_keymap_prev = '<F11>'
+vim.g.floaterm_keymap_next = '<F12>'
+vim.keymap.set('v', 'J', ":m '>+1<CR>gv=gv")
+vim.keymap.set('v', 'K', ":m '<-2<CR>gv=gv")
+vim.keymap.set('x', '<leader>p', "\"_dP")
+vim.keymap.set('n', 'Q', '<nop>')
+vim.keymap.set('n', '<leader><space>', vim.cmd.nohlsearch, { noremap = true, silent = true })
+
+local ts = require('telescope.builtin')
+require('telescope').load_extension('harpoon')
+local harpoon = require('harpoon')
+harpoon:setup()
+
+vim.keymap.set('n', '<M-1>', function() harpoon:list():select(1) end)
+vim.keymap.set('n', '<M-2>', function() harpoon:list():select(2) end)
+vim.keymap.set('n', '<M-3>', function() harpoon:list():select(3) end)
+vim.keymap.set('n', '<M-4>', function() harpoon:list():select(4) end)
+
+-- normal
+vim.keymap.set('n', '<leader>d', ':bn|:bd#<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>D', '"-ddk:put = strftime(\' * %a %b %d %T %Y\')<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>k', ':w<CR>:bp<CR>:bd #<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>u', vim.cmd.UndotreeToggle, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>u', ':w<CR>', { noremap = true, silent = true })
+-- harpoon
+vim.keymap.set('n', '<leader>aa', function() harpoon:list():add() end, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>ae', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>af', ':Telescope harpoon marks<CR>', { noremap = true, silent = true })
+-- trouble
+vim.keymap.set('n', '<leader>xx', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>xw', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>xd', ':Trouble diagnostics toggle focus=true filter.buf=0<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>xl', ':Trouble loclist toggle focus=true<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>xq', ':Trouble qflist toggle focus=true<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>xs', ':Trouble lsp toggle focus=true win.position=right<CR>', { noremap = true, silent = true })
+-- telescope
+vim.keymap.set('n', '<leader>fb', ts.buffers, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fd', ts.diagnostics, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fe', ':Telescope harpoon marks<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>ff', ts.find_files, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fs', ts.live_grep, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fg', function() ts.grep_string({ search = vim.fn.input("Grep > ") }) end, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>ft', ':TodoTelescope keywords=TODO,HACK,WARN,PERF,NOTE,TEST,FIX<CR>', { noremap = true, silent = true })
+-- neovim
+vim.keymap.set('n', '<leader>vu', vim.cmd.Lazy, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>vm', vim.cmd.Mason, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>vv', vim.cmd.Ex, { noremap = true, silent = true })
diff --git a/.config/nvim/lua/config/hooks.lua b/.config/nvim/lua/config/hooks.lua
new file mode 100644
index 0000000..eaf0687
--- /dev/null
+++ b/.config/nvim/lua/config/hooks.lua
@@ -0,0 +1,8 @@
+vim.api.nvim_create_autocmd({"BufWritePre"}, {
+ pattern = "*",
+ callback = function(ev)
+ save_cursor = vim.fn.getpos(".")
+ vim.cmd([[%s/\s\+$//e]])
+ vim.fn.setpos(".", save_cursor)
+ end,
+})
diff --git a/.config/nvim/lua/config/langs.lua b/.config/nvim/lua/config/langs.lua
new file mode 100644
index 0000000..64fe7ea
--- /dev/null
+++ b/.config/nvim/lua/config/langs.lua
@@ -0,0 +1,11 @@
+vim.g.asmsyntax = 'asm'
+vim.g.perl_include_pod = 1
+vim.g.perl_compiler_force_warnings = 1
+
+-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.c,*.h', command = 'set filetype=c'})
+-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.cc,*.hh,*.cpp,*.hpp,*.cxx,*.hxx', command = 'set filetype=cpp'})
+-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.ms,*.1,*.2,*.3,*.4,*.5,*.6,*.7,*.8,*.9', command = 'set filetype=groff'})
+-- vim.api.nvim_create_autocmd('BufNewFile,BufRead', { pattern = '*.conf', command = 'set filetype=conf'})
+vim.api.nvim_create_autocmd('BufWritePost', { pattern = '*.ms', command = "let pdf=fnamemodify(bufname('%'), ':r') . \".pdf\" | silent! execute \"!nroff % -ms -Tpdf -Kutf8 > \" . pdf"})
+-- vim.api.nvim_create_autocmd('FileType fish', { command = 'compiler fish'})
+-- vim.api.nvim_create_autocmd('FileType perl', { command = 'setlocal com-=:# kp=perldoc\\ -f | compiler perl'})
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..64d930a
--- /dev/null
+++ b/.config/nvim/lua/config/lazy.lua
@@ -0,0 +1,117 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+end
+
+vim.opt.rtp:prepend(lazypath)
+
+-- Make sure to setup `mapleader` and `maplocalleader` before
+-- loading lazy.nvim so that mappings are correct.
+-- This is also a good place to setup other settings (vim.opt)
+vim.g.mapleader = "\\"
+vim.g.maplocalleader = "\\"
+
+require('lazy').setup({
+ spec = {
+ {
+ 'windwp/nvim-autopairs',
+ config = function() require('nvim-autopairs').setup {} end
+ },
+ {
+ 'lewis6991/gitsigns.nvim',
+ config = function() require('gitsigns').setup {} end
+ },
+ {
+ 'numToStr/Comment.nvim',
+ requires = { {'JoosepAlviste/nvim-ts-context-commentstring'} },
+ config = function()
+ require('Comment').setup()
+ end
+ },
+ { 'mbbill/undotree' },
+ { 'chrisbra/csv.vim' },
+ {
+ 'ThePrimeagen/harpoon',
+ branch = 'harpoon2',
+ requires = { {'nvim-lua/plenary.nvim'} }
+ },
+ {
+ 'lukas-reineke/indent-blankline.nvim',
+ config = function()
+ local highlight = {
+ "Whitespace",
+ }
+ require('ibl').setup {
+ debounce = 100,
+ indent = { highlight = highlight, char = '┊', },
+ scope = { show_start = false, show_end = false },
+ }
+ end,
+ },
+ {
+ 'folke/todo-comments.nvim',
+ requires = { {'nvim-lua/plenary.nvim'} },
+ config = function()
+ require('todo-comments.config').setup{
+ highlight = {
+ multiline = false,
+ },
+ }
+ require('todo-comments')
+ end
+ },
+ {
+ 'lcheylus/overlength.nvim',
+ config = function()
+ require('overlength').setup{
+ enabled = true,
+ colors = {
+ ctermfg = nil,
+ ctermbg = 'darkgrey',
+ fg = nil,
+ bg = '#8B0000',
+ },
+ textwidth_mode = 0,
+ default_overlength = 80,
+ grace_length = 1,
+ highlight_to_eol = true,
+ disable_ft = { 'qf', 'help', 'man', 'checkhealth', 'lazy', 'packer', 'NvimTree', 'Telescope', 'WhichKey', 'text', 'csv', 'lua', '' }
+ }
+ end
+ },
+ {
+ 'kylechui/nvim-surround',
+ version = "^3.0.0",
+ event = "VeryLazy",
+ config = function()
+ require('nvim-surround').setup()
+ end
+ },
+ {
+ 'ggandor/leap.nvim',
+ requires = {'tpope/vim-repeat'},
+ config = function()
+ require('leap').setup({})
+ vim.keymap.set({'n', 'x', 'o'}, '<leader>s', '<Plug>(leap-forward-to)')
+ vim.keymap.set({'n', 'x', 'o'}, '<leader>S', '<Plug>(leap-backward-to)')
+ vim.keymap.set({'n', 'x', 'o'}, '<C-s>', '<Plug>(leap-forward-till)')
+ vim.keymap.set({'n', 'x', 'o'}, '<C-S-s>', '<Plug>(leap-backward-till)')
+ end
+ },
+ { import = "plugins" },
+ },
+})
+
+-- use 'preservim/tagbar'
+-- use 'sainnhe/gruvbox-material'
+-- use 'savq/melange-nvim'
diff --git a/.config/nvim/lua/config/settings.lua b/.config/nvim/lua/config/settings.lua
new file mode 100644
index 0000000..e578062
--- /dev/null
+++ b/.config/nvim/lua/config/settings.lua
@@ -0,0 +1,93 @@
+vim.opt.autochdir = false
+vim.opt.cindent = true
+vim.cmd [[
+set cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l1,b0,gs,h0,N0,E0,p0,t0,i0,+s
+set cinoptions+=c1,C0,/0,(s,us,U0,w1,Ws,k0,m0,M1,)20,*70,#0
+set clipboard^=unnamedplus
+set path+=**
+set shortmess+=c
+]]
+vim.opt.completeopt = 'menuone,noinsert,noselect,preview'
+vim.opt.cursorline = true
+vim.opt.encoding = 'utf-8'
+-- vim.opt.go = 'a'
+vim.opt.hidden = true
+vim.opt.makeprg = 'make'
+vim.opt.mouse = 'a'
+vim.opt.compatible = false
+vim.opt.expandtab = false
+vim.opt.hlsearch = true
+vim.opt.incsearch = true
+vim.opt.number = true
+vim.opt.shiftwidth = 4
+vim.opt.softtabstop = 4
+vim.opt.ruler = true
+vim.opt.tabstop = 4
+vim.opt.textwidth = 0
+vim.opt.timeoutlen = 1500
+vim.opt.undodir = '/tmp/nvim_undo'
+vim.opt.undofile = true
+vim.opt.wildmode = 'longest,list,full'
+vim.opt.directory = '/tmp/nvim_swap'
+vim.opt.colorcolumn = "80"
+vim.opt.scrolloff = 5
+vim.opt.signcolumn = "yes"
+vim.o.ignorecase = true
+vim.o.smartcase = true
+vim.opt.fillchars = {eob = " "}
+vim.opt.wrap = true
+vim.opt.termguicolors = true
+vim.opt.bg = 'dark'
+
+vim.g.gruvbox_material_background = 'medium'
+vim.g.gruvbox_material_foreground = 'original'
+vim.g.gruvbox_material_better_performance = 1
+
+vim.cmd [[
+syntax on
+
+" let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
+" let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
+" let g:deus_termcolors=256
+" colorscheme deus
+
+" colorscheme gruvbox-material
+
+" colorscheme gruvbox
+
+" colorscheme melange
+
+" let g:onedark_config = {
+" \ 'style': 'warmer',
+" \}
+" colorscheme onedark
+
+
+let &colorcolumn = join(range(80, 400), ',')
+filetype plugin indent on
+highlight Normal ctermbg=none guibg=none
+highlight NonText ctermbg=none guibg=none
+highlight LineNr ctermbg=none guibg=none
+highlight EndOfBuffer ctermbg=none guibg=none
+highlight FloatermBorder guibg=none guifg='#ebdbb2'
+highlight SignColumn ctermbg=none guibg=none
+" highlight DiagnosticError guifg='#f25942' guibg=none ctermbg=none
+" highlight DiagnosticVirtualTextError guifg='#f25942' guibg=none ctermbg=none
+" highlight TroubleError guifg='#f25942' guibg=none ctermbg=none
+" highlight TroubleSignError guifg='#f25942' guibg=none ctermbg=none
+" highlight DiagnosticWarn guifg='#e9b143' guibg=none ctermbg=none
+" highlight DiagnosticVirtualTextWarn guifg='#e9b143' guibg=none ctermbg=none
+" highlight TroubleWarn guifg='#e9b143' guibg=none ctermbg=none
+" highlight TroubleSignWarn guifg='#e9b143' guibg=none ctermbg=none
+autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
+]]
+vim.g.mapleader = '\\'
+vim.g.maplocalleader = '\\'
+local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
+vim.api.nvim_create_autocmd('TextYankPost', {
+ callback = function()
+ vim.highlight.on_yank()
+ end,
+ group = highlight_group,
+ pattern = '*',
+})