diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..6edef01 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,9 @@ +vim.g.mapleader = " " + +require("sets") +require("plugins") +require("keymaps") +require("lsp") +require("theme") + +vim.cmd("source ~/.config/nvim/not_init.vim") diff --git a/nvim/init.vim b/nvim/init.vim deleted file mode 100644 index 608bace..0000000 --- a/nvim/init.vim +++ /dev/null @@ -1,320 +0,0 @@ -imap jj - -set number -set relativenumber -set tabstop=4 softtabstop=4 -set shiftwidth=4 -set expandtab -set smartindent -set nohlsearch -set hidden -set noerrorbells -set nowrap -set noswapfile -set nobackup -set undodir=~/.vim/undodir -set undofile -set incsearch -set termguicolors -set scrolloff=8 -set colorcolumn=80,120 -set signcolumn=yes -set cmdheight=2 -set notitle -set updatetime=50 -au ColorScheme * hi Normal guibg=none ctermbg=none -au ColorScheme * hi NonText guibg=none ctermbg=none - -call plug#begin('~/.vim/plugged') - -Plug 'voldikss/vim-floaterm' -Plug 'mbbill/undotree' -Plug 'wellle/context.vim' - -Plug 'tpope/vim-fugitive' -Plug 'tpope/vim-commentary' -Plug 'tpope/vim-surround' - -Plug 'f-person/git-blame.nvim' - -Plug 'gruvbox-community/gruvbox' - -Plug 'nvim-lua/plenary.nvim' -Plug 'ThePrimeagen/harpoon' - -Plug 'BurntSushi/ripgrep' - -Plug 'sharkdp/fd' - -Plug 'nvim-treesitter/nvim-treesitter' - -Plug 'nvim-telescope/telescope-fzf-native.nvim', { 'do': 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' } - -Plug 'nvim-telescope/telescope.nvim' - -Plug 'airblade/vim-gitgutter' - -Plug 'liuchengxu/vista.vim' - -" Completion -Plug 'neovim/nvim-lspconfig' -Plug 'hrsh7th/cmp-nvim-lsp' -Plug 'hrsh7th/cmp-buffer' -Plug 'hrsh7th/cmp-path' -Plug 'hrsh7th/cmp-cmdline' -Plug 'hrsh7th/nvim-cmp' - -" For vsnip users. -Plug 'hrsh7th/cmp-vsnip' -Plug 'hrsh7th/vim-vsnip' - -" Go plugins -Plug 'fatih/vim-go' -Plug 'Shougo/neocomplete.vim' - -Plug 'majutsushi/tagbar' - -Plug 'vim-airline/vim-airline' -Plug 'vim-airline/vim-airline-themes' -Plug 'kyazdani42/nvim-web-devicons' -Plug 'kyazdani42/nvim-tree.lua' -Plug 'ellisonleao/glow.nvim', {'branch': 'main'} -Plug 'tpope/vim-dispatch' -call plug#end() - -let $GINKGO_EDITOR_INTEGRATION = "true" - -lua require('nvim-tree').setup() - -" Find files using Telescope command-line sugar. -let mapleader = " " -nnoremap ff lua require('telescope.builtin').find_files({hidden = true, file_ignore_patterns = {"^.git"}}) -nnoremap fg lua require('telescope.builtin').live_grep() -nnoremap fb lua require('telescope.builtin').buffers() -nnoremap fh lua require('harpoon.ui').toggle_quick_menu() - -nnoremap err oif err != nil {return nil, err}kkI -nnoremap :GoReferrers - -nnoremap q :bp\|bd # -nnoremap w :w -nnoremap n :bn -nnoremap b :bp -nnoremap 1 lua require("harpoon.ui").nav_file(1) -nnoremap 2 lua require("harpoon.ui").nav_file(2) -nnoremap 3 lua require("harpoon.ui").nav_file(3) -nnoremap 4 lua require("harpoon.ui").nav_file(4) -nnoremap 5 lua require("harpoon.ui").nav_file(5) -nnoremap 6 lua require("harpoon.ui").nav_file(6) -nnoremap 7 lua require("harpoon.ui").nav_file(7) -nnoremap 8 lua require("harpoon.ui").nav_file(8) -nnoremap 9 lua require("harpoon.ui").nav_file(9) -nnoremap -nnoremap -nnoremap -nnoremap -tnoremap -tnoremap -tnoremap -tnoremap -tnoremap -nnoremap ee :NvimTreeFindFileToggle -nnoremap h lua require("harpoon.mark").add_file() -nnoremap / :Commentary -vnoremap / :Commentary - -vnoremap J :m '>+1gv=gv -vnoremap K :m '<-2gv=gv - -let g:floaterm_wintype='split' -let g:floaterm_height=0.2 -nnoremap :FloatermNew -tnoremap :FloatermNew -nnoremap :FloatermPrev -tnoremap :FloatermPrev -nnoremap :FloatermNext -tnoremap :FloatermNext -nnoremap :FloatermToggle -tnoremap :FloatermToggle - -let mapleader = '\' -nnoremap :so ~/.config/nvim/init.vim -nnoremap :e ~/.config/nvim/init.vim - -augroup jbohanon - autocmd! - autocmd BufWritePre * %s/\s\+$//e -augroup END - -set laststatus=2 -"set statusline=%{FugitiveStatusline()} -"set statusline+=\ %f -colorscheme gruvbox - -" Go specific commands -filetype plugin indent on -set autowrite -" Go syntax highlighting -let g:go_highlight_fields = 1 -let g:go_highlight_functions = 1 -let g:go_highlight_function_calls = 1 -let g:go_highlight_extra_types = 1 -let g:go_highlight_operators = 1 -" Auto formatting and importing -let g:go_fmt_autosave = 1 -let g:go_fmt_command = "goimports" -" Status line types/signatures -let g:go_auto_type_info = 1 - -" Airline config -let g:airline#extensions#tabline#enabled = 1 -let g:airline_powerline_fonts = 1 - -" Completion config -set completeopt=menu,menuone,noselect - -lua << EOF --- Mappings. --- See `:help vim.diagnostic.*` for documentation on any of the below functions -local opts = { noremap=true, silent=true } -vim.keymap.set('n', 'd', vim.diagnostic.open_float, opts) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) -vim.keymap.set('n', 'dl', vim.diagnostic.setloclist, opts) - --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) - -- Enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local bufopts = { noremap=true, silent=true, buffer=bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', vim.lsp.buf.format, bufopts) -end -local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) -require('lspconfig')['gopls'].setup{ - settings = { - gopls = { - templateExtensions = {'gotmpl', 'gohtml'}, - } - }, - filetypes = { "go", "gomod", "gowork", "gotmpl", "gohtml", "gohtmltmpl" }, - on_attach = on_attach, - capabilities = capabilities, -} -require('lspconfig')['pyright'].setup{ - on_attach = on_attach, - capabilities = capabilities, -} -require('lspconfig')['tsserver'].setup{ - on_attach = on_attach, - capabilities = capabilities, -} -require('lspconfig')['clangd'].setup{ - on_attach = on_attach, - capabilities = capabilities, -} -require('lspconfig')['rust_analyzer'].setup{ - on_attach = on_attach, - capabilities = capabilities, -} -require('lspconfig')['bashls'].setup{ - on_attach = on_attach, - capabilities = capabilities, -} -EOF - -lua <"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'vsnip' }, - }, { - { name = 'buffer' }, - }) - }) - - -- Set configuration for specific filetype. - cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'cmp_git' }, - }, { - { name = 'buffer' }, - }) - }) - - -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline('/', { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' } - } - }) - - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) - }) -EOF - -lua << EOF -vim.filetype.add({ - extension = { - gohtml = "gohtmltmpl" - } -}) -EOF diff --git a/nvim/lua/keymaps.lua b/nvim/lua/keymaps.lua new file mode 100644 index 0000000..f9a95e3 --- /dev/null +++ b/nvim/lua/keymaps.lua @@ -0,0 +1,41 @@ +local map = vim.api.nvim_set_keymap + +local noremap = function(ctx, keys, cmd, opts) + opts = opts or {} + opts['noremap'] = true + opts['silent'] = true + map(ctx, keys, cmd, opts) +end + +local nnoremap = function(keys, cmd) + noremap('n', keys, cmd, nil) +end +local tnoremap = function(keys, cmd) + noremap('t', keys, cmd, nil) +end +local vnoremap = function(keys, cmd) + noremap('v', keys, cmd, nil) +end + +-- For plugin-specific keymaps, see that plugin's file in lua/plugins/ + +map('i', 'jj', '', {}) + +nnoremap('q', ':bp|bd #') +nnoremap('w', ':w') +nnoremap('n', ':bn') +nnoremap('b', ':bp') + +nnoremap('', '') +nnoremap('', '') +nnoremap('', '') +nnoremap('', '') + +tnoremap('', '') +tnoremap('', '') +tnoremap('', '') +tnoremap('', '') +tnoremap('', '') + +vnoremap('J', ':m \'>+1gv=gv') +vnoremap('K', ':m \'<-2gv=gv') diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua new file mode 100644 index 0000000..df6833b --- /dev/null +++ b/nvim/lua/lsp.lua @@ -0,0 +1,63 @@ +-- Mappings. +-- See `:help vim.diagnostic.*` for documentation on any of the below functions +local opts = { noremap=true, silent=true } +vim.keymap.set('n', 'd', vim.diagnostic.open_float, opts) +vim.keymap.set('n', 'dd', require'telescope.builtin'.diagnostics, opts) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +vim.keymap.set('n', 'dl', vim.diagnostic.setloclist, opts) + +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer +local on_attach = function(client, bufnr) + -- Enable completion triggered by + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local bufopts = { noremap=true, silent=true, buffer=bufnr } + --vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) + vim.keymap.set('n', 'gD', require'telescope.builtin'.lsp_type_definitions, bufopts) + --vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'gd', require'telescope.builtin'.lsp_definitions, bufopts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + vim.keymap.set('n', 'gi', require'telescope.builtin'.lsp_implementations, bufopts) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) + --vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + vim.keymap.set('n', 'gr', require'telescope.builtin'.lsp_references, bufopts) + vim.keymap.set('n', 'f', vim.lsp.buf.format, bufopts) +end +local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) +require('lspconfig')['gopls'].setup{ + settings = { + gopls = { + templateExtensions = {'gotmpl', 'gohtml'}, + } + }, + filetypes = { "go", "gomod", "gowork", "gotmpl", "gohtml", "gohtmltmpl" }, + on_attach = on_attach, + capabilities = capabilities, +} +require('lspconfig')['pyright'].setup{ + on_attach = on_attach, + capabilities = capabilities, +} +require('lspconfig')['tsserver'].setup{ + on_attach = on_attach, + capabilities = capabilities, +} +require('lspconfig')['clangd'].setup{ + on_attach = on_attach, + capabilities = capabilities, +} +require('lspconfig')['rust_analyzer'].setup{ + on_attach = on_attach, + capabilities = capabilities, +} +require('lspconfig')['bashls'].setup{ + on_attach = on_attach, + capabilities = capabilities, +} diff --git a/nvim/lua/plugins/floaterm.lua b/nvim/lua/plugins/floaterm.lua new file mode 100644 index 0000000..e69de29 diff --git a/nvim/lua/plugins/harpoon.lua b/nvim/lua/plugins/harpoon.lua new file mode 100644 index 0000000..f601683 --- /dev/null +++ b/nvim/lua/plugins/harpoon.lua @@ -0,0 +1,29 @@ +local map = vim.api.nvim_set_keymap + +local harp = require('harpoon.ui') + +local harpmap = function(cmd, cb) + map('n', cmd, '', { + noremap = true, + silent = true, + callback = cb, + }) +end + +local nav_file = function(n) + return function() + harp.nav_file(n) + end +end + +harpmap('ee', require('harpoon.mark').add_file) +harpmap('fh', harp.toggle_quick_menu) +harpmap('1', nav_file(1)) +harpmap('2', nav_file(2)) +harpmap('3', nav_file(3)) +harpmap('4', nav_file(4)) +harpmap('5', nav_file(5)) +harpmap('6', nav_file(6)) +harpmap('7', nav_file(7)) +harpmap('8', nav_file(8)) +harpmap('9', nav_file(9)) diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua new file mode 100644 index 0000000..5c70f1e --- /dev/null +++ b/nvim/lua/plugins/init.lua @@ -0,0 +1,65 @@ +local Plug = vim.fn['plug#'] + +vim.call('plug#begin', '~/.vim/plugged') + +Plug 'voldikss/vim-floaterm' +Plug 'mbbill/undotree' +Plug 'wellle/context.vim' + +Plug 'tpope/vim-fugitive' +Plug 'tpope/vim-commentary' +Plug 'tpope/vim-surround' + +Plug 'f-person/git-blame.nvim' + +Plug 'gruvbox-community/gruvbox' + +Plug 'nvim-lua/plenary.nvim' +Plug 'ThePrimeagen/harpoon' + +Plug 'BurntSushi/ripgrep' + +Plug 'sharkdp/fd' + +Plug 'nvim-treesitter/nvim-treesitter' + +Plug('nvim-telescope/telescope-fzf-native.nvim', { ['do'] = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }) + +Plug 'nvim-telescope/telescope.nvim' + +Plug 'airblade/vim-gitgutter' + +Plug 'liuchengxu/vista.vim' + +-- Completion +Plug 'neovim/nvim-lspconfig' +Plug 'hrsh7th/cmp-nvim-lsp' +Plug 'hrsh7th/cmp-buffer' +Plug 'hrsh7th/cmp-path' +Plug 'hrsh7th/cmp-cmdline' +Plug 'hrsh7th/nvim-cmp' + +-- For vsnip users. +Plug 'hrsh7th/cmp-vsnip' +Plug 'hrsh7th/vim-vsnip' + +-- Go plugins +Plug 'fatih/vim-go' +Plug 'Shougo/neocomplete.vim' + +Plug 'majutsushi/tagbar' + +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' +Plug 'kyazdani42/nvim-web-devicons' +Plug 'kyazdani42/nvim-tree.lua' +Plug('ellisonleao/glow.nvim', { branch = 'main' }) +Plug 'tpope/vim-dispatch' + +vim.call('plug#end') + +require("plugins/floaterm") +require("plugins/harpoon") +require("plugins/telescope") +require("plugins/treesitter") +require("plugins/nvim-cmp") diff --git a/nvim/lua/plugins/nvim-cmp.lua b/nvim/lua/plugins/nvim-cmp.lua new file mode 100644 index 0000000..19f22c2 --- /dev/null +++ b/nvim/lua/plugins/nvim-cmp.lua @@ -0,0 +1,73 @@ +local cmp = require('cmp') + +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + }, { + { name = 'buffer' }, + }) +}) + +-- Set configuration for specific filetype. +cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'cmp_git' }, + }, { + { name = 'buffer' }, + }) +}) + +-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline('/', { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) +}) diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..0ab4ada --- /dev/null +++ b/nvim/lua/plugins/telescope.lua @@ -0,0 +1,21 @@ +local map = vim.api.nvim_set_keymap + +local tele = require('telescope.builtin') + +local telemap = function(cmd, cb) + map('n', cmd, '', { + noremap = true, + silent = true, + callback = cb, + }) +end + +telemap('ff', function() tele.find_files({ hidden = true, file_ignore_patterns = {'^.git'} }) end) + +telemap('fg', tele.live_grep) + +telemap('fb', tele.buffers) + +telemap('ft', tele.grep_string) + +telemap('tr', tele.treesitter) diff --git a/nvim/lua/plugins/treesitter.lua b/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..9afe552 --- /dev/null +++ b/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,4 @@ +require("nvim-tree").setup() +vim.api.nvim_set_option('foldmethod', 'expr') +vim.api.nvim_set_option('foldexpr', 'nvim_treesitter#foldexpr()') +vim.api.nvim_set_option('foldenable', false) diff --git a/nvim/lua/sets.lua b/nvim/lua/sets.lua new file mode 100644 index 0000000..f3cba80 --- /dev/null +++ b/nvim/lua/sets.lua @@ -0,0 +1,27 @@ +vim.api.nvim_win_set_option(0, 'number', true) +vim.api.nvim_win_set_option(0, 'relativenumber', true) +vim.api.nvim_win_set_option(0, 'wrap', false) + +vim.api.nvim_set_option('tabstop', 4) +vim.api.nvim_set_option('softtabstop', 4) +vim.api.nvim_set_option('shiftwidth', 4) +vim.api.nvim_set_option('expandtab', true) +vim.api.nvim_set_option('smartindent', true) +vim.api.nvim_set_option('termguicolors', true) +vim.api.nvim_set_option('scrolloff', 8) +vim.api.nvim_set_option('colorcolumn', "80,120") +vim.api.nvim_set_option('signcolumn', 'yes') +vim.api.nvim_set_option('cmdheight', 2) +vim.api.nvim_set_option('title', false) + +vim.api.nvim_set_option('hlsearch', false) +vim.api.nvim_set_option('incsearch', true) +vim.api.nvim_set_option('hidden', true) +vim.api.nvim_set_option('errorbells', false) +vim.api.nvim_set_option('updatetime', 50) + +vim.api.nvim_set_option('swapfile', false) +vim.api.nvim_set_option('backup', false) +vim.api.nvim_set_option('undofile', true) +vim.api.nvim_set_option('undodir', vim.fn.expand('~')..'/.vim/undodir') + diff --git a/nvim/lua/theme.lua b/nvim/lua/theme.lua new file mode 100644 index 0000000..e9c7d34 --- /dev/null +++ b/nvim/lua/theme.lua @@ -0,0 +1,12 @@ +local themegroup = vim.api.nvim_create_augroup('themegroup', { clear = true }) + +vim.api.nvim_create_autocmd('ColorScheme', { + pattern = "*", + group = themegroup, + command = "hi Normal guibg=none ctermbg=none", +}) +vim.api.nvim_create_autocmd('ColorScheme', { + pattern = "*", + group = themegroup, + command = "hi NonText guibg=none ctermbg=none", +}) diff --git a/nvim/not_init.vim b/nvim/not_init.vim new file mode 100644 index 0000000..dc3699c --- /dev/null +++ b/nvim/not_init.vim @@ -0,0 +1,324 @@ +" imap jj + +" set number +" set relativenumber +" set tabstop=4 softtabstop=4 +" set shiftwidth=4 +" set expandtab +" set smartindent +" set nohlsearch +" set hidden +" set noerrorbells +" set nowrap +" set noswapfile +" set nobackup +" set undodir=~/.vim/undodir +" set undofile +" set incsearch +" set termguicolors +" set scrolloff=8 +" set colorcolumn=80,120 +" set signcolumn=yes +" set cmdheight=2 +" set notitle +" set updatetime=50 +" au ColorScheme * hi Normal guibg=none ctermbg=none +" au ColorScheme * hi NonText guibg=none ctermbg=none + +" call plug#begin('~/.vim/plugged') + +" Plug 'voldikss/vim-floaterm' +" Plug 'mbbill/undotree' +" Plug 'wellle/context.vim' + +" Plug 'tpope/vim-fugitive' +" Plug 'tpope/vim-commentary' +" Plug 'tpope/vim-surround' + +" Plug 'f-person/git-blame.nvim' + +" Plug 'gruvbox-community/gruvbox' + +" Plug 'nvim-lua/plenary.nvim' +" Plug 'ThePrimeagen/harpoon' + +" Plug 'BurntSushi/ripgrep' + +" Plug 'sharkdp/fd' + +" Plug 'nvim-treesitter/nvim-treesitter' + +" Plug 'nvim-telescope/telescope-fzf-native.nvim', { 'do': 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' } + +" Plug 'nvim-telescope/telescope.nvim' + +" Plug 'airblade/vim-gitgutter' + +" Plug 'liuchengxu/vista.vim' + +" " Completion +" Plug 'neovim/nvim-lspconfig' +" Plug 'hrsh7th/cmp-nvim-lsp' +" Plug 'hrsh7th/cmp-buffer' +" Plug 'hrsh7th/cmp-path' +" Plug 'hrsh7th/cmp-cmdline' +" Plug 'hrsh7th/nvim-cmp' + +" " For vsnip users. +" Plug 'hrsh7th/cmp-vsnip' +" Plug 'hrsh7th/vim-vsnip' + +" " Go plugins +" Plug 'fatih/vim-go' +" Plug 'Shougo/neocomplete.vim' + +" Plug 'majutsushi/tagbar' + +" Plug 'vim-airline/vim-airline' +" Plug 'vim-airline/vim-airline-themes' +" Plug 'kyazdani42/nvim-web-devicons' +" Plug 'kyazdani42/nvim-tree.lua' +" Plug 'ellisonleao/glow.nvim', {'branch': 'main'} +" Plug 'tpope/vim-dispatch' +" call plug#end() + +let $GINKGO_EDITOR_INTEGRATION = "true" + +" lua require('nvim-tree').setup() + +" set foldmethod=expr +" set foldexpr=nvim_treesitter#foldexpr() +" set nofoldenable " Disable folding at startup. +" nnoremap zz za +" nnoremap ZZ zA + +" Find files using Telescope command-line sugar. +" let mapleader = \" \" +" nnoremap ff lua require('telescope.builtin').find_files({hidden = true, file_ignore_patterns = {"^.git"}}) +" nnoremap fg lua require('telescope.builtin').live_grep() +" nnoremap fb lua require('telescope.builtin').buffers() +" nnoremap ft lua require('telescope.builtin').grep_string() +" nnoremap fh lua require('harpoon.ui').toggle_quick_menu() +" nnoremap tr lua require('telescope.builtin').treesitter() + +nnoremap err oif err != nil {return nil, err}kkI + +" nnoremap q :bp\|bd # +" nnoremap w :w +" nnoremap n :bn +" nnoremap b :bp +" nnoremap 1 lua require("harpoon.ui").nav_file(1) +" nnoremap 2 lua require("harpoon.ui").nav_file(2) +" nnoremap 3 lua require("harpoon.ui").nav_file(3) +" nnoremap 4 lua require("harpoon.ui").nav_file(4) +" nnoremap 5 lua require("harpoon.ui").nav_file(5) +" nnoremap 6 lua require("harpoon.ui").nav_file(6) +" nnoremap 7 lua require("harpoon.ui").nav_file(7) +" nnoremap 8 lua require("harpoon.ui").nav_file(8) +" nnoremap 9 lua require("harpoon.ui").nav_file(9) +" nnoremap +" nnoremap +" nnoremap +" nnoremap +" tnoremap +" tnoremap +" tnoremap +" tnoremap +" tnoremap +nnoremap ee :NvimTreeFindFileToggle +" nnoremap h lua require("harpoon.mark").add_file() +nnoremap / :Commentary +vnoremap / :Commentary + +" vnoremap J :m '>+1gv=gv +" vnoremap K :m '<-2gv=gv + +let g:floaterm_wintype='split' +let g:floaterm_height=0.2 +nnoremap :FloatermNew +tnoremap :FloatermNew +nnoremap :FloatermPrev +tnoremap :FloatermPrev +nnoremap :FloatermNext +tnoremap :FloatermNext +nnoremap :FloatermToggle +tnoremap :FloatermToggle + +let mapleader = '\' +nnoremap :so ~/.config/nvim/init.lua +nnoremap :e ~/.config/nvim/init.lua +let mapleader = ' ' + +augroup jbohanon + autocmd! + autocmd BufWritePre * %s/\s\+$//e +augroup END + +set laststatus=2 +"set statusline=%{FugitiveStatusline()} +"set statusline+=\ %f +colorscheme gruvbox + +" Go specific commands +filetype plugin indent on +set autowrite +" Go syntax highlighting +let g:go_highlight_fields = 1 +let g:go_highlight_functions = 1 +let g:go_highlight_function_calls = 1 +let g:go_highlight_extra_types = 1 +let g:go_highlight_operators = 1 +" Auto formatting and importing +let g:go_fmt_autosave = 1 +let g:go_fmt_command = "goimports" +" Status line types/signatures +let g:go_auto_type_info = 1 + +" Airline config +let g:airline#extensions#tabline#enabled = 1 +let g:airline_powerline_fonts = 1 + +" Completion config +set completeopt=menu,menuone,noselect,noinsert,preview + +" lua << EOF +" -- Mappings. +" -- See `:help vim.diagnostic.*` for documentation on any of the below functions +" local opts = { noremap=true, silent=true } +" vim.keymap.set('n', 'd', vim.diagnostic.open_float, opts) +" vim.keymap.set('n', 'dd', require'telescope.builtin'.diagnostics, opts) +" vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) +" vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +" vim.keymap.set('n', 'dl', vim.diagnostic.setloclist, opts) + +" -- Use an on_attach function to only map the following keys +" -- after the language server attaches to the current buffer +" local on_attach = function(client, bufnr) +" -- Enable completion triggered by +" vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + +" -- Mappings. +" -- See `:help vim.lsp.*` for documentation on any of the below functions +" local bufopts = { noremap=true, silent=true, buffer=bufnr } +" --vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) +" vim.keymap.set('n', 'gD', require'telescope.builtin'.lsp_type_definitions, bufopts) +" --vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) +" vim.keymap.set('n', 'gd', require'telescope.builtin'.lsp_definitions, bufopts) +" vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) +" vim.keymap.set('n', 'gi', require'telescope.builtin'.lsp_implementations, bufopts) +" vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) +" vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) +" vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) +" vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) +" --vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) +" vim.keymap.set('n', 'gr', require'telescope.builtin'.lsp_references, bufopts) +" vim.keymap.set('n', 'f', vim.lsp.buf.format, bufopts) +" end +" local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) +" require('lspconfig')['gopls'].setup{ +" settings = { +" gopls = { +" templateExtensions = {'gotmpl', 'gohtml'}, +" } +" }, +" filetypes = { "go", "gomod", "gowork", "gotmpl", "gohtml", "gohtmltmpl" }, +" on_attach = on_attach, +" capabilities = capabilities, +" } +" require('lspconfig')['pyright'].setup{ +" on_attach = on_attach, +" capabilities = capabilities, +" } +" require('lspconfig')['tsserver'].setup{ +" on_attach = on_attach, +" capabilities = capabilities, +" } +" require('lspconfig')['clangd'].setup{ +" on_attach = on_attach, +" capabilities = capabilities, +" } +" require('lspconfig')['rust_analyzer'].setup{ +" on_attach = on_attach, +" capabilities = capabilities, +" } +" require('lspconfig')['bashls'].setup{ +" on_attach = on_attach, +" capabilities = capabilities, +" } +" EOF + +" lua <"] = cmp.mapping(function(fallback) +" if cmp.visible() then +" cmp.select_next_item() +" elseif luasnip.expand_or_jumpable() then +" luasnip.expand_or_jump() +" elseif has_words_before() then +" cmp.complete() +" else +" fallback() +" end +" end, { "i", "s" }), +" [""] = cmp.mapping(function(fallback) +" if cmp.visible() then +" cmp.select_prev_item() +" elseif luasnip.jumpable(-1) then +" luasnip.jump(-1) +" else +" fallback() +" end +" end, { "i", "s" }), +" [''] = cmp.mapping.scroll_docs(-4), +" [''] = cmp.mapping.scroll_docs(4), +" [''] = cmp.mapping.complete(), +" [''] = cmp.mapping.abort(), +" [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. +" }), +" sources = cmp.config.sources({ +" { name = 'nvim_lsp' }, +" { name = 'vsnip' }, +" }, { +" { name = 'buffer' }, +" }) +" }) + +" -- Set configuration for specific filetype. +" cmp.setup.filetype('gitcommit', { +" sources = cmp.config.sources({ +" { name = 'cmp_git' }, +" }, { +" { name = 'buffer' }, +" }) +" }) + +" -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). +" cmp.setup.cmdline('/', { +" mapping = cmp.mapping.preset.cmdline(), +" sources = { +" { name = 'buffer' } +" } +" }) + +" -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +" cmp.setup.cmdline(':', { +" mapping = cmp.mapping.preset.cmdline(), +" sources = cmp.config.sources({ +" { name = 'path' } +" }, { +" { name = 'cmdline' } +" }) +" }) +" EOF diff --git a/nvim/nvim b/nvim/nvim deleted file mode 120000 index 8b5a7d9..0000000 --- a/nvim/nvim +++ /dev/null @@ -1 +0,0 @@ -/home/jacob/.dotfiles/nvim \ No newline at end of file