diff options
| -rw-r--r-- | init.vim | 109 | ||||
| -rw-r--r-- | lua/alpha/init.lua | 1 | ||||
| -rw-r--r-- | lua/alpha/status-line.lua | 24 | ||||
| -rw-r--r-- | lua/alpha/telescope.lua | 44 | ||||
| -rw-r--r-- | plugin/colors.vim | 29 | ||||
| -rw-r--r-- | plugin/git.vim | 12 | ||||
| -rw-r--r-- | plugin/lsp.vim | 66 | ||||
| -rw-r--r-- | plugin/navigation.vim | 16 | ||||
| -rw-r--r-- | plugin/sets.vim | 29 | ||||
| -rw-r--r-- | plugin/status.vim | 1 | ||||
| -rw-r--r-- | plugin/telescope.vim | 26 | ||||
| -rw-r--r-- | plugin/test.vim | 5 | ||||
| -rw-r--r-- | plugin/vimspector.vim | 32 |
13 files changed, 394 insertions, 0 deletions
diff --git a/init.vim b/init.vim new file mode 100644 index 0000000..bc92a5d --- /dev/null +++ b/init.vim @@ -0,0 +1,109 @@ +" Allows to have a .nvimrc per project folder +set exrc + +" Install Vimplug if not installed +if ! filereadable(expand('~/.config/nvim/autoload/plug.vim')) + echo "Downloading junegunn/vim-plug to manage plugins..." + silent !mkdir -p ~/.config/nvim/autoload/ + silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ~/.config/nvim/autoload/plug.vim + autocmd VimEnter * PlugInstall +endif + +" Set plugin folder +call plug#begin('~/.config/nvim/plugged') + +" LSP +Plug 'neovim/nvim-lspconfig' +" Plug 'nvim-lua/completion-nvim' +Plug 'hrsh7th/nvim-compe' +Plug 'anott03/nvim-lspinstall' + +" General use plugins +Plug 'Raimondi/delimitMate' +Plug 'tpope/vim-surround' +Plug 'tpope/vim-fugitive' +Plug 'tpope/vim-repeat' +Plug 'tpope/vim-obsession' +Plug 'tpope/vim-vinegar' +Plug 'tpope/vim-eunuch' +Plug 'tpope/vim-commentary' +Plug 'tpope/vim-tbone' +Plug 'tpope/vim-dadbod' +Plug 'airblade/vim-gitgutter' +Plug 'hashivim/vim-terraform' +Plug 'mattn/emmet-vim' + +Plug 'nicwest/vim-http' + +Plug 'vimwiki/vimwiki' + +" Laravel specific +Plug 'tpope/vim-dispatch' +Plug 'tpope/vim-projectionist' +Plug 'noahfrederick/vim-composer' +Plug 'noahfrederick/vim-laravel' +Plug 'jwalton512/vim-blade' + +" Treesitter +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} +Plug 'nvim-treesitter/playground' + +" Golang +Plug 'fatih/vim-go' + +" Testing +Plug 'vim-test/vim-test' + +" Debug +Plug 'mfussenegger/nvim-dap' +Plug 'puremourning/vimspector' +Plug 'szw/vim-maximizer' + +Plug 'gruvbox-community/gruvbox' + +" Telescope +Plug 'nvim-lua/popup.nvim' +Plug 'nvim-lua/plenary.nvim' +Plug 'nvim-telescope/telescope.nvim' +Plug 'nvim-telescope/telescope-fzy-native.nvim' + +Plug 'kyazdani42/nvim-web-devicons' + +Plug 'hoob3rt/lualine.nvim' + +Plug 'sbdchd/neoformat' + +Plug 'mbbill/undotree' + +call plug#end() + +syntax enable + +let mapleader = ' ' + +inoremap <C-c> <esc> + +nnoremap <Leader><CR> :so ~/.config/nvim/init.vim<CR> +nnoremap <leader>uu :UndotreeToggle<CR> + +let g:vimwiki_list = [{'path': '~/vimwiki/', + \ 'syntax': 'markdown', 'ext': '.md'}] + +let g:gitgutter_map_keys = 0 + +" forward and backward search of current word +nnoremap * /\<<C-R>=expand('<cword>')<CR>\><CR> +nnoremap # ?\<<C-R>=expand('<cword>')<CR>\><CR> + +vnoremap <leader>p "_dP + +" remove whitespaces +autocmd BufWritePre * %s/\s\+$//e + +augroup fmtphp + autocmd! + autocmd BufWritePre *.php undojoin | Neoformat +augroup END + +" Has to be the last line for the .nvimrc per project +set secure diff --git a/lua/alpha/init.lua b/lua/alpha/init.lua new file mode 100644 index 0000000..fa7dd53 --- /dev/null +++ b/lua/alpha/init.lua @@ -0,0 +1 @@ +require("alpha.telescope") diff --git a/lua/alpha/status-line.lua b/lua/alpha/status-line.lua new file mode 100644 index 0000000..63523f4 --- /dev/null +++ b/lua/alpha/status-line.lua @@ -0,0 +1,24 @@ +require('lualine').setup{ + options = { + theme = 'gruvbox', + section_separators = { '', '' }, + component_separators = { '', '' }, + icons_enabled = true, + }, + sections = { + lualine_a = { { 'mode', upper = true } }, + lualine_b = { { 'branch', icon = '' } }, + lualine_c = { { 'filename', file_status = true, path = 1 } }, + lualine_x = { { 'diagnostics', sources = { 'nvim_lsp' } },'encoding', 'fileformat', 'filetype' }, + lualine_y = { 'progress' }, + lualine_z = { 'location' }, + }, + inactive_sections = { + lualine_a = { }, + lualine_b = { }, + lualine_c = { 'filename' }, + lualine_x = { 'location' }, + lualine_y = { }, + lualine_z = { }, + }, + } diff --git a/lua/alpha/telescope.lua b/lua/alpha/telescope.lua new file mode 100644 index 0000000..bbb0b02 --- /dev/null +++ b/lua/alpha/telescope.lua @@ -0,0 +1,44 @@ +local actions = require('telescope.actions') +require('telescope').setup { + defaults = { + file_sorter = require('telescope.sorters').get_fzy_sorter, + prompt_prefix = ' >', + use_less = false, + set_env = { ['COLORTERM'] = 'truecolor' }, + + file_previewer = require('telescope.previewers').vim_buffer_cat.new, + grep_previewer = require('telescope.previewers').vim_buffer_vimgrep.new, + qflist_previewer = require('telescope.previewers').vim_buffer_qflist.new, + + mappings = { + i = { + ["<C-x>"] = false, + ["<C-q>"] = actions.send_to_qflist, + }, + } + }, + extensions = { + fzy_native = { + override_generic_sorter = false, + override_file_sorter = true, + } + } +} + +require('telescope').load_extension('fzy_native') + +local M = {} + +M.search_config = function() + require("telescope.builtin").find_files({ + prompt_title = "< Config >", + cwd = "$HOME/.config/nvim", + file_ignore_patterns = {"undodir/*", "plugged/*"} + }) +end + +M.buffers = function() + require("telescope.builtin").buffers() +end + +return M diff --git a/plugin/colors.vim b/plugin/colors.vim new file mode 100644 index 0000000..695fb91 --- /dev/null +++ b/plugin/colors.vim @@ -0,0 +1,29 @@ +fun! ColorMyPencils() + let g:gruvbox_contrast_dark = 'hard' + let g:gruvbox_bold = 0 + if exists('+termguicolors') + let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" + let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" + endif + let g:gruvbox_invert_selection = '0' + + set background=dark + colorscheme gruvbox + + " Transparency + highlight Normal ctermbg=NONE guibg=NONE + highlight EndOfBuffer ctermbg=NONE guibg=NONE + + highlight ColorColumn ctermbg=0 guibg=grey + " highlight Normal guibg=none + " highlight LineNr guifg=#ff8659 + " highlight LineNr guifg=#aed75f + highlight LineNr guifg=#5eacd3 + highlight netrwDir guifg=#5eacd3 + highlight qfFileName guifg=#aed75f + hi TelescopeBorder guifg=#5eacd +endfun + +call ColorMyPencils() + +nnoremap <leader>cc :call ColorMyPencils()<CR> diff --git a/plugin/git.vim b/plugin/git.vim new file mode 100644 index 0000000..21bcc9a --- /dev/null +++ b/plugin/git.vim @@ -0,0 +1,12 @@ +nmap ]h <Plug>(GitGutterNextHunk) +nmap [h <Plug>(GitGutterPrevHunk) + +nmap ghs <Plug>(GitGutterStageHunk) +nmap ghu <Plug>(GitGutterUndoHunk) + +" nmap <Leader>gs :G<CR> +nmap <Leader>gdh :diffget //2<CR> +nmap <Leader>gdl :diffget //3<CR> + +nnoremap <leader>ga :Git fetch --all<CR> +nnoremap <leader>gl :Git pull<CR> diff --git a/plugin/lsp.vim b/plugin/lsp.vim new file mode 100644 index 0000000..02b57a1 --- /dev/null +++ b/plugin/lsp.vim @@ -0,0 +1,66 @@ +let g:compe = {} +let g:compe.enabled = v:true +let g:compe.autocomplete = v:true +let g:compe.debug = v:false +let g:compe.min_length = 1 +let g:compe.preselect = 'enable' +let g:compe.throttle_time = 80 +let g:compe.source_timeout = 200 +let g:compe.incomplete_delay = 400 +let g:compe.max_abbr_width = 100 +let g:compe.max_kind_width = 100 +let g:compe.max_menu_width = 100 +let g:compe.documentation = v:true + +let g:compe.source = {} +let g:compe.source.path = v:true +let g:compe.source.buffer = v:true +let g:compe.source.calc = v:true +let g:compe.source.nvim_lsp = v:true +let g:compe.source.nvim_lua = v:true +let g:compe.source.vsnip = v:true + +inoremap <silent><expr> <C-Space> compe#complete() +inoremap <silent><expr> <CR> compe#confirm('<CR>') +inoremap <silent><expr> <C-e> compe#close('<C-e>') +inoremap <silent><expr> <C-f> compe#scroll({ 'delta': +4 }) +inoremap <silent><expr> <C-d> compe#scroll({ 'delta': -4 }) + +fun! LspLocationList() + lua vim.lsp.diagnostic.set_loclist({open_loclist = false}) +endfun + +augroup alpha_lsp + autocmd! + autocmd! BufWrite,BufEnter,InsertLeave * :call LspLocationList() +augroup END + +nnoremap <leader>vd :lua vim.lsp.buf.definition()<CR> +nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR> +nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR> + +" to test +nnoremap <leader>vi :lua vim.lsp.buf.implementation()<CR> +nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR> +nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR> +nnoremap <leader>vsd :lua vim.lsp.util.show_line_diagnostics(); vim.lsp.util.show_line_diagnostics()<CR> +nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR> + +nnoremap <leader>vo :LspRestart<CR> + + +au Filetype php setl omnifunc=v:lua.vim.lsp.omnifunc +autocmd FileType go setlocal omnifunc=v:lua.vim.lsp.omnifunc + +let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy'] + +lua << EOF + +local function on_attach() + vim.api.nvim_set_keymap('n', 'K', ':lua vim.lsp.buf.hover()<cr>', {noremap = true}) +end +require'lspconfig'.tsserver.setup{ on_attach=on_attach } +require'lspconfig'.intelephense.setup{ on_attach=on_attach } +require'lspconfig'.gopls.setup{ on_attach=on_attach } +require'lspconfig'.sumneko_lua.setup{ on_attach=on_attach } +EOF diff --git a/plugin/navigation.vim b/plugin/navigation.vim new file mode 100644 index 0000000..ff3c652 --- /dev/null +++ b/plugin/navigation.vim @@ -0,0 +1,16 @@ +nnoremap <leader>h :wincmd h<CR> +nnoremap <leader>j :wincmd j<CR> +nnoremap <leader>k :wincmd k<CR> +nnoremap <leader>l :wincmd l<CR> +nnoremap <leader>q :wincmd q<CR> + +nnoremap <leader>vsp :vsp<CR> +nnoremap <leader>sp :sp<CR> + +nnoremap <C-j> :cnext<CR> +nnoremap <C-k> :cprev<CR> + +nnoremap <leader>i :lnext<CR> +nnoremap <leader>o :lprev<CR> + +nnoremap <leader>bd :bd<CR> diff --git a/plugin/sets.vim b/plugin/sets.vim new file mode 100644 index 0000000..5a170a9 --- /dev/null +++ b/plugin/sets.vim @@ -0,0 +1,29 @@ +set nu +set relativenumber +set hidden +set expandtab +set tabstop=4 softtabstop=4 +set shiftwidth=4 +set smartindent +set noerrorbells +set nowrap +set noswapfile +set undofile +set undodir=~/.config/nvim/undodir +set nohlsearch +set incsearch +set termguicolors +set scrolloff=4 +set noshowmode +set clipboard+=unnamedplus +set completeopt=menuone,noinsert,noselect +set signcolumn=yes +set colorcolumn=80 +set splitbelow +set splitright +set autowrite + +set cmdheight=2 + +" improve user experience updating more frequently +set updatetime=50 diff --git a/plugin/status.vim b/plugin/status.vim new file mode 100644 index 0000000..9936f3e --- /dev/null +++ b/plugin/status.vim @@ -0,0 +1 @@ +lua require("alpha.status-line") diff --git a/plugin/telescope.vim b/plugin/telescope.vim new file mode 100644 index 0000000..e057d4c --- /dev/null +++ b/plugin/telescope.vim @@ -0,0 +1,26 @@ +lua require("alpha") + +let g:telescope_cache_results = 1 +let g:telescope_prime_fuzzy_find = 1 + +nnoremap <leader>ps :lua require('telescope.builtin').grep_string({ search = vim.fn.input("Grep For > ")})<CR> +nnoremap <leader>pw :lua require('telescope.builtin').grep_string({ search = vim.fn.expand("<cword>")})<CR> + +nnoremap <leader>pp :lua require('telescope.builtin').git_files()<CR> +nnoremap <leader>po :lua require('telescope.builtin').find_files()<CR> + +nnoremap <leader>pv :lua require('telescope.builtin').lsp_workspace_symbols({ query = vim.fn.input("Symbols > ")})<CR> + +nnoremap <leader>pe :lua require('alpha.telescope').buffers()<CR> + +nnoremap <leader>bb :lua require('telescope.builtin').file_browser()<CR> + +nnoremap <leader>gc :lua require('telescope.builtin').git_branches()<CR> +nnoremap <leader>gs :lua require('telescope.builtin').git_status()<CR> + +nnoremap <leader>rc :lua require('alpha.telescope').search_config()<CR> + +nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR> + +nnoremap <leader>vs :lua require('telescope.builtin').lsp_document_symbols()<CR> +nnoremap <leader>ve :lua require('telescope.builtin').lsp_document_diagnostics()<CR> diff --git a/plugin/test.vim b/plugin/test.vim new file mode 100644 index 0000000..0f0c85b --- /dev/null +++ b/plugin/test.vim @@ -0,0 +1,5 @@ +nmap <silent> t<C-n> :TestNearest<CR> +nmap <silent> t<C-f> :TestFile<CR> +nmap <silent> t<C-s> :TestSuite<CR> +nmap <silent> t<C-l> :TestLast<CR> +nmap <silent> t<C-g> :TestVisit<CR> diff --git a/plugin/vimspector.vim b/plugin/vimspector.vim new file mode 100644 index 0000000..8223a38 --- /dev/null +++ b/plugin/vimspector.vim @@ -0,0 +1,32 @@ +" Debuggin config +fun! GotoWindow(id) + call win_gotoid(a:id) + MaximizerToggle +endfun + +let g:vimspector_enable_mappings = 'HUMAN' + +" Debugger remaps +nnoremap <leader>m :MaximizerToggle!<CR> +nnoremap <leader>dd :call vimspector#Launch()<CR> +nnoremap <leader>dc :call GotoWindow(g:vimspector_session_windows.code)<CR> +nnoremap <leader>dt :call GotoWindow(g:vimspector_session_windows.tagpage)<CR> +nnoremap <leader>dv :call GotoWindow(g:vimspector_session_windows.variables)<CR> +nnoremap <leader>dw :call GotoWindow(g:vimspector_session_windows.watches)<CR> +nnoremap <leader>ds :call GotoWindow(g:vimspector_session_windows.stack_trace)<CR> +nnoremap <leader>do :call GotoWindow(g:vimspector_session_windows.output)<CR> +nnoremap <leader>de :call vimspector#Reset()<CR> + +nnoremap <leader>dtcb :call vimspector#CleanLineBreakpoint()<CR> + +nmap <leader>dl <Plug>VimspectorStepInto +nmap <leader>dj <Plug>VimspectorStepOver +nmap <leader>dk <Plug>VimspectorStepOut +nmap <leader>d_ <Plug>VimspectorRestart +nnoremap <leader>d<space> :call vimspector#Continue()<CR> + +nmap <leader>drc <Plug>VimspectorRunToCursor +nmap <leader>dbp <Plug>VimspectorToggleBreakpoint +nmap <leader>dcbp <Plug>VimspectorToggleConditionalBreakpoint + +let g:vimspector_install_gadgets = [ 'vscode-go' ] |