From ec0252961571b71415b64484604a9b7c911bf936 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Mon, 14 Dec 2020 19:11:20 +0200 Subject: [PATCH 01/27] Initial configuration converted to lua Still many missing plugins and configurations --- config.yaml | 41 ++---- home/.config/nvim/coc-settings.json | 33 ----- home/.config/nvim/conf.d/01-plugins.vim | 95 -------------- home/.config/nvim/conf.d/02-appearance.vim | 46 ------- home/.config/nvim/conf.d/03-keybinds.vim | 39 ------ home/.config/nvim/conf.d/04-coc.vim | 129 ------------------- home/.config/nvim/conf.d/05-language.vim | 12 -- home/.config/nvim/conf.d/06-misc.vim | 41 ------ home/.config/nvim/conf.d/07-fzf.vim | 43 ------- home/.config/nvim/init.lua | 9 ++ home/.config/nvim/init.vim | 3 - home/.config/nvim/lua/autocmd.lua | 4 + home/.config/nvim/lua/keybinds.lua | 10 ++ home/.config/nvim/lua/pluginmanager.lua | 46 +++++++ home/.config/nvim/lua/plugins/airline.lua | 10 ++ home/.config/nvim/lua/plugins/completion.lua | 1 + home/.config/nvim/lua/plugins/lsp.lua | 3 + home/.config/nvim/lua/plugins/nerdtree.lua | 0 home/.config/nvim/lua/settings.lua | 44 +++++++ 19 files changed, 137 insertions(+), 472 deletions(-) delete mode 100644 home/.config/nvim/coc-settings.json delete mode 100644 home/.config/nvim/conf.d/01-plugins.vim delete mode 100644 home/.config/nvim/conf.d/02-appearance.vim delete mode 100644 home/.config/nvim/conf.d/03-keybinds.vim delete mode 100644 home/.config/nvim/conf.d/04-coc.vim delete mode 100644 home/.config/nvim/conf.d/05-language.vim delete mode 100644 home/.config/nvim/conf.d/06-misc.vim delete mode 100644 home/.config/nvim/conf.d/07-fzf.vim create mode 100644 home/.config/nvim/init.lua delete mode 100644 home/.config/nvim/init.vim create mode 100644 home/.config/nvim/lua/autocmd.lua create mode 100644 home/.config/nvim/lua/keybinds.lua create mode 100644 home/.config/nvim/lua/pluginmanager.lua create mode 100644 home/.config/nvim/lua/plugins/airline.lua create mode 100644 home/.config/nvim/lua/plugins/completion.lua create mode 100644 home/.config/nvim/lua/plugins/lsp.lua create mode 100644 home/.config/nvim/lua/plugins/nerdtree.lua create mode 100644 home/.config/nvim/lua/settings.lua diff --git a/config.yaml b/config.yaml index adbd2326..f34bbec1 100644 --- a/config.yaml +++ b/config.yaml @@ -1,5 +1,3 @@ -actions: - vim-plug: nvim +PlugInstall +qall config: backup: true banner: true @@ -25,20 +23,15 @@ dotfiles: d_imapnotify: dst: ~/.config/imapnotify src: .config/imapnotify - f_init.vim: - dst: ~/.config/nvim/init.vim - src: .config/nvim/init.vim - d_nvim_config: - actions: - - vim-plug - dst: ~/.config/nvim/conf.d - src: .config/nvim/conf.d + f_nvim_init: + dst: ~/.config/nvim/init.lua + src: .config/nvim/init.lua + d_nvim_lua: + dst: ~/.config/nvim/lua + src: .config/nvim/lua f_user-dirs.dirs: dst: ~/.config/user-dirs.dirs src: .config/user-dirs.dirs - f_coc-settings.json: - dst: ~/.config/nvim/coc-settings.json - src: .config/nvim/coc-settings.json d_sway: dst: ~/.config/sway src: .config/sway @@ -177,9 +170,8 @@ profiles: - f_ranger.conf - f_ssh.conf - f_authorized_keys - - d_nvim_config - - f_init.vim - - f_coc-settings.json + - d_nvim_lua + - f_nvim_init - f_gitconfig - f_alacritty.yml email: @@ -239,21 +231,8 @@ profiles: - terminal - Pacman mko-laptop: - dotfiles: - - f_nvimpager - - f_hushlogin - - f_ripgrep_ignore - - f_ranger_commands.py - - f_rtv.cfg - - f_mailcap - - d_zsh - - f_zshrc - - f_tmux.conf - - f_ranger.conf - - d_nvim_config - - f_init.vim - - f_coc-settings.json - - f_alacritty.yml + include: + - terminal AnittaPC: include: - terminal diff --git a/home/.config/nvim/coc-settings.json b/home/.config/nvim/coc-settings.json deleted file mode 100644 index eddd81b5..00000000 --- a/home/.config/nvim/coc-settings.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "python.jediEnabled": false, - "suggest.noselect": false, - "suggest.echodocSupport": true, - "suggest.maxCompleteItemCount": 20, - "coc.preferences.formatOnSaveFiletypes": [], - "prettier.singleQuote": false, - "diagnostic.errorSign": "•", - "diagnostic.warningSign": "•", - "diagnostic.infoSign": "•", - "suggest.snippetIndicator": "~", - "rust-analyzer.serverPath": "/usr/bin/rust-analyzer", - "languageserver": { - "bash": { - "command": "bash-language-server", - "args": ["start"], - "filetypes": ["sh"], - "ignoredRootPaths": ["~"] - }, - "xml": { - "command": "xml-language-server", - "args": ["start"], - "filetypes": ["xml"], - "ignoredRootPaths": ["~"] - } - }, - "markdownlint.config": { - "rules": { - "default": true, - "line_length": false - } - } -} diff --git a/home/.config/nvim/conf.d/01-plugins.vim b/home/.config/nvim/conf.d/01-plugins.vim deleted file mode 100644 index 690629e2..00000000 --- a/home/.config/nvim/conf.d/01-plugins.vim +++ /dev/null @@ -1,95 +0,0 @@ -" Auto-install vim-plug -if empty(glob('~/.config/nvim/autoload/plug.vim')) - silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - autocmd VimEnter * PlugInstall -endif - -" Set coc extensions -let g:coc_global_extensions = [ - \ 'coc-tsserver', - \ 'coc-html', - \ 'coc-tsserver', - \ 'coc-json', - \ 'coc-yaml', - \ 'coc-texlab', - \ 'coc-prettier', - \ 'coc-python', - \ 'coc-emmet', - \ 'coc-rust-analyzer', - \ 'coc-markdownlint', - \ 'coc-snippets', - \ 'coc-java' - \ ] - -call plug#begin() - -" statusline/tabline -Plug 'vim-airline/vim-airline' - -" Make editing passwords safer -Plug 'https://git.zx2c4.com/password-store', { 'rtp': 'contrib/vim/redact_pass.vim' } - -" Colorize color words -Plug 'norcalli/nvim-colorizer.lua' - -" NeoVim in Firefox -Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(0) } } - -" Spelling -Plug 'vim-scripts/Vimchant' - -" Pandoc plugins -Plug 'vim-pandoc/vim-pandoc' -Plug 'conornewton/vim-pandoc-markdown-preview' - -" Fuzzy finder -Plug 'junegunn/fzf' -Plug 'junegunn/fzf.vim' - -" Language syntax pack -Plug 'sheerun/vim-polyglot' - -" Read editorconfig settings -Plug 'editorconfig/editorconfig-vim' - -" Make directory if it doesn't exist -Plug 'pbrisbin/vim-mkdir' - -" Tree explorer -Plug 'scrooloose/nerdtree' - -" Moar snippets -Plug 'honza/vim-snippets' - -" Filetype icons -Plug 'ryanoasis/vim-devicons' - -" Surround stuff with brackets and quotes -Plug 'tpope/vim-surround' - -" Do stuff as sudo -Plug 'lambdalisue/suda.vim' - -" Conguer of Completion -Plug 'neoclide/coc.nvim', {'do': './install.sh nightly'} - -" VimL source for CoC -Plug 'Shougo/neco-vim' -Plug 'neoclide/coc-neco' - -" Git plugin -Plug 'jreybert/vimagit' - -" Git diff in gutter -Plug 'airblade/vim-gitgutter' - -" Gpg support -Plug 'jamessan/vim-gnupg' - -" Colorscheme -Plug 'joshdick/onedark.vim' - -" Latex plugin -Plug 'lervag/vimtex' - -call plug#end() diff --git a/home/.config/nvim/conf.d/02-appearance.vim b/home/.config/nvim/conf.d/02-appearance.vim deleted file mode 100644 index 955d2a24..00000000 --- a/home/.config/nvim/conf.d/02-appearance.vim +++ /dev/null @@ -1,46 +0,0 @@ -" Set colorscheme -colorscheme onedark - -" Floating window transparency -set winblend=10 - -" Enable italics -let g:onedark_terminal_italics=1 - -" Disable built-in statusline because airline shows it -set noshowmode - -" Airline -set laststatus=2 -set encoding=utf-8 -let g:airline#extensions#tabline#enabled = 1 -let g:airline_powerline_fonts = 1 -let g:airline_section_warning = '' -let g:airline_section_error = '' -let g:airline_theme='onedark' - -" True color support -set termguicolors - -" Line numbering -set relativenumber -set number - -" Always show signcolumn -set signcolumn=yes - -" Autoindent and syntax highlight -set autoindent -set smartindent -syntax on -filetype on -filetype plugin indent on -set tabstop=4 -set shiftwidth=4 - -" Make gutter and cursorline bg transparent -highlight CursorLineNr guibg=transparent -highlight SignColumn guibg=transparent - -" Don't wrap in the middle of words -set linebreak diff --git a/home/.config/nvim/conf.d/03-keybinds.vim b/home/.config/nvim/conf.d/03-keybinds.vim deleted file mode 100644 index 3f37e03a..00000000 --- a/home/.config/nvim/conf.d/03-keybinds.vim +++ /dev/null @@ -1,39 +0,0 @@ -" Change leader to space -nnoremap -let mapleader = ' ' - -" Toggle nerdtree -map :NERDTreeToggle - -" Markdown preview -nmap MarkdownPreview -nmap MarkdownPreviewStop -nmap MarkdownPreviewToggle - -set splitbelow -set splitright - -" Move between buffers -nnoremap :bn -nnoremap :bp - -" Move between splits -nnoremap -nnoremap -nnoremap -nnoremap - -" Enable mouse -set mouse=a - -" Toggle equalalways -function ToggleEqual () - :set equalalways! - :set equalalways! -endfunction - -nnoremap = :call ToggleEqual() - -" Navigate display lines insted of physical lines -nnoremap j gj -nnoremap k gk diff --git a/home/.config/nvim/conf.d/04-coc.vim b/home/.config/nvim/conf.d/04-coc.vim deleted file mode 100644 index a0424537..00000000 --- a/home/.config/nvim/conf.d/04-coc.vim +++ /dev/null @@ -1,129 +0,0 @@ -" Enable symbol highlight -autocmd CursorHold * silent call CocActionAsync('highlight') - -" If hidden is not set, TextEdit might fail. -set hidden - -" Some servers have issues with backup files, see #649 -set nobackup -set nowritebackup - -" Better display for messages -set cmdheight=2 - -" Smaller updatetime for CursorHold & CursorHoldI -set updatetime=300 - -" Don't give |ins-completion-menu| messages. -set shortmess+=c - -" Use tab for trigger completion with characters ahead and navigate. -" Use command ':verbose imap ' to make sure tab is not mapped by other plugin. -inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() -inoremap pumvisible() ? "\" : "\" - -function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' -endfunction - -" Use to confirm snippet -inoremap pumvisible() ? coc#_select_confirm() : - \"\u\\=coc#on_enter()\" - -" Use to trigger completion. -inoremap coc#refresh() - -" Use to confirm completion, `u` means break undo chain at current position. -" Coc only does snippet and additional edit on confirm. -inoremap pumvisible() ? "\" : "\u\" - -" Use `[c` and `]c` to navigate diagnostics -nmap [c (coc-diagnostic-prev) -nmap ]c (coc-diagnostic-next) - -" Remap keys for gotos -nmap gd (coc-definition) -nmap gy (coc-type-definition) -nmap gi (coc-implementation) -nmap gr (coc-references) - -" Use K to show documentation in preview window -nnoremap K :call show_documentation() - -function! s:show_documentation() - if (index(['vim','help'], &filetype) >= 0) - execute 'h '.expand('') - else - call CocAction('doHover') - endif -endfunction - -" Highlight symbol under cursor on CursorHold -autocmd CursorHold * silent call CocActionAsync('highlight') - -" Remap for rename current word -nmap rn (coc-rename) - -" Remap for format selected region -xmap f (coc-format-selected) -nmap f (coc-format-selected) - -augroup mygroup - autocmd! - " Setup formatexpr specified filetype(s). - autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') - " Update signature help on jump placeholder - autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') -augroup end - -" Remap for do codeAction of selected region, ex: `aap` for current paragraph -xmap a (coc-codeaction-selected) -nmap a (coc-codeaction-selected) - -" Remap for do codeAction of current line -nmap ac (coc-codeaction) -" Fix autofix problem of current line -nmap qf (coc-fix-current) - -" Use `:Format` to format current buffer -command! -nargs=0 Format :call CocAction('format') - -" Use `:Fold` to fold current buffer -command! -nargs=? Fold :call CocAction('fold', ) - - -" Add diagnostic info for https://github.com/itchyny/lightline.vim -let g:lightline = { - \ 'colorscheme': 'wombat', - \ 'active': { - \ 'left': [ [ 'mode', 'paste' ], - \ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ] - \ }, - \ 'component_function': { - \ 'cocstatus': 'coc#status' - \ }, - \ } - - - -" Using CocList -" Show all diagnostics -nnoremap a :CocList diagnostics -" Manage extensions -nnoremap e :CocList extensions -" Show commands -nnoremap c :CocList commands -" Find symbol of current document -nnoremap o :CocList outline -" Search workspace symbols -nnoremap s :CocList -I symbols -" Do default action for next item. -nnoremap j :CocNext -" Do default action for previous item. -nnoremap k :CocPrev -" Resume latest coc list -nnoremap p :CocListResume diff --git a/home/.config/nvim/conf.d/05-language.vim b/home/.config/nvim/conf.d/05-language.vim deleted file mode 100644 index e5e7cb5e..00000000 --- a/home/.config/nvim/conf.d/05-language.vim +++ /dev/null @@ -1,12 +0,0 @@ -" LaTex settings -let g:vimtex_view_method='zathura' -let g:Tex_DefaultTargetFormat='pdf' -let g:Tex_MultipleCompileFormats='pdf, aux' -let g:vimtex_compiler_progname='nvr' - -" YAML settings -au! BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent -autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab - -" Run rustfmt on save -let g:rustfmt_autosave = 1 diff --git a/home/.config/nvim/conf.d/06-misc.vim b/home/.config/nvim/conf.d/06-misc.vim deleted file mode 100644 index 1315f116..00000000 --- a/home/.config/nvim/conf.d/06-misc.vim +++ /dev/null @@ -1,41 +0,0 @@ -" Enable python support -let g:python3_host_prog='/usr/bin/python3' -let pyxversion=3 - -" LaTex fallback flavor -let g:tex_flavor = 'latex' - -" Use suda by default -let g:suda_smart_edit = 1 - -" Remap exit terminal mode to esc -au TermOpen * tnoremap - -" Use system clipboard -set clipboard=unnamedplus - -" Remove extra line -set cmdheight=1 - -" Disable auto commenting -set formatoptions-=cro - -" Set pandoc preview program -let g:pandoc_preview_pdf_cmd = "zathura" - -" Case insensitive search -set ignorecase -set smartcase - -" Nerdtree settings -let NERDTreeMinimalUI = 1 "remove press ? for help" -let NERDTreeAutoDeleteBuffer = 1 " delete buffer when file is deleted -let NERDTreeQuitOnOpen = 1 " close nerdtree when opening file -let NERDTreeDirArrows = 1 - -" Firenvim filetypes -au BufEnter github.com_*.txt set filetype=markdown -au BufEnter gitlab.com_*.txt set filetype=markdown -au BufEnter git.reekynet.com_*.txt set filetype=markdown -au BufEnter www.reddit.com_*.txt set filetype=markdown -au BufEnter node.reekynet.com_*.txt set filetype=json diff --git a/home/.config/nvim/conf.d/07-fzf.vim b/home/.config/nvim/conf.d/07-fzf.vim deleted file mode 100644 index 60be3f2e..00000000 --- a/home/.config/nvim/conf.d/07-fzf.vim +++ /dev/null @@ -1,43 +0,0 @@ -" FZF in floating window - -autocmd! FileType fzf -autocmd FileType fzf call SetFZFoptions() -function SetFZFoptions() - set noshowmode noruler nonumber norelativenumber - tunmap -endfunction - -let g:fzf_layout = { 'window': 'call FloatingFZF()' } -function! FloatingFZF() - let buf = nvim_create_buf(v:false, v:true) - call setbufvar(buf, '&signcolumn', 'no') - - let width = float2nr(&columns * 0.8) - let height = float2nr(&lines * 0.6) - let horizontal = 1 - let vertical = 1 - - let opts = { - \ 'relative': 'editor', - \ 'row': (&lines - height) / 2, - \ 'col': (&columns - width) / 2, - \ 'width': width, - \ 'height': height, - \ 'style': 'minimal' - \ } - - call nvim_open_win(buf, v:true, opts) -endfunction - -" Looks -"let $FZF_DEFAULT_OPTS=' --color=dark --color=fg:15,bg:-1,hl:1,fg+:#ffffff,bg+:0,hl+:1 --color=info:0,prompt:0,pointer:12,marker:4,spinner:11,header:-1 --layout=reverse --margin=1,4' - -" ripgrep custom settings -command! -bang -nargs=* Rg - \ call fzf#vim#grep('rg --column --line-number --no-heading --color=always --smart-case ' - \ . (len() > 0 ? : '""'), 0, - \ fzf#vim#with_preview({'options': ['--delimiter=:', '--nth=2..', '--layout=reverse', '--info=inline']}), 0) - -" Keybinds -nmap :Files -nmap :Rg diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua new file mode 100644 index 00000000..965aaeed --- /dev/null +++ b/home/.config/nvim/init.lua @@ -0,0 +1,9 @@ +require 'pluginmanager' +require 'keybinds' +require 'settings' +require 'autocmd' + +-- Plugin configurations +require 'plugins/airline' +require 'plugins/nerdtree' +require 'plugins/lsp' diff --git a/home/.config/nvim/init.vim b/home/.config/nvim/init.vim deleted file mode 100644 index 6d4602ff..00000000 --- a/home/.config/nvim/init.vim +++ /dev/null @@ -1,3 +0,0 @@ -for f in split(glob('~/.config/nvim/conf.d/*.vim'), '\n') - exe 'source' f -endfor diff --git a/home/.config/nvim/lua/autocmd.lua b/home/.config/nvim/lua/autocmd.lua new file mode 100644 index 00000000..93e04708 --- /dev/null +++ b/home/.config/nvim/lua/autocmd.lua @@ -0,0 +1,4 @@ +local cmd = vim.cmd + +-- Remap exit terminal mode to esc +cmd('au TermOpen * tnoremap ') diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua new file mode 100644 index 00000000..e9feb391 --- /dev/null +++ b/home/.config/nvim/lua/keybinds.lua @@ -0,0 +1,10 @@ +local map = function(type, key, value) + vim.fn.nvim_buf_set_keymap(0, type, key, value, {noremap = true, silent = true}) +end + +-- Open/close nerdtree +map('n', '', 'NERDTreeToggle') + +-- FZF +map('n', '', 'Files') +map('n', '', 'Rg') diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua new file mode 100644 index 00000000..4aaab0e3 --- /dev/null +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -0,0 +1,46 @@ +local fn = vim.fn +local cmd = vim.cmd + +-- Install packer if it's not yet installed +local install_path = fn.stdpath('data')..'/site/pack/packer/opt/packer.nvim' +local packer_not_installed = fn.empty(fn.glob(install_path)) + +if packer_not_installed > 0 then + print('Packer is not installed, cloning it now...') + cmd ('silent !git clone https://github.com/wbthomason/packer.nvim ' .. install_path) +end + +-- Configure packer +cmd 'packadd packer.nvim' +require('packer').startup(function() + + -- The plugin manager itself + use {'wbthomason/packer.nvim', opt = true} + + -- Colorscheme + use 'joshdick/onedark.vim' + + -- Custom status and tabline + use 'vim-airline/vim-airline' + + -- Tree explorer + use 'scrooloose/nerdtree' + + -- Fuzzy finder + use 'junegunn/fzf' + use 'junegunn/fzf.vim' + + -- Do stuff as sudo + use 'lambdalisue/suda.vim' + + -- Configs for built-in LSP + use 'neovim/nvim-lspconfig' + + -- Completion framework + use 'nvim-lua/completion-nvim' +end) + +-- Install plugins if packer was not installed +if packer_not_installed > 0 then + cmd 'PackerInstall' +end diff --git a/home/.config/nvim/lua/plugins/airline.lua b/home/.config/nvim/lua/plugins/airline.lua new file mode 100644 index 00000000..9a30505f --- /dev/null +++ b/home/.config/nvim/lua/plugins/airline.lua @@ -0,0 +1,10 @@ +local g = vim.g +local o = vim.o + +o.showmode = false +o.laststatus = 2 +g["airline#extensions#tabline#enabled"]= 1 +g.airline_powerline_fonts = 1 +g.airline_section_warning = '' +g.airline_section_error = '' +g.airline_theme = 'onedark' diff --git a/home/.config/nvim/lua/plugins/completion.lua b/home/.config/nvim/lua/plugins/completion.lua new file mode 100644 index 00000000..2f991d6c --- /dev/null +++ b/home/.config/nvim/lua/plugins/completion.lua @@ -0,0 +1 @@ +vim.cmd "autocmd BufEnter * lua require'completion'.on_attach()" diff --git a/home/.config/nvim/lua/plugins/lsp.lua b/home/.config/nvim/lua/plugins/lsp.lua new file mode 100644 index 00000000..7dfc32e1 --- /dev/null +++ b/home/.config/nvim/lua/plugins/lsp.lua @@ -0,0 +1,3 @@ +local cmd = vim.cmd + +require 'lspconfig'.rust_analyzer.setup{} diff --git a/home/.config/nvim/lua/plugins/nerdtree.lua b/home/.config/nvim/lua/plugins/nerdtree.lua new file mode 100644 index 00000000..e69de29b diff --git a/home/.config/nvim/lua/settings.lua b/home/.config/nvim/lua/settings.lua new file mode 100644 index 00000000..0a0a118e --- /dev/null +++ b/home/.config/nvim/lua/settings.lua @@ -0,0 +1,44 @@ +local o = vim.o +local cmd = vim.cmd + +------ Appearance ------ + +-- Set colorscheme +cmd 'colorscheme onedark' + +-- True colors +o.termguicolors = true + +-- Floating window transparency +o.winblend = 10 + +-- Remove extra line +o.cmdheight = 1 + +-- Always show signcolumn +o.signcolumn = 'yes' + +-- Gutter and cursoline bg transparent +cmd 'highlight CursorLineNr guibg=transparent' +cmd 'highlight SignColumn guibg=transparent' + +------ Misc ------- + +-- Case insensitive search +o.ignorecase = true +o.smartcase = true + +-- Use system clipboard +o.clipboard = 'unnamedplus' + +-- Autoindent and syntax higlight +o.autoindent = true +o.smartindent = true +o.tabstop = 4 +o.shiftwidth = 4 +cmd 'syntax on' +cmd 'filetype on' +cmd 'filetype plugin indent on' + +-- Disable auto commenting +o.formatoptions = 'cro' -- 2.47.2 From 2e004f2295fcab642312b50da1613124d20a46f6 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 30 Jan 2021 16:17:39 +0200 Subject: [PATCH 02/27] Add treesitter --- home/.config/nvim/init.lua | 9 +++++---- home/.config/nvim/lua/pluginmanager.lua | 3 +++ home/.config/nvim/lua/plugins/treesitter.lua | 12 ++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 home/.config/nvim/lua/plugins/treesitter.lua diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 965aaeed..9d6c13be 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -1,9 +1,10 @@ -require 'pluginmanager' -require 'keybinds' -require 'settings' require 'autocmd' +require 'keybinds' +require 'pluginmanager' +require 'settings' -- Plugin configurations require 'plugins/airline' -require 'plugins/nerdtree' require 'plugins/lsp' +require 'plugins/nerdtree' +require 'plugins/treesitter' diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 4aaab0e3..1a091cb1 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -38,6 +38,9 @@ require('packer').startup(function() -- Completion framework use 'nvim-lua/completion-nvim' + + -- Treesitter syntax highlight + use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' } end) -- Install plugins if packer was not installed diff --git a/home/.config/nvim/lua/plugins/treesitter.lua b/home/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 00000000..985dd7cc --- /dev/null +++ b/home/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,12 @@ +require'nvim-treesitter.configs'.setup { + ensure_installed = 'maintained', + highlight = { + enable = true + }, + indent = { + enable = true + }, + incremental_selection = { + enable = true + } +} -- 2.47.2 From b9d119413306b1a8bf947484f60e2ce643dfa171 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 30 Jan 2021 16:46:41 +0200 Subject: [PATCH 03/27] Add neoformatter and format lua files --- home/.config/nvim/lua/keybinds.lua | 3 +- home/.config/nvim/lua/pluginmanager.lua | 52 ++++++++++---------- home/.config/nvim/lua/plugins/airline.lua | 2 +- home/.config/nvim/lua/plugins/lsp.lua | 2 +- home/.config/nvim/lua/plugins/nerdtree.lua | 0 home/.config/nvim/lua/plugins/treesitter.lua | 14 ++---- 6 files changed, 35 insertions(+), 38 deletions(-) delete mode 100644 home/.config/nvim/lua/plugins/nerdtree.lua diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index e9feb391..b8942423 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -1,5 +1,6 @@ local map = function(type, key, value) - vim.fn.nvim_buf_set_keymap(0, type, key, value, {noremap = true, silent = true}) + vim.fn.nvim_buf_set_keymap(0, type, key, value, + {noremap = true, silent = true}) end -- Open/close nerdtree diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 1a091cb1..7cf0540e 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -2,48 +2,50 @@ local fn = vim.fn local cmd = vim.cmd -- Install packer if it's not yet installed -local install_path = fn.stdpath('data')..'/site/pack/packer/opt/packer.nvim' +local install_path = fn.stdpath('data') .. '/site/pack/packer/opt/packer.nvim' local packer_not_installed = fn.empty(fn.glob(install_path)) if packer_not_installed > 0 then - print('Packer is not installed, cloning it now...') - cmd ('silent !git clone https://github.com/wbthomason/packer.nvim ' .. install_path) + print('Packer is not installed, cloning it now...') + cmd('silent !git clone https://github.com/wbthomason/packer.nvim ' .. + install_path) end -- Configure packer cmd 'packadd packer.nvim' require('packer').startup(function() - -- The plugin manager itself - use {'wbthomason/packer.nvim', opt = true} + -- The plugin manager itself + use {'wbthomason/packer.nvim', opt = true} - -- Colorscheme - use 'joshdick/onedark.vim' + -- Colorscheme + use 'joshdick/onedark.vim' - -- Custom status and tabline - use 'vim-airline/vim-airline' + -- Custom status and tabline + use 'vim-airline/vim-airline' - -- Tree explorer - use 'scrooloose/nerdtree' + -- Tree explorer + use 'scrooloose/nerdtree' - -- Fuzzy finder - use 'junegunn/fzf' - use 'junegunn/fzf.vim' + -- Fuzzy finder + use 'junegunn/fzf' + use 'junegunn/fzf.vim' - -- Do stuff as sudo - use 'lambdalisue/suda.vim' + -- Do stuff as sudo + use 'lambdalisue/suda.vim' - -- Configs for built-in LSP - use 'neovim/nvim-lspconfig' + -- Configs for built-in LSP + use 'neovim/nvim-lspconfig' - -- Completion framework - use 'nvim-lua/completion-nvim' + -- Completion framework + use 'nvim-lua/completion-nvim' - -- Treesitter syntax highlight - use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' } + -- Treesitter syntax highlight + use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'} + + -- Formatter plugin + use 'sbdchd/neoformat' end) -- Install plugins if packer was not installed -if packer_not_installed > 0 then - cmd 'PackerInstall' -end +if packer_not_installed > 0 then cmd 'PackerInstall' end diff --git a/home/.config/nvim/lua/plugins/airline.lua b/home/.config/nvim/lua/plugins/airline.lua index 9a30505f..e399cbe8 100644 --- a/home/.config/nvim/lua/plugins/airline.lua +++ b/home/.config/nvim/lua/plugins/airline.lua @@ -3,7 +3,7 @@ local o = vim.o o.showmode = false o.laststatus = 2 -g["airline#extensions#tabline#enabled"]= 1 +g["airline#extensions#tabline#enabled"] = 1 g.airline_powerline_fonts = 1 g.airline_section_warning = '' g.airline_section_error = '' diff --git a/home/.config/nvim/lua/plugins/lsp.lua b/home/.config/nvim/lua/plugins/lsp.lua index 7dfc32e1..770220e6 100644 --- a/home/.config/nvim/lua/plugins/lsp.lua +++ b/home/.config/nvim/lua/plugins/lsp.lua @@ -1,3 +1,3 @@ local cmd = vim.cmd -require 'lspconfig'.rust_analyzer.setup{} +require'lspconfig'.rust_analyzer.setup {} diff --git a/home/.config/nvim/lua/plugins/nerdtree.lua b/home/.config/nvim/lua/plugins/nerdtree.lua deleted file mode 100644 index e69de29b..00000000 diff --git a/home/.config/nvim/lua/plugins/treesitter.lua b/home/.config/nvim/lua/plugins/treesitter.lua index 985dd7cc..12ab42bc 100644 --- a/home/.config/nvim/lua/plugins/treesitter.lua +++ b/home/.config/nvim/lua/plugins/treesitter.lua @@ -1,12 +1,6 @@ require'nvim-treesitter.configs'.setup { - ensure_installed = 'maintained', - highlight = { - enable = true - }, - indent = { - enable = true - }, - incremental_selection = { - enable = true - } + ensure_installed = 'maintained', + highlight = {enable = true}, + indent = {enable = true}, + incremental_selection = {enable = true} } -- 2.47.2 From 82abe92d8bbec60e9b061b15fc59769e7c6b164d Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 30 Jan 2021 22:52:22 +0200 Subject: [PATCH 04/27] Refactor directory structure --- home/.config/nvim/init.lua | 10 +++---- home/.config/nvim/lua/keybinds.lua | 4 +++ .../lua/{plugins => pluginconf}/airline.lua | 0 .../nvim/lua/pluginconf/completion.lua | 3 ++ home/.config/nvim/lua/pluginconf/lsp.lua | 29 +++++++++++++++++++ .../{plugins => pluginconf}/treesitter.lua | 0 home/.config/nvim/lua/plugins/completion.lua | 1 - home/.config/nvim/lua/plugins/lsp.lua | 3 -- 8 files changed, 41 insertions(+), 9 deletions(-) rename home/.config/nvim/lua/{plugins => pluginconf}/airline.lua (100%) create mode 100644 home/.config/nvim/lua/pluginconf/completion.lua create mode 100644 home/.config/nvim/lua/pluginconf/lsp.lua rename home/.config/nvim/lua/{plugins => pluginconf}/treesitter.lua (100%) delete mode 100644 home/.config/nvim/lua/plugins/completion.lua delete mode 100644 home/.config/nvim/lua/plugins/lsp.lua diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 9d6c13be..5fff21d7 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -1,10 +1,10 @@ require 'autocmd' require 'keybinds' -require 'pluginmanager' require 'settings' +require 'pluginmanager' -- Plugin configurations -require 'plugins/airline' -require 'plugins/lsp' -require 'plugins/nerdtree' -require 'plugins/treesitter' +--require 'pluginconf.airline' +require 'pluginconf.completion' +require 'pluginconf.lsp' +require 'pluginconf.treesitter' diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index b8942423..2ddf29d9 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -9,3 +9,7 @@ map('n', '', 'NERDTreeToggle') -- FZF map('n', '', 'Files') map('n', '', 'Rg') + +-- Completion +map('i', '', 'pumvisible() ? "\\" : "\\"') +map('i', '', 'pumvisible() ? "\\" : "\\"') diff --git a/home/.config/nvim/lua/plugins/airline.lua b/home/.config/nvim/lua/pluginconf/airline.lua similarity index 100% rename from home/.config/nvim/lua/plugins/airline.lua rename to home/.config/nvim/lua/pluginconf/airline.lua diff --git a/home/.config/nvim/lua/pluginconf/completion.lua b/home/.config/nvim/lua/pluginconf/completion.lua new file mode 100644 index 00000000..9d2c2d25 --- /dev/null +++ b/home/.config/nvim/lua/pluginconf/completion.lua @@ -0,0 +1,3 @@ +local o = vim.o + +o.completeopt = 'menuone,noinsert,noselect' diff --git a/home/.config/nvim/lua/pluginconf/lsp.lua b/home/.config/nvim/lua/pluginconf/lsp.lua new file mode 100644 index 00000000..d8bfb68e --- /dev/null +++ b/home/.config/nvim/lua/pluginconf/lsp.lua @@ -0,0 +1,29 @@ +require'lspconfig'.rust_analyzer.setup { + on_attach = require'completion'.on_attach +} + +local sumneko_binary = '/usr/bin/lua-language-server' +require'lspconfig'.sumneko_lua.setup { + cmd = {sumneko_binary}, + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = vim.split(package.path, ';') + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'} + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true + } + } + } + } +} diff --git a/home/.config/nvim/lua/plugins/treesitter.lua b/home/.config/nvim/lua/pluginconf/treesitter.lua similarity index 100% rename from home/.config/nvim/lua/plugins/treesitter.lua rename to home/.config/nvim/lua/pluginconf/treesitter.lua diff --git a/home/.config/nvim/lua/plugins/completion.lua b/home/.config/nvim/lua/plugins/completion.lua deleted file mode 100644 index 2f991d6c..00000000 --- a/home/.config/nvim/lua/plugins/completion.lua +++ /dev/null @@ -1 +0,0 @@ -vim.cmd "autocmd BufEnter * lua require'completion'.on_attach()" diff --git a/home/.config/nvim/lua/plugins/lsp.lua b/home/.config/nvim/lua/plugins/lsp.lua deleted file mode 100644 index 770220e6..00000000 --- a/home/.config/nvim/lua/plugins/lsp.lua +++ /dev/null @@ -1,3 +0,0 @@ -local cmd = vim.cmd - -require'lspconfig'.rust_analyzer.setup {} -- 2.47.2 From 9e7f2c8145369fa8e675074cf5c18d0f9a27db50 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 30 Jan 2021 23:17:11 +0200 Subject: [PATCH 05/27] Add YAML and TypeScript language servers --- home/.config/nvim/lua/pluginconf/lsp.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/home/.config/nvim/lua/pluginconf/lsp.lua b/home/.config/nvim/lua/pluginconf/lsp.lua index d8bfb68e..5e8bb449 100644 --- a/home/.config/nvim/lua/pluginconf/lsp.lua +++ b/home/.config/nvim/lua/pluginconf/lsp.lua @@ -1,9 +1,12 @@ +-- Rust require'lspconfig'.rust_analyzer.setup { on_attach = require'completion'.on_attach } +-- Lua local sumneko_binary = '/usr/bin/lua-language-server' require'lspconfig'.sumneko_lua.setup { + on_attach = require'completion'.on_attach, cmd = {sumneko_binary}, settings = { Lua = { @@ -27,3 +30,9 @@ require'lspconfig'.sumneko_lua.setup { } } } + +-- YAML +require'lspconfig'.yamlls.setup {on_attach = require'completion'.on_attach} + +-- JavaScript / TypeScript +require'lspconfig'.tsserver.setup {on_attach = require'completion'.on_attach} -- 2.47.2 From 1fe9f7a702afc6b75b9271b049efdc71aaafa726 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 30 Jan 2021 23:18:17 +0200 Subject: [PATCH 06/27] Re-enable airline --- home/.config/nvim/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 5fff21d7..cef30b9c 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -4,7 +4,7 @@ require 'settings' require 'pluginmanager' -- Plugin configurations ---require 'pluginconf.airline' +require 'pluginconf.airline' require 'pluginconf.completion' require 'pluginconf.lsp' require 'pluginconf.treesitter' -- 2.47.2 From 12dc145d06742ee81b2fcf49bd1e98cc95e59eb9 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 30 Jan 2021 23:58:52 +0200 Subject: [PATCH 07/27] Fix completion keybinds --- home/.config/nvim/lua/keybinds.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index 2ddf29d9..f60256d1 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -1,6 +1,7 @@ -local map = function(type, key, value) - vim.fn.nvim_buf_set_keymap(0, type, key, value, - {noremap = true, silent = true}) +local function map(mode, lhs, rhs, opts) + local options = {noremap = true} + if opts then options = vim.tbl_extend('force', options, opts) end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) end -- Open/close nerdtree @@ -11,5 +12,5 @@ map('n', '', 'Files') map('n', '', 'Rg') -- Completion -map('i', '', 'pumvisible() ? "\\" : "\\"') -map('i', '', 'pumvisible() ? "\\" : "\\"') +map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) +map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) -- 2.47.2 From 48819ed8b332b9efeb9845c314edb1e7b6c063ce Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sun, 31 Jan 2021 00:17:39 +0200 Subject: [PATCH 08/27] Port more settings --- home/.config/nvim/lua/settings.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home/.config/nvim/lua/settings.lua b/home/.config/nvim/lua/settings.lua index 0a0a118e..a57006c4 100644 --- a/home/.config/nvim/lua/settings.lua +++ b/home/.config/nvim/lua/settings.lua @@ -24,10 +24,18 @@ cmd 'highlight SignColumn guibg=transparent' ------ Misc ------- +-- Split direction +o.splitbelow = true +o.splitright = true + + -- Case insensitive search o.ignorecase = true o.smartcase = true +-- Use mouse +o.mouse = 'a' + -- Use system clipboard o.clipboard = 'unnamedplus' -- 2.47.2 From aa98e13e440896690cb241194ecb1bd588c20926 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sun, 31 Jan 2021 00:17:58 +0200 Subject: [PATCH 09/27] Add buffer + split navigation keybinds --- home/.config/nvim/lua/keybinds.lua | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index f60256d1..72681694 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -1,11 +1,11 @@ local function map(mode, lhs, rhs, opts) - local options = {noremap = true} - if opts then options = vim.tbl_extend('force', options, opts) end - vim.api.nvim_set_keymap(mode, lhs, rhs, options) + local options = {noremap = true} + if opts then options = vim.tbl_extend('force', options, opts) end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) end -- Open/close nerdtree -map('n', '', 'NERDTreeToggle') +map('', '', 'NERDTreeToggle') -- FZF map('n', '', 'Files') @@ -14,3 +14,13 @@ map('n', '', 'Rg') -- Completion map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) + +-- Navigate between buffers +map('n', '', ':bn', {silent = true}) +map('n', '', ':bp', {silent = true}) + +-- Navigate between splits +map('n', '', '') +map('n', '', '') +map('n', '', '') +map('n', '', '') -- 2.47.2 From 6715c055194efa6d76bcb65f2c393cabe1984c58 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Tue, 2 Feb 2021 19:06:05 +0200 Subject: [PATCH 10/27] require pluginmanager first + fix some lua LSP issues --- home/.config/nvim/init.lua | 2 +- home/.config/nvim/lua/pluginconf/lsp.lua | 3 +-- home/.config/nvim/lua/pluginmanager.lua | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index cef30b9c..711415bd 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -1,7 +1,7 @@ +require 'pluginmanager' require 'autocmd' require 'keybinds' require 'settings' -require 'pluginmanager' -- Plugin configurations require 'pluginconf.airline' diff --git a/home/.config/nvim/lua/pluginconf/lsp.lua b/home/.config/nvim/lua/pluginconf/lsp.lua index 5e8bb449..85d57868 100644 --- a/home/.config/nvim/lua/pluginconf/lsp.lua +++ b/home/.config/nvim/lua/pluginconf/lsp.lua @@ -4,10 +4,9 @@ require'lspconfig'.rust_analyzer.setup { } -- Lua -local sumneko_binary = '/usr/bin/lua-language-server' require'lspconfig'.sumneko_lua.setup { on_attach = require'completion'.on_attach, - cmd = {sumneko_binary}, + cmd = {'/usr/bin/lua-language-server'}, settings = { Lua = { runtime = { diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 7cf0540e..492d761b 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -13,6 +13,7 @@ end -- Configure packer cmd 'packadd packer.nvim' +local use = require('packer').use require('packer').startup(function() -- The plugin manager itself @@ -45,6 +46,7 @@ require('packer').startup(function() -- Formatter plugin use 'sbdchd/neoformat' + end) -- Install plugins if packer was not installed -- 2.47.2 From 0d2ac08fc74861212c5e2b52cfd6ac8b38a9aa14 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Tue, 2 Feb 2021 19:06:55 +0200 Subject: [PATCH 11/27] Fix YAML indentation --- home/.config/nvim/lua/autocmd.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/.config/nvim/lua/autocmd.lua b/home/.config/nvim/lua/autocmd.lua index 93e04708..00a0940c 100644 --- a/home/.config/nvim/lua/autocmd.lua +++ b/home/.config/nvim/lua/autocmd.lua @@ -2,3 +2,6 @@ local cmd = vim.cmd -- Remap exit terminal mode to esc cmd('au TermOpen * tnoremap ') + +-- Fix YAML indentation +cmd('au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab') -- 2.47.2 From 4c4efe91919fd9cefdde32796fc530ea44a3be45 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Tue, 2 Feb 2021 19:07:21 +0200 Subject: [PATCH 12/27] Add some completion-nvim keybinds --- home/.config/nvim/lua/keybinds.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index 72681694..25234f6c 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -12,8 +12,11 @@ map('n', '', 'Files') map('n', '', 'Rg') -- Completion +-- Navigate completions with tab and shift tab map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) +-- Trigger completion +map('i', '', '(completion_trigger)', {silent = true, expr = true}) -- Navigate between buffers map('n', '', ':bn', {silent = true}) -- 2.47.2 From 355c10eda47049fd8a7df9ec4d5e475205a47449 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 27 Feb 2021 11:48:03 +0200 Subject: [PATCH 13/27] Add telescope.nvim --- home/.config/nvim/lua/pluginmanager.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 492d761b..57940933 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -28,9 +28,10 @@ require('packer').startup(function() -- Tree explorer use 'scrooloose/nerdtree' - -- Fuzzy finder - use 'junegunn/fzf' - use 'junegunn/fzf.vim' + use { + 'nvim-telescope/telescope.nvim', + requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}} + } -- Do stuff as sudo use 'lambdalisue/suda.vim' -- 2.47.2 From 7b741572565bf7c94a7c87187c55000200fedd8a Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 15 May 2021 15:40:56 +0300 Subject: [PATCH 14/27] Update plugin update script --- home/.config/zsh/03-aliases.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/.config/zsh/03-aliases.zsh b/home/.config/zsh/03-aliases.zsh index 4c0d4215..eed6bc92 100644 --- a/home/.config/zsh/03-aliases.zsh +++ b/home/.config/zsh/03-aliases.zsh @@ -149,7 +149,7 @@ update() { } plugins() { - vim +PlugUpgrade +PlugUpdate +CocUpdate +qa + nvim +PackerUpdate +TSUpdate +qa zinit self-update zinit update -p $HOME/.tmux/plugins/tpm/bin/update_plugins all -- 2.47.2 From 4a6bd800d687f6930697de9f90e4206519a7f7ed Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Mon, 2 Aug 2021 16:13:55 +0300 Subject: [PATCH 15/27] Use 0.5-compat branch of nvim-treesitter --- home/.config/nvim/lua/pluginmanager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 57940933..47d34941 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -43,7 +43,7 @@ require('packer').startup(function() use 'nvim-lua/completion-nvim' -- Treesitter syntax highlight - use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'} + use {'nvim-treesitter/nvim-treesitter', branch = '0.5-compat', run = ':TSUpdate'} -- Formatter plugin use 'sbdchd/neoformat' -- 2.47.2 From 4361204e187d1c88a204b7d3f8515553c9f477a6 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Mon, 2 Aug 2021 16:55:11 +0300 Subject: [PATCH 16/27] Add lspinstall, fix completion --- home/.config/nvim/lua/keybinds.lua | 2 - .../nvim/lua/pluginconf/completion.lua | 5 +- home/.config/nvim/lua/pluginconf/lsp.lua | 135 +++++++++++++----- home/.config/nvim/lua/pluginmanager.lua | 3 + 4 files changed, 109 insertions(+), 36 deletions(-) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index 25234f6c..3299100e 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -15,8 +15,6 @@ map('n', '', 'Rg') -- Navigate completions with tab and shift tab map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) --- Trigger completion -map('i', '', '(completion_trigger)', {silent = true, expr = true}) -- Navigate between buffers map('n', '', ':bn', {silent = true}) diff --git a/home/.config/nvim/lua/pluginconf/completion.lua b/home/.config/nvim/lua/pluginconf/completion.lua index 9d2c2d25..a4e34543 100644 --- a/home/.config/nvim/lua/pluginconf/completion.lua +++ b/home/.config/nvim/lua/pluginconf/completion.lua @@ -1,3 +1,4 @@ -local o = vim.o +vim.o.completeopt = 'menuone,noinsert,noselect' -o.completeopt = 'menuone,noinsert,noselect' +-- Enable for all buffers (for now) +vim.api.nvim_command('autocmd BufEnter * lua require\'completion\'.on_attach()') diff --git a/home/.config/nvim/lua/pluginconf/lsp.lua b/home/.config/nvim/lua/pluginconf/lsp.lua index 85d57868..1b73c3be 100644 --- a/home/.config/nvim/lua/pluginconf/lsp.lua +++ b/home/.config/nvim/lua/pluginconf/lsp.lua @@ -1,37 +1,108 @@ --- Rust -require'lspconfig'.rust_analyzer.setup { - on_attach = require'completion'.on_attach +-- keymaps +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + elseif client.resolved_capabilities.document_range_formatting then + buf_set_keymap("n", "f", "lua vim.lsp.buf.range_formatting()", opts) + end + + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight then + vim.api.nvim_exec([[ + augroup lsp_document_highlight + autocmd! * + autocmd CursorHold lua vim.lsp.buf.document_highlight() + autocmd CursorMoved lua vim.lsp.buf.clear_references() + augroup END + ]], false) + end +end +-- +-- Configure lua language server for neovim development +local lua_settings = { + Lua = { + runtime = { + -- LuaJIT in the case of Neovim + version = 'LuaJIT', + path = vim.split(package.path, ';'), + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + }, + }, + } } --- Lua -require'lspconfig'.sumneko_lua.setup { - on_attach = require'completion'.on_attach, - cmd = {'/usr/bin/lua-language-server'}, - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Setup your lua path - path = vim.split(package.path, ';') - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'} - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = { - [vim.fn.expand('$VIMRUNTIME/lua')] = true, - [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true - } - } - } - } +-- config that activates keymaps and enables snippet support +local function make_config() + local capabilities = vim .lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true + return { + -- enable snippet support + capabilities = capabilities, + -- map buffer local keybindings when the language server attaches + on_attach = on_attach, } +end --- YAML -require'lspconfig'.yamlls.setup {on_attach = require'completion'.on_attach} +-- lsp-install +local function setup_servers() + require'lspinstall'.setup() --- JavaScript / TypeScript -require'lspconfig'.tsserver.setup {on_attach = require'completion'.on_attach} + -- get all installed servers + local servers = require'lspinstall'.installed_servers() + + -- add servers to be installed + table.insert(servers, "rust_analyzer"); + + for _, server in pairs(servers) do + local config = make_config() + + -- language specific config + if server == "lua" then + config.settings = lua_settings + end + + -- setup lspconfig for all servers + require'lspconfig'[server].setup(config) + end +end + +setup_servers() + +-- Automatically reload after `:LspInstall ` so we don't have to restart neovim +require'lspinstall'.post_install_hook = function () + setup_servers() -- reload installed servers + vim.cmd("bufdo e") -- this triggers the FileType autocmd that starts the server +end diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 47d34941..ad450b4e 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -39,6 +39,9 @@ require('packer').startup(function() -- Configs for built-in LSP use 'neovim/nvim-lspconfig' + -- Install LSP executables + use 'kabouzeid/nvim-lspinstall' + -- Completion framework use 'nvim-lua/completion-nvim' -- 2.47.2 From 3e6b20d44a5bfea2b75cb10e5511b13295fa8fd1 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Mon, 2 Aug 2021 17:33:24 +0300 Subject: [PATCH 17/27] Remove unneeded lspinstall option --- home/.config/nvim/lua/pluginconf/lsp.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/home/.config/nvim/lua/pluginconf/lsp.lua b/home/.config/nvim/lua/pluginconf/lsp.lua index 1b73c3be..16010017 100644 --- a/home/.config/nvim/lua/pluginconf/lsp.lua +++ b/home/.config/nvim/lua/pluginconf/lsp.lua @@ -83,9 +83,6 @@ local function setup_servers() -- get all installed servers local servers = require'lspinstall'.installed_servers() - -- add servers to be installed - table.insert(servers, "rust_analyzer"); - for _, server in pairs(servers) do local config = make_config() -- 2.47.2 From d6bb765266048afc01ca783f9700f91bebc242a7 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Tue, 3 Aug 2021 12:00:55 +0300 Subject: [PATCH 18/27] Add telescope find files keybind --- home/.config/nvim/lua/keybinds.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index 3299100e..2ee11635 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -8,7 +8,7 @@ end map('', '', 'NERDTreeToggle') -- FZF -map('n', '', 'Files') +map('n', '', 'Telescope find_files') map('n', '', 'Rg') -- Completion -- 2.47.2 From f0d695400b79a165bc22959f97935f383c00c84d Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 11:31:18 +0300 Subject: [PATCH 19/27] Add telescope settings --- home/.config/nvim/init.lua | 1 + .../.config/nvim/lua/pluginconf/telescope.lua | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 home/.config/nvim/lua/pluginconf/telescope.lua diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 711415bd..70d65e18 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -8,3 +8,4 @@ require 'pluginconf.airline' require 'pluginconf.completion' require 'pluginconf.lsp' require 'pluginconf.treesitter' +require 'pluginconf.telescope' diff --git a/home/.config/nvim/lua/pluginconf/telescope.lua b/home/.config/nvim/lua/pluginconf/telescope.lua new file mode 100644 index 00000000..434819c9 --- /dev/null +++ b/home/.config/nvim/lua/pluginconf/telescope.lua @@ -0,0 +1,46 @@ +require('telescope').setup { + defaults = { + vimgrep_arguments = { + 'rg', '--hidden', '--color=never', '--no-heading', + '--with-filename', '--line-number', '--column', '--smart-case' + }, + prompt_prefix = "> ", + selection_caret = "> ", + entry_prefix = " ", + initial_mode = "insert", + selection_strategy = "reset", + sorting_strategy = "descending", + layout_strategy = "horizontal", + layout_config = { + horizontal = {mirror = false}, + vertical = {mirror = false} + }, + file_sorter = require'telescope.sorters'.get_fuzzy_file, + file_ignore_patterns = {}, + generic_sorter = require'telescope.sorters'.get_generic_fuzzy_sorter, + winblend = 0, + border = {}, + borderchars = {'─', '│', '─', '│', '╭', '╮', '╯', '╰'}, + color_devicons = true, + use_less = true, + path_display = {}, + set_env = {['COLORTERM'] = 'truecolor'}, -- default = nil, + 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, + + -- Developer configurations: Not meant for general override + buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker + }, + pickers = {find_files = {find_command = {"fd", "-Ht", "f"}}}, + extensions = { + fzf = { + fuzzy = true, + override_generic_sorter = false, + override_file_sorter = true, + case_mode = "smart_case" + } + } +} + +require('telescope').load_extension('fzf'); -- 2.47.2 From 8603ff03e42f02add70c09f8a8120b56942d140a Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 11:31:41 +0300 Subject: [PATCH 20/27] Add packer install action to dotdrop --- config.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config.yaml b/config.yaml index a78fff99..1cc708bb 100644 --- a/config.yaml +++ b/config.yaml @@ -1,3 +1,5 @@ +actions: + nvim-packer-install: nvim +PackerInstall +qall config: backup: true banner: true @@ -27,6 +29,8 @@ dotfiles: dst: ~/.config/nvim/init.lua src: .config/nvim/init.lua d_nvim_lua: + actions: + - nvim-packer-install dst: ~/.config/nvim/lua src: .config/nvim/lua f_user-dirs.dirs: -- 2.47.2 From 0483f192f8fbaf9fa764f52aa9e2724aab035e97 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 11:42:37 +0300 Subject: [PATCH 21/27] Remove fzf-native for now, add telescope keybinds --- home/.config/nvim/lua/keybinds.lua | 6 +++--- home/.config/nvim/lua/pluginconf/telescope.lua | 12 +----------- home/.config/nvim/lua/pluginmanager.lua | 17 +++++++++++++---- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index 2ee11635..dc058dbd 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -7,9 +7,9 @@ end -- Open/close nerdtree map('', '', 'NERDTreeToggle') --- FZF -map('n', '', 'Telescope find_files') -map('n', '', 'Rg') +-- Telescope +map('n', '', 'Telescope find_files find_command=fd,-Ht,f') +map('n', '', 'Telescope live_grep') -- Completion -- Navigate completions with tab and shift tab diff --git a/home/.config/nvim/lua/pluginconf/telescope.lua b/home/.config/nvim/lua/pluginconf/telescope.lua index 434819c9..e931d68a 100644 --- a/home/.config/nvim/lua/pluginconf/telescope.lua +++ b/home/.config/nvim/lua/pluginconf/telescope.lua @@ -32,15 +32,5 @@ require('telescope').setup { -- Developer configurations: Not meant for general override buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker }, - pickers = {find_files = {find_command = {"fd", "-Ht", "f"}}}, - extensions = { - fzf = { - fuzzy = true, - override_generic_sorter = false, - override_file_sorter = true, - case_mode = "smart_case" - } - } + pickers = {find_files = {find_command = {"fd", "-Ht", "f"}}} } - -require('telescope').load_extension('fzf'); diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index ad450b4e..1739d2f1 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -28,6 +28,7 @@ require('packer').startup(function() -- Tree explorer use 'scrooloose/nerdtree' + -- Telescope use { 'nvim-telescope/telescope.nvim', requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}} @@ -39,14 +40,22 @@ require('packer').startup(function() -- Configs for built-in LSP use 'neovim/nvim-lspconfig' - -- Install LSP executables - use 'kabouzeid/nvim-lspinstall' + -- Install LSP executables + use 'kabouzeid/nvim-lspinstall' -- Completion framework use 'nvim-lua/completion-nvim' - -- Treesitter syntax highlight - use {'nvim-treesitter/nvim-treesitter', branch = '0.5-compat', run = ':TSUpdate'} + -- treesitter syntax highlight + use { + 'nvim-treesitter/nvim-treesitter', + branch = '0.5-compat', + run = ':TSUpdate' + } + + -- Syntax highlighting for languages + -- that are not supported by treesitter + use 'sheerun/vim-polyglot' -- Formatter plugin use 'sbdchd/neoformat' -- 2.47.2 From 92a04bec1c6500cc7baafef05a81ff07fa90fc59 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 11:58:00 +0300 Subject: [PATCH 22/27] Fix packer install action --- config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.yaml b/config.yaml index 1cc708bb..b2017095 100644 --- a/config.yaml +++ b/config.yaml @@ -1,5 +1,5 @@ actions: - nvim-packer-install: nvim +PackerInstall +qall + nvim-packer-install: nvim +PackerInstall config: backup: true banner: true -- 2.47.2 From 3e5661c05368343b13ce8614d23ec8c9e2c20e24 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 11:58:18 +0300 Subject: [PATCH 23/27] Add editorconfig plugin --- home/.config/nvim/lua/pluginmanager.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 1739d2f1..e367e9d8 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -37,6 +37,9 @@ require('packer').startup(function() -- Do stuff as sudo use 'lambdalisue/suda.vim' + -- Read editorconfig settings + use 'editorconfig/editorconfig-vim' + -- Configs for built-in LSP use 'neovim/nvim-lspconfig' -- 2.47.2 From aa842378dbafa1ee86ce6b833013708f05ad66e0 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 11:58:44 +0300 Subject: [PATCH 24/27] Ran neoformat --- home/.config/nvim/lua/pluginmanager.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index e367e9d8..e3ffc93c 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -56,9 +56,9 @@ require('packer').startup(function() run = ':TSUpdate' } - -- Syntax highlighting for languages - -- that are not supported by treesitter - use 'sheerun/vim-polyglot' + -- Syntax highlighting for languages + -- that are not supported by treesitter + use 'sheerun/vim-polyglot' -- Formatter plugin use 'sbdchd/neoformat' -- 2.47.2 From 7965230bd0f3af08d62d7efb20a319aa15b93ac0 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 12:20:03 +0300 Subject: [PATCH 25/27] Change to nvim-tree from nerdtree --- home/.config/nvim/lua/keybinds.lua | 4 ++-- home/.config/nvim/lua/pluginmanager.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index dc058dbd..198a667d 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -4,8 +4,8 @@ local function map(mode, lhs, rhs, opts) vim.api.nvim_set_keymap(mode, lhs, rhs, options) end --- Open/close nerdtree -map('', '', 'NERDTreeToggle') +-- Open/close tree browser +map('n', '', 'NvimTreeToggle') -- Telescope map('n', '', 'Telescope find_files find_command=fd,-Ht,f') diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index e3ffc93c..4550e3c7 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -26,7 +26,7 @@ require('packer').startup(function() use 'vim-airline/vim-airline' -- Tree explorer - use 'scrooloose/nerdtree' + use {'kyazdani42/nvim-tree.lua', requires = 'kyazdani42/nvim-web-devicons'} -- Telescope use { -- 2.47.2 From dceb69cf01143d02612aa6aa1d09bd38c02c7483 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Wed, 4 Aug 2021 12:49:46 +0300 Subject: [PATCH 26/27] Use suda by default --- home/.config/nvim/lua/settings.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/.config/nvim/lua/settings.lua b/home/.config/nvim/lua/settings.lua index a57006c4..0c622ffd 100644 --- a/home/.config/nvim/lua/settings.lua +++ b/home/.config/nvim/lua/settings.lua @@ -1,4 +1,5 @@ local o = vim.o +local g = vim.g local cmd = vim.cmd ------ Appearance ------ @@ -24,6 +25,10 @@ cmd 'highlight SignColumn guibg=transparent' ------ Misc ------- +-- Use suda by default +g.suda_smart_edit = 1 + + -- Split direction o.splitbelow = true o.splitright = true -- 2.47.2 From 8adb8243a06263bbc12e0a6148dd7098a4b2e184 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sun, 8 Aug 2021 15:21:10 +0300 Subject: [PATCH 27/27] Add a bunch more plugins and configurations - lualine - bufferline - nvim-jdtls --- config.yaml | 146 +++++++------- home/.config/nvim/init.lua | 4 +- home/.config/nvim/lua/pluginconf/airline.lua | 10 - .../nvim/lua/pluginconf/bufferline.lua | 1 + .../nvim/lua/pluginconf/indent-blankline.lua | 1 + home/.config/nvim/lua/pluginconf/lsp.lua | 182 +++++++++++------- home/.config/nvim/lua/pluginconf/lualine.lua | 3 + home/.config/nvim/lua/pluginmanager.lua | 27 ++- home/.config/nvim/lua/settings.lua | 6 +- home/.config/nvim/scripts/java-lsp.sh | 17 ++ 10 files changed, 239 insertions(+), 158 deletions(-) delete mode 100644 home/.config/nvim/lua/pluginconf/airline.lua create mode 100644 home/.config/nvim/lua/pluginconf/bufferline.lua create mode 100644 home/.config/nvim/lua/pluginconf/indent-blankline.lua create mode 100644 home/.config/nvim/lua/pluginconf/lualine.lua create mode 100755 home/.config/nvim/scripts/java-lsp.sh diff --git a/config.yaml b/config.yaml index b2017095..c46a4c86 100644 --- a/config.yaml +++ b/config.yaml @@ -30,9 +30,12 @@ dotfiles: src: .config/nvim/init.lua d_nvim_lua: actions: - - nvim-packer-install + - nvim-packer-install dst: ~/.config/nvim/lua src: .config/nvim/lua + d_nvim_scripts: + dst: ~/.config/nvim/scripts + src: .config/nvim/scripts f_user-dirs.dirs: dst: ~/.config/user-dirs.dirs src: .config/user-dirs.dirs @@ -162,106 +165,107 @@ dotfiles: f_gpg-agent.conf: src: .gnupg/gpg-agent.conf dst: ~/.gnupg/gpg-agent.conf - chmod: '600' + chmod: "600" f_gpg.conf: src: .gnupg/gpg.conf dst: ~/.gnupg/gpg.conf profiles: base: dotfiles: - - d_systemd + - d_systemd terminal: dotfiles: - - f_nvimpager - - f_hushlogin - - f_ripgrep_ignore - - f_ranger_commands.py - - f_rtv.cfg - - f_mailcap - - d_zsh - - f_zshrc - - f_tmux.conf - - f_ranger.conf - - f_ssh.conf - - f_authorized_keys - - d_nvim_lua - - f_nvim_init - - f_gitconfig - - f_alacritty.yml + - f_nvimpager + - f_hushlogin + - f_ripgrep_ignore + - f_ranger_commands.py + - f_rtv.cfg + - f_mailcap + - d_zsh + - f_zshrc + - f_tmux.conf + - f_ranger.conf + - f_ssh.conf + - f_authorized_keys + - d_nvim_lua + - d_nvim_scripts + - f_nvim_init + - f_gitconfig + - f_alacritty.yml email: dotfiles: - - d_neomutt - - d_imapnotify - - f_mbsyncrc - - f_msmtp_config + - d_neomutt + - d_imapnotify + - f_mbsyncrc + - f_msmtp_config media: dotfiles: - - f_beets_config - - f_beets_whitelist - - f_abcde.conf - - d_mpv - - f_youtube-dl_config - - f_mpd.conf - - f_ncmpcpp_bindings - - f_ncmpcpp.conf - - f_libra_config - - f_mpdscribble.conf - - f_mpdris2.conf + - f_beets_config + - f_beets_whitelist + - f_abcde.conf + - d_mpv + - f_youtube-dl_config + - f_mpd.conf + - f_ncmpcpp_bindings + - f_ncmpcpp.conf + - f_libra_config + - f_mpdscribble.conf + - f_mpdris2.conf sway: dotfiles: - - d_sway - - d_waybar - - d_wofi - - f_mako_config - - f_redshift.conf - - f_zathurarc - - f_mimeo_associations.txt - - f_tdesktop_lang.strings - - f_fonts.conf - - f_zprofile + - d_sway + - d_waybar + - d_wofi + - f_mako_config + - f_redshift.conf + - f_zathurarc + - f_mimeo_associations.txt + - f_tdesktop_lang.strings + - f_fonts.conf + - f_zprofile Pacman: dotfiles: - - f_makepkg.conf - - f_paru.conf + - f_makepkg.conf + - f_paru.conf Mirkwood: include: - - base - - terminal - - email - - media - - sway - - Pacman + - base + - terminal + - email + - media + - sway + - Pacman dotfiles: - - f_paru.conf - - f_user-dirs.dirs - - f_gitconfig - - f_foot.ini - - f_gpg-agent.conf - - f_gpg.conf + - f_paru.conf + - f_user-dirs.dirs + - f_gitconfig + - f_foot.ini + - f_gpg-agent.conf + - f_gpg.conf Moria: include: - - terminal - - media - - Pacman + - terminal + - media + - Pacman Gondor: include: - - terminal - - Pacman + - terminal + - Pacman mko-laptop: include: - - terminal - - media + - terminal + - media Edoras: include: - - terminal - - Pacman + - terminal + - Pacman TakamakiPC: include: - - terminal - - Pacman + - terminal + - Pacman localhost: include: - - terminal + - terminal ViiruJaTeippi: include: - - terminal + - terminal diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 70d65e18..586b1780 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -4,8 +4,10 @@ require 'keybinds' require 'settings' -- Plugin configurations -require 'pluginconf.airline' +require 'pluginconf.lualine' +require 'pluginconf.bufferline' require 'pluginconf.completion' require 'pluginconf.lsp' require 'pluginconf.treesitter' require 'pluginconf.telescope' +-- require 'pluginconf.indent-blankline' diff --git a/home/.config/nvim/lua/pluginconf/airline.lua b/home/.config/nvim/lua/pluginconf/airline.lua deleted file mode 100644 index e399cbe8..00000000 --- a/home/.config/nvim/lua/pluginconf/airline.lua +++ /dev/null @@ -1,10 +0,0 @@ -local g = vim.g -local o = vim.o - -o.showmode = false -o.laststatus = 2 -g["airline#extensions#tabline#enabled"] = 1 -g.airline_powerline_fonts = 1 -g.airline_section_warning = '' -g.airline_section_error = '' -g.airline_theme = 'onedark' diff --git a/home/.config/nvim/lua/pluginconf/bufferline.lua b/home/.config/nvim/lua/pluginconf/bufferline.lua new file mode 100644 index 00000000..1c295dc9 --- /dev/null +++ b/home/.config/nvim/lua/pluginconf/bufferline.lua @@ -0,0 +1 @@ +require("bufferline").setup{} diff --git a/home/.config/nvim/lua/pluginconf/indent-blankline.lua b/home/.config/nvim/lua/pluginconf/indent-blankline.lua new file mode 100644 index 00000000..a46bc830 --- /dev/null +++ b/home/.config/nvim/lua/pluginconf/indent-blankline.lua @@ -0,0 +1 @@ +require('indent_blankline').setup {filetype_exclude = {'help'}} diff --git a/home/.config/nvim/lua/pluginconf/lsp.lua b/home/.config/nvim/lua/pluginconf/lsp.lua index 16010017..0c8d629b 100644 --- a/home/.config/nvim/lua/pluginconf/lsp.lua +++ b/home/.config/nvim/lua/pluginconf/lsp.lua @@ -1,105 +1,143 @@ +-- List of servers to install +local required_servers = { + "css", "html", "java", "json", "lua", "rust", "yaml", "dockerfile", "latex", + "bash", "typescript", "php" +} + -- keymaps local on_attach = function(client, bufnr) - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + local function buf_set_keymap(...) + vim.api.nvim_buf_set_keymap(bufnr, ...) + end + local function buf_set_option(...) + vim.api.nvim_buf_set_option(bufnr, ...) + end - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - -- Mappings. - local opts = { noremap=true, silent=true } - buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) - buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + -- Mappings. + local opts = {noremap = true, silent = true} + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', + opts) + buf_set_keymap('n', 'wa', + 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', + 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', + 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', + opts) + buf_set_keymap('n', 'D', + 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', + 'lua vim.lsp.diagnostic.show_line_diagnostics()', + opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', + opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', + opts) + buf_set_keymap('n', 'q', + 'lua vim.lsp.diagnostic.set_loclist()', opts) - -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - elseif client.resolved_capabilities.document_range_formatting then - buf_set_keymap("n", "f", "lua vim.lsp.buf.range_formatting()", opts) - end + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", + opts) + elseif client.resolved_capabilities.document_range_formatting then + buf_set_keymap("n", "f", + "lua vim.lsp.buf.range_formatting()", opts) + end - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec([[ + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight then + vim.api.nvim_exec([[ augroup lsp_document_highlight autocmd! * autocmd CursorHold lua vim.lsp.buf.document_highlight() autocmd CursorMoved lua vim.lsp.buf.clear_references() augroup END ]], false) - end + end end --- + -- Configure lua language server for neovim development local lua_settings = { - Lua = { - runtime = { - -- LuaJIT in the case of Neovim - version = 'LuaJIT', - path = vim.split(package.path, ';'), - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = { - [vim.fn.expand('$VIMRUNTIME/lua')] = true, - [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, - }, - }, - } + Lua = { + runtime = { + -- LuaJIT in the case of Neovim + version = 'LuaJIT', + path = vim.split(package.path, ';') + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'} + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true + } + } + } } -- config that activates keymaps and enables snippet support local function make_config() - local capabilities = vim .lsp.protocol.make_client_capabilities() - capabilities.textDocument.completion.completionItem.snippetSupport = true - return { - -- enable snippet support - capabilities = capabilities, - -- map buffer local keybindings when the language server attaches - on_attach = on_attach, -} + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem.snippetSupport = true + return { + -- enable snippet support + capabilities = capabilities, + -- map buffer local keybindings when the language server attaches + on_attach = on_attach + } end -- lsp-install local function setup_servers() - require'lspinstall'.setup() + require'lspinstall'.setup() - -- get all installed servers - local servers = require'lspinstall'.installed_servers() + -- get all installed servers + local servers = require'lspinstall'.installed_servers() - for _, server in pairs(servers) do - local config = make_config() + -- install server if not already installed but required + -- for _, server in pairs(required_servers) do + -- if not vim.tbl_contains(servers) then + -- require'lspinstall'.install_server(server) + -- end + -- end - -- language specific config - if server == "lua" then - config.settings = lua_settings - end + -- Refresh servers list in case of newly installed servers + servers = require'lspinstall'.installed_servers() - -- setup lspconfig for all servers - require'lspconfig'[server].setup(config) - end + for _, server in pairs(servers) do + local config = make_config() + + -- language specific config + if server == "lua" then config.settings = lua_settings end + require'lspconfig'[server].setup(config) + + -- Java LSP client is started by the plugin nvim-jdtls + if server == "java" then return end + + end end setup_servers() +require('jdtls').start_or_attach({ + cmd = {'java-lsp.sh'}, + root_dir = require('jdtls.setup').find_root({'gradle.build', 'pom.xml'}) +}) + -- Automatically reload after `:LspInstall ` so we don't have to restart neovim -require'lspinstall'.post_install_hook = function () - setup_servers() -- reload installed servers - vim.cmd("bufdo e") -- this triggers the FileType autocmd that starts the server +require'lspinstall'.post_install_hook = function() + setup_servers() -- reload installed servers + vim.cmd("bufdo e") -- this triggers the FileType autocmd that starts the server end diff --git a/home/.config/nvim/lua/pluginconf/lualine.lua b/home/.config/nvim/lua/pluginconf/lualine.lua new file mode 100644 index 00000000..2479044b --- /dev/null +++ b/home/.config/nvim/lua/pluginconf/lualine.lua @@ -0,0 +1,3 @@ +require'lualine'.setup { + options = {theme = 'onedark'}, +} diff --git a/home/.config/nvim/lua/pluginmanager.lua b/home/.config/nvim/lua/pluginmanager.lua index 4550e3c7..9b559cbf 100644 --- a/home/.config/nvim/lua/pluginmanager.lua +++ b/home/.config/nvim/lua/pluginmanager.lua @@ -20,10 +20,22 @@ require('packer').startup(function() use {'wbthomason/packer.nvim', opt = true} -- Colorscheme - use 'joshdick/onedark.vim' + use 'monsonjeremy/onedark.nvim' - -- Custom status and tabline - use 'vim-airline/vim-airline' + -- Statusline + use { + 'hoob3rt/lualine.nvim', + requires = {'kyazdani42/nvim-web-devicons', opt = true} + } + + -- Tabline/bufferline + use { + 'akinsho/nvim-bufferline.lua', + requires = 'kyazdani42/nvim-web-devicons' + } + + -- Indent characters + --use "lukas-reineke/indent-blankline.nvim" -- Tree explorer use {'kyazdani42/nvim-tree.lua', requires = 'kyazdani42/nvim-web-devicons'} @@ -46,6 +58,9 @@ require('packer').startup(function() -- Install LSP executables use 'kabouzeid/nvim-lspinstall' + -- Extensions for eclipse.jdt.ls + use 'mfussenegger/nvim-jdtls' + -- Completion framework use 'nvim-lua/completion-nvim' @@ -63,6 +78,12 @@ require('packer').startup(function() -- Formatter plugin use 'sbdchd/neoformat' + -- Make editing passwords safer + use { + 'https://git.zx2c4.com/password-store', + rtp = 'contrib/vim/redact_pass.vim' + } + end) -- Install plugins if packer was not installed diff --git a/home/.config/nvim/lua/settings.lua b/home/.config/nvim/lua/settings.lua index 0c622ffd..4965e6ce 100644 --- a/home/.config/nvim/lua/settings.lua +++ b/home/.config/nvim/lua/settings.lua @@ -5,7 +5,7 @@ local cmd = vim.cmd ------ Appearance ------ -- Set colorscheme -cmd 'colorscheme onedark' +require('onedark').setup() -- True colors o.termguicolors = true @@ -19,6 +19,10 @@ o.cmdheight = 1 -- Always show signcolumn o.signcolumn = 'yes' +-- Blinking cursor +cmd 'set guicursor=i:ver1' +cmd 'set guicursor+=a:blinkon1' + -- Gutter and cursoline bg transparent cmd 'highlight CursorLineNr guibg=transparent' cmd 'highlight SignColumn guibg=transparent' diff --git a/home/.config/nvim/scripts/java-lsp.sh b/home/.config/nvim/scripts/java-lsp.sh new file mode 100755 index 00000000..876383a1 --- /dev/null +++ b/home/.config/nvim/scripts/java-lsp.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +JAR="$HOME/.local/share/nvim/lspinstall/java/plugins/org.eclipse.equinox.launcher_*.jar" +GRADLE_HOME=$HOME/gradle /usr/lib/jvm/default/bin/java \ + -Declipse.application=org.eclipse.jdt.ls.core.id1 \ + -Dosgi.bundles.defaultStartLevel=4 \ + -Declipse.product=org.eclipse.jdt.ls.core.product \ + -Dlog.protocol=true \ + -Dlog.level=ALL \ + -Xms1g \ + -Xmx2G \ + -jar $(echo "$JAR") \ + -configuration "$HOME/.local/share/nvim/lspinstall/java/config_linux" \ + -data "${1:-$HOME/workspace}" \ + --add-modules=ALL-SYSTEM \ + --add-opens java.base/java.util=ALL-UNNAMED \ + --add-opens java.base/java.lang=ALL-UNNAMED -- 2.47.2