From 375be4738519e9807f1c696d20e46c6037ad02d5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 15 Feb 2020 04:49:04 +0000 Subject: [PATCH 001/419] Neovim initial configuration files --- coc-settings.json | 33 ++++++ editor.vim | 149 ++++++++++++++++++++++++ init.vim | 27 +++++ mapinit.vim | 25 ++++ mapping.d/coc_map.vim | 67 +++++++++++ mapping.d/copy_paste_map.vim | 4 + mapping.d/folding_map.vim | 2 + mapping.d/fzf_map.vim | 36 ++++++ mapping.d/highlighting_map.vim | 2 + mapping.d/markdown_preview_map.vim | 8 ++ mapping.d/multi_cursor_map.vim | 9 ++ mapping.d/nerdtree_map.vim | 6 + mapping.d/prettier_map.vim | 6 + mapping.d/spellcheck_map.vim | 10 ++ mapping.d/syntastic_map.vim | 3 + mapping.d/tab_buffer_map.vim | 46 ++++++++ mapping.d/terminal_map.vim | 11 ++ mapping.d/ultisnip_map.vim | 4 + mapping.d/vim_lsc_dart_map.vim | 6 + mapping.d/visual_fnd_replace_map.vim | 3 + mapping.d/ycm_map.vim | 3 + pluginit.vim | 25 ++++ plugins.vim | 112 ++++++++++++++++++ plugrc.d/airline.vim | 38 ++++++ plugrc.d/coc.vim | 44 +++++++ plugrc.d/dart_flutter.vim | 8 ++ plugrc.d/deoplete.vim | 2 + plugrc.d/deoplete_tabnine.vim | 4 + plugrc.d/devicons.vim | 109 +++++++++++++++++ plugrc.d/easymotion.vim | 0 plugrc.d/fzf.vim | 33 ++++++ plugrc.d/markdown_preview.vim | 32 +++++ plugrc.d/multiple_cursor.vim | 2 + plugrc.d/neoformat.vim | 8 ++ plugrc.d/neoinclude.vim | 4 + plugrc.d/nerdtree_git.vim | 86 ++++++++++++++ plugrc.d/prettier.vim | 2 + plugrc.d/sexy_status_bar.vim | 38 ++++++ plugrc.d/snippet.vim | 1 + plugrc.d/syntastic.vim | 31 +++++ plugrc.d/vim_language_server_client.vim | 17 +++ plugrc.d/vista.vim | 51 ++++++++ plugrc.d/vue_language_server.vim | 3 + plugrc.d/ycm.vim | 7 ++ terminal.vim | 7 ++ ui.vim | 5 + 46 files changed, 1129 insertions(+) create mode 100644 coc-settings.json create mode 100644 editor.vim create mode 100755 init.vim create mode 100644 mapinit.vim create mode 100644 mapping.d/coc_map.vim create mode 100644 mapping.d/copy_paste_map.vim create mode 100644 mapping.d/folding_map.vim create mode 100644 mapping.d/fzf_map.vim create mode 100644 mapping.d/highlighting_map.vim create mode 100644 mapping.d/markdown_preview_map.vim create mode 100644 mapping.d/multi_cursor_map.vim create mode 100644 mapping.d/nerdtree_map.vim create mode 100644 mapping.d/prettier_map.vim create mode 100644 mapping.d/spellcheck_map.vim create mode 100644 mapping.d/syntastic_map.vim create mode 100644 mapping.d/tab_buffer_map.vim create mode 100644 mapping.d/terminal_map.vim create mode 100644 mapping.d/ultisnip_map.vim create mode 100644 mapping.d/vim_lsc_dart_map.vim create mode 100644 mapping.d/visual_fnd_replace_map.vim create mode 100644 mapping.d/ycm_map.vim create mode 100644 pluginit.vim create mode 100755 plugins.vim create mode 100644 plugrc.d/airline.vim create mode 100644 plugrc.d/coc.vim create mode 100644 plugrc.d/dart_flutter.vim create mode 100644 plugrc.d/deoplete.vim create mode 100644 plugrc.d/deoplete_tabnine.vim create mode 100644 plugrc.d/devicons.vim create mode 100644 plugrc.d/easymotion.vim create mode 100644 plugrc.d/fzf.vim create mode 100644 plugrc.d/markdown_preview.vim create mode 100644 plugrc.d/multiple_cursor.vim create mode 100644 plugrc.d/neoformat.vim create mode 100644 plugrc.d/neoinclude.vim create mode 100644 plugrc.d/nerdtree_git.vim create mode 100644 plugrc.d/prettier.vim create mode 100644 plugrc.d/sexy_status_bar.vim create mode 100644 plugrc.d/snippet.vim create mode 100644 plugrc.d/syntastic.vim create mode 100644 plugrc.d/vim_language_server_client.vim create mode 100644 plugrc.d/vista.vim create mode 100644 plugrc.d/vue_language_server.vim create mode 100644 plugrc.d/ycm.vim create mode 100644 terminal.vim create mode 100644 ui.vim diff --git a/coc-settings.json b/coc-settings.json new file mode 100644 index 0000000..6a316a1 --- /dev/null +++ b/coc-settings.json @@ -0,0 +1,33 @@ +{ + "languageserver": { + "ccls": { + "command": "ccls", + "filetypes": [ + "c", + "cpp", + "objc", + "objcpp" + ], + "rootPatterns": [ + ".ccls", + "compile_commands.json", + ".vim/", + ".git/", + ".hg/" + ], + "initializationOptions": { + "cache": { + "directory": "/tmp/ccls" + } + } + } + } + ,"codeLens.enable": true + ,"suggest.enablePreview": true + ,"html.enable": true + ,"html.format.enable":true + ,"python.pythonPath":"/usr/bin/python3" + ,"python.linting.enabled":true + ,"python.linting.pylintPath":"/usr/bin/pylint" + ,"coc.preferences.formatOnSaveFiletypes": ["css", "Markdown","dart"] +} diff --git a/editor.vim b/editor.vim new file mode 100644 index 0000000..b935fed --- /dev/null +++ b/editor.vim @@ -0,0 +1,149 @@ + +" Use Unix as the standard file type +set ffs=unix,dos,mac + +set encoding=UTF-8 + +" == Python provider configurations == " +let g:python_host_prog='/usr/bin/python2' +let g:python3_host_prog='/usr/bin/python3' + +"enable loading the plugin files for specific file types +filetype plugin indent on + +"Switch on syntax highlighting. +syntax on + +"set assembly language file to use nasm +let filetype_i = "nasm" +let g:asmsyntax = "nasm" + +"Set clipboard to the + and * registers +if has('clipboard') + set clipboard+=unnamedplus,unnamed +endif + +"Restore cursor to file position in previous editing session +"This autocommand jumps to the last known position in a file +"just after opening it, if the '" mark is set: > +:au BufReadPost * +\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' +\ | exe "normal! g`\"" +\ | endif + +"Sets the shell used for executing OS command" +set shell=/usr/bin/bash + +"Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if +"available. This will store the multi-level undo information in a file. The result is +"that when you change a file, exit Vim, and then edit the file again, you can undo +"the changes made previously. +if has("vms") + set nobackup +else + set backup + if has('persistent_undo') + set undofile + set undolevels=30000 + set undoreload=30000 + endif +endif + +"for vim's swap ; undo and backup organization +set backupdir=/tmp// "Location for backup of files before editing " +set directory=/tmp// "The location of swap files ,ie buffers that have not been save ie in memory +set undodir=/tmp// "Location for storing undo tree of the edited file" + + +"Do not keep a backup or .swp file. I don't like to have junk +"files, my source is anyway in cvs/svn/p4/git. +set backup " create a backup of the file before editing +set undofile " enable undofile , which helps you undo a lot and redo also a lot +set noswapfile " enable saving unsaved/unwritten files in a *.swp file + +set nocompatible " Use Vim defaults (much better!), Vi is for 70's programmers! + +set expandtab " always expands tab to spaces. It is good when peers use different editor. + +set wildmenu "Display completion matches in a status line. That is when you type + "and there is more than one match. + +set termguicolors "Set true colours in terminal + +set completeopt=menuone,preview,noinsert " Don't let autocomplete affect usual typing habits + +set bs=2 " allow backspacing over everything in insert mode + +set hidden " This option allows you to switch between multiple buffers + "without saving a changed buffer + +set mouse=a " Automatically enable mouse usage + +set mousehide " Hide the mouse pointer while typing. + +set incsearch " highlight search string as search pattern is entered + +set hlsearch "disables last search hilighting + +set wildmode=longest,full " get bash-like tab completions with longest and list + +set number " Show line numbers + +set wrap " Automatically wrap text that extends beyond the screen length. + +set backspace=indent,eol,start " Fixes common backspace problems + +set laststatus=2 " Status bar + +set linebreak "Break lines at word (requires Wrap lines) + +"set showbreak=-- " Wrap-broken line prefix + +set textwidth=99 " Line wrap (number of cols) + +set showmatch " Highlight matching brace + +set complete+=kspell "text complete with CTRL-N or CTRL-P + +"set spell " Enable spell-checking + +set spelllang=en_us + +set visualbell "Use visual bell (no beeping) + +set ignorecase "Always case-insensitie + +set smartcase " Enable smart-case search + +set autoindent " Auto-indent new lines + +set wildignorecase "case insensitive auto completion + +set shiftwidth=4 " Number of auto-indent spaces + +set smartindent " Enable smart-indent + +set smarttab " Enable smart-tabs + +set softtabstop=4 " Number of spaces per Tab + +set confirm " Prompt confirmation dialogs + +set ruler " Show row and column ruler information + +set cmdheight=2 "Command line height + +set autowriteall "Auto-write all file changes + +set history=300 "Set the history size to maximum. by default it is 20 + +set list " Display unprintable characters f12 - switches + +set listchars=tab:•\ ,trail:•,extends:»,precedes:« " Unprintable chars mapping + +" Enable folding +set foldmethod=indent +set foldlevel=99 + +"Enable Tags +set tags=tags diff --git a/init.vim b/init.vim new file mode 100755 index 0000000..053218d --- /dev/null +++ b/init.vim @@ -0,0 +1,27 @@ +"The system wide config file is found in /usr/share/nvim/sysinit.vim + +"=================================================================== +"=== EDITOR CONFIGURATIONS === +"=================================================================== +source $HOME/.config/nvim/editor.vim + +"=================================================================== +"=== TERMINAL CONFIGURATIONS === +"=================================================================== +source $HOME/.config/nvim/terminal.vim + +"=================================================================== +"=== UI CONFIGURATIONS === +"=================================================================== +source $HOME/.config/nvim/ui.vim + +"=================================================================== +"=== MAPPINGS ONFIGURATIONS === +"=================================================================== +source $HOME/.config/nvim/mapinit.vim + +"=================================================================== +"=== PLUGINS CONFIGURATIONS === +"=================================================================== +source $HOME/.config/nvim/pluginit.vim + diff --git a/mapinit.vim b/mapinit.vim new file mode 100644 index 0000000..65c88a9 --- /dev/null +++ b/mapinit.vim @@ -0,0 +1,25 @@ +" Remap leader key to , +" With a map leader it's possible to do extra key combinations +" like w saves the current file +let mapleader = "," +let g:mapleader = "," +let maplocalleader = "." + +"Source the various mappings +source $HOME/.config/nvim/mapping.d/coc_map.vim +source $HOME/.config/nvim/mapping.d/fzf_map.vim +"source $HOME/.config/nvim/mapping.d/ycm_map.vim +source $HOME/.config/nvim/mapping.d/nerdtree_map.vim +source $HOME/.config/nvim/mapping.d/ultisnip_map.vim +source $HOME/.config/nvim/mapping.d/copy_paste_map.vim +source $HOME/.config/nvim/mapping.d/visual_fnd_replace_map.vim +source $HOME/.config/nvim/mapping.d/spellcheck_map.vim +source $HOME/.config/nvim/mapping.d/tab_buffer_map.vim +source $HOME/.config/nvim/mapping.d/syntastic_map.vim +source $HOME/.config/nvim/mapping.d/markdown_preview_map.vim +source $HOME/.config/nvim/mapping.d/highlighting_map.vim +source $HOME/.config/nvim/mapping.d/multi_cursor_map.vim +source ~/.config/nvim/mapping.d/folding_map.vim +source ~/.config/nvim/mapping.d/vim_lsc_dart_map.vim +source ~/.config/nvim/mapping.d/prettier_map.vim +source ~/.config/nvim/mapping.d/terminal_map.vim diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim new file mode 100644 index 0000000..2522883 --- /dev/null +++ b/mapping.d/coc_map.vim @@ -0,0 +1,67 @@ +" Use tab for trigger completion with characters ahead and navigate. +" Use command ':verbose imap ' to make sure tab is not mapped by other plugin. +"Map for trigger completion, completion confirm, snippet expand and jump like VSCode + +inoremap + \ pumvisible() ? coc#_select_confirm() : + \ coc#expandableOrJumpable() ? "\=coc#rpc#request('doKeymap',['snippets-expand-jump',''])\" : + \ check_back_space() ? "\" : + \ coc#refresh() + +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +"Note: the `coc-snippets` extension is required for this to work. +let g:coc_snippet_next = '' + +" 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 gt (coc-type-definition) +nmap gi (coc-implementation) +nmap gr (coc-references) + +" Remap for rename current word +nmap rn (coc-rename) + +" Remap for format selected region +xmap f (coc-format-selected) +nmap f (coc-format-selected) + +" 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 for select selections ranges, needs server support, like: coc-tsserver, coc-python +nmap (coc-range-select) +xmap (coc-range-select) +xmap (coc-range-select-backword) + +" 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/mapping.d/copy_paste_map.vim b/mapping.d/copy_paste_map.vim new file mode 100644 index 0000000..4ba18f5 --- /dev/null +++ b/mapping.d/copy_paste_map.vim @@ -0,0 +1,4 @@ +" == Mappings for keyborad copy and paste == " +:inoremap "+pa +:vnoremap "+y +:vnoremap "+d diff --git a/mapping.d/folding_map.vim b/mapping.d/folding_map.vim new file mode 100644 index 0000000..f28e97e --- /dev/null +++ b/mapping.d/folding_map.vim @@ -0,0 +1,2 @@ +" Enable folding with the spacebar +nnoremap za diff --git a/mapping.d/fzf_map.vim b/mapping.d/fzf_map.vim new file mode 100644 index 0000000..d3bcb68 --- /dev/null +++ b/mapping.d/fzf_map.vim @@ -0,0 +1,36 @@ +"mappings for Fzf +"" This is the default extra key bindings +nnoremap :FZF +let g:fzf_action = { + \ 'ctrl-t': 'tab split', + \ 'ctrl-s': 'split', + \ 'ctrl-v': 'vsplit' + \} + +" Mapping selecting mappings +nmap (fzf-maps-n) +xmap (fzf-maps-x) +omap (fzf-maps-o) + +" Insert mode completion +imap (fzf-complete-word) +imap (fzf-complete-path) +imap (fzf-complete-file-ag) +imap (fzf-complete-line) + +" Advanced customization using autoload functions +inoremap fzf#vim#complete#word({'left': '15%'}) + +" Replace the default dictionary completion with fzf-based fuzzy completion +inoremap fzf#vim#complete('cat /usr/share/dict/words') + + +function! s:fzf_statusline() + " Override statusline as you like + highlight fzf1 ctermfg=161 ctermbg=251 + highlight fzf2 ctermfg=23 ctermbg=251 + highlight fzf3 ctermfg=237 ctermbg=251 + setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f +endfunction + +autocmd! User FzfStatusLine call fzf_statusline() diff --git a/mapping.d/highlighting_map.vim b/mapping.d/highlighting_map.vim new file mode 100644 index 0000000..c816bae --- /dev/null +++ b/mapping.d/highlighting_map.vim @@ -0,0 +1,2 @@ +" Use to clear the highlighting of :set hlsearch. +nnoremap :noh diff --git a/mapping.d/markdown_preview_map.vim b/mapping.d/markdown_preview_map.vim new file mode 100644 index 0000000..be31e0a --- /dev/null +++ b/mapping.d/markdown_preview_map.vim @@ -0,0 +1,8 @@ + " for normal mode + nmap MarkdownPreview + " for insert mode + imap MarkdownPreview + " for normal mode + nmap StopMarkdownPreview + " for insert mode + imap StopMarkdownPreview diff --git a/mapping.d/multi_cursor_map.vim b/mapping.d/multi_cursor_map.vim new file mode 100644 index 0000000..a8a0c80 --- /dev/null +++ b/mapping.d/multi_cursor_map.vim @@ -0,0 +1,9 @@ +" Default mapping +let g:multi_cursor_start_word_key = '' +let g:multi_cursor_select_all_word_key = '' +let g:multi_cursor_start_key = 'g' +let g:multi_cursor_select_all_key = 'g' +let g:multi_cursor_next_key = '' +let g:multi_cursor_prev_key = '' +let g:multi_cursor_skip_key = '' +let g:multi_cursor_quit_key = '' diff --git a/mapping.d/nerdtree_map.vim b/mapping.d/nerdtree_map.vim new file mode 100644 index 0000000..130d67b --- /dev/null +++ b/mapping.d/nerdtree_map.vim @@ -0,0 +1,6 @@ +"Toggle NERDTreeToggle on and of +nnoremap f :NERDTreeToggle + +"directly open NerdTree on the file you’re editing to +"quickly perform operations on it with NERDTreeFind +nnoremap v :NERDTreeFind diff --git a/mapping.d/prettier_map.vim b/mapping.d/prettier_map.vim new file mode 100644 index 0000000..928c1ff --- /dev/null +++ b/mapping.d/prettier_map.vim @@ -0,0 +1,6 @@ +"Then your can f for range format.Prettier range format only support +"languageId including: javascript, javascriptreact, typescript, typescriptreact, +"json and graphql +"A similar mapping is used in coc_map.vim +vmap f (coc-format-selected) +nmap f (coc-format-selected) diff --git a/mapping.d/spellcheck_map.vim b/mapping.d/spellcheck_map.vim new file mode 100644 index 0000000..54c974d --- /dev/null +++ b/mapping.d/spellcheck_map.vim @@ -0,0 +1,10 @@ +" === Spell checking === " + +" Pressing ,ss will toggle and untoggle spell checking +map ss :setlocal spell! + +" Shortcuts using +map sn ]s +map sp [s +map sa zg +map s? z= diff --git a/mapping.d/syntastic_map.vim b/mapping.d/syntastic_map.vim new file mode 100644 index 0000000..a52d615 --- /dev/null +++ b/mapping.d/syntastic_map.vim @@ -0,0 +1,3 @@ +"Perform SyntasticCheck +nnoremap :SyntasticCheck :lopen +nnoremap :SyntasticCheck :lclose diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim new file mode 100644 index 0000000..0098234 --- /dev/null +++ b/mapping.d/tab_buffer_map.vim @@ -0,0 +1,46 @@ +" === Moving around, tabs, windows and buffers === " + +" Smart way to move between windows +"map j +"map k +"map h +"map l +" use alt+hjkl to move between split/vsplit panels +tnoremap h +tnoremap j +tnoremap k +tnoremap l +nnoremap h +nnoremap j +nnoremap k +nnoremap l + +" Close the current buffer +map bd :bdelete + +" Close all the buffers +map ba :bufdo bd + +map l :bnext +map h :bprevious + +" Useful mappings for managing tabs +map tn :tabnew +map to :tabonly +map tc :tabclose +map tm :tabmove +map t :tabnext + +" Let 'tl' toggle between this and the last accessed tab +let g:lasttab = 1 +nmap tl :exe "tabn ".g:lasttab +au TabLeave * let g:lasttab = tabpagenr() + + +" Opens a new tab with the current buffer's path +" Super useful when editing files in the same directory +map te :tabedit =expand("%:p:h") + +" Switch CWD to the directory of the open buffer +map cd :cd %:p:h:pwd + diff --git a/mapping.d/terminal_map.vim b/mapping.d/terminal_map.vim new file mode 100644 index 0000000..ae8557e --- /dev/null +++ b/mapping.d/terminal_map.vim @@ -0,0 +1,11 @@ +" turn terminal to normal mode with escape +tnoremap + +" open terminal on ctrl+n +function! OpenTerminal() + split term://bash + resize 10 +endfunction + +"Mapping to open terminal emulator in nvim +nnoremap :call OpenTerminal() diff --git a/mapping.d/ultisnip_map.vim b/mapping.d/ultisnip_map.vim new file mode 100644 index 0000000..9ff24cc --- /dev/null +++ b/mapping.d/ultisnip_map.vim @@ -0,0 +1,4 @@ +" Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. +let g:UltiSnipsExpandTrigger="" " use trigger autocompletion +let g:UltiSnipsJumpForwardTrigger="" +let g:UltiSnipsJumpBackwardTrigger="" diff --git a/mapping.d/vim_lsc_dart_map.vim b/mapping.d/vim_lsc_dart_map.vim new file mode 100644 index 0000000..4eb4d4d --- /dev/null +++ b/mapping.d/vim_lsc_dart_map.vim @@ -0,0 +1,6 @@ +"With the cursor on either a return statement (when it is the only statement +"in a method block) or on the => in a method definition, toggle between the +"two ways to write the method. If it is an expression body method (=>) convert +"to a block body ({} and a return) or vice versa + +noremap tr :DartToggleMethodBodyType diff --git a/mapping.d/visual_fnd_replace_map.vim b/mapping.d/visual_fnd_replace_map.vim new file mode 100644 index 0000000..40330fb --- /dev/null +++ b/mapping.d/visual_fnd_replace_map.vim @@ -0,0 +1,3 @@ +" === Visual find and replace === " +" When you press r you can search and replace the selected text +vnoremap r :call VisualSelection('replace', '') diff --git a/mapping.d/ycm_map.vim b/mapping.d/ycm_map.vim new file mode 100644 index 0000000..947189b --- /dev/null +++ b/mapping.d/ycm_map.vim @@ -0,0 +1,3 @@ +"Ycm mappings +map :YcmCompleter GoTo +nmap :YcmCompleter GetDoc diff --git a/pluginit.vim b/pluginit.vim new file mode 100644 index 0000000..a864359 --- /dev/null +++ b/pluginit.vim @@ -0,0 +1,25 @@ +"========================================================== +"== PLUGINS INIT == +"========================================================== +" +source $HOME/.config/nvim/plugins.vim +source $HOME/.config/nvim/plugrc.d/coc.vim +source $HOME/.config/nvim/plugrc.d/snippet.vim +source $HOME/.config/nvim/plugrc.d/markdown_preview.vim +source $HOME/.config/nvim/plugrc.d/syntastic.vim +source $HOME/.config/nvim/plugrc.d/neoformat.vim +source $HOME/.config/nvim/plugrc.d/multiple_cursor.vim +source $HOME/.config/nvim/plugrc.d/neoinclude.vim +"source $HOME/.config/nvim/plugrc.d/ycm.vim +source $HOME/.config/nvim/plugrc.d/deoplete.vim +source $HOME/.config/nvim/plugrc.d/nerdtree_git.vim +source $HOME/.config/nvim/plugrc.d/airline.vim +source $HOME/.config/nvim/plugrc.d/fzf.vim +source $HOME/.config/nvim/plugrc.d/devicons.vim +"source ~/.config/nvim/plugrc.d/deoplete_tabnine.vim +source ~/.config/nvim/plugrc.d/vue_language_server.vim +source ~/.config/nvim/plugrc.d/dart_flutter.vim +source ~/.config/nvim/plugrc.d/vim_language_server_client.vim +source ~/.config/nvim/plugrc.d/prettier.vim +source ~/.config/nvim/plugrc.d/vista.vim + diff --git a/plugins.vim b/plugins.vim new file mode 100755 index 0000000..60cd631 --- /dev/null +++ b/plugins.vim @@ -0,0 +1,112 @@ +" ============================================================================ " +" === PLUGINS === " +" ============================================================================ " +"PLUG INS FOR NEOVIM +"Specify a directory for plugins +"-For Neovim: ~/.local/share/nvim/plugged +"To make config resuable system wide use absolute path instead eg. +"/home/$USER/.local/share/nvim/plugged +"-Avoid using standard Vim directory names like 'plugin' + +call plug#begin('$HOME/.local/share/nvim/plugged') + +" === Editor Plugins === " +"Multiple cursor editing +Plug 'terryma/vim-multiple-cursors' + +" EasyMotion provides a mush simpler way to use motions in vim +Plug 'easymotion/vim-easymotion' + +"A commenter for different Language +Plug 'scrooloose/nerdcommenter' + +" === Git Plugin === +"A vim plugin which shows git diff in the gutter (sign column). +Plug 'airblade/vim-gitgutter' + +"A git wrapper +Plug 'tpope/vim-fugitive' + +"A plugin of NERDTree showing git status flags +Plug 'Xuyuanp/nerdtree-git-plugin' + +" === Satus Line === +"Status bar plugin + Plug 'vim-airline/vim-airline' + Plug 'vim-airline/vim-airline-themes' + +" === Source Code Formater === +"A neoformat plugin for code formating +Plug 'sbdchd/neoformat' + +" === Fuzzy Finder === +"fzf is a general-purpose command-line fuzzy finder. +" PlugInstall and PlugUpdate will clone fzf in ~/.fzf and run the install script +Plug 'junegunn/fzf', { 'dir': '~/.local/share/nvim/plugged/fzf/', 'do': './install --all' } + " Both options are optional. You don't have to install fzf in ~/.fzf + " and you don't have to run the install script if you use fzf only in Vim. +Plug 'junegunn/fzf.vim' + +" === Markdown Plugins === +"Markdown Syntax Highlighting" +Plug 'godlygeek/tabular' +Plug 'plasticboy/vim-markdown' + +"A markdown previewer +Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } + +" === Language Specific Plugins === + +"Dart language support in vim +Plug 'dart-lang/dart-vim-plugin' +Plug 'natebosch/vim-lsc-dart' + +" === Language Server Clients === +Plug 'natebosch/vim-lsc' + +" == Code Completion Engine === +"Deoplete – Code Completion Engine +"Dark powered asynchronous completion framework for neovim/Vim8 +"Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } + +"Tabnine +"Plug 'tbodt/deoplete-tabnine', { 'do': './install.sh' } + +"A #include completion framework for deoplete c/c++ +Plug 'Shougo/neoinclude.vim' + +"Coc is an intellisense engine for Vim/Neovim +"Use release branch (Recommend) +Plug 'neoclide/coc.nvim', {'branch': 'release'} + +"A code completion engine for c/c++ family of languages in neovim +"Plug 'ycm-core/YouCompleteMe' + +" === Code Snippets Plugins === +"For snippets in neovim +"Track the engine. +Plug 'SirVer/ultisnips' + +" Snippets are separated from the engine. Add this if you want them: +Plug 'honza/vim-snippets' + +" === Syntax Highlighting Engine === +"Syntastic is a syntax checking plugin for Vim + Plug 'scrooloose/syntastic' + +" === Tag Bar Plugin === +"View and search LSP symbols, tags in Vim/NeoVim." +Plug 'liuchengxu/vista.vim' + +" === UI === " +" A Neovim File explorer +Plug 'preservim/nerdtree' + + +" == Icons == " +" Glyphs and Icons for neovim +Plug 'ryanoasis/vim-devicons' + +" Initialize plugin system +call plug#end() + diff --git a/plugrc.d/airline.vim b/plugrc.d/airline.vim new file mode 100644 index 0000000..503a2f5 --- /dev/null +++ b/plugrc.d/airline.vim @@ -0,0 +1,38 @@ +"Enable powerline fonts symbols +let g:airline_powerline_fonts=1 + +"Set terminal color to 256 colors +set t_Co=256 + +"Enable tabline extention +let g:airline#extensions#tabline#enabled = 1 + +"Separators can be configured independently for the tabline, +"so here is how you can define "straight" tabs +let g:airline#extensions#tabline#left_sep = ' ' +let g:airline#extensions#tabline#left_alt_sep = '|' + +"In addition, you can also choose which path formatter airline uses. +"This affects how file paths are displayed in each individual tab as +"well as the current buffer indicator in the upper right. To do so, +"set the formatter field with + +let g:airline#extensions#tabline#formatter = 'unique_tail' + +" AIRLINE SETTINGS +let g:airline#extensions#tabline#show_close_button = 1 +let g:airline#extensions#tabline#close_symbol = '×' +let g:airline#extensions#tabline#buffer_nr_show = 1 +let g:airline_skip_empty_sections = 1 +"let g:airline#extensions#tabline#fnamemod = ':t' +let g:airline#extensions#syntastic#enabled = 1 +let g:airline_detect_iminsert=1 +let g:airline#extensions#tmuxline#enabled = 1 +let g:airline#extensions#tabline#show_tabs = 1 +let g:airline#extensions#tabline#show_buffers = 1 +let g:airline#extensions#tabline#tab_nr_type = 1 " tab number +let g:airline#extensions#tabline#show_splits = 1 +let g:airline#extensions#wordcount#enabled = 0 +"let g:airline_theme='base16' +let g:airline#extensions#tagbar#enabled = 1 +" END AIRLINE SETTINGS diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim new file mode 100644 index 0000000..6bfe2c0 --- /dev/null +++ b/plugrc.d/coc.vim @@ -0,0 +1,44 @@ +" You will have bad experience for diagnostic messages when it's default 4000. +set updatetime=300 + +" don't give |ins-completion-menu| messages. +set shortmess+=c + +" always show signcolumns +set signcolumn=yes + +" 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') + +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 + + +" 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', ) + +" use `:OR` for organize import of current buffer +command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') + +" Add status line support, for integration with other plugin, checkout `:h coc-status` +set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} + diff --git a/plugrc.d/dart_flutter.vim b/plugrc.d/dart_flutter.vim new file mode 100644 index 0000000..4ca8f3b --- /dev/null +++ b/plugrc.d/dart_flutter.vim @@ -0,0 +1,8 @@ +"Enable HTML syntax highlighting inside Dart strings +let dart_html_in_string=v:true + +"Enable Dart style guide syntax (like 2-space indentation) +let g:dart_style_guide = 4 + +"Enable DartFmt execution on buffer save +let g:dart_format_on_save = 1 diff --git a/plugrc.d/deoplete.vim b/plugrc.d/deoplete.vim new file mode 100644 index 0000000..a1187b7 --- /dev/null +++ b/plugrc.d/deoplete.vim @@ -0,0 +1,2 @@ +"Enable deopete at startup +let g:deoplete#enable_at_startup = 1 diff --git a/plugrc.d/deoplete_tabnine.vim b/plugrc.d/deoplete_tabnine.vim new file mode 100644 index 0000000..36640cf --- /dev/null +++ b/plugrc.d/deoplete_tabnine.vim @@ -0,0 +1,4 @@ +call deoplete#custom#var('tabnine', { +\ 'line_limit': 500, +\ 'max_num_results': 20, +\ }) diff --git a/plugrc.d/devicons.vim b/plugrc.d/devicons.vim new file mode 100644 index 0000000..8802d6d --- /dev/null +++ b/plugrc.d/devicons.vim @@ -0,0 +1,109 @@ +" loading the plugin +let g:webdevicons_enable = 1 + +" adding the flags to NERDTree +let g:webdevicons_enable_nerdtree = 1 + +" adding the custom source to unite +"let g:webdevicons_enable_unite = 1 + +" adding the column to vimfiler +"let g:webdevicons_enable_vimfiler = 1 + +" adding to vim-airline's tabline +let g:webdevicons_enable_airline_tabline = 1 + +" adding to vim-airline's statusline +let g:webdevicons_enable_airline_statusline = 1 + +" ctrlp glyphs +"let g:webdevicons_enable_ctrlp = 1 + +" adding to vim-startify screen +"let g:webdevicons_enable_startify = 1 + +" adding to flagship's statusline +"let g:webdevicons_enable_flagship_statusline = 1 + +" turn on/off file node glyph decorations (not particularly useful) +"let g:WebDevIconsUnicodeDecorateFileNodes = 1 + +" use double-width(1) or single-width(0) glyphs +" only manipulates padding, has no effect on terminal or set(guifont) font +let g:WebDevIconsUnicodeGlyphDoubleWidth = 1 + +" whether or not to show the nerdtree brackets around flags +let g:webdevicons_conceal_nerdtree_brackets = 1 + +" the amount of space to use after the glyph character (default ' ') +let g:WebDevIconsNerdTreeAfterGlyphPadding = ' ' + +" Force extra padding in NERDTree so that the filetype icons line up vertically +let g:WebDevIconsNerdTreeGitPluginForceVAlign = 1 + +" Adding the custom source to denite +"let g:webdevicons_enable_denite = 1 + +" The amount of space to use after the glyph character in vim-airline tabline(default '') + let g:WebDevIconsTabAirLineAfterGlyphPadding = ' ' + +" The amount of space to use before the glyph character in vim-airline tabline(default ' ') + let g:WebDevIconsTabAirLineBeforeGlyphPadding = ' ' + +"Character Mapping +" change the default character when no match found +"let g:WebDevIconsUnicodeDecorateFileNodesDefaultSymbol = 'ƛ' + +" set a byte character marker (BOM) utf-8 symbol when retrieving file encoding +" disabled by default with no value +let g:WebDevIconsUnicodeByteOrderMarkerDefaultSymbol = '' + +" enable folder/directory glyph flag (disabled by default with 0) +let g:WebDevIconsUnicodeDecorateFolderNodes = 1 + +" enable open and close folder/directory glyph flags (disabled by default with 0) +let g:DevIconsEnableFoldersOpenClose = 1 + +" enable pattern matching glyphs on folder/directory (enabled by default with 1) +let g:DevIconsEnableFolderPatternMatching = 1 + +" enable file extension pattern matching glyphs on folder/directory (disabled by default with 0) +let g:DevIconsEnableFolderExtensionPatternMatching = 1 + +" enable custom folder/directory glyph exact matching +" (enabled by default when g:WebDevIconsUnicodeDecorateFolderNodes is set to 1) +let WebDevIconsUnicodeDecorateFolderNodesExactMatches = 1 + +" change the default folder/directory glyph/icon +let g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol='' + +" change the default open folder/directory glyph/icon (default is '') +let g:DevIconsDefaultFolderOpenSymbol='' + +" change the default dictionary mappings for file extension matches +" Custom icons for file extensions +let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {} " needed +let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['js'] = '' +let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['ts'] = 'ﯤ' +let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['json'] = 'ﬥ' + + +" change the default dictionary mappings for exact file node matches +" Custom icons for specific filenames +let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols = {} " needed +let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['ormconfig.js'] = '' +let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['.env'] = 'ﭩ' +let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['.editorconfig'] = '' +let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['.npmrc'] = '' +let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['src'] = '' + + +" add or override pattern matches for filetypes +" these take precedence over the file extensions +let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols = {} " needed +let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*jquery.*\.js$'] = 'ƛ' +let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols = {} " needed +let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.test.ts'] = 'ﭧ' + +let g:WebDevIconsOS = 'Linux' + diff --git a/plugrc.d/easymotion.vim b/plugrc.d/easymotion.vim new file mode 100644 index 0000000..e69de29 diff --git a/plugrc.d/fzf.vim b/plugrc.d/fzf.vim new file mode 100644 index 0000000..5f585f9 --- /dev/null +++ b/plugrc.d/fzf.vim @@ -0,0 +1,33 @@ +"defalut regex tool +let $FZF_DEFAULT_COMMAND = 'ag -g ""' + +" Default fzf layout +" - down / up / left / right +let g:fzf_layout = { 'down': '~40%' } + +" In Neovim, you can set up fzf window using a Vim command +let g:fzf_layout = { 'window': 'enew' } +let g:fzf_layout = { 'window': '-tabnew' } +let g:fzf_layout = { 'window': '10new' } + +" Customize fzf colors to match your color scheme +let g:fzf_colors = +\ { 'fg': ['fg', 'Normal'], + \ 'bg': ['bg', 'Normal'], + \ 'hl': ['fg', 'Comment'], + \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], + \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], + \ 'hl+': ['fg', 'Statement'], + \ 'info': ['fg', 'PreProc'], + \ 'border': ['fg', 'Ignore'], + \ 'prompt': ['fg', 'Conditional'], + \ 'pointer': ['fg', 'Exception'], + \ 'marker': ['fg', 'Keyword'], + \ 'spinner': ['fg', 'Label'], + \ 'header': ['fg', 'Comment'] } + +" Enable per-command history. +" CTRL-N and CTRL-P will be automatically bound to next-history and +" previous-history instead of down and up. If you don't like the change, +" explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS. +let g:fzf_history_dir = '~/.local/share/fzf-history' diff --git a/plugrc.d/markdown_preview.vim b/plugrc.d/markdown_preview.vim new file mode 100644 index 0000000..e977b51 --- /dev/null +++ b/plugrc.d/markdown_preview.vim @@ -0,0 +1,32 @@ + let g:mkdp_path_to_chrome = "" + " Path to the chrome or the command to open chrome (or other modern browsers). + " If set, g:mkdp_browserfunc would be ignored. + + let g:mkdp_browserfunc = 'MKDP_browserfunc_default' + " Callback Vim function to open browser, the only parameter is the url to open. + + let g:mkdp_auto_start = 0 + " Set to 1, Vim will open the preview window on entering the Markdown + " buffer. + + let g:mkdp_auto_open = 0 + " Set to 1, Vim will automatically open the preview window when you edit a + " Markdown file. + + let g:mkdp_auto_close = 1 + " Set to 1, Vim will automatically close the current preview window when + " switching from one Markdown buffer to another. + + let g:mkdp_refresh_slow = 0 + " Set to 1, Vim will just refresh Markdown when saving the buffer or + " leaving from insert mode. With default 0, it will automatically refresh + " Markdown as you edit or move the cursor. + + let g:mkdp_command_for_global = 0 + " Set to 1, the MarkdownPreview command can be used for all files, + " by default it can only be used in Markdown files. + + let g:mkdp_open_to_the_world = 0 + " Set to 1, the preview server will be available to others in your network. + " By default, the server only listens on localhost (127.0.0.1). + diff --git a/plugrc.d/multiple_cursor.vim b/plugrc.d/multiple_cursor.vim new file mode 100644 index 0000000..af00191 --- /dev/null +++ b/plugrc.d/multiple_cursor.vim @@ -0,0 +1,2 @@ +let g:multi_cursor_use_default_mapping=0 + diff --git a/plugrc.d/neoformat.vim b/plugrc.d/neoformat.vim new file mode 100644 index 0000000..3ac0258 --- /dev/null +++ b/plugrc.d/neoformat.vim @@ -0,0 +1,8 @@ +" Enable alignment +let g:neoformat_basic_format_align = 1 + +" Enable tab to spaces conversion +let g:neoformat_basic_format_retab = 1 + +" Enable trimmming of trailing whitespace +let g:neoformat_basic_format_trim = 1 diff --git a/plugrc.d/neoinclude.vim b/plugrc.d/neoinclude.vim new file mode 100644 index 0000000..2682242 --- /dev/null +++ b/plugrc.d/neoinclude.vim @@ -0,0 +1,4 @@ +"Path to search for include files +let g:neoinclude#paths={'cpp': '/usr/include/c++/9/'} +let g:neoinclude#paths={'gnu': '/usr/include/x86_64-linux-gnu/'} +let g:neoinclude#paths={'c' : '/usr/include/'} diff --git a/plugrc.d/nerdtree_git.vim b/plugrc.d/nerdtree_git.vim new file mode 100644 index 0000000..79da460 --- /dev/null +++ b/plugrc.d/nerdtree_git.vim @@ -0,0 +1,86 @@ +"Automatically delete the buffer of the file you just deleted with NerdTree +let NERDTreeAutoDeleteBuffer = 1 + +"Automatically close nerdtree when you open a file +let NERDTreeQuitOnOpen = 1 + +"Some pretty ui option +let NERDTreeDirArrows = 1 +let g:loaded_nerdtree_git = 1 + +"Show hidden files +let NERDTreeShowHidden=1 + +"let g:NERDTreeMinimalUI = 1 + +let g:NERDTreeIgnore = [] + +let g:NERDTreeStatusline = '' + +"let g:NERDTreeShowIgnoredStatus = 1 +let g:NERDTreeIndicatorMapCustom = { + \ "Modified" : "✹", + \ "Staged" : "✚", + \ "Untracked" : "✭", + \ "Renamed" : "➜", + \ "Unmerged" : "═", + \ "Deleted" : "✖", + \ "Dirty" : "✗", + \ "Clean" : "✔︎", + \ 'Ignored' : '☒', + \ "Unknown" : "?" + \ } + +"automatically close a tab if the only remaining window is NerdTree +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif + +"open NerdTree when you’re starting +" +"autocmd vimenter * NERDTree + +""Open nerd tree on start up when no files are specified +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif + +"How can I open NERDTree automatically when vim starts up on opening a directory +" +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif + +" NERDTress File highlighting +function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg) +exec 'autocmd FileType nerdtree highlight ' a:extension ' ctermbg=' a:bg ' ctermfg=' a:fg ' guibg=' a:guibg ' guifg=' a:guifg +exec 'autocmd FileType nerdtree syn match ' a:extension .' #^\s\+.*' a:extension '$#' +endfunction + +call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515') +call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515') +call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515') +call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515') +call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515') +call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515') +call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515') +call NERDTreeHighlightFile('ds_store', 'Gray', 'none', '#686868', '#151515') +call NERDTreeHighlightFile('gitconfig', 'Gray', 'none', '#686868', '#151515') +call NERDTreeHighlightFile('gitignore', 'Gray', 'none', '#686868', '#151515') +call NERDTreeHighlightFile('bashrc', 'Gray', 'none', '#686868', '#151515') +call NERDTreeHighlightFile('bashprofile', 'Gray', 'none', '#686868', '#151515') + +" NERDTress File highlighting only the glyph/icon +" test highlight just the glyph (icons) in nerdtree: +autocmd filetype nerdtree highlight haskell_icon ctermbg=none ctermfg=Red guifg=#ffa500 +autocmd filetype nerdtree highlight html_icon ctermbg=none ctermfg=Red guifg=#ffa500 +autocmd filetype nerdtree highlight go_icon ctermbg=none ctermfg=Red guifg=#ffa500 + +autocmd filetype nerdtree syn match haskell_icon ## containedin=NERDTreeFile +" if you are using another syn highlight for a given line (e.g. +" NERDTreeHighlightFile) need to give that name in the 'containedin' for this +" other highlight to work with it +autocmd filetype nerdtree syn match html_icon ## containedin=NERDTreeFile,html +autocmd filetype nerdtree syn match go_icon ## containedin=NERDTreeFile diff --git a/plugrc.d/prettier.vim b/plugrc.d/prettier.vim new file mode 100644 index 0000000..d781bf0 --- /dev/null +++ b/plugrc.d/prettier.vim @@ -0,0 +1,2 @@ +"Help you can use :Prettier to format current buffer. +command! -nargs=0 Prettier :CocCommand prettier.formatFile diff --git a/plugrc.d/sexy_status_bar.vim b/plugrc.d/sexy_status_bar.vim new file mode 100644 index 0000000..2d0e21b --- /dev/null +++ b/plugrc.d/sexy_status_bar.vim @@ -0,0 +1,38 @@ +set statusline= +"set statusline+=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ [BUFFER=%n] +set statusline+=%#DiffAdd#%{(mode()=='n')?'\ \ NORMAL\ ':''} +set statusline+=%#DiffChange#%{(mode()=='i')?'\ \ INSERT\ ':''} +set statusline+=%#DiffDelete#%{(mode()=='r')?'\ \ RPLACE\ ':''} +set statusline+=%#Cursor#%{(mode()=='v')?'\ \ VISUAL\ ':''} +set statusline+=\BUFFER\ %n\ " buffer number +set statusline+=%#Visual# " colour +set statusline+=%{&paste?'\ PASTE\ ':''} +set statusline+=%{&spell?'\ SPELL\ ':''} +set statusline+=%#CursorIM# " colour +set statusline+=%R " readonly flag +set statusline+=%M " modified [+] flag +set statusline+=%#Cursor# " colour +set statusline+=%#CursorLine# " colour +set statusline+=\ %t\ " short file name +set statusline+=%= " right align +set statusline+=%#CursorLine# " colour +set statusline+=\ %Y\ " file type +set statusline+=%#Visual# +set statusline+=\%{&ff}\ " file formart +set statusline+=%#CursorIM# " colour +set statusline+=\ %3l:%-2c\ " line + column +set statusline+=%#Cursor# " colour +set statusline+=\ %3p%%\ " percentage +function! GitBranch() + return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'") +endfunction + +function! StatuslineGit() + let l:branchname = GitBranch() + return strlen(l:branchname) > 0?' '.l:branchname.' ':'' +endfunction +set statusline+=%{StatuslineGit()} +set statusline+=%#CursorColumn# +set statusline+=%#PmenuSel# +set statusline+=%#LineNr# "for more information about colour you can check" + ":so $VIMRUNTIME/syntax/hitest.vim diff --git a/plugrc.d/snippet.vim b/plugrc.d/snippet.vim new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/plugrc.d/snippet.vim @@ -0,0 +1 @@ + diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim new file mode 100644 index 0000000..a25cae7 --- /dev/null +++ b/plugrc.d/syntastic.vim @@ -0,0 +1,31 @@ +"Recommended Syntax for syntastic +set statusline+=%#warningmsg# +set statusline+=%{SyntasticStatuslineFlag()} +set statusline+=%* + +let g:syntastic_always_populate_loc_list = 1 +let g:syntastic_auto_loc_list = 1 " auto open/close location list +let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_wq = 0 + +let g:syntastic_mode="passive" +let g:syntastic_enable_signs=0 + +"Addition , experimental +" check also when just opened the file +let g:syntastic_check_on_open = 1 + +" syntastic checker for javascript. +"let g:syntastic_javascript_checkers = ['eslint'] +" don't put icons on the sign column (it hides the vcs status icons of signify) +"let g:syntastic_enable_signs = 0 +let g:syntastic_error_symbol = '✗' +let g:syntastic_warning_symbol = '⚠' +let g:syntastic_style_error_symbol = '✗' +let g:syntastic_style_warning_symbol = '⚠' +let g:syntastic_always_populate_loc_list = 1 + +"Syntatic Python Linter Configuration +let g:syntastic_python_python_exec = 'python3' +let g:syntastic_python_checkers = ['pylint'] +let g:syntastic_python_pylint_exec='python3 -m pylint' diff --git a/plugrc.d/vim_language_server_client.vim b/plugrc.d/vim_language_server_client.vim new file mode 100644 index 0000000..ab2f1ff --- /dev/null +++ b/plugrc.d/vim_language_server_client.vim @@ -0,0 +1,17 @@ +"To have most interactive features automatically mapped for you int +"the buffers which have a language server enable +let g:lsc_auto_map = v:true + +"avoid suppressing error messages from this plugin. +set shortmess-=F + +"Map a filetype to the command that starts the language server for that filetype +let g:lsc_server_commands = {'dart': 'dart_language_server'} + +"To enable autocomplete in favor of manual completion +let g:lsc_enable_autocomplete = v:true + +"If the server supports the textDocument/documentHighlight call references to +"the element under the cursor throughout the document will be highlighted + +let g:lsc_reference_highlights = v:true diff --git a/plugrc.d/vista.vim b/plugrc.d/vista.vim new file mode 100644 index 0000000..d0906db --- /dev/null +++ b/plugrc.d/vista.vim @@ -0,0 +1,51 @@ +function! NearestMethodOrFunction() abort + return get(b:, 'vista_nearest_method_or_function', '') +endfunction + +set statusline+=%{NearestMethodOrFunction()} + +" Ensure you have installed some decent font to show these pretty symbols, +" then you can enable icon for the kind. +let g:vista#renderer#enable_icon = 1 + +" The default icons can't be suitable for all the filetypes, you can extend it as you wish. +let g:vista#renderer#icons = { +\ "function": "\uf794", +\ "variable": "\uf71b", +\ } + +" By default vista.vim never run if you don't call it explicitly. +" +" If you want to show the nearest function in your statusline automatically, +" you can add the following line to your vimrc +autocmd VimEnter * call vista#RunForNearestMethodOrFunction() + +" How each level is indented and what to prepend. +" This could make the display more compact or more spacious. +" e.g., more compact: ["▸ ", ""] +" Note: this option only works the LSP executives, doesn't work for `:Vista ctags`. +let g:vista_icon_indent = ["╰─▸ ", "├─▸ "] + +" Executive used when opening vista sidebar without specifying it. +" See all the avaliable executives via `:echo g:vista#executives`. +let g:vista_default_executive = 'ctags' + +" Set the executive for some filetypes explicitly. Use the explicit executive +" instead of the default one for these filetypes when using `:Vista` without +" specifying the executive. +let g:vista_executive_for = { + \ 'cpp': 'vim_lsp', + \ 'php': 'vim_lsp', + \ } + +" Declare the command including the executable and options used to generate ctags output +" for some certain filetypes.The file path will be appened to your custom command. +" For example: +"let g:vista_ctags_cmd = { + "\ 'haskell': 'hasktags -x -o - -c', + "\ } + +" To enable fzf's preview window set g:vista_fzf_preview. +" The elements of g:vista_fzf_preview will be passed as arguments to fzf#vim#with_preview() +" For example: +let g:vista_fzf_preview = ['right:50%'] diff --git a/plugrc.d/vue_language_server.vim b/plugrc.d/vue_language_server.vim new file mode 100644 index 0000000..5451ed6 --- /dev/null +++ b/plugrc.d/vue_language_server.vim @@ -0,0 +1,3 @@ +let g:LanguageClient_serverCommands = { + \ 'vue': ['vls'] + \ } diff --git a/plugrc.d/ycm.vim b/plugrc.d/ycm.vim new file mode 100644 index 0000000..ad6d4b0 --- /dev/null +++ b/plugrc.d/ycm.vim @@ -0,0 +1,7 @@ +let g:ycm_collect_identifiers_from_tags_files = 1 +let g:ycm_use_ultisnips_completer = 1 +let g:ycm_seed_identifiers_with_syntax = 1 +let g:ycm_complete_in_comments = 1 +let g:ycm_complete_in_strings = 1 +let g:ycm_autoclose_preview_window_after_insertion = 1 +let g:ycm_key_invoke_completion = '' diff --git a/terminal.vim b/terminal.vim new file mode 100644 index 0000000..52a6ef1 --- /dev/null +++ b/terminal.vim @@ -0,0 +1,7 @@ +" open new split panes to right and below +set splitright +set splitbelow + +" start terminal in insert mode +au BufEnter * if &buftype == 'terminal' | :startinsert | endif + diff --git a/ui.vim b/ui.vim new file mode 100644 index 0000000..ee52d13 --- /dev/null +++ b/ui.vim @@ -0,0 +1,5 @@ + +colorscheme evening +set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 +" Set status line display +" source $HOME/.config/nvim/plugrc.d/sexy_status_bar.vim From 548ea0c946f38850bde4871d5cfecc53eb1e19c0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 18 Feb 2020 07:13:30 +0000 Subject: [PATCH 002/419] Improve Configurations Remove some noise Plugins and install tagbar ,flake8 linter,themes Tune configurations for different programming environments --- coc-settings.json | 7 +- editor.vim | 10 ++- init.vim | 10 +-- mapinit.vim | 1 - mapping.d/markdown_preview_map.vim | 4 + mapping.d/nerdtree_map.vim | 2 +- mapping.d/tab_buffer_map.vim | 7 +- mapping.d/ycm_map.vim | 3 - pluginit.vim | 4 +- plugins.vim | 19 ++--- plugrc.d/airline.vim | 4 +- plugrc.d/deoplete.vim | 2 - plugrc.d/deoplete_tabnine.vim | 4 - plugrc.d/flake8.vim | 15 ++++ plugrc.d/markdown_preview.vim | 129 +++++++++++++++++++++++------ plugrc.d/syntastic.vim | 6 +- plugrc.d/ycm.vim | 7 -- ui.vim | 7 +- 18 files changed, 167 insertions(+), 74 deletions(-) delete mode 100644 mapping.d/ycm_map.vim delete mode 100644 plugrc.d/deoplete.vim delete mode 100644 plugrc.d/deoplete_tabnine.vim create mode 100644 plugrc.d/flake8.vim delete mode 100644 plugrc.d/ycm.vim diff --git a/coc-settings.json b/coc-settings.json index 6a316a1..6b83fc4 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -26,8 +26,11 @@ ,"suggest.enablePreview": true ,"html.enable": true ,"html.format.enable":true - ,"python.pythonPath":"/usr/bin/python3" ,"python.linting.enabled":true - ,"python.linting.pylintPath":"/usr/bin/pylint" ,"coc.preferences.formatOnSaveFiletypes": ["css", "Markdown","dart"] } +/* + ,"python.pythonPath":"/usr/bin/python3" + ,"python.linting.pylintPath":"/usr/bin/pylint" + +*/ diff --git a/editor.vim b/editor.vim index b935fed..ae6b28e 100644 --- a/editor.vim +++ b/editor.vim @@ -85,11 +85,11 @@ set incsearch " highlight search string as search pattern is entered set hlsearch "disables last search hilighting -set wildmode=longest,full " get bash-like tab completions with longest and list +set wildmode=full " get bash-like tab completions with longest and list set number " Show line numbers -set wrap " Automatically wrap text that extends beyond the screen length. +set nowrap " Automatically wrap text that extends beyond the screen length. set backspace=indent,eol,start " Fixes common backspace problems @@ -99,7 +99,7 @@ set linebreak "Break lines at word (requires Wrap lines) "set showbreak=-- " Wrap-broken line prefix -set textwidth=99 " Line wrap (number of cols) +set textwidth=80 " Line wrap (number of cols) set showmatch " Highlight matching brace @@ -147,3 +147,7 @@ set foldlevel=99 "Enable Tags set tags=tags + +"Disable default mappings from omni for sql +let g:omni_sql_no_default_maps = 1 + diff --git a/init.vim b/init.vim index 053218d..2d7c2c5 100755 --- a/init.vim +++ b/init.vim @@ -10,11 +10,6 @@ source $HOME/.config/nvim/editor.vim "=================================================================== source $HOME/.config/nvim/terminal.vim -"=================================================================== -"=== UI CONFIGURATIONS === -"=================================================================== -source $HOME/.config/nvim/ui.vim - "=================================================================== "=== MAPPINGS ONFIGURATIONS === "=================================================================== @@ -25,3 +20,8 @@ source $HOME/.config/nvim/mapinit.vim "=================================================================== source $HOME/.config/nvim/pluginit.vim +"=================================================================== +"=== UI CONFIGURATIONS === +"=================================================================== +source $HOME/.config/nvim/ui.vim + diff --git a/mapinit.vim b/mapinit.vim index 65c88a9..85bdc22 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -8,7 +8,6 @@ let maplocalleader = "." "Source the various mappings source $HOME/.config/nvim/mapping.d/coc_map.vim source $HOME/.config/nvim/mapping.d/fzf_map.vim -"source $HOME/.config/nvim/mapping.d/ycm_map.vim source $HOME/.config/nvim/mapping.d/nerdtree_map.vim source $HOME/.config/nvim/mapping.d/ultisnip_map.vim source $HOME/.config/nvim/mapping.d/copy_paste_map.vim diff --git a/mapping.d/markdown_preview_map.vim b/mapping.d/markdown_preview_map.vim index be31e0a..cbc4ac5 100644 --- a/mapping.d/markdown_preview_map.vim +++ b/mapping.d/markdown_preview_map.vim @@ -6,3 +6,7 @@ nmap StopMarkdownPreview " for insert mode imap StopMarkdownPreview + " for insert mode " + "imap MarkdownPreviewToggle + "" for normal mode " + "nmap MarkdownPreviewToggle diff --git a/mapping.d/nerdtree_map.vim b/mapping.d/nerdtree_map.vim index 130d67b..77038a6 100644 --- a/mapping.d/nerdtree_map.vim +++ b/mapping.d/nerdtree_map.vim @@ -1,5 +1,5 @@ "Toggle NERDTreeToggle on and of -nnoremap f :NERDTreeToggle +nnoremap n :NERDTreeToggle "directly open NerdTree on the file you’re editing to "quickly perform operations on it with NERDTreeFind diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index 0098234..d7f7e73 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -21,8 +21,11 @@ map bd :bdelete " Close all the buffers map ba :bufdo bd -map l :bnext -map h :bprevious +map bn :bnext +map bp :bprevious +map bf :bfirst +map bl :blast + " Useful mappings for managing tabs map tn :tabnew diff --git a/mapping.d/ycm_map.vim b/mapping.d/ycm_map.vim deleted file mode 100644 index 947189b..0000000 --- a/mapping.d/ycm_map.vim +++ /dev/null @@ -1,3 +0,0 @@ -"Ycm mappings -map :YcmCompleter GoTo -nmap :YcmCompleter GetDoc diff --git a/pluginit.vim b/pluginit.vim index a864359..3e40ab8 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -10,16 +10,14 @@ source $HOME/.config/nvim/plugrc.d/syntastic.vim source $HOME/.config/nvim/plugrc.d/neoformat.vim source $HOME/.config/nvim/plugrc.d/multiple_cursor.vim source $HOME/.config/nvim/plugrc.d/neoinclude.vim -"source $HOME/.config/nvim/plugrc.d/ycm.vim -source $HOME/.config/nvim/plugrc.d/deoplete.vim source $HOME/.config/nvim/plugrc.d/nerdtree_git.vim source $HOME/.config/nvim/plugrc.d/airline.vim source $HOME/.config/nvim/plugrc.d/fzf.vim source $HOME/.config/nvim/plugrc.d/devicons.vim -"source ~/.config/nvim/plugrc.d/deoplete_tabnine.vim source ~/.config/nvim/plugrc.d/vue_language_server.vim source ~/.config/nvim/plugrc.d/dart_flutter.vim source ~/.config/nvim/plugrc.d/vim_language_server_client.vim source ~/.config/nvim/plugrc.d/prettier.vim source ~/.config/nvim/plugrc.d/vista.vim +source ~/.config/nvim/plugrc.d/flake8.vim diff --git a/plugins.vim b/plugins.vim index 60cd631..2214f82 100755 --- a/plugins.vim +++ b/plugins.vim @@ -20,6 +20,9 @@ Plug 'easymotion/vim-easymotion' "A commenter for different Language Plug 'scrooloose/nerdcommenter' +" === Themes and Colour Scheme === +Plug 'rakr/vim-one' + " === Git Plugin === "A vim plugin which shows git diff in the gutter (sign column). Plug 'airblade/vim-gitgutter' @@ -65,13 +68,6 @@ Plug 'natebosch/vim-lsc-dart' Plug 'natebosch/vim-lsc' " == Code Completion Engine === -"Deoplete – Code Completion Engine -"Dark powered asynchronous completion framework for neovim/Vim8 -"Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } - -"Tabnine -"Plug 'tbodt/deoplete-tabnine', { 'do': './install.sh' } - "A #include completion framework for deoplete c/c++ Plug 'Shougo/neoinclude.vim' @@ -79,9 +75,6 @@ Plug 'Shougo/neoinclude.vim' "Use release branch (Recommend) Plug 'neoclide/coc.nvim', {'branch': 'release'} -"A code completion engine for c/c++ family of languages in neovim -"Plug 'ycm-core/YouCompleteMe' - " === Code Snippets Plugins === "For snippets in neovim "Track the engine. @@ -94,6 +87,12 @@ Plug 'honza/vim-snippets' "Syntastic is a syntax checking plugin for Vim Plug 'scrooloose/syntastic' + "PEP 8 Checking" +Plug 'nvie/vim-flake8' + +"A collection of language packs for Vim. +Plug 'sheerun/vim-polyglot' + " === Tag Bar Plugin === "View and search LSP symbols, tags in Vim/NeoVim." Plug 'liuchengxu/vista.vim' diff --git a/plugrc.d/airline.vim b/plugrc.d/airline.vim index 503a2f5..d7d2b57 100644 --- a/plugrc.d/airline.vim +++ b/plugrc.d/airline.vim @@ -9,8 +9,8 @@ let g:airline#extensions#tabline#enabled = 1 "Separators can be configured independently for the tabline, "so here is how you can define "straight" tabs -let g:airline#extensions#tabline#left_sep = ' ' -let g:airline#extensions#tabline#left_alt_sep = '|' +"let g:airline#extensions#tabline#left_sep = ' ' +"let g:airline#extensions#tabline#left_alt_sep = '|' "In addition, you can also choose which path formatter airline uses. "This affects how file paths are displayed in each individual tab as diff --git a/plugrc.d/deoplete.vim b/plugrc.d/deoplete.vim deleted file mode 100644 index a1187b7..0000000 --- a/plugrc.d/deoplete.vim +++ /dev/null @@ -1,2 +0,0 @@ -"Enable deopete at startup -let g:deoplete#enable_at_startup = 1 diff --git a/plugrc.d/deoplete_tabnine.vim b/plugrc.d/deoplete_tabnine.vim deleted file mode 100644 index 36640cf..0000000 --- a/plugrc.d/deoplete_tabnine.vim +++ /dev/null @@ -1,4 +0,0 @@ -call deoplete#custom#var('tabnine', { -\ 'line_limit': 500, -\ 'max_num_results': 20, -\ }) diff --git a/plugrc.d/flake8.vim b/plugrc.d/flake8.vim new file mode 100644 index 0000000..3ca4587 --- /dev/null +++ b/plugrc.d/flake8.vim @@ -0,0 +1,15 @@ +"shows the errors inside a quickfix window, which will allow your to +"quickly jump to the error locations by simply pressing [Enter] +let g:flake8_show_in_file=1 +"location of your flake8 binary +let g:flake8_cmd="~/.local/bin/flake8" +"To customize the height of quick fix window +let g:flake8_quickfix_height=7 + +"If you don't want to use the key for flake8-checking, simply remap it +"to another key. It autodetects whether it has been remapped and won't register +"the key if so. For example, to remap it to instead, use +"autocmd FileType python map :call flake8#Flake8() + +"General variable for neovim python highlighting +let python_highlight_all=1 diff --git a/plugrc.d/markdown_preview.vim b/plugrc.d/markdown_preview.vim index e977b51..1b9be04 100644 --- a/plugrc.d/markdown_preview.vim +++ b/plugrc.d/markdown_preview.vim @@ -1,32 +1,113 @@ - let g:mkdp_path_to_chrome = "" - " Path to the chrome or the command to open chrome (or other modern browsers). - " If set, g:mkdp_browserfunc would be ignored. +" let g:mkdp_path_to_chrome = "" + "" Path to the chrome or the command to open chrome (or other modern browsers). + "" If set, g:mkdp_browserfunc would be ignored. - let g:mkdp_browserfunc = 'MKDP_browserfunc_default' - " Callback Vim function to open browser, the only parameter is the url to open. + "let g:mkdp_browserfunc = 'MKDP_browserfunc_default' + "" Callback Vim function to open browser, the only parameter is the url to open. - let g:mkdp_auto_start = 0 - " Set to 1, Vim will open the preview window on entering the Markdown - " buffer. + "let g:mkdp_auto_start = 0 + "" Set to 1, Vim will open the preview window on entering the Markdown + "" buffer. - let g:mkdp_auto_open = 0 - " Set to 1, Vim will automatically open the preview window when you edit a - " Markdown file. + "let g:mkdp_auto_open = 0 + "" Set to 1, Vim will automatically open the preview window when you edit a + "" Markdown file. - let g:mkdp_auto_close = 1 - " Set to 1, Vim will automatically close the current preview window when - " switching from one Markdown buffer to another. + "let g:mkdp_auto_close = 1 + "" Set to 1, Vim will automatically close the current preview window when + "" switching from one Markdown buffer to another. - let g:mkdp_refresh_slow = 0 - " Set to 1, Vim will just refresh Markdown when saving the buffer or - " leaving from insert mode. With default 0, it will automatically refresh - " Markdown as you edit or move the cursor. + "let g:mkdp_refresh_slow = 0 + "" Set to 1, Vim will just refresh Markdown when saving the buffer or + "" leaving from insert mode. With default 0, it will automatically refresh + "" Markdown as you edit or move the cursor. - let g:mkdp_command_for_global = 0 - " Set to 1, the MarkdownPreview command can be used for all files, - " by default it can only be used in Markdown files. + "let g:mkdp_command_for_global = 0 + "" Set to 1, the MarkdownPreview command can be used for all files, + "" by default it can only be used in Markdown files. - let g:mkdp_open_to_the_world = 0 - " Set to 1, the preview server will be available to others in your network. - " By default, the server only listens on localhost (127.0.0.1). + "let g:mkdp_open_to_the_world = 0 + "" Set to 1, the preview server will be available to others in your network. + "" By default, the server only listens on localhost (127.0.0.1). + + " set to 1, nvim will open the preview window after entering the markdown buffer +" default: 0 +let g:mkdp_auto_start = 0 + +" set to 1, the nvim will auto close current preview window when change +" from markdown buffer to another buffer +" default: 1 +let g:mkdp_auto_close = 1 + +" set to 1, the vim will refresh markdown when save the buffer or +" leave from insert mode, default 0 is auto refresh markdown as you edit or +" move the cursor +" default: 0 +let g:mkdp_refresh_slow = 0 + +" set to 1, the MarkdownPreview command can be use for all files, +" by default it can be use in markdown file +" default: 0 +let g:mkdp_command_for_global = 0 + +" set to 1, preview server available to others in your network +" by default, the server listens on localhost (127.0.0.1) +" default: 0 +let g:mkdp_open_to_the_world = 0 + +" use custom IP to open preview page +" useful when you work in remote vim and preview on local browser +" more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9 +" default empty +let g:mkdp_open_ip = '' + +" specify browser to open preview page +" default: '' +let g:mkdp_browser = '' + +" set to 1, echo preview page url in command line when open preview page +" default is 0 +let g:mkdp_echo_preview_url = 0 + +" a custom vim function name to open preview page +" this function will receive url as param +" default is empty +let g:mkdp_browserfunc = '' + +" options for markdown render +" mkit: markdown-it options for render +" katex: katex options for math +" uml: markdown-it-plantuml options +" maid: mermaid options +" disable_sync_scroll: if disable sync scroll, default 0 +" sync_scroll_type: 'middle', 'top' or 'relative', default value is 'middle' +" middle: mean the cursor position alway show at the middle of the preview page +" top: mean the vim top viewport alway show at the top of the preview page +" relative: mean the cursor position alway show at the relative positon of the preview page +" hide_yaml_meta: if hide yaml metadata, default is 1 +" sequence_diagrams: js-sequence-diagrams options +let g:mkdp_preview_options = { + \ 'mkit': {}, + \ 'katex': {}, + \ 'uml': {}, + \ 'maid': {}, + \ 'disable_sync_scroll': 0, + \ 'sync_scroll_type': 'middle', + \ 'hide_yaml_meta': 1, + \ 'sequence_diagrams': {}, + \ 'flowchart_diagrams': {} + \ } + +" use a custom markdown style must be absolute path +let g:mkdp_markdown_css = '' + +" use a custom highlight style must absolute path +let g:mkdp_highlight_css = '' + +" use a custom port to start server or random for empty +let g:mkdp_port = '' + +" preview page title +" ${name} will be replace with the file name +let g:mkdp_page_title = '「${name}」' diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index a25cae7..c2907d2 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -26,6 +26,6 @@ let g:syntastic_style_warning_symbol = '⚠' let g:syntastic_always_populate_loc_list = 1 "Syntatic Python Linter Configuration -let g:syntastic_python_python_exec = 'python3' -let g:syntastic_python_checkers = ['pylint'] -let g:syntastic_python_pylint_exec='python3 -m pylint' +"let g:syntastic_python_python_exec = 'python3' +"let g:syntastic_python_checkers = ['pylint'] +"let g:syntastic_python_pylint_exec='python3 -m pylint' diff --git a/plugrc.d/ycm.vim b/plugrc.d/ycm.vim deleted file mode 100644 index ad6d4b0..0000000 --- a/plugrc.d/ycm.vim +++ /dev/null @@ -1,7 +0,0 @@ -let g:ycm_collect_identifiers_from_tags_files = 1 -let g:ycm_use_ultisnips_completer = 1 -let g:ycm_seed_identifiers_with_syntax = 1 -let g:ycm_complete_in_comments = 1 -let g:ycm_complete_in_strings = 1 -let g:ycm_autoclose_preview_window_after_insertion = 1 -let g:ycm_key_invoke_completion = '' diff --git a/ui.vim b/ui.vim index ee52d13..be63fec 100644 --- a/ui.vim +++ b/ui.vim @@ -1,5 +1,8 @@ - -colorscheme evening +"colorscheme evening +colorscheme one set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 +set termguicolors +"let g:one_allow_italics = 1 " I love italic for comments +set background=dark " Set status line display " source $HOME/.config/nvim/plugrc.d/sexy_status_bar.vim From 90669525c57b5e6cd0bfbdfbf339be9d31487164 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 19 Feb 2020 02:56:39 +0000 Subject: [PATCH 003/419] Improve config add more plugins and features --- editor.vim | 2 +- mapinit.vim | 2 +- pluginit.vim | 2 +- plugins.vim | 8 ++++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/editor.vim b/editor.vim index ae6b28e..087ef37 100644 --- a/editor.vim +++ b/editor.vim @@ -99,7 +99,7 @@ set linebreak "Break lines at word (requires Wrap lines) "set showbreak=-- " Wrap-broken line prefix -set textwidth=80 " Line wrap (number of cols) +set textwidth=88 " Line wrap (number of cols) set showmatch " Highlight matching brace diff --git a/mapinit.vim b/mapinit.vim index 85bdc22..b4dad34 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -9,7 +9,7 @@ let maplocalleader = "." source $HOME/.config/nvim/mapping.d/coc_map.vim source $HOME/.config/nvim/mapping.d/fzf_map.vim source $HOME/.config/nvim/mapping.d/nerdtree_map.vim -source $HOME/.config/nvim/mapping.d/ultisnip_map.vim +"source $HOME/.config/nvim/mapping.d/ultisnip_map.vim source $HOME/.config/nvim/mapping.d/copy_paste_map.vim source $HOME/.config/nvim/mapping.d/visual_fnd_replace_map.vim source $HOME/.config/nvim/mapping.d/spellcheck_map.vim diff --git a/pluginit.vim b/pluginit.vim index 3e40ab8..4cf2dbc 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -4,7 +4,7 @@ " source $HOME/.config/nvim/plugins.vim source $HOME/.config/nvim/plugrc.d/coc.vim -source $HOME/.config/nvim/plugrc.d/snippet.vim +"source $HOME/.config/nvim/plugrc.d/snippet.vim source $HOME/.config/nvim/plugrc.d/markdown_preview.vim source $HOME/.config/nvim/plugrc.d/syntastic.vim source $HOME/.config/nvim/plugrc.d/neoformat.vim diff --git a/plugins.vim b/plugins.vim index 2214f82..b6ee3a0 100755 --- a/plugins.vim +++ b/plugins.vim @@ -78,7 +78,9 @@ Plug 'neoclide/coc.nvim', {'branch': 'release'} " === Code Snippets Plugins === "For snippets in neovim "Track the engine. -Plug 'SirVer/ultisnips' +"Plug 'SirVer/ultisnips' +"Bootstrap snippets +Plug 'jvanja/vim-bootstrap4-snippets' " Snippets are separated from the engine. Add this if you want them: Plug 'honza/vim-snippets' @@ -101,11 +103,13 @@ Plug 'liuchengxu/vista.vim' " A Neovim File explorer Plug 'preservim/nerdtree' - " == Icons == " " Glyphs and Icons for neovim Plug 'ryanoasis/vim-devicons' +" === DataBase === +Plug 'tpope/vim-dadbod' + " Initialize plugin system call plug#end() From 27e18cda03395952d850e72148f0e90a674e22e0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 26 Feb 2020 01:20:30 +0000 Subject: [PATCH 004/419] Refactor and impove configuration remove slow plugins and improve thier config for my workflow --- coc-settings.json | 55 ++++++++++--------- coc-settings_not_used.json | 27 +++++++++ editor.vim | 17 ++++-- mapinit.vim | 4 +- .../{vim_lsc_dart_map.vim => dart_map.vim} | 0 mapping.d/markdown_preview_map.vim | 20 +++---- mapping.d/terminal_map.vim | 2 +- mapping.d/ultisnip_map.vim | 9 ++- pluginit.vim | 5 +- plugins.vim | 11 ++-- plugrc.d/dart_flutter.vim | 2 +- plugrc.d/snippet.vim | 1 - plugrc.d/syntastic.vim | 3 + plugrc.d/vim_language_server_client.vim | 17 ------ .../{vue_language_server.vim => vue_ls.vim} | 2 +- 15 files changed, 98 insertions(+), 77 deletions(-) create mode 100644 coc-settings_not_used.json rename mapping.d/{vim_lsc_dart_map.vim => dart_map.vim} (100%) delete mode 100644 plugrc.d/snippet.vim delete mode 100644 plugrc.d/vim_language_server_client.vim rename plugrc.d/{vue_language_server.vim => vue_ls.vim} (68%) diff --git a/coc-settings.json b/coc-settings.json index 6b83fc4..85e7008 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,27 +1,32 @@ -{ - "languageserver": { - "ccls": { - "command": "ccls", - "filetypes": [ - "c", - "cpp", - "objc", - "objcpp" - ], - "rootPatterns": [ - ".ccls", - "compile_commands.json", - ".vim/", - ".git/", - ".hg/" - ], - "initializationOptions": { - "cache": { - "directory": "/tmp/ccls" - } - } - } +{ "languageserver": { + "clangd-9": { + "command": "clangd-9", + "args": + [ + "--background-index", + "--all-scopes-completion", + "--clang-tidy", + "--completion-style=detailed", + "--header-insertion=iwyu", + "--header-insertion-decorators", + "--suggest-missing-includes", + "-j=3", + "--pch-storage=memory", + "--pretty"], + "rootPatterns": + [ + "compile_flags.txt", + "compile_commands.json", + ".git/", + ".hg/"], + "filetypes": + [ + "c", + "cpp", + "objc", + "objcpp"] } + } ,"codeLens.enable": true ,"suggest.enablePreview": true ,"html.enable": true @@ -29,8 +34,4 @@ ,"python.linting.enabled":true ,"coc.preferences.formatOnSaveFiletypes": ["css", "Markdown","dart"] } -/* - ,"python.pythonPath":"/usr/bin/python3" - ,"python.linting.pylintPath":"/usr/bin/pylint" -*/ diff --git a/coc-settings_not_used.json b/coc-settings_not_used.json new file mode 100644 index 0000000..71f6c6b --- /dev/null +++ b/coc-settings_not_used.json @@ -0,0 +1,27 @@ +{ "languageserver": { + "ccls": { + "command": "ccls", + "filetypes": [ + "c", + "cpp", + "objc", + "objcpp" + ], + "rootPatterns": [ + ".ccls", + "compile_commands.json", + ".vim/", + ".git/", + ".hg/" + ], + "initializationOptions": { + "cache": { + "directory": "/tmp/ccls" + } + } + ,"python.pythonPath":"/usr/bin/python3" + ,"python.linting.pylintPath":"/usr/bin/pylint" + + } + } +} diff --git a/editor.vim b/editor.vim index 087ef37..d26d8b0 100644 --- a/editor.vim +++ b/editor.vim @@ -89,17 +89,15 @@ set wildmode=full " get bash-like tab completions with longest and list set number " Show line numbers -set nowrap " Automatically wrap text that extends beyond the screen length. +set wrap " Automatically wrap text that extends beyond the screen length. set backspace=indent,eol,start " Fixes common backspace problems set laststatus=2 " Status bar -set linebreak "Break lines at word (requires Wrap lines) +set showbreak=>>>\ \ \ " Wrap-broken line prefix -"set showbreak=-- " Wrap-broken line prefix - -set textwidth=88 " Line wrap (number of cols) +set textwidth=80 " Line wrap (number of cols) set showmatch " Highlight matching brace @@ -139,7 +137,8 @@ set history=300 "Set the history size to maximum. by default it is 20 set list " Display unprintable characters f12 - switches -set listchars=tab:•\ ,trail:•,extends:»,precedes:« " Unprintable chars mapping +set listchars=tab:••\ ,trail:•,extends:»,precedes:« " Unprintable chars mapping + " Enable folding set foldmethod=indent @@ -151,3 +150,9 @@ set tags=tags "Disable default mappings from omni for sql let g:omni_sql_no_default_maps = 1 +"Remove Trailing whitespaces in specified documents on write of buffer +"autocmd FileType c,cpp,java,php autocmd BufWritePre %s/\s\+$//e + +"Remove Trailing whitespaces in all files +autocmd BufWritePre * %s/\s\+$//e + diff --git a/mapinit.vim b/mapinit.vim index b4dad34..f258681 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -9,7 +9,6 @@ let maplocalleader = "." source $HOME/.config/nvim/mapping.d/coc_map.vim source $HOME/.config/nvim/mapping.d/fzf_map.vim source $HOME/.config/nvim/mapping.d/nerdtree_map.vim -"source $HOME/.config/nvim/mapping.d/ultisnip_map.vim source $HOME/.config/nvim/mapping.d/copy_paste_map.vim source $HOME/.config/nvim/mapping.d/visual_fnd_replace_map.vim source $HOME/.config/nvim/mapping.d/spellcheck_map.vim @@ -19,6 +18,7 @@ source $HOME/.config/nvim/mapping.d/markdown_preview_map.vim source $HOME/.config/nvim/mapping.d/highlighting_map.vim source $HOME/.config/nvim/mapping.d/multi_cursor_map.vim source ~/.config/nvim/mapping.d/folding_map.vim -source ~/.config/nvim/mapping.d/vim_lsc_dart_map.vim +source ~/.config/nvim/mapping.d/dart_map.vim source ~/.config/nvim/mapping.d/prettier_map.vim source ~/.config/nvim/mapping.d/terminal_map.vim +source ~/.config/nvim/mapping.d/ultisnip_map.vim diff --git a/mapping.d/vim_lsc_dart_map.vim b/mapping.d/dart_map.vim similarity index 100% rename from mapping.d/vim_lsc_dart_map.vim rename to mapping.d/dart_map.vim diff --git a/mapping.d/markdown_preview_map.vim b/mapping.d/markdown_preview_map.vim index cbc4ac5..3a62612 100644 --- a/mapping.d/markdown_preview_map.vim +++ b/mapping.d/markdown_preview_map.vim @@ -1,12 +1,12 @@ " for normal mode - nmap MarkdownPreview - " for insert mode - imap MarkdownPreview - " for normal mode - nmap StopMarkdownPreview - " for insert mode - imap StopMarkdownPreview + "nmap MarkdownPreview + "" for insert mode + "imap MarkdownPreview + "" for normal mode + "nmap StopMarkdownPreview + "" for insert mode + "imap StopMarkdownPreview " for insert mode " - "imap MarkdownPreviewToggle - "" for normal mode " - "nmap MarkdownPreviewToggle + imap MarkdownPreviewToggle + " for normal mode " + nmap MarkdownPreviewToggle diff --git a/mapping.d/terminal_map.vim b/mapping.d/terminal_map.vim index ae8557e..d915323 100644 --- a/mapping.d/terminal_map.vim +++ b/mapping.d/terminal_map.vim @@ -1,5 +1,5 @@ " turn terminal to normal mode with escape -tnoremap +tnoremap :q " open terminal on ctrl+n function! OpenTerminal() diff --git a/mapping.d/ultisnip_map.vim b/mapping.d/ultisnip_map.vim index 9ff24cc..a3431e9 100644 --- a/mapping.d/ultisnip_map.vim +++ b/mapping.d/ultisnip_map.vim @@ -1,4 +1,7 @@ " Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. -let g:UltiSnipsExpandTrigger="" " use trigger autocompletion -let g:UltiSnipsJumpForwardTrigger="" -let g:UltiSnipsJumpBackwardTrigger="" +let g:UltiSnipsExpandTrigger="" +let g:UltiSnipsJumpForwardTrigger="" +let g:UltiSnipsJumpBackwardTrigger="" + +" If you want :UltiSnipsEdit to split your window. +let g:UltiSnipsEditSplit="vertical" diff --git a/pluginit.vim b/pluginit.vim index 4cf2dbc..ff4af54 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -4,7 +4,6 @@ " source $HOME/.config/nvim/plugins.vim source $HOME/.config/nvim/plugrc.d/coc.vim -"source $HOME/.config/nvim/plugrc.d/snippet.vim source $HOME/.config/nvim/plugrc.d/markdown_preview.vim source $HOME/.config/nvim/plugrc.d/syntastic.vim source $HOME/.config/nvim/plugrc.d/neoformat.vim @@ -14,10 +13,8 @@ source $HOME/.config/nvim/plugrc.d/nerdtree_git.vim source $HOME/.config/nvim/plugrc.d/airline.vim source $HOME/.config/nvim/plugrc.d/fzf.vim source $HOME/.config/nvim/plugrc.d/devicons.vim -source ~/.config/nvim/plugrc.d/vue_language_server.vim source ~/.config/nvim/plugrc.d/dart_flutter.vim -source ~/.config/nvim/plugrc.d/vim_language_server_client.vim source ~/.config/nvim/plugrc.d/prettier.vim source ~/.config/nvim/plugrc.d/vista.vim source ~/.config/nvim/plugrc.d/flake8.vim - +source ~/.config/nvim/plugrc.d/vue_ls.vim diff --git a/plugins.vim b/plugins.vim index b6ee3a0..6d5e321 100755 --- a/plugins.vim +++ b/plugins.vim @@ -62,10 +62,12 @@ Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } "Dart language support in vim Plug 'dart-lang/dart-vim-plugin' -Plug 'natebosch/vim-lsc-dart' " === Language Server Clients === -Plug 'natebosch/vim-lsc' +Plug 'autozimu/LanguageClient-neovim', { + \ 'branch': 'next', + \ 'do': 'bash install.sh', + \ } " == Code Completion Engine === "A #include completion framework for deoplete c/c++ @@ -77,8 +79,9 @@ Plug 'neoclide/coc.nvim', {'branch': 'release'} " === Code Snippets Plugins === "For snippets in neovim -"Track the engine. -"Plug 'SirVer/ultisnips' +" Track the engine. +Plug 'SirVer/ultisnips' + "Bootstrap snippets Plug 'jvanja/vim-bootstrap4-snippets' diff --git a/plugrc.d/dart_flutter.vim b/plugrc.d/dart_flutter.vim index 4ca8f3b..ddf021d 100644 --- a/plugrc.d/dart_flutter.vim +++ b/plugrc.d/dart_flutter.vim @@ -2,7 +2,7 @@ let dart_html_in_string=v:true "Enable Dart style guide syntax (like 2-space indentation) -let g:dart_style_guide = 4 +let g:dart_style_guide = 2 "Enable DartFmt execution on buffer save let g:dart_format_on_save = 1 diff --git a/plugrc.d/snippet.vim b/plugrc.d/snippet.vim deleted file mode 100644 index 8b13789..0000000 --- a/plugrc.d/snippet.vim +++ /dev/null @@ -1 +0,0 @@ - diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index c2907d2..1b5d931 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -29,3 +29,6 @@ let g:syntastic_always_populate_loc_list = 1 "let g:syntastic_python_python_exec = 'python3' "let g:syntastic_python_checkers = ['pylint'] "let g:syntastic_python_pylint_exec='python3 -m pylint' +let g:syntastic_cpp_checkers = ['gcc'] +let g:syntastic_cpp_compiler = 'clang++-9' +let g:syntastic_cpp_compiler_options = '-std=c++17' diff --git a/plugrc.d/vim_language_server_client.vim b/plugrc.d/vim_language_server_client.vim deleted file mode 100644 index ab2f1ff..0000000 --- a/plugrc.d/vim_language_server_client.vim +++ /dev/null @@ -1,17 +0,0 @@ -"To have most interactive features automatically mapped for you int -"the buffers which have a language server enable -let g:lsc_auto_map = v:true - -"avoid suppressing error messages from this plugin. -set shortmess-=F - -"Map a filetype to the command that starts the language server for that filetype -let g:lsc_server_commands = {'dart': 'dart_language_server'} - -"To enable autocomplete in favor of manual completion -let g:lsc_enable_autocomplete = v:true - -"If the server supports the textDocument/documentHighlight call references to -"the element under the cursor throughout the document will be highlighted - -let g:lsc_reference_highlights = v:true diff --git a/plugrc.d/vue_language_server.vim b/plugrc.d/vue_ls.vim similarity index 68% rename from plugrc.d/vue_language_server.vim rename to plugrc.d/vue_ls.vim index 5451ed6..8222db6 100644 --- a/plugrc.d/vue_language_server.vim +++ b/plugrc.d/vue_ls.vim @@ -1,3 +1,3 @@ let g:LanguageClient_serverCommands = { - \ 'vue': ['vls'] + \ 'vue': ['vls'], \ } From 95b8cc220fe3c50302c3045491520604eafd71ed Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 3 Mar 2020 16:56:13 +0000 Subject: [PATCH 005/419] Vue language server using the neovim LanguageClient implements vue ls with the neovim lc in preference to coc-vetur --- plugrc.d/vue_ls.vim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugrc.d/vue_ls.vim b/plugrc.d/vue_ls.vim index 8222db6..45a05bf 100644 --- a/plugrc.d/vue_ls.vim +++ b/plugrc.d/vue_ls.vim @@ -1,3 +1,9 @@ let g:LanguageClient_serverCommands = { \ 'vue': ['vls'], \ } +"let g:LanguageClient_loadSettings=1 + +"" Below is optional, if you want it available globally, +"" else by default settings.json will reside in your project root directory ($PROJECT_ROOT/.vim/settings.json) +"let g:LanguageClient_settingsPath='~/.config/nvim/settings.json' + From 7e10e336ff6ac7dea65c56795c81dd4e4fb49d79 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 3 Mar 2020 17:04:11 +0000 Subject: [PATCH 006/419] Update coc-settings for clang-10 --- coc-settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 85e7008..1b9c24a 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,6 +1,6 @@ { "languageserver": { - "clangd-9": { - "command": "clangd-9", + "clangd-10": { + "command": "clangd-10", "args": [ "--background-index", From b9cb9de902410fc1dd6e20da6601e50eeb62f2d0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 11:53:15 +0000 Subject: [PATCH 007/419] Add clang-format.py support to Neovim clang-format.py formats formats c/c++ buffers on write or save --- plugrc.d/clang_format.vim | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugrc.d/clang_format.vim diff --git a/plugrc.d/clang_format.vim b/plugrc.d/clang_format.vim new file mode 100644 index 0000000..1aac7cd --- /dev/null +++ b/plugrc.d/clang_format.vim @@ -0,0 +1,5 @@ +function! Formatonsave() + let l:formatdiff = 1 + py3f /usr/share/clang/clang-format-10/clang-format.py +endfunction +autocmd BufWritePre *.h,*.c,*.cpp,*.hpp, call Formatonsave() From e22ecb6e256165101e0f13099bb0b7b4bf7a660a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 11:57:29 +0000 Subject: [PATCH 008/419] Update syntastic for flake8 --- plugrc.d/syntastic.vim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index 1b5d931..d867d0f 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -26,9 +26,11 @@ let g:syntastic_style_warning_symbol = '⚠' let g:syntastic_always_populate_loc_list = 1 "Syntatic Python Linter Configuration -"let g:syntastic_python_python_exec = 'python3' -"let g:syntastic_python_checkers = ['pylint'] -"let g:syntastic_python_pylint_exec='python3 -m pylint' +let g:syntastic_python_python_exec = 'python3' +let g:syntastic_python_checkers = ['flake8'] +let g:syntastic_python_flake8_exec='python3 -m flake8' + +"Syntastic C++ Linter Configuration let g:syntastic_cpp_checkers = ['gcc'] let g:syntastic_cpp_compiler = 'clang++-9' let g:syntastic_cpp_compiler_options = '-std=c++17' From 7735a54387e3a7165b8acf32271d86fb64dd8467 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 14:38:03 +0000 Subject: [PATCH 009/419] A support for yapf formatter and nixfmt also enabled format on save for *.nix and *.py --- plugrc.d/neoformat.vim | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plugrc.d/neoformat.vim b/plugrc.d/neoformat.vim index 3ac0258..c58c477 100644 --- a/plugrc.d/neoformat.vim +++ b/plugrc.d/neoformat.vim @@ -6,3 +6,29 @@ let g:neoformat_basic_format_retab = 1 " Enable trimmming of trailing whitespace let g:neoformat_basic_format_trim = 1 + +"Only dispaly message if there is an error +let g:neoformat_only_msg_on_error = 1 + +let g:neoformat_python_yapf = { + \ 'exe': 'yapf', + \ 'args': [], + \ 'replace': 0, + \ 'stdin': 1, + \ 'valid_exit_codes': [0, 23], + \ 'no_append': 1, + \ } +let g:neoformat_nix_nixfmt = { + \ 'exe': 'nixfmt', + \ 'args': ["--width=80" ,"--check"], + \ 'replace': 0, + \ 'stdin': 1, + \} +" replace - replace the file, instead of updating buffer (default: 0), +" stdin - send data to stdin of formatter (default: 0), +let g:neoformat_enabled_python = ['yapf'] + +augroup fmt + autocmd! + autocmd BufWritePre *.py,*.nix :Neoformat +augroup END From fdc806ee1b30a3569895402d40fa58bc1bbe36a8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 14:40:35 +0000 Subject: [PATCH 010/419] Update Syntastic.vim and remove neoinclde.vim the features provided by neoinclde are provided by clangd with complie_command.json configuration --- plugrc.d/neoinclude.vim | 4 ---- plugrc.d/syntastic.vim | 20 +++++++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 plugrc.d/neoinclude.vim diff --git a/plugrc.d/neoinclude.vim b/plugrc.d/neoinclude.vim deleted file mode 100644 index 2682242..0000000 --- a/plugrc.d/neoinclude.vim +++ /dev/null @@ -1,4 +0,0 @@ -"Path to search for include files -let g:neoinclude#paths={'cpp': '/usr/include/c++/9/'} -let g:neoinclude#paths={'gnu': '/usr/include/x86_64-linux-gnu/'} -let g:neoinclude#paths={'c' : '/usr/include/'} diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index d867d0f..1feb856 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -1,3 +1,13 @@ +"Syntatic Python Linter Configuration +let g:syntastic_python_python_exec = 'python3' +let g:syntastic_python_checkers = ['flake8'] +let g:syntastic_python_flake8_args = "" + +"Syntastic C++ Linter Configuration +let g:syntastic_cpp_checkers = ['gcc'] +let g:syntastic_cpp_compiler = 'clang++-9' +let g:syntastic_cpp_compiler_options = '-std=c++17' + "Recommended Syntax for syntastic set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} @@ -7,6 +17,7 @@ let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 " auto open/close location list let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 +let g:syntastic_aggregate_errors = 1 let g:syntastic_mode="passive" let g:syntastic_enable_signs=0 @@ -25,12 +36,3 @@ let g:syntastic_style_error_symbol = '✗' let g:syntastic_style_warning_symbol = '⚠' let g:syntastic_always_populate_loc_list = 1 -"Syntatic Python Linter Configuration -let g:syntastic_python_python_exec = 'python3' -let g:syntastic_python_checkers = ['flake8'] -let g:syntastic_python_flake8_exec='python3 -m flake8' - -"Syntastic C++ Linter Configuration -let g:syntastic_cpp_checkers = ['gcc'] -let g:syntastic_cpp_compiler = 'clang++-9' -let g:syntastic_cpp_compiler_options = '-std=c++17' From 7acacb0091820fe4e27fcc9f18020e0892ce62be Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 14:43:02 +0000 Subject: [PATCH 011/419] Remove redundant plugins and their config's --- pluginit.vim | 3 +-- plugins.vim | 5 ----- plugrc.d/clang_format.vim | 2 +- plugrc.d/flake8.vim | 15 --------------- 4 files changed, 2 insertions(+), 23 deletions(-) delete mode 100644 plugrc.d/flake8.vim diff --git a/pluginit.vim b/pluginit.vim index ff4af54..761c367 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -8,7 +8,6 @@ source $HOME/.config/nvim/plugrc.d/markdown_preview.vim source $HOME/.config/nvim/plugrc.d/syntastic.vim source $HOME/.config/nvim/plugrc.d/neoformat.vim source $HOME/.config/nvim/plugrc.d/multiple_cursor.vim -source $HOME/.config/nvim/plugrc.d/neoinclude.vim source $HOME/.config/nvim/plugrc.d/nerdtree_git.vim source $HOME/.config/nvim/plugrc.d/airline.vim source $HOME/.config/nvim/plugrc.d/fzf.vim @@ -16,5 +15,5 @@ source $HOME/.config/nvim/plugrc.d/devicons.vim source ~/.config/nvim/plugrc.d/dart_flutter.vim source ~/.config/nvim/plugrc.d/prettier.vim source ~/.config/nvim/plugrc.d/vista.vim -source ~/.config/nvim/plugrc.d/flake8.vim source ~/.config/nvim/plugrc.d/vue_ls.vim +source ~/.config/nvim/plugrc.d/clang_format.vim diff --git a/plugins.vim b/plugins.vim index 6d5e321..3f0fe02 100755 --- a/plugins.vim +++ b/plugins.vim @@ -70,8 +70,6 @@ Plug 'autozimu/LanguageClient-neovim', { \ } " == Code Completion Engine === -"A #include completion framework for deoplete c/c++ -Plug 'Shougo/neoinclude.vim' "Coc is an intellisense engine for Vim/Neovim "Use release branch (Recommend) @@ -92,9 +90,6 @@ Plug 'honza/vim-snippets' "Syntastic is a syntax checking plugin for Vim Plug 'scrooloose/syntastic' - "PEP 8 Checking" -Plug 'nvie/vim-flake8' - "A collection of language packs for Vim. Plug 'sheerun/vim-polyglot' diff --git a/plugrc.d/clang_format.vim b/plugrc.d/clang_format.vim index 1aac7cd..29c371d 100644 --- a/plugrc.d/clang_format.vim +++ b/plugrc.d/clang_format.vim @@ -2,4 +2,4 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/clang/clang-format-10/clang-format.py endfunction -autocmd BufWritePre *.h,*.c,*.cpp,*.hpp, call Formatonsave() +autocmd BufWritePre *.h,*.c,*.cpp,*.hpp call Formatonsave() diff --git a/plugrc.d/flake8.vim b/plugrc.d/flake8.vim deleted file mode 100644 index 3ca4587..0000000 --- a/plugrc.d/flake8.vim +++ /dev/null @@ -1,15 +0,0 @@ -"shows the errors inside a quickfix window, which will allow your to -"quickly jump to the error locations by simply pressing [Enter] -let g:flake8_show_in_file=1 -"location of your flake8 binary -let g:flake8_cmd="~/.local/bin/flake8" -"To customize the height of quick fix window -let g:flake8_quickfix_height=7 - -"If you don't want to use the key for flake8-checking, simply remap it -"to another key. It autodetects whether it has been remapped and won't register -"the key if so. For example, to remap it to instead, use -"autocmd FileType python map :call flake8#Flake8() - -"General variable for neovim python highlighting -let python_highlight_all=1 From cfa59f1125cb3c726f663f0fad41343c4daecab1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 14:57:19 +0000 Subject: [PATCH 012/419] Remove NeovimLanguageClient and vue_ls.vim use coc.nvim instead for modularity and ease of use --- pluginit.vim | 2 +- plugins.vim | 6 ------ plugrc.d/vue_ls.vim | 9 --------- 3 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 plugrc.d/vue_ls.vim diff --git a/pluginit.vim b/pluginit.vim index 761c367..2471340 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -15,5 +15,5 @@ source $HOME/.config/nvim/plugrc.d/devicons.vim source ~/.config/nvim/plugrc.d/dart_flutter.vim source ~/.config/nvim/plugrc.d/prettier.vim source ~/.config/nvim/plugrc.d/vista.vim -source ~/.config/nvim/plugrc.d/vue_ls.vim +"source ~/.config/nvim/plugrc.d/vue_ls.vim source ~/.config/nvim/plugrc.d/clang_format.vim diff --git a/plugins.vim b/plugins.vim index 3f0fe02..a9dda37 100755 --- a/plugins.vim +++ b/plugins.vim @@ -63,12 +63,6 @@ Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } "Dart language support in vim Plug 'dart-lang/dart-vim-plugin' -" === Language Server Clients === -Plug 'autozimu/LanguageClient-neovim', { - \ 'branch': 'next', - \ 'do': 'bash install.sh', - \ } - " == Code Completion Engine === "Coc is an intellisense engine for Vim/Neovim diff --git a/plugrc.d/vue_ls.vim b/plugrc.d/vue_ls.vim deleted file mode 100644 index 45a05bf..0000000 --- a/plugrc.d/vue_ls.vim +++ /dev/null @@ -1,9 +0,0 @@ -let g:LanguageClient_serverCommands = { - \ 'vue': ['vls'], - \ } -"let g:LanguageClient_loadSettings=1 - -"" Below is optional, if you want it available globally, -"" else by default settings.json will reside in your project root directory ($PROJECT_ROOT/.vim/settings.json) -"let g:LanguageClient_settingsPath='~/.config/nvim/settings.json' - From 75e5fa2ccda6d089685d80834954bdc5725d7ba5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 15:59:15 +0000 Subject: [PATCH 013/419] Add a README file --- README.md | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..2102fee --- /dev/null +++ b/README.md @@ -0,0 +1,132 @@ +# Malpha Awesome Neovim Configuration + +This is to make setting up of vim 8 && neovim 0.4 and above easy and a breeze. +Moving on I will use vim and neovim interchangably because they are very similar +under the hood. + +## Requirement + +Installation of plugins in neovim or vim requires python support +(python 2 or python 3).You can check if your neovim has python support by running +`:echo has("python3")` and `:echo has("python2")`. + +__Neovim__ +Neovim does not come with python support by default, and additional setup is required. + +First install [pynvim](https://github.com/neovim/pynvim) + +```bash +python3 -m pip install pynvim +``` + +And add the following configuration in your `.vimrc` + +```bash +let g:python3_host_prog=/path/to/python/executable/ +``` + +__Vim Plug is A minimalist Vim plugin manager__ as quoted by their site +[Vim-Plug](https://github.com/junegunn/vim-plug) + +### Installation of Vim-Plug + +[Download plug.vim](https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim) +and put it in the "autoload" directory. + +### Vim + +#### Unix + +```sh +curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +``` + +You can automate the process by putting the command in your Vim configuration +file as suggested [here][auto]. + +[auto]: https://github.com/junegunn/vim-plug/wiki/tips#automatic-installation + +##### Windows (PowerShell) + +```powershell +md ~\vimfiles\autoload +$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' +(New-Object Net.WebClient).DownloadFile( + $uri, + $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( + "~\vimfiles\autoload\plug.vim" + ) +) +``` + +### Neovim + +#### Unix + +```sh +curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +``` + +##### Windows (PowerShell) + +```powershell +md ~\AppData\Local\nvim\autoload +$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' +(New-Object Net.WebClient).DownloadFile( + $uri, + $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( + "~\AppData\Local\nvim\autoload\plug.vim" + ) +) +``` + +### Install Plugins Using Vim-Plug + +move to ~/.config/nvim/ and open the plugins.vim file +and run this commands + +```bash +:source % # To cause init.vim to update itself + +:PlugInstall #To install plugins + +:PlugUpdate #To update Vim-Plug + +:PlugClean # Comment the plugin you want to remove with '"' then :source % + # and run PlugClean +``` + +And Assumming you plan to get involved in web developemt then you should +insllall the following plugins + +```bash +:CocInstall coc-vetur coc-highlight +:CocInstall coc-json coc-tsserver coc-html coc-css coc-markdownlint +``` + +there are a lot of other extentions you can install for the coc.nvim language +server client [Coc.nvim](https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions) + +for python + +```bash +:CocInstall coc-python +``` + +for c/c++ + +```bash +sudo aptitude install clangd clang-format clang-tidy clang # don't forget to +#generate a compile_commands.json file using cmake with 'cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +#in your project directory +``` + +for help using the various plugins and extensions + +```bash +:help local-addtions +``` + +to view the help pages and instruction manual on the various extensions From 17d37afafb9fd3b8b98989e422037484fcb44b49 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 16:02:35 +0000 Subject: [PATCH 014/419] Remove unused coc-settings --- coc-settings_not_used.json | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 coc-settings_not_used.json diff --git a/coc-settings_not_used.json b/coc-settings_not_used.json deleted file mode 100644 index 71f6c6b..0000000 --- a/coc-settings_not_used.json +++ /dev/null @@ -1,27 +0,0 @@ -{ "languageserver": { - "ccls": { - "command": "ccls", - "filetypes": [ - "c", - "cpp", - "objc", - "objcpp" - ], - "rootPatterns": [ - ".ccls", - "compile_commands.json", - ".vim/", - ".git/", - ".hg/" - ], - "initializationOptions": { - "cache": { - "directory": "/tmp/ccls" - } - } - ,"python.pythonPath":"/usr/bin/python3" - ,"python.linting.pylintPath":"/usr/bin/pylint" - - } - } -} From db2338410452af8377d284dee153394582fc475d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 16:10:24 +0000 Subject: [PATCH 015/419] README Update --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2102fee..4f6e5ca 100644 --- a/README.md +++ b/README.md @@ -130,3 +130,8 @@ for help using the various plugins and extensions ``` to view the help pages and instruction manual on the various extensions + +>Big ShoutOuts to the Creators of Vim && Neovim +>Another to all the creators of the various vim and neovim extensions +>And Last but not the least God Bless The Vim && Neovim Community for this +>hyperextensible and hackable text editor From 7689059b0a8470c0fdd73d31e00501d36482ac1e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 16:14:11 +0000 Subject: [PATCH 016/419] README update --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4f6e5ca..7b81804 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ for help using the various plugins and extensions to view the help pages and instruction manual on the various extensions ->Big ShoutOuts to the Creators of Vim && Neovim ->Another to all the creators of the various vim and neovim extensions ->And Last but not the least God Bless The Vim && Neovim Community for this ->hyperextensible and hackable text editor +>>Big ShoutOuts to the Creators of Vim && Neovim. +>Another to all the creators of the various vim and neovim extensions. +>And Last but not the least __God Bless The Vim && Neovim Community for this +>hyperextensible and hackable text editor__ From 57f159095df2fd23f691b8cc7090b165bee3f3f3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 16:14:11 +0000 Subject: [PATCH 017/419] README update --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4f6e5ca..e6fcd4e 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ for python ```bash :CocInstall coc-python +pip3 install flake8 yapf # For linting and formatting ``` for c/c++ @@ -131,7 +132,7 @@ for help using the various plugins and extensions to view the help pages and instruction manual on the various extensions ->Big ShoutOuts to the Creators of Vim && Neovim ->Another to all the creators of the various vim and neovim extensions ->And Last but not the least God Bless The Vim && Neovim Community for this ->hyperextensible and hackable text editor +>>Big ShoutOuts to the Creators of Vim && Neovim. +>Another to all the creators of the various vim and neovim extensions. +>And Last but not the least __God Bless The Vim && Neovim Community for this +>hyperextensible and hackable text editor__ From 6fe91f9d5acb2d9f44beeae2fd7c7ac22c3f9b87 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 16:10:24 +0000 Subject: [PATCH 018/419] README Update --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2102fee..4f6e5ca 100644 --- a/README.md +++ b/README.md @@ -130,3 +130,8 @@ for help using the various plugins and extensions ``` to view the help pages and instruction manual on the various extensions + +>Big ShoutOuts to the Creators of Vim && Neovim +>Another to all the creators of the various vim and neovim extensions +>And Last but not the least God Bless The Vim && Neovim Community for this +>hyperextensible and hackable text editor From a9a7859d1198e5d837ea01fe7e95d2441fd53308 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 8 Mar 2020 16:14:11 +0000 Subject: [PATCH 019/419] README.md update --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4f6e5ca..e6fcd4e 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ for python ```bash :CocInstall coc-python +pip3 install flake8 yapf # For linting and formatting ``` for c/c++ @@ -131,7 +132,7 @@ for help using the various plugins and extensions to view the help pages and instruction manual on the various extensions ->Big ShoutOuts to the Creators of Vim && Neovim ->Another to all the creators of the various vim and neovim extensions ->And Last but not the least God Bless The Vim && Neovim Community for this ->hyperextensible and hackable text editor +>>Big ShoutOuts to the Creators of Vim && Neovim. +>Another to all the creators of the various vim and neovim extensions. +>And Last but not the least __God Bless The Vim && Neovim Community for this +>hyperextensible and hackable text editor__ From 68b6dc1445d0073a70d5c7b590e373302243954e Mon Sep 17 00:00:00 2001 From: Malpha Date: Mon, 9 Mar 2020 01:54:24 +0000 Subject: [PATCH 020/419] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e6fcd4e..2e97fd4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Malpha Awesome Neovim Configuration +# Awesome Neovim Configuration This is to make setting up of vim 8 && neovim 0.4 and above easy and a breeze. Moving on I will use vim and neovim interchangably because they are very similar From a8479f1f4d4db8438166f332f1514d5e63412245 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 16 Mar 2020 11:46:06 +0000 Subject: [PATCH 021/419] Rename clang_format.vim to clang_tools.vim Add run-clang-tidy-10.py to clang-tools.vim for refactorings and fixing common bad code styles and modernization of Code base. --- pluginit.vim | 3 +-- plugrc.d/{clang_format.vim => clang_tools.vim} | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) rename plugrc.d/{clang_format.vim => clang_tools.vim} (77%) diff --git a/pluginit.vim b/pluginit.vim index 2471340..dc01252 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -15,5 +15,4 @@ source $HOME/.config/nvim/plugrc.d/devicons.vim source ~/.config/nvim/plugrc.d/dart_flutter.vim source ~/.config/nvim/plugrc.d/prettier.vim source ~/.config/nvim/plugrc.d/vista.vim -"source ~/.config/nvim/plugrc.d/vue_ls.vim -source ~/.config/nvim/plugrc.d/clang_format.vim +source ~/.config/nvim/plugrc.d/clang_tools.vim diff --git a/plugrc.d/clang_format.vim b/plugrc.d/clang_tools.vim similarity index 77% rename from plugrc.d/clang_format.vim rename to plugrc.d/clang_tools.vim index 29c371d..235d003 100644 --- a/plugrc.d/clang_format.vim +++ b/plugrc.d/clang_tools.vim @@ -1,5 +1,6 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/clang/clang-format-10/clang-format.py + py3f /usr/bin/run-clang-tidy-10.py -fix -fomart endfunction autocmd BufWritePre *.h,*.c,*.cpp,*.hpp call Formatonsave() From 881f954089b91eb043d0cd23f141385af4ce96d8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 22 Mar 2020 14:26:27 +0000 Subject: [PATCH 022/419] Disable range selection support for coc.nvim This mapping clashes with moving cursor to previous location using and besides I hardly have use for that fuction in coc. --- mapping.d/coc_map.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index 2522883..c8dc1c1 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -43,9 +43,9 @@ nmap ac (coc-codeaction) nmap qf (coc-fix-current) " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python -nmap (coc-range-select) -xmap (coc-range-select) -xmap (coc-range-select-backword) +"nmap (coc-range-select) +"xmap (coc-range-select) +"xmap (coc-range-select-backword) " Using CocList " Show all diagnostics From d5609a0f0c17167541bf01ad71e1b8b68a882d3e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 22 Mar 2020 14:31:52 +0000 Subject: [PATCH 023/419] A support for cmake-format in neoformat --- plugrc.d/neoformat.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugrc.d/neoformat.vim b/plugrc.d/neoformat.vim index c58c477..2f56913 100644 --- a/plugrc.d/neoformat.vim +++ b/plugrc.d/neoformat.vim @@ -24,11 +24,14 @@ let g:neoformat_nix_nixfmt = { \ 'replace': 0, \ 'stdin': 1, \} +let g:neoformat_cmakelists_cmakeformat = { + \'exe':'cmake-format', + \} " replace - replace the file, instead of updating buffer (default: 0), " stdin - send data to stdin of formatter (default: 0), let g:neoformat_enabled_python = ['yapf'] augroup fmt autocmd! - autocmd BufWritePre *.py,*.nix :Neoformat + autocmd BufWritePre *.py,*.nix,CMakeLists.txt :Neoformat augroup END From a0e950416bce4b8c9d1d6d48da37215544658393 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 22 Mar 2020 14:44:37 +0000 Subject: [PATCH 024/419] Change ultisnips default mapping to to prevent clash coc --- mapping.d/ultisnip_map.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapping.d/ultisnip_map.vim b/mapping.d/ultisnip_map.vim index a3431e9..47f6a6f 100644 --- a/mapping.d/ultisnip_map.vim +++ b/mapping.d/ultisnip_map.vim @@ -1,5 +1,5 @@ " Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. -let g:UltiSnipsExpandTrigger="" +let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" From 0aaa97303e25778396ccc546a57a9e82e01dcbee Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 22 Mar 2020 14:46:29 +0000 Subject: [PATCH 025/419] Remove clang-tidy support in clang_tools.vim This is because run-clang-tidy.py run with the compile_commands.json so it affects all files in the project at onces and not necessarily the one in the current buffer --- plugrc.d/clang_tools.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 235d003..29c371d 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -1,6 +1,5 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/clang/clang-format-10/clang-format.py - py3f /usr/bin/run-clang-tidy-10.py -fix -fomart endfunction autocmd BufWritePre *.h,*.c,*.cpp,*.hpp call Formatonsave() From 5c0cae5d0690e93a2cfb7fbeaf90398c9cc959c4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 26 Mar 2020 17:51:34 +0000 Subject: [PATCH 026/419] Change Line Lenght to wrap from 80 to 79 --- editor.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor.vim b/editor.vim index d26d8b0..181d2db 100644 --- a/editor.vim +++ b/editor.vim @@ -97,7 +97,7 @@ set laststatus=2 " Status bar set showbreak=>>>\ \ \ " Wrap-broken line prefix -set textwidth=80 " Line wrap (number of cols) +set textwidth=79 " Line wrap (number of cols) set showmatch " Highlight matching brace From 6ec364ca9893252f34a8a84a18971445088cb500 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Apr 2020 22:48:12 +0000 Subject: [PATCH 027/419] Improve settings for clangd-10 to increase performance and cause less memory usage --- coc-settings.json | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 1b9c24a..850d315 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -3,16 +3,14 @@ "command": "clangd-10", "args": [ - "--background-index", "--all-scopes-completion", "--clang-tidy", "--completion-style=detailed", + "--background-index", "--header-insertion=iwyu", - "--header-insertion-decorators", "--suggest-missing-includes", - "-j=3", - "--pch-storage=memory", - "--pretty"], + "-j=2", + ], "rootPatterns": [ "compile_flags.txt", From 7fefff3bab4e50abe9fb70ec310785204c818130 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 22 Apr 2020 05:38:51 +0000 Subject: [PATCH 028/419] Added Support For TypeScript Syntax highlighting and Language Server using coc.nvim --- plugins.vim | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins.vim b/plugins.vim index a9dda37..22f5c17 100755 --- a/plugins.vim +++ b/plugins.vim @@ -63,6 +63,11 @@ Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } "Dart language support in vim Plug 'dart-lang/dart-vim-plugin' +"TypeScript Language support in neovim and vim + +"TypeScrip Syntax Highlighting +Plug 'HerringtonDarkholme/yats.vim' + " == Code Completion Engine === "Coc is an intellisense engine for Vim/Neovim From c7edc2218ea69a85e4b945d8759ab304770ce4b7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 01:58:13 +0000 Subject: [PATCH 029/419] Modularized Clangd-10 configuration and added eslint prettier integration --- coc-settings.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 850d315..21fa4d7 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -9,7 +9,7 @@ "--background-index", "--header-insertion=iwyu", "--suggest-missing-includes", - "-j=2", + "-j=2" ], "rootPatterns": [ @@ -30,6 +30,8 @@ ,"html.enable": true ,"html.format.enable":true ,"python.linting.enabled":true - ,"coc.preferences.formatOnSaveFiletypes": ["css", "Markdown","dart"] + ,"coc.preferences.formatOnSaveFiletypes": ["css", "Markdown","dart","json","typescript","javascript","graphql","vue"] + ,"eslint.autoFixOnSave":true + ,"prettier.eslintIntegration": true } From c0fe9913cbb3e2892e5897105fbf11152a1f36d2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:02:32 +0000 Subject: [PATCH 030/419] Moved leader mappers into mapinit.vim --- editor.vim | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/editor.vim b/editor.vim index 181d2db..f0b5db0 100644 --- a/editor.vim +++ b/editor.vim @@ -1,3 +1,9 @@ +" Remap leader key to , +" With a map leader it's possible to do extra key combinations +" like w saves the current file +let mapleader = "," +let g:mapleader = "," +let maplocalleader = "." " Use Unix as the standard file type set ffs=unix,dos,mac @@ -85,7 +91,7 @@ set incsearch " highlight search string as search pattern is entered set hlsearch "disables last search hilighting -set wildmode=full " get bash-like tab completions with longest and list +"set wildmode=full " get bash-like tab completions with longest and list set number " Show line numbers From ab9ab1869666f979e2ea8d66b55ceea6cf5a229d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:04:00 +0000 Subject: [PATCH 031/419] Added automatic Vim-Plug Installation for new users of neovim --- init.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init.vim b/init.vim index 2d7c2c5..a611043 100755 --- a/init.vim +++ b/init.vim @@ -1,4 +1,8 @@ "The system wide config file is found in /usr/share/nvim/sysinit.vim +"=================================================================== +"=== PLUG LOADER === +"=================================================================== +source $HOME/.config/nvim/vimplugloader.vim "=================================================================== "=== EDITOR CONFIGURATIONS === From afcae93a83eefdec10ea872942037bde5e470c89 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:12:49 +0000 Subject: [PATCH 032/419] Move Prettier mapping in prettier_map.vim to coc_map.vim --- mapping.d/coc_map.vim | 15 +++++++++++---- mapping.d/prettier_map.vim | 6 ------ plugrc.d/prettier.vim | 2 -- 3 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 mapping.d/prettier_map.vim delete mode 100644 plugrc.d/prettier.vim diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index c8dc1c1..0c808fc 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -16,9 +16,9 @@ endfunction "Note: the `coc-snippets` extension is required for this to work. let g:coc_snippet_next = '' -" Use `[c` and `]c` to navigate diagnostics -nmap [c (coc-diagnostic-prev) -nmap ]c (coc-diagnostic-next) +" Use `[d` and `]d` to navigate diagnostics +nmap [d (coc-diagnostic-prev) +nmap ]d (coc-diagnostic-next) " Remap keys for gotos nmap gd (coc-definition) @@ -29,6 +29,13 @@ nmap gr (coc-references) " Remap for rename current word nmap rn (coc-rename) +"Setup Prettier command in your init.vim or .vimrc +"So you can use :Prettier to format current buffer. +command! -nargs=0 Prettier :CocCommand prettier.formatFile + +"Then your can f for range format.Prettier range format only support +"languageId including: javascript, javascriptreact, typescript, typescriptreact, +"json and graphql " Remap for format selected region xmap f (coc-format-selected) nmap f (coc-format-selected) @@ -38,7 +45,7 @@ xmap a (coc-codeaction-selected) nmap a (coc-codeaction-selected) " Remap for do codeAction of current line -nmap ac (coc-codeaction) +nmap ac (coc-codeaction) " Fix autofix problem of current line nmap qf (coc-fix-current) diff --git a/mapping.d/prettier_map.vim b/mapping.d/prettier_map.vim deleted file mode 100644 index 928c1ff..0000000 --- a/mapping.d/prettier_map.vim +++ /dev/null @@ -1,6 +0,0 @@ -"Then your can f for range format.Prettier range format only support -"languageId including: javascript, javascriptreact, typescript, typescriptreact, -"json and graphql -"A similar mapping is used in coc_map.vim -vmap f (coc-format-selected) -nmap f (coc-format-selected) diff --git a/plugrc.d/prettier.vim b/plugrc.d/prettier.vim deleted file mode 100644 index d781bf0..0000000 --- a/plugrc.d/prettier.vim +++ /dev/null @@ -1,2 +0,0 @@ -"Help you can use :Prettier to format current buffer. -command! -nargs=0 Prettier :CocCommand prettier.formatFile From 6001eb84b6c27d2c6ecac2458e375b8efc58d1c1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:15:29 +0000 Subject: [PATCH 033/419] Add help Info and spellcheck_map.vim --- mapping.d/spellcheck_map.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/mapping.d/spellcheck_map.vim b/mapping.d/spellcheck_map.vim index 54c974d..4298057 100644 --- a/mapping.d/spellcheck_map.vim +++ b/mapping.d/spellcheck_map.vim @@ -1,4 +1,5 @@ " === Spell checking === " +" For help on spell checking :help spell " Pressing ,ss will toggle and untoggle spell checking map ss :setlocal spell! From d9dae228d2bc8f7fa08a3e6557acc1718be24e79 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:16:53 +0000 Subject: [PATCH 034/419] Added GraphQL extension --- plugins.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins.vim b/plugins.vim index 22f5c17..a47e826 100755 --- a/plugins.vim +++ b/plugins.vim @@ -68,6 +68,9 @@ Plug 'dart-lang/dart-vim-plugin' "TypeScrip Syntax Highlighting Plug 'HerringtonDarkholme/yats.vim' +"GraphQL This Vim plugin provides GraphQL file detection, syntax highlighting, and indentation. +Plug 'jparise/vim-graphql' + " == Code Completion Engine === "Coc is an intellisense engine for Vim/Neovim From eb41854999ef2f3583beefed5400653b5fdc1ff4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:18:54 +0000 Subject: [PATCH 035/419] Add automatic documentation for the coc.nvim language server When mouse pointer in inserted after some group of words or highlights some words which have internal documentation it will automatically be showed in a floating pane provided there isn't diagnostics for that item --- plugrc.d/coc.vim | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 6bfe2c0..8a2840d 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -10,6 +10,21 @@ set signcolumn=yes " Use K to show documentation in preview window nnoremap K :call show_documentation() +"a more automatic behavior where when cursoring over a word, +"You see either the diagnostic if it exists, otherwise the documentation +function! ShowDocIfNoDiagnostic(timer_id) + if (coc#util#has_float() == 0) + silent call CocActionAsync('doHover') + endif +endfunction + +function! s:show_hover_doc() + call timer_start(500, 'ShowDocIfNoDiagnostic') +endfunction + +autocmd CursorHoldI * :call show_hover_doc() +autocmd CursorHold * :call show_hover_doc() + function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') @@ -42,3 +57,22 @@ command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organize " Add status line support, for integration with other plugin, checkout `:h coc-status` set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} +let g:coc_global_extensions = [ + \ 'coc-ultisnips', + \ 'coc-syntax', + \ 'coc-snippets', + \ 'coc-prettier', + \ 'coc-pairs', + \ 'coc-json', + \ 'coc-eslint', + \ 'coc-emoji', + \ 'coc-emmet', + \ 'coc-yaml', + \ 'coc-vetur', + \ 'coc-tsserver', + \ 'coc-python', + \ 'coc-markdownlint', + \ 'coc-html', + \ 'coc-flutter', + \ 'coc-css', + \ ] From 1d4f675a09f4281c7f16e187206471284e747013 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:22:28 +0000 Subject: [PATCH 036/419] Updated to reflect current state of configurations --- mapinit.vim | 30 +++++++++++------------------- pluginit.vim | 21 ++++++++++----------- vimplugloader.vim | 5 +++++ 3 files changed, 26 insertions(+), 30 deletions(-) create mode 100644 vimplugloader.vim diff --git a/mapinit.vim b/mapinit.vim index f258681..d9a5af3 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -1,24 +1,16 @@ -" Remap leader key to , -" With a map leader it's possible to do extra key combinations -" like w saves the current file -let mapleader = "," -let g:mapleader = "," -let maplocalleader = "." - "Source the various mappings -source $HOME/.config/nvim/mapping.d/coc_map.vim -source $HOME/.config/nvim/mapping.d/fzf_map.vim -source $HOME/.config/nvim/mapping.d/nerdtree_map.vim -source $HOME/.config/nvim/mapping.d/copy_paste_map.vim -source $HOME/.config/nvim/mapping.d/visual_fnd_replace_map.vim -source $HOME/.config/nvim/mapping.d/spellcheck_map.vim -source $HOME/.config/nvim/mapping.d/tab_buffer_map.vim -source $HOME/.config/nvim/mapping.d/syntastic_map.vim -source $HOME/.config/nvim/mapping.d/markdown_preview_map.vim -source $HOME/.config/nvim/mapping.d/highlighting_map.vim -source $HOME/.config/nvim/mapping.d/multi_cursor_map.vim +source ~/.config/nvim/mapping.d/coc_map.vim +source ~/.config/nvim/mapping.d/fzf_map.vim +source ~/.config/nvim/mapping.d/nerdtree_map.vim +source ~/.config/nvim/mapping.d/copy_paste_map.vim +source ~/.config/nvim/mapping.d/visual_fnd_replace_map.vim +source ~/.config/nvim/mapping.d/spellcheck_map.vim +source ~/.config/nvim/mapping.d/tab_buffer_map.vim +source ~/.config/nvim/mapping.d/syntastic_map.vim +source ~/.config/nvim/mapping.d/markdown_preview_map.vim +source ~/.config/nvim/mapping.d/highlighting_map.vim +source ~/.config/nvim/mapping.d/multi_cursor_map.vim source ~/.config/nvim/mapping.d/folding_map.vim source ~/.config/nvim/mapping.d/dart_map.vim -source ~/.config/nvim/mapping.d/prettier_map.vim source ~/.config/nvim/mapping.d/terminal_map.vim source ~/.config/nvim/mapping.d/ultisnip_map.vim diff --git a/pluginit.vim b/pluginit.vim index dc01252..b5bbfd9 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -2,17 +2,16 @@ "== PLUGINS INIT == "========================================================== " -source $HOME/.config/nvim/plugins.vim -source $HOME/.config/nvim/plugrc.d/coc.vim -source $HOME/.config/nvim/plugrc.d/markdown_preview.vim -source $HOME/.config/nvim/plugrc.d/syntastic.vim -source $HOME/.config/nvim/plugrc.d/neoformat.vim -source $HOME/.config/nvim/plugrc.d/multiple_cursor.vim -source $HOME/.config/nvim/plugrc.d/nerdtree_git.vim -source $HOME/.config/nvim/plugrc.d/airline.vim -source $HOME/.config/nvim/plugrc.d/fzf.vim -source $HOME/.config/nvim/plugrc.d/devicons.vim +source ~/.config/nvim/plugins.vim +source ~/.config/nvim/plugrc.d/coc.vim +source ~/.config/nvim/plugrc.d/markdown_preview.vim +source ~/.config/nvim/plugrc.d/syntastic.vim +source ~/.config/nvim/plugrc.d/neoformat.vim +source ~/.config/nvim/plugrc.d/multiple_cursor.vim +source ~/.config/nvim/plugrc.d/nerdtree_git.vim +source ~/.config/nvim/plugrc.d/airline.vim +source ~/.config/nvim/plugrc.d/fzf.vim +source ~/.config/nvim/plugrc.d/devicons.vim source ~/.config/nvim/plugrc.d/dart_flutter.vim -source ~/.config/nvim/plugrc.d/prettier.vim source ~/.config/nvim/plugrc.d/vista.vim source ~/.config/nvim/plugrc.d/clang_tools.vim diff --git a/vimplugloader.vim b/vimplugloader.vim new file mode 100644 index 0000000..dd9da9c --- /dev/null +++ b/vimplugloader.vim @@ -0,0 +1,5 @@ +if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) + silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +endif From cd6399add03fbb21a801bf32aa015839c49d83b1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 02:34:24 +0000 Subject: [PATCH 037/419] README.md Update --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2e97fd4..b7a4a2e 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,11 @@ $uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' ### Neovim +__Note:__ Now the is automatic Vim-Plug installation for all neovim users +All you have to do is clone the project to `$HOME/.config/nvim/` and open nvim +and watch some beautiful magic happen . Thanks to @junegunn/vim-plug and all +colaborators. + #### Unix ```sh From e6fa1a34a93df2d31a3343e9a043b08eae1ad117 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 20:16:17 +0000 Subject: [PATCH 038/419] Improve mapping for tab in tab_buffer_map.vim --- mapping.d/tab_buffer_map.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index d7f7e73..b224e06 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -28,11 +28,11 @@ map bl :blast " Useful mappings for managing tabs -map tn :tabnew +map tnw :tabnew map to :tabonly map tc :tabclose map tm :tabmove -map t :tabnext +map tn :tabnext " Let 'tl' toggle between this and the last accessed tab let g:lasttab = 1 From 86d93570b4db290e3ce3cdef039f206438266356 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 20:17:32 +0000 Subject: [PATCH 039/419] Removed onevim and added 3 new plugins namely gruvbox , onedark and vim-afterglow --- plugins.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins.vim b/plugins.vim index a47e826..8f31e27 100755 --- a/plugins.vim +++ b/plugins.vim @@ -21,7 +21,9 @@ Plug 'easymotion/vim-easymotion' Plug 'scrooloose/nerdcommenter' " === Themes and Colour Scheme === -Plug 'rakr/vim-one' +Plug 'danilo-augusto/vim-afterglow' +Plug 'joshdick/onedark.vim' +Plug 'morhetz/gruvbox' " === Git Plugin === "A vim plugin which shows git diff in the gutter (sign column). From 48027784dcf752e61e8068fc15ffa03f7c8d7497 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 20:19:38 +0000 Subject: [PATCH 040/419] Refactored and removed unused and redundant options --- plugrc.d/vista.vim | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/plugrc.d/vista.vim b/plugrc.d/vista.vim index d0906db..c03a91f 100644 --- a/plugrc.d/vista.vim +++ b/plugrc.d/vista.vim @@ -1,42 +1,44 @@ -function! NearestMethodOrFunction() abort - return get(b:, 'vista_nearest_method_or_function', '') -endfunction +"You can do the following to show the nearest method/function in your statusline +"function! NearestMethodOrFunction() abort + "return get(b:, 'vista_nearest_method_or_function', '') +"endfunction -set statusline+=%{NearestMethodOrFunction()} - -" Ensure you have installed some decent font to show these pretty symbols, -" then you can enable icon for the kind. -let g:vista#renderer#enable_icon = 1 - -" The default icons can't be suitable for all the filetypes, you can extend it as you wish. -let g:vista#renderer#icons = { -\ "function": "\uf794", -\ "variable": "\uf71b", -\ } +"set statusline+=%{NearestMethodOrFunction()} +" OR " By default vista.vim never run if you don't call it explicitly. " " If you want to show the nearest function in your statusline automatically, " you can add the following line to your vimrc autocmd VimEnter * call vista#RunForNearestMethodOrFunction() +" Ensure you have installed some decent font to show these pretty symbols, +" then you can enable icon for the kind. +let g:vista#renderer#enable_icon = 1 + +" The default icons can't be suitable for all the filetypes, you can extend it as you wish. +"let g:vista#renderer#icons = { +"\ "function": "\uf794", +"\ "variable": "\uf71b", +"\ } + " How each level is indented and what to prepend. " This could make the display more compact or more spacious. " e.g., more compact: ["▸ ", ""] " Note: this option only works the LSP executives, doesn't work for `:Vista ctags`. -let g:vista_icon_indent = ["╰─▸ ", "├─▸ "] +"let g:vista_icon_indent = ["╰─▸ ", "├─▸ "] " Executive used when opening vista sidebar without specifying it. " See all the avaliable executives via `:echo g:vista#executives`. -let g:vista_default_executive = 'ctags' +let g:vista_default_executive = 'coc' " Set the executive for some filetypes explicitly. Use the explicit executive " instead of the default one for these filetypes when using `:Vista` without " specifying the executive. -let g:vista_executive_for = { - \ 'cpp': 'vim_lsp', - \ 'php': 'vim_lsp', - \ } +"let g:vista_executive_for = { + "\ 'cpp': 'ctags', + "\ 'php': 'ctags', + "\ } " Declare the command including the executable and options used to generate ctags output " for some certain filetypes.The file path will be appened to your custom command. From 8be5cb0f03f7bc83e2fd11c1ddab6429ec6e9318 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 6 May 2020 20:20:58 +0000 Subject: [PATCH 041/419] Refactor and add configurations for new colorschemes and themes --- ui.vim | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/ui.vim b/ui.vim index be63fec..23ee231 100644 --- a/ui.vim +++ b/ui.vim @@ -1,8 +1,28 @@ -"colorscheme evening -colorscheme one -set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 +"Enable terminal colors 256 set termguicolors -"let g:one_allow_italics = 1 " I love italic for comments + +"Set the background color of nvim set background=dark + +"Default colorscheme +"colorscheme evening + +"Onedark colorscheme +"colorscheme onedark +"let g:airline_theme="onedark" + +"Gruvbox colorscheme +colorscheme gruvbox +let g:airline_theme="gruvbox" + +"Afterglow colorscheme +"colorscheme afterglow +"let g:airline_theme="afterglow" +"let g:afterglow_blackout=0 +"let g:afterglow_inherit_background=1 +"let g:afterglow_italic_comments=1 +"let g:one_allow_italics = 1 " I love italic for comments + +"set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 " Set status line display " source $HOME/.config/nvim/plugrc.d/sexy_status_bar.vim From 1e5a38822db00c82b65f54a024d5f190dbf8b0d0 Mon Sep 17 00:00:00 2001 From: Malpha Date: Sat, 9 May 2020 00:02:50 +0000 Subject: [PATCH 042/419] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b7a4a2e..9f4aa64 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This is to make setting up of vim 8 && neovim 0.4 and above easy and a breeze. Moving on I will use vim and neovim interchangably because they are very similar under the hood. +![Picture Of My Environment](https://drive.google.com/open?id=112xtA4g-MGwFNYd9svOcCjD0hsAv0Tdj) + ## Requirement Installation of plugins in neovim or vim requires python support From 198a73bef3b2e8b05baf2712c6ba5211ec8cc7cb Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 9 May 2020 00:19:35 +0000 Subject: [PATCH 043/419] Add a picture of Awesome NeoVim in action --- assets/AwesomeAndConfigurableNeoVim.png | Bin 0 -> 402858 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/AwesomeAndConfigurableNeoVim.png diff --git a/assets/AwesomeAndConfigurableNeoVim.png b/assets/AwesomeAndConfigurableNeoVim.png new file mode 100644 index 0000000000000000000000000000000000000000..87b59f20742715c1e01d87d1f8ecdef7e23ddabc GIT binary patch literal 402858 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
  • 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

    Q435X+5tZ8Hl@~CuCqFH@t|lc5 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 @mTc*{z8D&5E?8Haqe& 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�=TE75lqrT|?n4A(odhj`fozhX6`0VUwkO5KvO755k77N*z$5n?4n^ zU|4rCU?GNnD)>zM$4`*7@;BX#E=xH*X76xk1UO|YvyW5L5Zp%hu$X}g4{sL@n#}-V z0O5@#68P%YU05YS>Bu#wteAnzH0dJmbbpu*AHeU;R16F+uP=EYpf9m!u4~!@E#JgCY)U+vl#pNEtYdj2A+Mj`}_#Y-Hpw z5{?tOOn6DeUedI7!RIxM?+;b~mu>xRX@eByvFTqvuZ`q<2wq2EFK0_zPBSp8NIWfXozH z5M*d*vGcnE)?M?M&BLlGKpYMHka_ajTUGX`p5!>s)i3f8J@Z%5=qS|h2v-zI2Na1Hps|=C8k^+@=)-{ad~aH)7>`S*Ea9J^1b~lE5y8Q7^DJSW4!t ze4SLzKzxwTBo^Wv3V$l)%UwvMh-Y!P+efltNn=21HJSND4k9Ty!@moz2kK8@={T7RG%@zj@o3L_tpG!vj3|iJ9UT5C);6>*nHoO$NO0=JtIG=-kgBKkL3k3s%JB^_7Uap^cZB8J;fl1${)nGo!LJXi zQWhOO!=XW9=U@sT3;L-&60Cujdp(2nF=hCm&-YtXPWKTjNR2miQllsM!9tRz{lSq| z%4;Wk-q_O9epOMd4A!zmjw_@xWdY7ZnbOU7Sc#Q$*Ywvf#xt}=my5$|Jp4FQ#>#J9 zbn(+JO4s*WvYC_k{XX1brOu|nU-!?jb(rU# zvR5)oC{2PEU2udA)jyT9iQS#D2C$PDph^hxu1_6)-ySz75muv)pehs;5FRj;mz3UT zoU+hn@Q%pM}D-L^%@;|vn(wt#UT@F z?8w>`$(#?YjycJh)CBa=-z(S>6hf}@2+fRm8}=TUBIEM*S~fnZ+96>7gf*iWa5WTp zHckAE2DL^NQQ3YwB2MdAxDW9Ii$R?bn#!-~0z#&+|FWHwXvt;Y4LFw|N zh;Na;{spb-+aygxR0De69Rxd68!xkJf5zHL3`6b|dMAk4npm5H-5sf=e?IQ-Fk� z1%?Z_+;^*fDDQqezTO;z*80QF|GgMpEr>N=wQLS|w=*fq!&&HqL8m*Kw{=kYEV|&; zucB02TlsNq@M{Cc0oYL>TIibp*3!Rx#12!0k!?}JtFZH5J>$kblSKOZ-@W<2!iT6y zQ7?!YIk3Helk+=fDAwi$7d>Lw43A3`Hy}%Zz0fCe(z28&w4%QsV6qDz9NPExFcwEF zky5ffT*=n1b;g7i%Rw926-4rKBpF?>WTw-#?prAFmuuBU-G5U7xncP3U}+pa=U6!S zxnmig=gIwIKe@Si&IE@?hhR`4tR$#KvayCgcMm_+{$HM839rwnce`%gk`1fXgn6&( z;Fypp)I?R9W5p#SpO}9DGuVG#8K?{0i{AvAfHdZ>v5d-o`}f-xiVye5A9u)zxYjnc zBUPnK;Nl!T4R*@bfiH**Z^o@3^q8eW!iW!R>q zEY=rNkVZqX*AwycM`(WO?1*mu$v0h;Z(4oFp7u^m8R^3QnlV>nCX)YV&Witadn^%1~#TVB%$5An5=y6~MdQ>{hU&>FN=2-_x8x9%(Tm|*Y( z%!{t0EI#KbpiJ%tH0$w%u=&OG zkuaDbnlOG;ba}z~bkvKw?fJWTf2^oh`7$Wt3cPl)e|*DpF5 z5E9usSQTv~wfVbsd`KKPg!42u3WE8PG^D?#US}cTvfmXlD(dD2tv}eLZotA$Y+_^< zB5IfuLl++v<=r+$l)<8I%`i%W(r(T3{cd(c%!UE~~jx^7B zb8^c+mF;Sbk0yv+e#e@fvM|@nQ+1@IZyWLiZs$|L0}p^z3UR@9S0YF1X56 zRYIAT8;xoF_L1yK4?`cP@;JhK`QO!$qLu?$T3#8!L*D;~N}69Ie-!Jkqyiaj~G0wa=-P zLt=jGE72!!F2S@aw~m#?H5>W9U)7W-J347&{(P+QjCzdTdRbfNV}S%Er2E_)Lo;RX zuga@dnWH}5{ef%YAAmo(RHBWt#;#dceg0qW6_n+PU z(AHXPhzScIZ^Y5UGbAH>Q{n1r4~TbBJ}jP>DgGu8jBzoem-cP7LB_(;toOVva{f;) zKzm&TM){k}D7J0l{SjBoK`z4Gq(|S@O|pk2A850>6)yaMbT%zV{`y}9ct^Ufq?+Xw zMQa}raHyQOC^qY=s=9-`%cS0j^ zCD9im?83mrZlTfBO5d+$s)=TYCHVMJ1*PBto*yUdK=6@hk-AZ3SwY=i8+=(yF>3;# z-ekrVW0X-c8bOR&hPCx(qcGEHSw2EO2?pmnCP8Kp-r?9ptAEFJeF>hTwTh$KYrS3j z#0y192KwnFYBZgV8ux9;EJpIOjHU~=$1yn&6~&p+kr=t5?~|Aq(&`zmNO(1VrpdQg zJf#k{J}u7RWo3EIVP+Cr=DsFR`fSW8|9H}vNt%5lQ+0br`<1Tu5=2ow@}~!qwe%C%~YP z<{L{o=sHuC^VBy`N+3EdW>hncui3_4^oI7?foM0g%Zb{Q9|u6U+U9<>g){XHx(9=u zYgmp&cuF-{nRaE8RB&EqhO68D-S>lhEAq_U-(L(nr$*%Zw|%?(`Nwe4JRfYWZcT)6@a-M0$T7ZXS4SH%+I|(oj^e?OW|+8WEa6+cI0!(s zF2B`}g^gUt-!^SO$UM5cRDIodFo4YtXPMWSOUg7|!aZ1?_?`M(2T${AECm-&71sKC zip+7sG#8Tn>br{5&}#~Ig39{Qc3(R_{w!3#)-ZQlcZM;q>3Z#1In=C}zfB9TZG+B&Z?f^$0J#B@Sx<(NoERT)8iocy5tGk95dHIFzqb#x zXuX%tQ{OovP0u?T=_GrvH3-S{%fcy#wOiZaN zPT!amH>%Tgc2NC7^JsyfzldTfO3kn2K-Svu^*t}r*mqt3{sb7`xg3L95cvdiRus{% zMK0Capq(H5SxhpIJ~SD+24|KjKO0;ET2s|rgIxTHrTob&W9_u+OFf;o>0^selH^w3 zJ?u|*R1V2-ACzup_Z`p|)s|p~3r?!eMV2Q>6}J4y^cz&1$g?n62k>F8{!*+9`jG|O zbP()eAGO>7gK-a`eSgVDjh&@HbEmj@T!<0lpXkwx;DxgO`RC`2ixlw-}= zTTq3A4rMCV`c2mVtend59Oj%^J5A{s@2yGr3lmAx&vWOIf|bY3=}AmI1MDK77iC;Q zTk8CJw&#=}Ce_E|)*`_-Hzj9C_>nAeu{OY*eq_F^Rb5gc6QO2XYR-Xo`3S=8%j)FM zO+>JW&oRe|{Q_-122}xN{Po9gW|AsSHjx`xvBBKaTHy73w3HWRf%399Zuh!TQMV7g zstX}X7!(V!Zz$!_B*w>nOOI{NO=Nph%^jV^&g|wqk2FqD94w9T1ysD!qn4J}4)9k| zd247c6O-A-uLCt#OowlMAFbSwJaDpb=fZ4{IYa?n7w@{mh(zkYIkTbg z4;uTc=P(oDZOC)o2J!q%bMm6uT)|wZKRc44tBA}br?#_n6OqM+{U=4-!)vgA)|IbB zI5=mBRfDs>A9eaR0K=eWdqw?U*2;-cjw5U)>+9vee0qsIgW)NfBhkh2h5e-RJ_4`I zt@LUT`4z&I7Fz0uOzC)_pz3sbv0qg!#1W@lW zBNB%qiHOc<1NV@}iYgvd8FUHNg?+3_*G_X>(v3tb2__PW@T)6&=k5E~qXI8swK|={ zn~cyPwJf-GjA^{U{s&tG0&WZ4XT z+TLCP5rlPHB%39|o^wH`QjR-raPgZBX;g!{#PtFr7d&|P=gMfR<8tq0B!0gQs1q1j zuVOqhdh>daZhzej1l9JMbRBlz5}I)h zw9ebg`8@%pNaO-#UgxD?OUB7o1eUT?SfkdDQ!TiB=vsHVd;*8&j6S_kIeFRUpB##g z_=`^)TTfb>xkr-=MY&h4KyQ;=&C*Owdk0bEg0uZT?3?xXen69mbg)O>oc)>Am;p_U zoq@qYloO}l9P1R^nIkY(F>vt2N22E>yYl&?O&LlbCAbcdRRd#;=zMWYZ7nOP<;Rh2 zX*N=D*7wOS5!2KPs*A*e`;1HkBTSI+z|+-~ zpG@BKTK?CSOdN7-HZFII436mZX-(857Vi&Hi4YlKzRJ7^3t7dBE_M4AnVe3=V>@2 zMus(J20|?7w5#s*Yara56qYIKcnK$0@gG9XGk?**Qw`nWd6#MOwLAZ+PVtA$*sr5( zs#)d14JHy;Nxe0F0L{q-U_yBu+5#Rqe}8~_Xop9OxW%@4#C@`{%7@2F$e{+yNjEgK z_GPZ)SkA!L0T==idrkmX#?IsL|B4J-BJzRg7B__Y&|kCaqb(}<rSRP zec2V{%a!9L#)Xs3wrUB(TIdbT&*1#5ryK0zo>9=qyuFMM zjG;;B`*fI#c6BAm@JaH!_c1{5Aa+`af2v(>GG<~h(Q^LGldya4{Nu>G>(}47f`k#Q z+_+LWtD2BE_{OMiFsf)-+0YInkIW-OgQD}#R_@-D{^0&pf-|m^f8b~vcr!_KNZCADf9QM|;)*Ha zTbZC51|M+i&T?T$BX2-$WIT{#5{;5T{RsWpFjMDPPR3?euu^W(qMy0z#_WxN2(zhhC*R!*v5mR&U89L8}@3hh+(;2YJQ_e*G@{0PtR~b%~0SCj&90Y#u^gmA0 z@LxadBOEuSFx?q(;^}VW__!GP7N`fTzr$gBd5dS~HE+I?BPT-^Z;?IZNajC2Qr(iF zyB7<=KGt}tGBeqLL(N+{znzjiW#3u|0y_pJY8|(n;4fu%BC+&bH_+c}$O^d+WaPUF zikj?W=pV=YCLt%%cHmHF=im@iL#)_OO#v#hXJwdkQd!ZrD3;3>Y|}aHeEgOT=)5ZD zp2rhZ@NH-fym~3@XmO^|jd#3VgX$k$s=KQ${u-i_44luo_~r=c+cE*jL37=E7JGz5 zPR2HOe4`+&{GIAq=Wjp)szmjpGtD6s9+noY$#GDzFkvjB`f0(z-4a$ao{oN$WM?SI zC&w@2`e6GpNt&Q&y6Tv`6hM)at!T=?IQag?+2Y0e(*Qz<7BYE9)doDK`95ynnt2lX zP=_f|E^0DwK&(Y^Q(c=uzLa6DPV8D+bR^3?7;bSytfVK&rDR_c!ei-Vm&#$kF`k4xQX`p0A zY?I;@J%zG;kwJhbYTg_SYIg;`7`-3wLbYb7G{fyc7WT{9J}SQS?29O`PrY5o_FSXB zv5aU{?R4$tZnhV}w_%_iox6fmEWep%-X5EJVTWLp<=f>LGQ1LqeBO2a8v`i&ldz#^AuO`|n7AyF$ zj@fd126!cw4C{UsTu*+?UUawWKfsXg&hL2$rdWPYsnns^lSk3?{X66kRBSU?)+M^t zRYey7xnjE{HIdo58tJ;!fy~(2u$;|GufT@x;KTO{cHV*VO&!yU4Mw4fP==qWVx&pq zL=%I{47kMEb)R1opME(a8^SA8wOaYOlA_ew=RIv-?iknU4Y@)y#_8g3d}ybp znm@7~hzSfhaS)MyqS&qJYszLqPF5h3Uf+E}M$8zX#*$z9%|1UViACZ6*(6T(?`7&2qi7B3RWS9COeB)Jwa+KG|TX!$0wg z{W6PqjSIZGue;JT^1xQM0%9n9KoI{X&hh3EXZCcWh}+7Krl!TZrMe)nLjh!_7b_2Y zDM{X4ob>~gYs~nqkug5_`He+#QX4i&6Z`&t*&*tT0t#u{tGkY!rlU-nRml|b{_+xz za8u>|m^aP!($m&O-5tSdDg&%8{?o-W@R^G)@9AMMOeHf811S9-l^$_Y?g_&y#is(^ zA;pqYG)?gT(DjWmmPK8g)n(hpt*S2Dwr$(C)uk@mwr$(CZQJOn_nY}9Gm}hmlk?*s zx$EqG*4}G9sFYfMbGCHYBCNMSZU@RUV5nljkpwOff;A!4)TPmq!r;=y3}5v+(Q%f9 zNh*@+VNkEl0Emwo*K>?zUa;8law=`fJ!B>Pl5FPdCFkPCVJd}Yo{$n;7~sE{8Vx0xiS?5! z1Qp3+fn!)Y3}qpwUDfW_5=@(|a}G1`#-3a|X{7|xV(gs3*X&wums~bz#Z3j&7ZS5- z)F1hqNeK_pPOMlj59>GtTsmT2DjB}3r_?^j{IuiP-i}1KkuVR!w!)6Q zYNgj+&z*|6g%bard~?88I@Jm_guZpr;Om|`+$)dH^t3UQrJ{vb6gScey5`2tEfF=h zmhgxREl=n0>W(3(1tYRPG&m`At7q&*2^^Gn#I7|256}!voIy2=S@8NA1|3Xz0a$rg znxgzNu#QleRKIhZQ)z|Lm7I(|N9MrD0ECs^#ZFv3bR%#3mBIfZPT7vnbMZ|RAk55{ zfb{p@G~Vp~W0bqAOEAhz1aj@}^r6a;jJbWzwlKwW;a*el-IEU~3P`y&SGU%&43Wbp z*k=)f+Syzi4Jg8yXu0{_HJduD^EtjeB~)O**gu(lkKL`T$sa00k{x+_`H1Pqfig_q zcUXBa7R^YEQu4MdY`tc`so52kqiXr7^dj+1O}z(wbU4o^dXlu^!hYhFJ74FU=vYS(_U)mpGGl_ zm<#}a?#oRr4-z8510yHNV!@g(QprbzO>AIV$lE!*o7(j0B*NE%lN{`%7tuNx%syeO zNA(*2riIYRIHwAB`ntwCsipBNGGWr6a-KcZQL=!j1`=jXQ}ZR_k-Atri5H8BVrg4_ zEFMTtR(WtORklt6V@c>@9Nd^}&>lp799UOTn_9)?te`8hLsytLO93bNZd;R!#HkH= zHLEJMR>m%M-b5Ew@=dhO_Udd;Zdhg&_QO2BEvVxKGcPyo9sZE;N8&JlS6CcvJ2Dad z1NMQ!%P5F_KS#&Chn15aBEmB@7ab^1`%U{O9}CBH7!&u)m`vJwU>>Kmyi%|b1oka! z(F=NQE3?nfGPSI7RN#2YLtq79^m5fV zEdYTic%-przS_f9<^6$83gn(yNFXSNM$|L7>u&DBAR zds2$--KpG4!_^5&>zUu#KHb^|Y>3OPmIU!|HVhLvz-Wc`8P`4`?Z;A#FsiLHv)s#0 zkNQL%(BeqUOD1QL%0iW$te8o`mk^jY#31=Deu{&)FcCGBG}pD@F7&j>lB~~%s|kxj zbBVgbLC77xQZbOR=1PRl_NC@ACmG++FsTjrI(m8=XTcVCjOP~`Sksmp6X~$aC<<+>4QQub2z{_W;z$jI(Y57F*6MIv z78i7Ft@bsxkH;;g_e85%QO=NwHE>c^QjNI3aB_=bW6)8|w6!93V+wGC2HR7SGRBoStd=aCo)T6c?7x52xTe`8I6Nau>YNb$6XV!xH$e>D& z(pdp9n58F{0K^v>ob?(fn=?iY`WqD0kNzgt^9=~RQ^fb&wRLSzrV(Go^B7$idF#tV z5-dQ<)NwU73<<319+og-y6NaT<;3S~^|WlcDnaL;uKDPqUmINjHSUj`B8|P~4#GFJ z_PzTWG;PR*BG<~G@-VQ?EL-R~#`$K%-J_Te`N>vzUgb0uFDS-A*LxiGKm83Yxv%=Y zEg7i-FO@IG%Oh>fpB48eE9g3!30a91Yl!ru)A1&dD>L-?xrMXtkoh>|iD)ON5@%c- z1@Kii+K<1$@)pahsX#! zc(FH08}OUIp*gR)WmJ*_^R?qcOg*O#R6Uq=Oz~s$x+urne=f^CGNIHl<2fP16EN_K zkwQ=rT;J=W+Bix@Ud=_Yk$=qQ&5gCJQgx2fU`!-PdfeMGZw3!O=RkC~Z`zeX098X0 zlk>86{QTXTRTQ>F!XZAgKP39D#e0P>tN$ z+5kHiRKqX`cWbh+f$P017MjIyTVF3?N$4mZ78~!X$w77d0D@O%XuROghM)UnA4ZkE zQB0=s4&Fr9|9`+YJvuq2pCUC%fr6Hn4EOBF=qWqiGS$C*Me4}xT{8ocvDlRCGiJqA z^D3%=!PR}RegUbX0IYw&<|2)WQs}DK{!9x;s*9VyutsrGW}5v%)*h&ee%hBnjG21TQ`zzGpHQ&sMr2c5ilnkx^EKCq}N z&G*fgv*LVoGsA>E*$B*9><;-E4HUh~gV*QYuyGF2lYrRtP%k$&rL&8Z50Gvb zL0`ywsqr!f(>q$wYPsmKiDsR8`nd@w=Gqnmsu*h|ah|b7V}cr4;Ti*@5&tp5SjRhc zq3J2fP!2YZu|m`Q!qQYmB#lWIDgzFT^x6ga{XxWx!?o)odJn^7{uR~c6jX&>ypd2s zw9MTh{>U+X>$wF9t=;IWt48|gB+|hT)zlB+vdE%raA2a0d0@lK4xvb7YOYn+0}}Y6YXgk z^a|@L(WDGhcQ*uPl(Ygk#d|-}Av+3kb5`VOQ`MEtspa4(@2{v#R8HMc4@nbowB^kn z^x$Ibk27|)vEb55&fnL%=glg6oNHp{3i^U2vU6D$Ltk^yf+ccJ$*j|zGPEWKY; zsAtuyY?knJ@78tt#p2eY(7B(NoQ`W^P9HK^RDF~cDD|@E4P4C*A;b}>M9Y~x(Rz{} zIv)1IhQQOyVV9ZJRK%_DhjuB-UuB)^=QO z!dm#5z+XtmO|-MMtg{;M)EFc}nW|NCJ>1h2o_tZk(^#1+ilHD%6jpmo28~T!A9GT& zoddTjL=G)_f|`xU-VciNBB-uGM&X^L)iL+$xc5ev*m zf~i|IKSal!xR?8(T1jvrs6)I?FFYt)cZAL?wX*Jxy&fL}brXjmYmQ52;>*psou+sj zP^QKb2Fd{Bc(?goIMy(2Wch?89|?@ZKz&)h0|M_ zLfm!P=4P?;?%PY73XMKc{}GUWo>4VjdO!sc4e017eWqN66?ssi?-((8e7>RBwv!mn zReTx$y6G^>ehBUINy;mX5=sIv`(=;BE4fF}JYT zfBX|?-QWAqy*qyU+2h+s%UcJJA>FwW($FGGi~O`o@Yi2d(smP(po9nUX^1!V7h94j z*i$TQunM@|I4`^np47IQ#X$0lgNdy#?zCU2$8*s(pC9#%wmH~`xwMer!> zbhhUQUH(a_ixf7;FNcm)Mn%hon~KfM=%cEr@v}uLh`?hJfqj`eHa%o!H!pwO1rC~u z{skxJz`})xEKbkK(Lt7ylbhR`N*q^cM>{xFMiMVQB^}3t<#2*gSJaGF!aks+#1T@= ziaM)u2H;@pr|3$}f~(q;;o~8L5p`y4|LH8Y7bj~9MKX~rL=e%^ZqxurRHTC}(Ha|P z8sWeuSx?ZF(Cjo8LrZY83(47=Xrx$m^rq_#N7s8t)`58rU{OyCT27Q(z=(0QBh}cX zk?v-gv69SLgDGnQ@*XwiE~!xC;OCj}K@E(wd>M-N1*@A2P(o&Gr zp~Fk*jnmR!Y6!BI4-3osq5KmqJ_BCs&2*}@75su6gxE|pQ60GG!Y_7?JjO}!OHkm?iIH$|ASgOOS)&%x zpK8Tr`&N`*-2NP-06Y!JX)&WxlBA>(P3*pzUyC10M|vub$ydpVPGX223wlGL5_clwohzzS2%n1 z@0o#sssP8lSO(f&8g9?4TSt{sQ|1 zToYmITx&Y2Vtr>wo+uKGDp&5}OtXH`VKQqw=$H?<>TJoq_aX5M?J3&JpBW9=DQlPI zZl%)8K@((z&}4xjw4|J>w`fi9$epVGh9*q z#?-lbY?Y@c)SCJSj@9}3Forl|Tg%h~v20TTKen7J=K?I~Rj(U}HWHNG!;4UMZiTVy zWy(J=B$>=?j#_CvE%rTjj_|uwD?dxT>#R%-c4<56{!#J6el-u5%W_tdQF`Y`4quKW z;D(IncgM>(30aw7_J?z)#5RKc@BW9Xl{5l;Q^6GTHx_HE_8=man7N1b9|1pN`2MkK z9<8!AqzAP`$A3N>sb5PH!&_P2og`xmBiXxLcVFD=3blRx%+NSDhYe8~M5%ylp6QpE z8U8s}eCtNLd+o9PV~6vVHI6mNbe2E}obK2#EXK~QtYYz*0UQQIVyQTrr>&A=hmadv z$$#3|JB=ANIa4GWh{tjB)ZJL*Gnq7p9Ys*zrHm2$ikD#y9oZ&!Bd9wx6ZP~eqba(- zck58zxHTL2t*WzVrhd9rPu0xe`rO83XV8j%b2m(zYx@K7^z_U}KVs~ZSPLVswr1z` zFHuys6cngzD1u_A#V}UzG(#is?r-MZ(IXTL=Dy$8d-OkEBYZyF17~O#JwLRJ3T0Ow ztRgQ94PqsQ>Ec~~(|#g#R-lU?M#f1&xp6^ev=r|iBaJBG+GLl&j|yTrQ>J*Fh`ddc zfy5+@=N+*5|H;%CflKF4okWE>P2w!^<~1FcY@4y!?_i?Xe6wv1Xa08{L7o1~k%Bzs zd#$qB%5;1x7E0ulx2JP%=A|JR8P3xg#e@uw2Px0Z;}XTYW6NP>35$X z6Py=jXN4F5BVX;IgLMJ-P7pqJ376*)hG#`Z`iB-3#pt`ciGF-A9M&x;s~Lk%(lblm zFo4%5V0$-Q=`F>I3%>n)f&7y4ibp@kMaW>m8Nr5WUMa4mQ@_elmpZ+}bG-j}d%R^|m`#kl^%p}jxeX)6X?a%m zYg*QJg9=eGK0T-KW^5sHvQne53UfhvMLN)jeO|6TBkWNoF+C}0p_&W|mvTK(DG(R^nWJ5~rpRLVx8%2rGTD8a9mo zC8}7DYvh?!<<3)?Mdu!;C3Zw@=HtG_ZLUa3YPNb_u$|@x+vw5bnNwstXZEXVme?NJ2;I<25Fk+*A_#LCqy zXJ(dqFhVY=$5r-UXlLie#1}cH^a^5T7Dyfiy5*AGmcHz-kNzN)JZ*#Swp%-w*z+au*ZFTaWDWdUVVt>=_$2JyGDA>|*m#qz%mLD|c z!C~Oxj+3vG*8FpXMJPziuuK;;f=r9r>tPoz*}GP_Z%AR30-Z4$=PcN?%|JqXReykt z+}eF%a~#C!X^XEG@ZeT!JC~YUHR*xRKTKB$akkr4qn>^F9iW4&j~my;f53S& ze0n6mY5WSfpmANT%}&Rwc@-9skuu*G-KVuo0;8PK9LlHqvv2~bZ%p{!P3Vk zqvzj*8t#D@h(P1o+13l)Z6%X7h7ekV{w%u@Vt(+GyR`68VUWoo+ru+5iAAqWKksMQ zg=B2rMn9^g3|m|_#N990TbpzzX#aNJbQY;!*f72*PRp=Gn#qb0NOrya{KgdZ*7>7t zxms@@17MGw7_VbOFpXIL*0DAJ>O<^s?{9k{j$36G*4#D#AF7|!HJ$--Dn}1T4pcrC z=2Jw%+l#`#_);eij@aFY!(S&fQqvg&vqxIw#J9U>gg@RK7UnlwT(Uoa<_*3tj8wd9 z=yDdWoGx3T@>PGMW(=J#1rVaLF`A9(yZxE8oFs(}LJo;|4#8W`M|v$kPelIeOb7+i zkwmm|-N9%np%tgV__x-15}li$`)6m`t$v334o&$kRJL@qCBXh}?3_AAZh9_|KS96N z)4kEq1S_f*IMn{tnJItZ zn7s>xxvH};%|?Y+>GC?g**j8?#BWMGDFc{8@t;Ia!!jAQ8?YXYl`d571^?khLr+7!6HYnmeBd-H~fwRVLNEMsCJ;hHn^eqgEWx!zG z@Qp{LtadUUrO2BF_r89nqe!p+uw^|$MpSfQK6uR1nd3!CEC5k}3e9?&m+d}GSX%!8 zAow6tK{$XOFx1)6@wWE7xT6Fqs5m4b2;iKtFUrumXDd|?sCZ!%VJg6q;X3)qGn7cK zio@FAf4&%*A+dN~^SW}JUTav^waQx=7q`Up>*-^^%&XEWVjuHoP?VdE4Mdpm3F<&2 zXPQA@ktbg3tF;=xXu^m=uWlb z-)A)xp(_xZ)$X-D$Vsk#0d$}j825X1W$s(+NUpIYEC`wj|3)5~!tsEjXdPYIi;v7He^hn2i{MYPopa zm&BLl=n861bXjktjUT4-{1QlC_ufT^NrifAZa0(Jx9J#S?4PjmLrxt!8KxG`7pCejz2-k-k7ai+fx5DuulPN?rXinPx)tV=x3ZR(H*(?PU)I+B9zRgfg zd68E&Dho#{@}wvzwq3bw7+Q^C_vw5%HgNa@rM?09E>Th5`oc*eKCJ7Ukw8mYGuL|0 z#W-;hrgis}R8=*dLjjUVeD6jP`?>j3Gm{Rg_lCfSnvL!onikmdl8;q!dl9a$@4x!1 zKHjcEWeED1?ek^ytiU?1u&Cu|_casHL3H60mqceCfcT;IT{`9fWcutC&`(S|1lbZ= z1y^eT9n|NCa)J)J5blIzY_Xdkp~dUsW~G_INb6w=N=gAv&I=Ci84|9w;cGeRg!&nf{Gi-k58cI36=HCD^a@QF@*L#BxzN>wgsFI+Sk|j9l35 z4rP?l|Lt&}UHoJKI z(Nz2OhE6vtsrm?82511DA7WTHNDDY}lqO;1%ngD1OL##D2|QXMp!kS1CliC?P=BQ( z!=oq+1L-~flDIvM0C%Q*S72Qea0?&)eRRRWx&KiA6Q zoqy)28!M?2%clcLXzFh(j|b~)3Ka+(k)myx4Z;%2qJKAm>dm=|u!^{475WlFOY_^cctoB9%_VZ4LH3Fx5%)7>c9yag*x zvIK-aqQ?e1WgjCR`d*y#`jW`l@30H)sMn3dd9CLfYIFU2ygJuk3&l=5Yd3=wXF6P# zh6mgTnSQ2mwx}K?u8G#||LYLM`{PPAf z9BZvqSdQwNss5EA=D%r*$P{gKTNBb{!BplI>5Vup)GGDANHOYvYk;#z3w_LLXIqwL zEKkc~Lws+TJ3>s0r{$IZIx96@UL) z8jM3H&jbJbaSv7cbmr`^hgI)J_10yh`5M*(V&S*af)UHeko&ZA$b?ja@|QNWB&vv* zrw3d2Xeo@B+|f|X7oBxuK^-jNmlgz;01>N?R7Y{n1-%uq?oARO&+KKi;x6xqV}r*# z`0Hi8mqQ{7H;V^4hPi`N4aPqopO`8gO@ZD8YTk$mK+73fviby@#g@RohTjzH`E_)7 zQ)1xx2Rfb>Tq%c9e11@WUMeUsZxk&*Zgex0VeO9!{QT+}0C|J!RQ&H;Zn*)l0UG4) zbHylwL*XM;?IC+O40#>#j$l8gF}@E^PWD*a7OE*_5C}95FMX|poZ}%zOt@h0LB3Zd z{_ps>#k03V8EN4N!P%o>U0ork&~Rf$!$@U`Jn&l&6+i=2!rmY|#%68$L=QdOL@yRT zl#l{C#X2G0(N(6il!#)?`M||5ilN9dzJH0dNKWCP_&2Lgq2#F&%+FM8ALn;(UMpIS z>xy2tE-y<9e%<2paj|BkJmlX1gn39xVHKb$$UI__>;;8mVnfu+q^d{r1c@9Q(lx}~ zf_~S19#7hj>gQdjGI0r0d3few6IAAPgv~RmUVj%ubhf_hF?nk zqqg-Wi5$cp`JKmnv^H?LeVz6URNak#hG3>hg1&KVqJkma(ddVfR$ew^VebHg0sC-| z)mNo8LVe^A!Ntj{-08-{Ct6q~aPnJ*IE{L6drwsQe@V*x>U z3PG95zF?H+4J4WrQ;}o#q?cpXr}B)NR_Bll0<)K)UDsy%72awIVkRcmT%-v$zHb*l zCQlKwzB&anri4TV;L||#-u2w9!v*!1i(b~N&=fu@2Uc1O8u zXII>3E1gS}71%>6gKf^+QY)8Zs z#Vx91q5hz^@b^-;1dOhJH7~s>#MP#Lj40-nwXYm#%TAlMd#nx+Tbq3(vw5`T;edf~ zEF{;m(t+!>K!lcL(E4G@6UTDIGa8BXXCewYMMN{SX;^aW%HLAFBjYW`%AjJaY6XWUqx^R zsUxxw!2r)0TY!K7pcBu2J&TZ_X0qIg&8xm1#V|HpaY6OFrz#F7(xAGlG5%gFL!$zs z-{Et2=b+8LA+0^YObYhHh7c!EUCf!gn8s7+idEqC z+ur>nq!lImE1kV~MDll^z8yf6C5Wb!@XQcG5lMVq{oa`}KtFab0B(SiaAH6gjS}J< zzP4~YU}a-;J&P-?wIb0E^iQXJb4FN4%$+5qJaFTi01nPfVZeu;kb)sHMus7W!v+;@ zEyvj`pmx*Jw41fJ!xaN0Ad|S7+)?yeE$H_zO<&!u?G%D@*GmeQEVCs##J6#$#>_r`svX@rA*`xamJXRjea*mRZWDu$BHkD6H@1~A??&EF-{4eTp}|?29J?v`7NJJH>=`=9460) z@UEoy+;D(KDknqAe(N@!c=7bWWiyvUQ_EagA)NOw)k{+Dt~_ITIOO*~N1yr{*Q@xR zmY7;jU^i~hnP(pJe`B4;P)RKyJGjd5tIOcHDC}P1tfow+7C|kyh$4$o9Su>}EjP|0 z&%p=ee3bB>0{;QXQF3gD*$J(nA7B*!j>t7o2}^piQheo<>6T-2$&G)w3=7Y@HARHO z6TB@`(`F${WpS-$Fj1=x&CSa?6{3)1jkOHs4T)*^pj;8qB+Z^FbSXD=q-7c%?NfMK zZV52gg&k(VwPH)H?gF#y=8*smEep~va5|K0QbTF>lV~b?)q0^F7E04nGwwrHl=5U< zS~(!eqiI^hdsCpJqstLap%IeJ309MdyO^mR;;SHyZbk%TCW0~x;4Dom`H?0&n-(9A zzQ!^PlPBa5E*M>0X3?>T>tsY>p(tu_iwKFP5cmi}w}~c2hde_Hc?tn8-kimeE3*%T z$@`kWIJ3RzqRhe5pggu(zs&B96~ZXe2N%7AHxH(q*-@Ft(Ch0-1zB_=Q3ZStEk7Ia zEJ$NB#wKx^)Gd8Z87qyA1y`aut-lt?hvFF+u+}!D7sN|kiOWZ17Km`(Fix0WLNL>D zzA%SP;tb#oc9t>QCclEDQLDB16|*2@Ov%zrldci8-t(1(XH@|UrLE?i`-FZPyiRtP zRbo~Wq)cqd*FVA5B{1LtIariY6T>XC=WeJG?_Da$<;*BswIV@0%Zz5l_!1`@rlA?; ze$_pzQ+P1=@Mo)I8a#;A{9B7{Y;_|L*5nL#FvUo{+b6rc|HD?#?s zZ#a(zre*;qlck^;iuA-Y{-OpLy;F}!2#bpQOVNznGqUFP4-Wal*(#DgYee%-Zq#u6 z$%&rrHEe7QphJ+`*4dyYfHlU6>TLm!E zO5ipAV>q<9V_r%`XBz|V^kk9&)kNpoM=jE~^l^7wB{>K|dasc0v(5n0kx z+rz7JOjV3xM7pf01qz~bgd5Wq@(`?v;smbOh$_|yFp)4^nym=}R#$qKCI6155XF}0 z&NmcHa*5G8p)K%(C&z1lgk}bb+&D>2?(H*dZ$HObx7MZbJAozA{>`+*TgV=l(1|Nos`JeH2(R zr1A8Ddf^u~NC*JtJ;YR#ITO{Bkysf)Op2=XT)vd1>flc&MPZ}>cvDF_9G7LS)E%k@ z95epLjQ>LqS(*kDOf7O@^(Ug(7G)`~rH_A4K+DTJy<{D#Oj>`?UpXLP@u1cqp4HYL z1=Hv^Od-q&f&76AB2v;w@Fe8|L9GmU(q*B0eFbH_3`vx=C8D|-=Io6J+`~uIkWQyAhN%p0=zZp-Na}7I+@bh6r3J z)S7^U0H74OZ{)luMDnRq4mmAbA$a#DJ z7_TXhW3R6j@U!pk*#p_i(j7uo1xl*SC?|yUif^-(#I5lSU&n;d1Hpj)ft-!c;ff9l z4;LU01sFD<+rJFeS+lE46b(qJK#d}YYx|RO1`;i zIig@S^4b_VN=l1xqWRfrF7j@@POytI5y_7a;HKjfl`sCW`81#(Iy z$?;?qn1RF=U+Ak`OswIak}2vXgFtl8v2oTm4zYzs#qsJmp&;k4_%;g4=a;nm&>ho^ zWb#KTQ6Alt^z;U{P33a-H>Uc=ISpYL$C?Y{7Z39DtMOx8&SO!!x|YDos(576X=C~m zl@&>$mX40Z8zO)xd7dqs7fUB+E^Vj|Z;I=ilM(PrMhQHN89@dM>@)q>MflKS1Ph$V9~(%(IKt?#lMSaMR92Oc|t zye6Evn>ey+k$Hl%k?jxeqfI^`^4`t8jS$|Ch7K`)G~s{efqUAkDBD{@7;4A1ndp)M>dD5y@9#6d$u3&q4y0{>N_c@z$CBtx#)#F=WfY(DJV4zbDR*ZKp!f zBb+_<<`3{;%U$HKy+N0ast}`D288O%;WpwvC$%@Fpp*y=A5(-w4@_g(N#W<$`Da^< zk}vHev#Owsp;w7^zlZG4+~*^l#B1FYUu-G5*DzwaKb1#+5*IyMR7tIQt?KGztB0xl z0CS7#{9>7~1)k{gi_?lKL3n7hBg7gR$@V=fH;K&RZ!2nfkDx9s6|$LzcrGoW)vH1W zEhtj7FC?w}PWWF%_ds^sj^G&3(>w-TNjASs53x@zEQ@^q(#Q?1cm}0NDksOZF!IO= z)s9F=NI==OWUKQvpLcbR8q;j^l-)}N&Q;oa`fd~?#!$z<;r08U%XU!%70 z&dEArl|C?al&}o~*Jt7P8S>p`zcTGX7#pmAghGwPtY=LxWv_UyEuw)`B!)RgPhc%% zLQW2wXjAixZHZo%zj{QP#~hoaJj`EPNSiM)f^1r`A1ojovyh&VV7Jo!5&1_eAqyUo zfU|DM%KN1rZsaYC4HZp0?^p?lcA=@Dgr>9{l^Lol@PU5lE^h)emZR&Xgs`Zl+3O;@ zC`sxfts*4N!{G~tipyNa`x6;6Qwss{Qz*>H*Mc?*3s_ghgCP%&Rj9)pSX?#wi$`E8 zo{LE__y?Du44&t}sZ)K#yJjMBiR?~!Vi(59BM*QM;Hx{xqGq9-%-9&TdqVfsLK^8A z2N)WDX|qlYuavxj8_#ek7~V8T=fo~x_mUV)gQFy2V#iN0VsjW5s@N3C_JbmR zg9J)fC-ESn8wsTts?eltO~J))By-AA=|8wJwGv|Cv%81g!l9&P<@!@8wQ_LY*xS%})@e{tX*P71}yI$j_FW#55?D%FEz8T9`@Mmv&#eY=I4=2dE zLGfmZnW34 zi2Zv$hk$+bd~$a2;1hh^b_x^z{8L2T(aS&3vvX{J)plRZk;Lv0*>gr5?lR(WbLOa> zb4ki7%4_OGgyd9p>`zbIha4tcO zJt=}39N^<_du+5@-SOI1{(wPh z#ro{=acCU-b=_JS9XkJ`LJ8Yc9}jQ_lp`45>!ZD;gglO6meKDKwnzC?yzJ~AUEl}0omzsGcFmEkZEqDhD~_n zmCJuVaO3JD2-EKuMfPME8Ndxs2CjeCT^H%+okji$B4bIoE6a6VG5V-Qn^Ct#qd=c{ zyoZ9Ng`zcqd^xZh*#i4{PiO@NImSok|BC;*{x?w2hoV$lO z5mL>MO{4F~!#R3pesmN9$gc=TT68cHJW-2sYQ^+5L{mfV7k|Vly`F;(Jf`>-YO+D|a_`9O`U2usZo4MSBS>4QF zV{uQrXKz`BbDPBR+v6jF>j&@?Vg_M9+t=o&r=Jcnqj(F-_Z$5AeL__ETmrf@(Kpb+ z?%sX$7ue|`i@S*?0eix466BmT1_1@0p(FQ+ueOqlq) zs}yiYd8W6Rbzny?BbDtJ|Vz80mNWyb*u{1YGc&{9c% zTZ}=#7rE!74=~jFnns=?v(fxpvM}LmjIaq~Xx!M**#k{D|4-4Kc@aOGy*`3`x&`-- z9CJSqHR5OJ-NTA*gd|T^R+d7U7~#)={m)Z>4kaZ8Rd3!AgqR>Zt918@(4Z#?H4Fxi zg8y~edmIVr1?+!a`TrhvmHylUp+kcHQ8ExW8!}NEeNerd-*8z?e4vO7DznFTs~II0 zP~`ZYzTj4Rc92o7G+REZXyX*i_u1k4G>A!f;B+=RGGe}|XGkKIDq-X!|CKc}-M0m? z=D0Z!E8Y*z^pG;CZy`YJSrbU&g-~DCFJnK5{UojBfwh8uDt~3d{aj(NVx%0n*^WT5D&qD;BiK!=|hzw064zeIW zfj?QrQ`@0a5k*R?kr8rSRJD*auB6qyY#>S|O0nytqsshFBJs^A=)X214S%KIBabG< zS71Ln!g~z(HYTipBPE3umPvPio~E>NwWc*8*c4F0np1DSCDh#OPi|;`9LXd`&6Vbj zrH}ixXpawGe=S~?n_0cQc@CJ5b=_L}y8Y7*Hv|w4K95gvYoYHNy-g=LqfVyH!2L*X zb?_e6@k~F^%%x(wY_qg^Um(0VDs5C~-v?%afG=*(%(uRrAl#CAz^r(?P@xeRFqw~P zjMDvhK1wOFJen1#)O4lt%y19!(6Q`;7&|fSeB{hH7)AT$!mjA`_xXJ#b!1lzvq(FC zy_$T!WJ#q}KHVPEu`O(qcUY%Q$M`*JRFBVQm!7nvZFcWr+4|K3htejQq|g|r!3%=H z>#lvl!+|xlevAjBj#75FO8RzJg-Se}I0@a=dcCbnwSGnQIBXn@43b?njvo3Q^RjLx z^VD*{tl05fHBf2Jl*Tk3|K9_WmlRXl_BtK)&^%B{ z9uoL!QsgF|4d+YQleTYT+PZ)xhKx1i%aJJ)!=gac*3|NBS;bpv=0vloC^4TCC642P z+-bLW)PH^Xm9!bi(&U(?;|MP%y^H8`a8Td?;>hvyLw{62mjEYDF;{EeCksv*Mgk#hdRXpBAsoowpvvtRbDo5nC`!jl2-JW!Eoy{LEirv+^ zOY%^c>c)}g@}fOWTE-Y&5k^C>crcSOc`gw)`EOH`x8;N3$A6{%)oJB+4VUMY)7|aE z!FoBYGA(&B@}g#M8o_Ufjtas?>4@33?Ljd7X?MLPEXQ~EtfS|Vx@}K#+0<5$O?*zG$c6i12@;yw5O2179dy)BSO30k66+}3ylN?CC>`T}e@Xr`S=eJvr*yoF z_y?H05-jlL%gT&RH(tLxX=&+$pI8}erk8u zIpT8KvB>?qf;`_(s>}iQ(({UdlYz#J*Qj;Imbyn_c+JG!a{Jp7?K0=JD$&nqh4n%w zO|0D%Lw=#8(Lo5((360$y*2YeQ^JW%8b|NJpw~?gS9Pv`@o-bWRYr^zuVLTkjDC`q zzp9GLKJ!3}^`N0xD5Ti#@isT|`n(N6DZ4e((+?7io;)piFgL#3?JFMHaVdG7RT!FW>HBiHje?`G)_)0gHyX6|vZ>el zj|Cz;Q)Ht+@31=)U@FT@gun5-w=xgDHO*Y~i|(Mrk_ zww4e-o9L4L@^N+$5q@wg>+6!JD|dh9lvWV2TmPSz+t(obe#KhOTGXPa5yaRoX?gDy!2rDe%`llx~IY* z9CEZXq;w*7$mhjil=39QY%1+0^VMGBKU=fC!6o{iGl-Z-!rqf@TYOwtA-@&Zw)?=* zHY-O&H8VuMB}<5F=U~KdTd1sMhQP58?(%(^djB2XK6sdbaw&$PB0><%6#1>BL zQ50(T`x}QelP5>xlS}tk3JLRbQbMH0ru&RptD6Dma5cEDuPMw_#m#O-drRwQ#*HG* zUIx`+>0Vim&7NC_(QALf!b~p^Y#m2}MvG#M?@ULc$<*HP(wq4g*>jJ)sQsOxt@^CM z$AukHiS$t@-zW8o83Htg_ZDfT-x1ce`#Za=3Neu%<%MdLP?Lq_PaNU82??zF6o%Dgd0NJsT@REIhW1v4I2gTgu(N+{5ZK8(Rgh zR?tP&$*b=cE`C=Bb}CHQw_^ySZfXwKYn_>;>QVdi|3Z!)n%1>0u%Fy}{^bcX+sm=qsuZRTd~ znV$9u&|?BJIftb8c4D zP8UV;;;;t(RApUDN)d_C8aTW>Xm0@bTA2|XM7#UU9f3iJu-_9gA&~i*FeTCeB|7;Q zj)fy4tryBWaQIkNpPwPTvbHo&8y`|KmP@aINp2dQpWSI*e>2qy`4yU~L<1=h@c%|{ z1`DS~6ETX7iTa#F>? zf(Go}+|?3&&=Eo6expV|qbeJ+F+L`<)!`+(x(!0_T)ncle}mM8yS+N9S{MLXRZk-j zU=@`qVUAdX6~w5@FWw3oFny@$xKOP-OZ8D*>~B{owxrZsYJIVT`}KNuHZ#Gj0VdsA zD3z{f`khr6@wl-(8fKj&w~-X3C`GN4tq9W3ujq#fCbfp2VnEg5^z*ck7^aT)3Sh98 zqpnol1Cu=f|1=FAQhM1Dh`Z66GFodObJo_}3=;I4{`qC{wy|=v>(a{uiCLAfr=j=l zmj5z@Q@SZa|DJ3`g4{KQM$r-9{qAHJX;?zq@IVmNPO;*fF7d1Qc}(U)T&#*rkxi49 z?nr|9^TFK@h!cfSWorEhK@bC|$~M5DRjO#>E!yW=Q_%SY@`BgLEr*-y3FPG7_mg3D zdnE4`eX2MR$F`dRE+_Zd=9kFH+aruo8hB$+R4s2>`SYI^ORK&_&TN}cFJvg_zck#V zBkIW#U1tHtN90t-HrH*)Cfp;5yVH^>nA7xTa~;C2<6lY8f8`y2y?G$U@KH!k)s&kj z=g7jvA(ZAc=`SC$Ki5RlXFPnPCgrD!129$u0SK88FnnC89jaT*iUI=H;2>NPk6vC5Tqn8~hc4beI}pUnc}oxF z%EAfGs^@BOaEN?sk_b@AO!uy9xb>n5oNtbMk`y{4{SBE>JQfpiYht1|csAV@D9iHmZfL0HMC)B?)5DSEp01o86%anC zo;n1kKuC?1OzaO9y5F@jFQ^}l!blS0O^l2@0mtIa-becWOwkO~o*iG;+MIFF@Ql=b@)Y$S=#9n<7EhIGXa->h>B@tRGr_UHYNtizEq zL5fk#W;V-$o`ctq9%#6q!y4n4UY(Kow@{*Pp72bPOrT8i=2J)<7o$EOk1I8hU&kthm&1Jt4Ubfha-O;#MRTli8@SHGBr8+MU9W%P7njgnVLDcV3dfYyWC#D=XhB{nA*E3NAE|j!`_MEzR0tz zS}(hds1${+x>hjXl|ZRW8)MAu3kP~YZff}z;P3o18U zh2B8#EXn50Z*KWTnnQ1*Xp7jc#O?%gyWnE))YQ(}keMG@%lzZ`+6N!v#XQ}a@7o%weTWK^!v=YGO9`<;?9x(#Gh}n`+xfBUzixH^pY)a( zos=g3@u}}&qi2TImg2Cvoe}%c$pd?vEZ@^ zNB#5bSo6(F2v0mtlA!)UCrkt$n%}*Xq;8*suo^Y0MqUX7tqxuH?bc zfGb0MRVr#~>NC&DxG0CRmF1Ut+KFxFr~F=XEpMsstXuiVe*m0|!>`s*wuay^p` zMGoC`j4Q<*h7ThoL17=FQ~h)?QLGtukfPZ@_B1|%kgWf;@~TsnII_ffC2)E*zwAa^kC7X zn=)dVoLS+e(FZYV1)A)+quQo?aCsu}xRgLdCu7-h_tM!R#7lpmmg4HG7ZNR*4jR$L z6-W~hQ;JwNM~sD#8kqE|jN@Ri=iv4})S2s-4e&&Sgk7plJ|6VrlRAC8@3CXS0Quea zj$km5Wli7V7@##VC16?uq$A5_J|={4IOqJ_?JstjB@_E|?nHwF5XULClTR zR2)Ak6_`GJH{qAwf0j63>hez@$FjlSS`A`ZVQ8(}7=ZSpQt3UXGPWTX@5{gT}JFjL}DkP z_a3TIf-$aO+aFlveCO!8V&fHrJ7`1=QkyL!UI6w--u62vR?{_EA|-m1tu`zAEs=Z? zn~RY#{vn~*jfv-f=BYn?@_v!FAPH%)b{!_x+v(@<+5HI>a=Lm_W7f?0_HlY{00%#F z?pPX4t1|ujwCad}j|$$L0TjVK!#Zuz`Ub+&n_Y!}b~bRa-KoBxY?mGc{y zn78zNPG@SYPUqNqJeUrk3||W*6(fX0cO+ekqky0S-55_WF@}&bjv$%=Lob)qLSUCd zS5)Ef>;Qe z^Bm41cj-XNnBipOnVO2T#LosuSma=&gB)>CdbdOi(&Q_*UPlNbW_2{@U&UxA%J1bZ zB|Q@OwD&|-1{|umiQ6UP zXOQFF9cNbj1b&;H11xt6dqjY3I`Y^g&&iXIt zJ{Eo!%OKW3r6e0H7{k2_K+jNnjY5i+JI#lHMeAGOmlG#IoI|JdV`)hAlm$CP9i4N;JOX z>z;Uh?ykP{T<%;Pu>eYqoFfcYP8*1J#13ZIg$$iiWVime7C_)VfSIjiQB=M$)QJzc zmM|eDcd$rg+-PRcL!w5^()|nHkveG63`dThl}@5z9g`|(FrF6HD&lM~W}p3h=d?zt(0X1!T~kO9E+gQf7F!9fq<1}Ipr4?%T5fkQ`m<2L)6 z{wUNCvagP?ku0FZCSBr}4~pu~X^iEDcaKD9x2IoDFz3pyd0dTYKY3F#(?;6~z#@DH z5rTcW==C_Cc>kg{#+}`{;lA+~y{}@5if^1f@4;4dUKT{_?TXBZXFW_AT|zfkxR};M z$WH5u(L`=@VTFfQmWN9cu4`l_@R+F~vgH^8DaitTUL302UGcUElOU*S#e5k1u??|o zZmK8DS{6#H1(`9cZzN*B zwOtvF`?6A#Z5tWh|7KDJHIs)1n%k~v;xKb(6E|gtbM({kPw--XQzIqRBjB~47x8+m zYrSoMC@Js(Q)_AaTn#EvQ~mhP1uSwMo=O*o-mltsudckuf{4UW#EZ+h{e4v6&q=|2 z_OC)?x@>ByDuXeDnlItZ(aCskmZ;vfVc64JEQN&GcV%JnSFWY*Q%0zjI|I60bX3MU zKGF0)x-WVc08=6*V}p?qXq6a-1tEi-IQgORs_0bRfjP`ZUo?9}R&*3QIlbTX4#iR! ztBM4wLPFUcA1sQNWU)$NQgSAy_E{w93QU2rgrMRJ8bdQ{3_-oVMMJl;UOqx>DY6x=W{C(dnkl47PYf%2ajoDD!_Fsc(Td4p(r|n{Ss8>jVWvF$qQk7?oi8el>wKCCI%srBp_)z6qvb$~LnKutmURB^D$l zVe6?4w{xSH=}(_(q>O$#bMO@8v#NF3TCJ510F`axS1kG zYIFhes8v=?c@Y~0GsMIXTR?>Ly z(dYmf__<4IbrHur!J+n-z#He0hAV>dfIQoqhsZ$s(^?Fo9}2vM_y_t3mCsmZuK!5( zzA8mg=>L*b7a`66C8@54U7#f6wcwo^7?5APOv(;3uKAEqQ)bbzpUD>0X`UbRu=H_0 zuRxl>12svGVGM9SoZPNdy`F}x=Kyy#h)5(rKf^&K?A8+gt!iwr6YQxBN#aA03Ai9H z+2v4E2VQw=x0J+?Q86bGli1Odr?^H)Vhy5uw3Q>``LZe)qXb@hYACNwZw!*O&KYb9 zP@YFj;!=`oLjv@5SIsN8+E`W!)IU)8I2C55f2>NKJEm_Ys7M{RPSRBdR>ZU47VBV! z=4yTY!LH_qMjxg^uUO#j4LbM}2sVyNt@~#)U6!s#LpXBgWCU~Nfga;nwR1yNHYtc} z50lo@A=iSZJ&yComHJwUnDet%15+_5E6{H~DV=jr?R|*ZpcL1`^&3K_b&&2@<>s?i z+$oL~mVj216PRqNDST2XGmONkVS50soz_=Z_RbEAR1vQEHr>gUZR@_6uYmZ>fr)mI3S! zH#0b>Vs&(1i*{kK6H-wO5meu^MDVgZp4)0LZ}`u-#xKwaFkIey`jst_l-}k7yz!zq zl7(Cw`I`1=qB`URl^qC#=#1=nZ8a{56LEjN4_YDZ@+JF^Xd$gt(M`M9ZG&l^+mrEMoqHO zUh2Lg;B2l1_B7FoRQ{E7Im+1S%&QM>G7FBrqRObbIEr&NmTC7`e=PQ;=Huwu6IGi9 zhO~Hd547ONEXs*kp1GTG|J3J{UDoU-Z*AA`GKDjHg|H~$ z=#2&mjq}@=YO=%GbeHL!c=&bF#TGB5S!yjXClbHV#zI2!PnvK`KA0;z6&g{oErN|r z>gEI1=G?`_ywfT9wjgQT3HOwq-o>FNl6f7<)d=aCzvoR%;(ya>W-88KHrz`6iZCQK zlH=F3IK~iF{W)qE23ZO&M=6TT;7WonuFe?~HGI4W3BiE{*EN0|z>)1JQ+xt2oB4r8 zdYW@`m^BE$z|f&gP&-?hRr2l`W#I7}{m^83ycFBYYIuB$S^lo=814sVYF~)}r=uic znZ2OefyT(%Uj^zvwIXQ7`(AK?p(H~!(FwVDYr6&aE~xjzpjdJ2@{XnTN~fF zH=E3$7PTsRH>bPAy;p{$8{A)dR-CSPDnG?`&P$)x+M3I>Nsw-wWIOEXKOg(NR$gJc z1jDHJD!}}3qjptZ0k&D-uDeeSLoi)MEL7Y<){f954 z-=}9T_`3fHRm-nqWOek1@UdakhYi5hD<5!D+n+{hdYr$oQcN)GUa^xbx26hbZcGH} zFTubJI$Mx)yI3N6w-1c8VOH+EaC#r$wrc6TPo{ZTu3Mn&C)0dOi@(?$#m#U{a@O!1 zCd&Dfc@T+HP=PLdf9nKNlKHZLV^ld_a9>~1A#a8-=H5vwaei=LsHIbIY*(R57X_#h zD9TGG){4jgW}#EifY91+2wL~p4Q!?u78h9D%`&*8`naUNv?tl2S%#{&=IR~a5Pup` zq)*P&=fkzJJL>|*@pi&gKO>WS0|XZ$!a2w*YxU4ib_{c$3Bzgw?SmT#LYOKi7{IzF+dy4+7z-quE>8%KlScLlLW zZMPY~eXaUpcNDIf(TnBs;rbO9poVnh@i2COA; zEKL(-)T>_m^kA+_T3p@ZjyP8@BN%A5;3yZSuj7|2dbH`=+qUB+s-?!AWMgBrmscNo zNE1ix>?|fYs@&8z4aG{yN~2CL&d-{qkF3SMIV8Vm87l=)Ex)0g&6ZUxJ5Mmjs- zjmg_5*F1LP3sYt1fy4I0v`Hkw{IpjuXVyX`j&4%!&2VWDVm^<7B8jFarHuBT?oF>d z@ej)&3m^*rAAH~OzBb|Y{1L8DwtaJ2R-{1?%*03vJsS3INX#vcZ#e8x)+2k{D3&&{ zJT0q(352v{$Gr`j16Z;z#^-b{yEO_R_yZ5r++L?U%yaS%jrf&-Eg=p*AYtku&+umyb=Oq3tPRJ+b^i8b~E=l~s)r9|b zpq#d+Fm~5#7gYZ5wi11(+J}FjwYfL?|NW~Ud>#|n`Q-usw)XGo!!k$w8t`}9HPQnD zx$^@3n`{S)Tg1$?yQF{qIy{mBn9~2rqPl?ATb5OvI8P7KsrI~gysd_q$3g|M|G?;a z2R%(8?GNK#zTPO4*2c7C)um$EuCd)RsbJnc)74v;`Vu+|3j0Gz6Y=CuPr&Yw_>2s4 z@O;_fA@$`Yd23=fASu1)ccD~2`Q)`gy%)@ggM|s0_|qu$gi#0ONJS@i7h%+*eb+;A z$Q)<)13GP`zNkHo{kBD7Qh|Qd^HRGZCbh-sNhe$sUjIZ7w3M-7!^~qV@U;r{>*K}F z^5cnV6ls$&_3lF4Y!H|(?8$~Z;HwX4)QQ&uv4S_`zi{*yn1Yd#FpL*msKwL3TPl7G zc9r>*VEB7DWh@)#GIA-o64w4EPuE)?lt1@ki|W6sW@(8u%*4rUBlvML>39paKBs;GPQyN&*%B_|8D4X-l$1U5*!;MVMAyOwWnkEM&I@FIN&Xa+Y z(e7+<}8?j?_B1`k9aw+OHToYF-d3o^Nr!M%9f>ZU~KHvmEdD zAr-N|=CV+__B6|U9iBNsNDdw7X&PLcZ42woIs&|fl;8RH?0v`U3mHARv-ebuFX1$O zYf$6V8C%XnUy=vWpsn;<;H1hp<9cJWFJX_DpLiO<0h&`4CvS60oOuy&Jm4z=i~Z#*3r_)8k6PZ21m9zyzz85d|JO zriw%=y7-;(Jl`t5TN@d3w9}4OIkJ(bD4p?AVLCy6pyc>?tm8Jj`~V$|Rr8874n!WM?*@hGWJanoUdy zm{l4#N(0|$SARNmg17ypw))VVe2!+VHVC^|COiwXbDfL1!=C8s$&pY)t<^svE-ao44`3!X3yeG&f)&wp*wiYQFAIy7^xhrm%K{rE?~UBS}dOgfVCCs<^y z*_b&pg-*ucDvBodD%VE_(6fM!#um`BAc|Q`>}1*sW1ttAbI@s8T=~H> zc-Y|?o~LMJGXTSDvI~!WNh+8bCjYt;T(xrXzdTZ(Y+e?S&=|k|JWdNdYUlI}2_V^z zaD!LSkvJF5TXmq;&KFb>{$|A5dyskYPN(Sj?5T0}*?V?YwYthj`wWVw2|70gGpI%krtPkU^N`F^LtKx3vQD=UNuH*V7;;or0 z?pA7qkaDft-JI##>h=hylTAab#2t!RQ$y(G!_A4nSoUmnTzeDN{zi2_9=z1$t)G*j zp9hmW>M~u`$8gCHSn|tHOJlwty*qxse0Tih_XKVvn&KMy?wZY};A>{b69oJurGD+N1j;D0Io`ZU227hT6dnM$n6viXE}j~-HZxla$+Fw z=*;Uxx8ucy-gaK_ezIfqv7n&Z!VBk9Rd(}n+uG4~CKjCnC-Y^ROA(8rSqH4p`1s82 z)e{5CxW*;zr?w^GWLa@GE7SvNShJ-nO3KCvJ$$91eNpB2VZ*Sd_c@C?6HsXmIr=#w z%*}(1LiTA{*Md{^x7}E*0qSJF0sTswO*o#>odN(Z5|ENbn!^X6Y$Ra7vGTUdh&wQ4 z!Ze9uH{QW-WHIybnzPz}#U}4dZShX{ZzsZ)D}h&$^38j7E6a3g$=*&1!dq=a(v~Ge z*@@lsSh9fD$mqR*p@U(uH+=lqf_o0APA{8b*&ktTahqE!~@-JLr$>;g*aF}LG7vNWVONJajd01lyl-|Ap|NQO-pW+Vw`7kTq zM6*d}VR|~-bN~>3Ug3AYMuQ^VEwmpVu|-RdVgwq0xxnAw zmnPjRqn9pF;B3BR)Td3-KX-z@eD`FO z#B9Fsejr@p!ru#s9jg;0wp9)34h5?fabBKA?qUfTHR2q|@7&-G0vb$Sm@Z|bYq_U*yc5(XWU6&NApRcP0xJW zlj~5hv0>-#S;Q&n$t99)xFVn;SG>xkLv7_O_GUenf4bQzY~I;ikllpLFHG+Pkq?f? zPF-qa`lh1lvH(@V!U(t;0RMQ6-ehoin6F2|hp3(P6$cZ7Dj^e<(5mtoEg-cp_l){n zKO>Gzzajh@hVR7bPwMNZ3>7|07N!5dUTaMlXy2oejB^)D^hB|Idwk#dT0L7Pv0GrL z(ROhOjumBSb?%Bouq_9eBrrd7Ft(n?>Q2f~%P?T+)jKLEwb{&`GBvPJo`PbCa*uua zSfaM%TQ9Jdb;V(Z(&tfwr~J7FU5CH=`tTCIS4PpQ^i|f^0tbGjp<&N8qf#9OKf;2R zSC;!GPt}5q)*@wa(?&=Nl63m(BtE?1uErP81k&$ZcLz^fE z`z1=nNU*l<6WzR)cP=w|7CQ6nvL~pWnBu;)0pjT>zq_eERBEGwKxq}+fu*JGZ-n^$ z6L#gU>lLqaahM;I^0uu@4+d7O*bphsgFQ=@noNaQwWH>39nBFNQ4Q(%!)of=GjQh| zXIMfTM2}w3`60l4e!?cOw9wwQiqcQ*zD&{L`J=&tb@5ae#HOb6)}VARF7OHeVsf}- zHkOr33td?iQRGL96D7pJTu0`@U-Bb1^P%*+nL(a&qi#v;E)yj!@|j!}*SOrtSAMkN zKSnO_IxgiIGd{ey~yQSmxEg#@y>TtUyGJ$zZWQ7t3mdYGqCkohQRrSVAaCClofKX_(`xLOYwOqElqarh1Ppl8+Q0_ELl%-#`GQm~}L z#i#Y?|N2U>Hlogsj50C&8^73(nHgM#gE(%OKFs#LHlU(F^KD<08bwgQXE^McZ-dwK z1iks9`r8Z|kB5I-;7MUj45IEk=Bnv%dQS;yak#n@MiPf&w>73b%jHeJM5FJ5NF>~3?k8?<=O>!O{KbCxitlFJQ%?e_jjb;j{?b5-bII{oN?(Z`^Xz16 zR;BbKT>6wQTXoNik&ocJiHay9DT0Qt{tm_0yP~9)&3Fwa`89 zC~K*$oh5k7=D@&~@FvPFiwXG&A-^qLq^oIz?OSe}PqAMi*;aEL^oti(gSREe+_?6G za5V`Ol14KHd!N`0lD+t|XSN?tmS3mypoqPJjn*|X)Y1eaW%oB@&yq15<`7)tM)U>V%dF&Wb&VR> z)4%$-PC7#zgM~LmE%=Y5nqZP4A4(iZ3zDMo!cW!-h=>nwg$Wvl>$5L11qIee4Uj%R zC+FZOIkU5j?jLB2@1Cv8^+EuJ2E<|MHh^uPrRjAnZX4Ufr=`XXmKedq2O(ijN#scb z)8yOh45try`@1z25XN5(+4Q(Z#C!l%{h`eD@o=U~K^WLv5eQ=r*PYBE z*pzUW1YMU6`3h!*q=98-Nz=81YrO|>33p9bIx^DBbzzWW2Y<#`Mk2u!(4EKct0b^= zSExBzRThv>CxrCYx3%MssY1u9IPH#euoa?6PY6g+(q^OaGF_Pb4&3zOnW$E<-ENHnz6Zv${VrJfM8|1 z{jq5cQ67AmB&};#^RJZeX4g50F;k8Aoma{o51ozzbrNQuw@e-CDPv>9029nq zm-BM655on8v|8hur4B!4@xto4VjTf9S3`Yxa8O{KfIk7oHp*7tY5*M5D;E{SlY?Ny93{ACi6fLhV z4N%$OJIC@|pS##5PQ@(@x3uH8qd%Yzl@X6lH>WRBJo{^T7KzL7T+QkB^ztH5Om_1V z;AAj7ruv)VfVGr!BRO%<1V}|Hz)y5hl5C?6McL6HTNw(~w+;?i@W3`?=(xCXv}~dd zZPiI9pod!*H8MegDMU)?qPSOcHeS)~SJUHof3_xLZSwM57)YXpz~Qvaa{|`2vHDf> zXC8<-xC@HRk%VP{gcVMML7g7|=|+#Tdhd}*o2=XfZq1D9w#?HnI1(s!_0s2NS)OMG z=GIlSrqtgDQj-0KOuy1pnuRZBxe5r~V={%L+L6X4zJv*mXyXB{FB;TD@s|fvp+iOz~R5s0FUt3=i zpX*gcrS?K{zujQql+e?>bef>!Q%894(U@4?-rZY|35P8Lp{k5wgf55nmigf1RhN4M zu1%OD*1^Lafm9@W0A)T1+0Beo&YXRm42~x>vi;jtIWQlFXmyRRFAw99?xx2Jz(3V% z(82sJ;F+(TbfApciEI}vATo~QY>UCOL(kjxY0+9(6xIxDo9ZmK>e#T=wRa{8QwFTK zLusvhqb{lc4d-k0f+La^SCcW>2%G*I6e{U?+k7+=GiGm&$tdRN9!=|(B_<1>(m|g! zUHxpKzES-9jc!hj!>xVl`-n62bDsh;yj3WHIM&XpV8!5rK)~6x-CF zdL2NmJD`RzRrny{fl!i)G=Z^zZb~rSjQhtLYP7tO+2M<7DrpczGyZwL3b3zlvqOM) z-QzTX!B#k_4a;Tg+30YLMP}H1vbd&|e`xJ27aJrebd1}>`V|2O!pZjjGP{cq7zEDu zCN*{bS`na7mDMJ1Drca2D;Ii6CzPas4)jxLV$%KsO3qUhoS6A@q`6-pLnWZC zW_l+*^7+)qi%Z+0> z6uJXHYU@HE&*e!>e2&m%cwLe%MAT_kB=$3Iwx?A}G1ibLMSBo8m6BFJ?c0 z`3`3MG4n~>+ez_jV3^gvvNd1BKH&%jMjMfdmIGc#(=thKJbkpOl<19!N9qk9<1Wf&#&Zwn1jx(#EH2tLWRvH>bLf!#0nB{qcl>u5$cv`cB01XAly#?M8h+{{{7g*4e8T< zFmu^?xbteXnQDNLJiJb|B84_&A8Cx_S}Nn|+4{K=7C1+YYP0Dw)uY{|&XNfPUy1?_ zjW^>x%KI?#J}7h#=Vf>8`{PW?mK|EiL4HIgM<|k4r~tnUKKN1`dZxMX@^Mg}gczOB zGp%)B$enj*mD-E5URTdeYR9l9^q9*6N4H>9fA9dXV6WZF_}4$BI$ymg zwV49*Lj)l@galO@jUdWLrHP!ohtuHEw#~HOr@W`+t-vM!i(i0$y-U5eP3l0nB&XNG zN%k!*N|x}n4(*SqHvb0}@B(MY%e0aP%@}(eOHZC6Q%2G&n~Jzxvcw~3RT-~mWFdhb z!619r-BneVc_)cE;6rH{O3ZyqNFW5-BZ{IRN*Zo`a(3znXh{j9eepmx2+`&~eV0f(6~s zve<0$)qkx> zT_UUnkM)Z;-=4i6Wh%`G%e z*PWwNJ$JUBou5O?VFrSP0_MUUG!{C9J%k?Dzj~#t3i5i9xz;AyUNqsuIH1$=Apj-V zB8eq8Yz9U8R+b06XTz1GI>HzuiYrkX%8oLv$PwADJAQ>BKaFScJ9pJ9pQ9)?qvG}V z+N?^Y_5`3B=H@<_>SH%LVao}ZMZJ{#lW}rt@t2tK-)tOlT@)^>Owm{?FTRChtxg8D z{??$`9Em-(KIp!2)7veqT4EjHnrAOAgVskTqCKsXXR(}gduTnh>!o96Z9rqROh0NF z*cf0LP#_OePVb3L#CEwswOLkx4JToAOh59AY9W<)?jbE(X->pg#G*}EKD6?$?I??q2hu_ z&gGH$4hH?imk81l75Jd?$1=IAK1Sr9b%04iMc_Mr2;^~7V7hivVdG^jPCj!q2_^_b zGYCvapa{`oDX8!tr=GkZej%{G*|LfWV8S-+Cb;!eN zW=JE!RMyeEP%jMi^8lzdc7Rk1Lii$VMb|9rjl|GreexpN4DEr++qk0D&Q#1ti0_d# zo+gdpBXWFed;|PZCo*bs zyzePhyd*8}jcX12b*i!|R6f9R)NcfFDTT@QAq|n^#~=YzZBMb+>}Py&`QxaXB9*Cu z+Rd>SwKhBF9&}GPxILe%Ov7VtTaMdf!YrO#KdKj-vMhc=%h9R0h=B{uNgH>CuEvO@ zL-@O#9zPbT*kH_xNpE{!up9mY%^Amhx?SaRz|L?rqt_-)72YVLf4;2@s+bq)W&3!1 z#|hU3))C(pUArBP1Gk@QZ*{Rt_da45D)T+uFx?$Z+RH+>Z73_xI~VDYIrdtxGWo@l zn`}#7vG@G*J?Qn-{GA-LNUI@SbQksd^c4j*vAOXEG-IQbcqtH412g2GrL?ED>b$!u zhWV_0 zoitR5W{&0MP~1QAs(H-oo7G7tL^X?KI98Gl{_+Z zczUryL#3KuX=Z@8}@OO;j7+5FO-g|j&Hc(NB@18|-sCXq_Tsz-x zO&ZhH%|z$Ca9BX-ZvvT60s37)e4=mL>49pB{-W`c!b>w3krloFW@*J|paSL;P#icpY`ee}l zXpXw{GNlR|V6P5rU2fh6z3@K5=7OQMC`U?fkyJ0TPom>q{L|@$3jc9zs^kv0hLqGkFYS6t1ewY`-#5mt~{o18-rxO z#NQuu`ZVu%S*47-%7pws)XWbMAi@!VJv$3K<;32ZRwy!g=jt(wjuW|Be8RpKU+cO8 z)^tZ9RGfyZ#wA9_e1_lc4Ytoj80V`h_FS>mMz18YoqA+gm_0JcHjb8c(RR`+Xm110 zH=3n2nf~@f#0v4r1M`wUbY~pu7!Nn{@{o-!ni?jsHwPbX9~UWoix4%;zd2OfQ|G?= z8i`EqVMyYkgjKbc`hJ#J7M6QQQ(oWnxnwt_s21o^*%;G92S5Mem^$laXVF33E0@C6 zu30HMzmuUqVPYsUU+#q!Lf9O4w6%>CW0~o#b#z=?M`VLrohF(p%!LHPZIJ$|87~So zQeFqg18z~!@G^}pCdvF+@F+Bzq8~TCKYjGA8r>x()~Bawi4GBVW(}8a`a(m-NJpQR znGa}Xudl8?TT?R?v3ecF7?>B|56{1Ri1kv zP1vl&OVW5ON&c>D1WTuX2^B&o@#>S*N4C4ihrcDzET(PrMOa~X4o>W*(z!MXV#1IV zw0df&BIefoPG1BO)?Enxq5o?b;Iy<@|0Lu8^ss8pZjj=B`98ljNe8O(MX-q^hsayE z_R_+Bp(E*x6~}7g_*GRNZ_D=T2%H!P-3>7l|1WI-UZjuikpPIM#j6hGBWIhF zO~@`%jOB|&M|6Qs--+wJAHL>?>zQZD%0Evb@(-B;QrtJ6FXch7zo6?is`JgxH5E8d zn;*o*6BqoK#J}kpm!f$KSGZjygw^+-$M}xN3CmdZRP4p?tdA~lNJ{K%Qy+&5JI14Nfx_{dBLr+3=rp=>OU^fPqDg_+B^Z!-tt)fSB0XgTG+T-sPa5W;b zkK*T)TDwULhIw#eye^dS23n$#p_HPsDg5yY<4^QoDhFibu3%S_vK9VEU8@w@ORthg zhX+nYLpyrP#^9zx%uC}fA@aX5|F8dL=bIsv?L5KLDma8>??7&xJ=@dlja6u`Xj{#y zsJJy<1TFn3bN+RH^HPh2BUPE`# zg!fKUQNS8ABfNW6!exE<_Sq(AEr-$H#s&0l&cRT_vNy~k!oU#G8z00OhRn{diHUqo z=HK}F7jzbuKMSEHwS5a#Rcc*7~GB&V>WlhiFACXm6uvORMd)JiLgkcTJb@e^)iz!S?XNvn(Xi@%0Y9T6%EG_u5O4UlHzY-9QeWgUJ6!ZZ;4a$%2Ai zm{_t5U8F=%NcMbIuZx=4Ph4Z9)3x zCRXYY&vooJ1cl@b#U4*EQk56&%w+YEOX&4I;nrt&aq>%nIF?Ems7GU5mkio$6_#P$ zD$4J(cA?K&CEW)&$+2;RWT#g`Q!Iqsna8s5rLFGMvFmT9c%5ZL`fHu-`6x%`{jk{$SJ#T!siP0i@m}BUt~KV zkk}uM6O2c)(7_8&O8qmU!hl0^b+NXV@hzs%3t64Y^_Xn>fQU`#IzHk*oDnUVm_Nn3 z*sU<1j?m^wqQ@9WQea5CTR0??LpYg7!PfoUt)?{frR$$3pgAco7IU(sg2LE!th{3G zd^4!qp+vC{YCWHY?sWP>yZq7qcs6eJYI`dqDA8`Aij`%a0ALc!vsBtR_1bj_Gjz2T z7m5Fs7G2v^356|pht{@)&CR_Q5@q!s5;G3q*Da^^4V0shkYdvJPkHh(NFCxibz2F-5j3m^CdhnM~I8c`k~Kfd-e)uYcGS*mtuq zqnCu1B$LSVOfy*Y%AITj{fzmD?RQ^7VQ5-09moe!8EW{-l_sbu^b|kc#r~!Ot6|R3 z!DT^VuyX===V)kXfug?_d#yr0oT8tl@Fr4zz$HT60jDK~B z&cQ?|`9m8&24h9~{kE(#$+P>HV#Y)_P;sJ+YkbTthSEWOxupL%k(eAkOQ#D|zzAH0 z)rlmBP>jwiR)_RpA|#J2BSZhMy~nNNYXo|zp;6MF5Z<{(0iGNhzF>UB+*&iF^xnvC ztL8=LBsxX~ph1vty~fWa#e4fJ*^QA#ld>vzTL1KB{%8kXEXDs95%vups)%i_-Q^4!fDQj* zmPIfQBHr)YfU_L0K8>XIL(e3Pm=>#D%MJ%|8vZr-|9@I6M%9Hcm^Ke73e)E$1|E-+ zGYSjyn^}s80pov+^oQQqk&#m6sD3@hc8j8;hp^=SgtCSLE|#-`zJ!uw8^egLMSohi zBde2xHfPeAsgb(EpiFGDvPyzawBiFa!ul2;8mklXm_ zQ3zxeW58Q=kvZ9<(mwqCJkAUQ#7x?V;V|)K!y+XfTlqq=nZkIk9ETHM?r?& zu8^F8yg7%C?V{~h)eK_Xorfva8eLlCJx(Om(8nbCQtBblMkpezv>@;=rox1Y?%J1f zP<(a31Y20!?Ah>^3v68?G118|(}mv>NceHeo(~u)^@I-|)FiWG8OooZUcx^6nKByn zDS$6avqtf{(h>xnL#4Bfc~^RD%oC_DmyI1|m}p=t^8OLB2;h?>#1SUs<6g6*n7s`g zuYJIh@=at-M&gbh{2%CcU$LIGk^^5?<9+#1#=yIL>swsRd`{*s(UBPKdU=Gdsz_@ga}ZKQ%Q|B(6!;oX7C~7)<~TDIz#Mx!8x$bzQ!PMO{!mb&kp9 z&*w~!d4Y8H-c;s7g>gH8ey0COJGyUZrAoe#F!ZfJAd;MKM%6ga<6grfn92T^tEC8h z1x!w(!g88%cvV$>I05We!qi)K&CH0K>J^|3jxBNT9v}YLs+47sIjQOB=MGzZoP^Ib zN*W8ACwRBpaX)BS6A=}{%6C}=P~R~AJZtT!Ddj+Eb0ZZhfXij}lM$6tuI4FzT~}P1 zp&>OeB%3O{pMO#K$ik{U^ionkk|R&) zQXeZ`iz!pVMcy&B^rX96b9szSJq+?9p^N3B$!{J4iJ=iUgs`YF2XtwgpKPm`w3-7? zXB|GB3=K=%WP7Lk``EEpe=c;P93F)OG(QVE%JafzgG}{~iWqu2|naX$PJD8&rNEM$PU|W?mgeE$}O+>Sds( z$|{B-&P+GCT`&zNx6d$CHq28feR3^cktqlh4Kes%;T;ZN{XQkdp0|iqiZ#oz<2Z`!1U_+SejSsK z{fA#r*kYER&AwLJ{yBM1syxIIKLmP~&|KT5df0W2JIg4h%aS`&nZLoR@H;s>%tD_S zh9BS}avY#>B=b&*)+>l2tD6%4eens) zt#;YIBbzJ`ty@Fh+A8m1$m<^fXTp>Ywi$js5_(~|wHh-th>zdrdx>LXpIS`Tm=z4v zBA<;FGRR9sc3BMkF&P@sQk(8J_0Dk7Ngoogj&sFwIabIJVD|4x6$aP0nQu9PI^+w<-3V$=?Jf-OHeg+tQ-5iM!YAQdnCK*C&KU$rc{@^4divY~$`MbtYPHI02@hq& z#kR;D$a0izwu1B*GR5rs6tO$QOL7_Hd z-;M)y7grbmn3FwyOzfFw{n)1efMQq5@LEm^&JugYknR`n4VbjjO z*JWknZT_QG$HgA_ePfQ?kT%X}9&YWISG&25`H8{gr2(_493c+;V=Gy)!8?U|SKe7u z6q`A7Y`()dGUX8j)H88C8~;F>rLlXrr>diXR!u#A*tFPGwySOJ^ZB9$tL_xEEJr<( zB6H%3V{xv3V~k)K&^ER4=_GUOTtEF>TaaTPnzSwjpg?EqyFe1$w#jd;QIhJe2J7qn?zHt>Mr4_^*rk+ zmGQyIT@SUxFtnR|hn_35-=O35&_l`B#g_~J){6`gTFtd!W4SvQeUKWC6H@nIlc_qlRdO*b38dtqCT8ij2hY88_L{bfqYS*MTk86HF zaKvdRPp7cwv?<@2G%=iFVqdg$@KttNDpW78m@&CwB!j$<>?XNeD5gqWAG10!WE#GZa@niBn$~I=6Kl)Xx^>o$1!fR8Pp{|y!Nv|)VfE&ihe zf=q+4uj;cB%DeCR)A`k7XwTDeZ(G<5bdl4{l?bvaT+6Hus3yD3O&ul4fm6MS}~kKi}XR3RPvB?%}931 ztjmNCo(zf`UR*g!(!uA8LzHD=R|X3cH=q04MiRGV25*2@IPMlX{#dXCV$eH88&rbq zS3x_fmes*rZnYlXD9Mmm<~;u<1*k>>jtf52o0etEc_R`--_67A=NkWM8%73iW#o;O zrqYw!>gR3kFG}pK^{djdA@p8K1PHvPcn#r4zntori${KL_5g*=cU7862{eaz8Lu}oEWZ-mIK4l}#zEFY~;jJEP|c09S2 zfiq=d%i3{+h%`g9x9;Aub7Hw&>z93NEVzwzqeG+rARWuzg~ro?#mslqQkqqH88k4y z=}X3=+a(j~phDC9QMr*{Q}&ej*y1$_=eL8TUUk1}?N9P?dB&^ndzRs-kBEYO&bRd} zZl#id!}aN<#aC$mQNGTr1(T!@>Sm{osX`Oiyz021GqSu zkWG$gL4_Act0pGspv@4j09bH?iLVpOL>K^Q#Ffu1`p4U`?DX|HriDX(9jTIse!!of z^a1D)@A^{2t>xg*#QUQU=oxBp9qCR^xUnf8;HJ%hfK0e zeakSJtm;{9ekuJdlj{Y^iXl{d>%?|~7S02Ml^;=9rJ!Fj>VR1z1Ff};T7 z@CZd$-WYy3q^O>QLPkA5c1anX-TY0?er5brZXju~|A%Hky*0Fo8rD{9kWuon3Fw+) z)t&r?&_681Dvg7)xAUiT&z|m{GuBc=!PGkEBr=MBZIM)I(jE{+()g}i@ir(2Hh$r= zg)$QYd7vCOk~ywaqp|w{&Q0t)4!5fmReA==*3m&w`oXc4f}NE4PA#~Kayk%b7ay|v zrleF6qb}dzJg81>6N9y&cHFBb_B|NwJCxoBL;v^P?_)UcVmdv7Xs#IV7<-J!I^Sz! zCm_<(^Xbw;GJ*sK1a5mn?xgCCz>gQzIX1ZK9JTtGR(++C9~`KP#e?3`7b*!fqyYYmU3ePTz-}3M?Qi4=wcN&bOD^M1=Q8yC;~FeiI4VT zcdo_>bB&x*zBj=7d=c#%@}^CzU4BZdMsi2OvNs%HyX7=Bq!>}z-mIUX3(WUFwT2zS z$~UruFQ5r(VCZBddf#$|!@$1-u=nkW-4-JS+i+wXABY|#L;x$5GG7gG zex;a$ZxL~VX}{|Uj7SaJ`vLo>NTxux+@kRsdLqk~>3Ti$mW95MGHEepM8l;1&)24O zyoV=S2iq5!sk&G8qIId|Pdczev9iWu~zi>QuTadVQrMv8& zo~5Z$kCwcIlo?^5ILgJ{ByWtsPU4iRfk|as>UyhlG?qZHT<)A4-SFI;+&*E;B`a;d z%N^$JqXLCw_sPKo2Nn zk0xiSLk}O0nHS(8^eFwQhc^BT+f4`SC_$8BRY$-V-RZ_G*!AJc!06h9e;DEF6uCEP z4hF*=se%<2T>XnnX($S+7Qbu;4!$Z9WZ0m%hhI0G+bB<%;Z++Nfu7}tv*`HqMv6r7 z)Y)#jHl|--i5bDEK1w7{v-ae6!XoT!_$dG6e4cvC?HICESCX9IM0z%ZAUAvRcY&xV zU4*~_UedKl| zcU2ifYi>#bj_%e&`m!rZVOsd=%1mo*53_sOa5MG?)9Kld4$l7mR@^YB&BU`a$%RoK zmi-m+0M&b~dfV3l72dx&KvlMHB4gRk=8niDupUV~*~$)c4!bGv*Be@vR=;#{>om_* zuw+-RpgO#&JOYhWnc)+uO`^Gnbye1C7rJW_nO%4|pe0fYos2_7B-rm3k8BUv^uCP_sfcrQOJZhiS+dKy+aB`{?_sCQ~Z1T)%$71{(B ziS${#*~~r#NXw8aWm~r|r1tJ=4C!F>-P@U9Y4jUo>S*nD#qV$Iwyhj1__FW;Q!r19 zDU8&7Sj)Z*WkQ)*mtWgO=SD`v3Ams;$PwPdLLJl7>>A|xl-3SUx|a8UFZ?wYu-S?& z{t0G0sL5qToadM(Cx?!|Li}<-Hcn>FZ9%c{N^`t-;L6@CBd371)B0DUAQRR`_Nun_ zv}Gv`)s`j3hKnFr3Gooy3|qO;rLsweb<6ZSl%hmaC~sC`9NP;O2rzmt`@v3MJ{kg& zTX20qS{uRGHV#l-pXXOhTIYxa){Cv5&sNofexck<5lC*GE6XZ3#4YM3`S%Vib-!+Zb*%MWcg2;^!L8oj^9yBz3xk!8 zPj8E)F*p&gj2 zX~^(EJ28aDr@y3wVy|SsPxqbAqa}Yk`1)x|)sVHyB25-zUXFdF&xB03Fs>{%0n%P6 zfGw9j0_D1L&1StgSayv|vSzLCNc3ae!FuPceu5_E?}Hc;0Ay2~A0r@;1O7uQgz_Z) z-C1?~mFV9bVlNb92>wEMtf;Z8goA92GYxYD%B>Y=XE2;XK{vr2B>s*Cdqo~TRLg?f zS01Zlj9hRl1J%-tk(PNNpgTxF&hsn)8@7dA%y z`wP|n<#C(yVeqkhbHtBadGDJ82ig`4Og7Ucn7{(Isx@Nn(QvFg2f^r&v0VD=&%CW< z-QTBsR5C8AEGFkoB>89HB2tr!uswkNFiIT#uK>-`CCc%n4-lzE6i@xEYoNaQc-dun zQ(!?&CGx3-bwZOQM~s=h>2&ilTdcohSYkG3p)FK0S9w{DC<6)#=Y^Zu}9sZ-r8|FL{FGgD)v!s#}<-=Cn6L+Q}RY><5^ zLKf&M{fH5RhdsCW0>1DuR{~z2TC|q)#&1EccP;Pk@8T~8dfcdsWHuR{j_V+mF)%9kvJAf5bF1K5v|Z0~ zvHl%sZCZ&@<+Lt`}fsQbt9^qDAU`ILF$Y zU9UIxt$CB5OBQ6cM4Kjr8)gb&v*i69@d>|%d`S#tSY8rd`|kccb`ICn^}_YGH_^N! z0ioI&k{&pf&!aDhzJ<+Pm!LF0pI?@IxSNaGm&^DBaL{o0u^NaIO* zGLEr_k8Fz)(AO$7*B=MIK#PY5@kiP{>BsHjAl@|xGrbBMn-k2`zNynW_+2KKV1J%d z8m!3pX4oGe9FDV?SJ`fOwOt)!?aZqJw3gZ!7+a@7cGzu#WJx>9xnrQyyMZ}L#T-dz zxaV>{rEoa*NQnoGOgK|Hv6SUiP4i+dw(G`)m)~-+C;|&@95*j0^z=PtWukRh zJ9n@mW#g{TH__s2r50UO9rDk21P`N9$M3O9()|61-&vW#XQILM8_$@CT$-)KN7mG5 zT8uH`EUOEsn46m^PmZWK^cd5AY> zIWn{ED2{Ep`O<#7Y zQ`=Ag(EHpr4YrasJK_!*+6yGxClMA z?vc=%+Q8m#q)LnV>xp%H5kF(PjoTs55nHS|qGJPV9sUZR`OC|(f}#DUT*j~ZcJfUIg7*uKX|7+SP60N)pEd#c7?q|o9J4HQQM}$8 zvsaXt*oBfm43P#%#r8V2kMne&t@E+gX{rTjxl_P4KSf*-Fo4=_0O7~azsPm6f6&4J zbFFc(-tm8=;T7ycbep%xQ8belu)CUm?^}fu{zEzGx1lFyb#%@{w>IqxcGo-I#o#{X z>rHf?rF)=!90pbJQY7?R*|+Z-4l={!W+d!uo^c|yu;Q#$QfFLKZ0#U*Bpau=#Ua3L zl~Giz*vB$9;lcaz+j8{wXSdbXYs8shK>+h_+pOpaj&m3EDU|VX?t_V~^6QD}WgISp zmr`~{^d^j^-(CCW)G$?SrWxqkPp;`qrOlV08Z^%e7Auqb#h1#a7sPR?sO!AAPN;#7 zgl6(90oT8!h7yF%51gAL8>P3nyD)?$o))glQMe|)fF(mQf+Pxf`HV0j)NI3Ou0WOd z^pkOkJD)8`Sh$C5A|3hzKe$EfYuh-DJm;;5r?6Jb?gjq)itd*q{NdcyDb?!e)#_Q)i^xj3cgTX{o59FO% z%KQ_(Yn8%^aZMAGa^Rx{H`oP6>z$-Aerz?CC?(#YM(0kj3B_8n%v7(d4G)d=N2XZ4 z`S*$m8(|^FE()x-9>ojGfO(7qN#n&E{|VL1a)ZpvVttQ2XAm#`SHiQ6ltdllKB^~I z`t*&4Cmo}{k}|F|=n=px`us99KuS{())tU#bkVdi z0a2NdV<()(U4eczVvP5zq~`Y{w_~5ZVi}wQpyw4ngm&?_yA1UH$(={KP2EP`ghufCRi-qOC`+eMT_mh)2 ziS4|ohpFdbVYnYZUMZr(sqi?~j4Ya2S}l=%)#b5)Q#}SyO*5UiwIpHmCHLg;xVpw( zDcD6Td1t^^TF>dn=0gUnI7x?hu!99a+0ku3+;kp(3!wask-NO=b>iS?fLx7eBkk^5 zZq_DB1tS||JwB1a`Y2RhJ>ga8Yv}Y7pf2M**T+F;-px>%i2XEBf zlmE@Ioav^dPv(^r(v0&tDC|PvGncCGeaVZtZm6G3tQ}1^_8e8E$y~&cD5RL6)Tjby zv?+f+?C>Mh&6;qSiQyq=hr`g@#o^ zE#Z;=;Ld2eIoca*cL$nXm3oPvjS z)cY-#CA(o!)_9stFE@^?s;@GlOkB&d8e@4$wMfo2>}G99#NDy%rdrpWGOVR@!PB#e`>%R^!4=_1L5tU+ts=X;sEi|KqC!2*>axbYz6dvkspb z%(Q@hY?-W6!fJVVDriq4_)nK>c0$lc9e>*k!E&0d2&t?c>sh@JL6KDGaz% zxgdvO_b>|E86|6K{B=7g?q>DodHazdkCgkEE6K=6B1yjmB&)$rXXO%3Ko`(JJdn~n z*cNR#nDUh(JVKA?Bs(Mxds%L9_8D?^8d}ZBmnB++q_!c29A~?97kfAr2$Twt+-(7kqxu=$e&^%s;X2#&&2X0oz&8! zF8E$mAtoJz>!!H>amK(4+hL+UFN{X3zqd*Tzi3^C#lHp^5g^XSUR@SLQ0k z1lR1`b$ryR*f_ZUbd(TDIHlP=7=1$8+P=h18eHz-pH{;t4AKGJf(~9RxJOH=Gp_zt z5M6+bfEsf`4t?8@f%dqmL;L{)1ZH`3X2hfS)2tZ4HKy-5g;BO+ozHKllOk9yGnUYb zG#2^hlN#SVer~j-1MBfq%BUqCl71rdj4|!vlv=3wZW^(SxcY)lIOn}TJK|Q1llJO- zAGYmN6Kri@1BQmO-K50&tZ48#+T)V+06VW5uF zE(DU+$9nX5wjCV|*@T{2muf0&6KYrs4cP!L;>5igp#E??w}+j?f>vd9^+%YZJrh$? zQ~paeiiQ>Eb48Vn-}i$u37LoAB=ZW?yp+gImb|#0pHLTCgwquJXtXpvL?Yh#Sgyyv zD%5l~|2ys=mZoF+%j>fHn$4v=Ak%V;Bs;J1=2H8Vf;r^p<-<%pqxY>Fq6d1QAZ{4W!) zwE+SR$H$t?Hj{q9+I>GOxpxB2zhv`lFZ*VPc=DgVC*fR67^wm3=V|9kDNn*8wA|D5RQ&|h+mFRdS?W;GfPAKl^g~ZQPt*R zi4@*_Lxn|<)_pMfLljs#zRw}w%}c;ObMvWy2@Jxx-RS8*=>j!KUa9`_y!>>f%Q0W$ zhT|da#NE4;f%9!+!-tN2X6C=U3f%Z;UJO^|69yq0xD7P>5JH}F@v)-v{?@7D6K?^oI-z)(q~SZ&{H+Kc=weXH+%Y zQbuo}(fk@TbApghQ$Eym{#y&MZ~W#-mDAMdb;EJW5Royzht#bo;N?`1hpcD} z=IquC%;^|esCZJR|Iyb1AF9sr`$#+K=G0DI@Y!2|nIQAI^w;S)r5Lsy^j zpF`DaHjuErYjnPT1br=y`wLWpzbTsd-t2pm>n0!Z%LSKvwR62C)vlmPfNIUk@ab{Y zb(byg8vMJIR2htTyV(mg39v;eK9!BgVKw=E5-l0ljK2hTSs&}+K- zcB;tVZ#k9plCw*Z)d@YAK`hc=QP_kM2t|2_wWF}^D|;waSo~+F1-qn$22wN$k~&J` z09oAThEQ-F9z2a4K6XS%d5?9SE$S~TWg3m?Ej=5!H~$(oKWwZi4K_kb7y8!k@M_(@ z%G$mDdn9hsl)`5FO-pe|+#_N(+xqkbd%g1>(P*?Qu$bet{JeUoDE7OsTXDs&r)Lx> z1Z-2lrNzTbu|USDbd8xD%7!1yE3NX-OL(6U43Yyd`m^Acg!Ejpr6FKu5T(H?tLL$Caxe!szjATV`7EV<3eJMdgjA~Wx#TcCqtqcWV>UQ zzsX(|>yGCk(;kBspTgElieI_ZOT%csjF;30;$6XavZkOf#fNxmla0aEPCF4(3?N#r{Wcz^5%KR=zhswW_Dv1AY?V}6)&P;A05?j4=&y&xJ6gvUPb zrA&5tmNXI6V!E3{-;#dsTIu79#YkITYO~3ybSh@BoweZU*}Nz$Y8zaDhFda>_n=$` z3!HzFC`q__X_hx<cE3#U`Rn>C@605uRW|bd;vk@q;d*NlX~#{;r*eFq9%?2>GGbV>C4zk|Os426RsEA11VRK_w3L6Eh8?ehl2j;F-dPbGm4f zO~Vp|>xOuwzbn@m3~Ccrye8czkSJP`fA$omdP`Q;MZCyMh+p2mnpnosBY)8R&$knA zRe9l9Kl7{Re3B}P)Mv}T?R4^Sz6o)glu>t^s6^o&QICeBEO!B4C?ydytTl&`huSoi zvo7T41w_q|l(!e;2DRJA7yGOsA}&idzZ{AYAy|&7Wj+8vViJBId$b3%hE*n~*9PaF zNSJKQ+;U!G38h$;7`W*(ziH6pLa=b%i!X0?dj~3_7{&i8oOXx9MFQ9-<^OeBk&|J- zeHv$aA91{0rwb!0Mq;6XTc|ECvB!spf|0u?%Q|B+U1NIUMh!J036qx^cK;MIxbts{ z{a-!VJD8Phn*X92r6S|7)%UV2Yq)tufyh08ToFQ#dUGCc;(43`(4)-HGGAr#b-@1+ z5RB>m(3vAI?nt0jGx6Kc7`u@?51=4-n+G&c_*F%f-IzBXAp>hGyYZgUO;bZL+;?MX|9n0QQi;@vO4h|=8fFeL3`duyM&hL3N3B8CqCzG$zrm`b+b z1-OW4)W=sC`G!5HTMV!Yp;lLebD7O|WkW3>iO!+{aG`u=rk)W^Z7CIV@*Z517_!c- zD*S1Imr^u!Yb#;1{K(UZ`DAiy&|GN=kz%cD8fy4ehys(W#Js4ywBVC4*|LP9@j4u_ z^!J2~dMiX3cT$FVP;|Ds`Vc%tCI8oV3!RYlt&EaNZVX8AT@+f9UR@CB+*Pa&GLHXT zyYvdcEaq-FJbw`N1EDN?de?7$HnXTC7FDe*2Pm{8#M!yBZCGY#U;-0iY-3dcCzMdfF=qh!rbJs@aXYa$hiRyq zs&c{-+NJC19DVg?|J4oO@QfMih3$-e%ziMU%!$YDC&15cj4@+OtFND_9FG z%zs)T5S$-YuCYt*8p!TJ95Kjs`o|}4(&;ZQJc~1@-T)eOW(HT>QFPq9fg1;QqTIvq zEB#wnh@Z@FQLQURfQT-3FI_y&Mv`#}KrIXPMhAC&X7;F(a1pq=3*Wl#>CYHkz5TPq z`d3zasY1zW&j$u?JmWRL;<+6>$Q}h34$wI?sjuSf?l!^Y!r8ipJt8Nqs*c%* zCmrDt306i>33=O_C@T6St!bU*%P(M#eBPjqx$_Y$YVqTVQGUe^g=1w8!NqudM$$K#3mVL)715uIr&!!yb;AOfvfNl+Hp5vTC5VVMlH0WD286j``7D#W*dq#wLAA zCI-e@%gxovH3DLq8K^8xSv9PDR1ge=gkiQ4UKnd?JL?zUaT}I~ z^S{8Ri{9CL&Fg!iZiOss%Bz3RgEY$1#*GwNc*45d43SmzuxM()=Fwyvk)Vv_azRnS zFz*$RTg0rUVCwbv7h6?O8l#(ay;lGT78S&~aMoCIGj?WBhG6CU7<1+$v{~L2X~1ZH zxIl^`aWuu_TzvkTMmjxBlhYfW)nP@xgd9}B#h!;XJ)xKwiDOwHHS7J4@b|)al2Oyn znP{!OH0aHJ?eh^c`CCW6fC5J68!#q$@g zb3&RlqT8+bM%6eUzfp9me7YYIQ?H&02lvW_Z%mP>2WBvD(a!oh!o;t}H{LC?re$R{ zhG~>gHGvGqarSqaPW%z6_p7tXDx6ODI_}QF@*?XwAJUwgkk;&$< z;n)dQO$oJNw9RkS88==eE|#0iCcGYFVP@?Y;WpCG)DnDu;i5mVMz9Ov)ab6RZwEUQ z|MGhn_=mpEeT|2BVjeB_$C_+GfMTaltM>Q(ug7!WdIe&^+UP%?1;42)?BxFor1bR$ z3ICY|{nuYzun_+XQT>kxQ~y(reXG>KzgmzEtNAg!S`!+0ujhRyN#2t`{pWFcftkOj z+Ti*V0Ujg2C|Xc&j&BZQ(3Zz%-*#(EZIC>2c&H7Kr030wt*4rPor1s+@E0j%gET62 zqK0SoO?te2M+qs2Ty)P8eWqMj&5K=_mVk-9n{SU8$uTmjE`dED(K`(5O_V7DXKn0q z7np@)lluhuUgurPNA!dxGYL_;afaW?yVjGh?_+w{DfRFUVb4!UG*8TYQK(N{K% zlWDrP;2^^Lxyb!5-jftG>yu077JE|i7Sf6I`9H5_X19XF4&0PN<(9@e-iHJ>S|7N- zH~?v$+@$`zcs6^%V@@tEC*_I+8Kp90jq0GXiWBlEXv-IX4c9N>I;CwQD{^zcUN5@eG6Md+@29xhtm6tay#8E11*{q|sfk_w6G%1 zQHqO%qPGi6O-1>idqOLm# zCQ-b%z8au6E><6RrX{jN#%9YKpI=tH2|)4tW1vZSO@d0#M;A?C0jTV=&F|E;w`Vc; zis$#4b#Kvk-mhvAs?W|6Y!3J#!t`Tsy3-iO8&2F+9zgM6X9@ z_X}NBI4ABrCYny9cda(0G)71<;IFHDuzP)&kp7WB^ID~v5a1v~rlCGS(;E%PuS(cweEPg5rm#z@lD7ji^|Fd6{M`uB^r@|n1&EdSI z9@}NcWWiyc#b`$?$cD0_l!CpBq$MEZY(%u3gKuzh$QsJ>eXMdtSd7IkvT@ z&Iv$UHa@z)+Qr(G`jk$a5E@Bss$bBawpaRQ?-6bV!HSqD?781vO$EJxuWm?zE%W@z`~=z{i-*;?$w1 z>w%~xnNC|?%=}IH^#z&keEbz(DzPo|Y^C1vc(^zo@aOT=XR1bfKJV&oxY(GQkvmjI zPXaC~9r32hqS)z6E2v#(W9<&mLnv%Yv|j5RjqXD2^V zEo1YM;jSM5sIM@I5bVuqX(^lqIR;{@CNAEZE~_Sal@|lVtEf_-OxW*Ol&dFb1XK?&~nVYMo!&R|k0|%&fY!c_H zNp7;3`pfnZW;|<2W&XS0E|MROr6F;F_d8&+0ZL(Ae0apWaxZK=G z-mk2^jkaS@*FA;?9pc4si+8sV5|!=gro^33Oe#oC>T0ZcUJOG;M>(kE2*>($676^x zsvnc%^oeNM=>dn@V;fGrYy@f+zVZ4}={~2WaSx$mvnm+s1={-M(ByuJiq#$@_?8GZ zONeJ2n&PtGlXpQ}ET(Pp$CS$m(K8q;dr!fG$7^wp_Qla0NhHoS}l zxiQ1BxkT(b^d*bf&dK0OLF3j zURG+0DSY66H#JQHg(G-46!w&LcSd5ou4;`e^FAB$@X8STnFMu^aQl5aacWNb2W zg5-IZ6$PIOL!zYVF%_=~?JJ#&29O~(;z)Sc8Lv%H(~&rPLFzb4?ETnBcQthZFn|P? zh7D>X$u(1KjC}DA{dKjBzE5AOQ4|?aozGR4FXz5W_S!6FvgRLoxzzQr25Vea(-u_? z_5I{j|83qM!Z<56-Mg>fEwL8jCK+gq`LC&{6<%3jWq6!P>3n)d?(%>t9*RiMr5JB& zc;{H<@=Vzo;u%WGs+(y=_`+nNh6xI{OsYR+TWnEpydvQz76A$1 z{t@f0ngh^AYl#pp56!Gw8#D1jB|QlPvSA-Km{CM>2-`2iBDG@sQ4HXVrEQ_Lm@o{^ z=GPm=f%BPxznnOsanT@knJ|oW+&z`0!?fV~Xabx)IS@E;1RZKdj3%QcV+C_(clwj@ ze;c$SuJ8w-4Q$(4X}!#2lK>8JQ&#wsVakRKO+Nc}RR56pb@IHNncrBLgh|tL_D*h6 z`3k%nVlI_4^1t3?q(3*c#^4Q$H+CuvnWVt0*_pCt5{MgEkpuBz1&DJ3w0SBE<50Ck z=PUtcSvWAKlx7OYA$k3mqg70(^JB(j;Ul}TT5Y4YBvr8?8E&#YcAVl#;Je(cXtGF5Hz0kxkI`?C@8OVS z{4%1P5N}U1Y7cmTU8~d?l%CTZCbJ@xP7ZT8+17ZueBW*+t06`5Pax2v0h<2I9&Xds zm&GjE2CpPz%wYOn29Gp9d=zURD6oz}tynZsHB`kYp-448ea*=g+lMw|qVD)*E7|%R za8YAaG=xWUT@I!t^ezp)ICMD+%TB{GVpJ4_9dL z3AsRlQPnx_jK@lq~fr`Z#llkVom1q!pF7Rs{W8}FsokZn!WHwiET(%7LggDkU-v>;zWQQl|+&{ zS!A_W2b6p*p5Z+J9^TPCq$q#^WL_ORwn&_K#y4S)J;h zeB-m95pB>;kRaHZ=wA$?1;nDU(QkyXLU^vsEc7zvhm6FjD|eb~I_Du9x#K7V&RaZB zEf-CU%<&;x#F?{J#DEG4Z#~Y0NCa>B7b)7|#inABMc4JzwH>Gx5j}CL;gqrUQ*OH5 z(9FZF9eSSO=(M_jNqF*-o!HtHMvZt!PgET38nk;7GtO;Y?)mF74E?RPE@C;W6s3s* z2~r1h2$57%|9?0&$MIih_Q+?v%Y%p&MP3oAv0*R1gL`X{&f;n~=7CN9yKJG*VbOM1 z!NE`plf1Q)sO=-=UNf2N*Sbz3q?!yCcZ3F&UHyRO#%EpPW+rlp;jMC3+GWmus%evw-12$l-MnC+0j;#*+`es;DQ{kGwqz}H&P_9UWc1SN0 z8Vfl|U*deRiE?QPG}rb@#;Q2p>U0QLJN1sos;IxT!Dg7cQ`EKpIL`7RnoU)CduLLR z9To$UY(b35XyVeCTb+bb&jNz$A|+p~Pll`PEnY10K>{V!P_@N@%t&oWbGX zu{|cGV%Pt24`Y0S(=}5YARRvrdEnJ|f4I3gkJVbXJA!!Z5hJ>K=wLc)VWiGtPeQ!g zLEvWESs^YNO{Twl0eW5T2R$DnLFGFoI`%fJWA9;ymF;^Gd!KdMh7yo5+~0tPY88l) z45dS9i^qwcL6NsMr@Y2jd8tlSCxL-Mlz#cnT73_Pjvczv@Hc+MrVnwx3Ul_`JeQ6mgUH2_Ov@&jXMH$Rt6=Xa4(A!ZD-8V=j*K&rQXn( z_U#*L+D-hRzH%I*Gt0kd&^qQlMHqyY_;de=|HJOb?6TbWJq3;KC%~$Pu))JYapB8q zV!>NH$x8>8?rxMiux5z(kuG~`?Cg>5?q#FCA+xc6Od}7Og`I%0wXQ|xGC>70{JT2| z$mI}LDUvZI?bi(^l5U`o-exSb0>VwdJx-h1sm9?hKdRl}=hHJ3X5YR|9`=QvH(EZY zHZ{`;+rd;vTKz6A3|+L~?;ghSe*Gk-%U1NMAp{OYE5qOoeJaK1H!lEpXFOt2NAmj@ zmG3LGbqNX6W+x?v!wEZBEk42Bhwl^kp<&RmjbF=oZS90UHO2n=H8|pJBqoR>XlMKm z!9F$>D+WP>Kw00(BJ6^0A%Rw-d3sTO<=~t3fAm^f+>VI(vY^*H|TN{(y64nWetF@qWG^uq0pO+^a z@X7<0a%>bkk%?+t=7AO?jyT^U9SzQ49zqB_kHn*4Ui)!yD8QsNR1T&II|}pl8p2T@ z1MQvPqR>9SouUdSPa6?b&yBin%s9)CmFd^0(Y$0Z{P6m_*;p@XAS|K`$-T2Evp zvGTKw=d#)_K2z&k9q+f5#e$}@i-e6L7iqlAC*B70MBCfE8p!bu+;fJEHsnc>=UfSY zaP0xB)%qn~L-DQ0QL(GXeYF}X4`Ivo14ZLY(T(_YtQ1dwHN7xssRXjYIdykIQL$ZO z{gn1_ly#qG-vln5h>TPyZ~2X>6t;I;F3q%2eBN@4IpdQpk9TLS-NSTJGZ693MTS-$ zNX=RdxL2}KZ}5i|p9Tfdb+!A-@Z)urv_tBf!8qInL$r$4g^@ayy@~5xnHxenQ||AE z|IAr_B~hz~$hEX0U_b8T%+hF@&m%FoQmBAV(4-LPz>D0e~1p^Lkx4a!M z>~7WG-MzGcmcV93ot>15_8u8=u5e0;}?=x-JXy*R$h%37P)NUq$6fm?p^qv*^T#N zt2rbixs%X@)U;%>mqJ^1%;V*bUJ#`udh;t2KiH3C;k0S*v^&A|yz_t3=Cb#qYV>fV&NpY9( zK6#vsycfXOcRCL|&5oQzf^P)c?AK-cd4KX-vvy$kq zui3Gg0)%4p=-w~v*&cDiQAc+yt#rNc{7xZm-vY=edV9|gK>lP*?e4jrRz%&^HM3c`w2PVY@KC@^Ve^68ZD~|O9M*Ovke|uw-<+J(Ue1Ctw zo=u_3F*UJH{dBU_)Y1!z+qo~um8K9yfAytdbfp0NiV6H|`iWBd$-Kj_znEc9E5u|2 zNe}+TT(}8SZRp-qGPLfDpYA}g-=>V22)12ArzdtM4RW==8(OOwOj#R733q**0EQO} zFs`3%RG|{XVPkLaRPB=z^cUfSio~i4+WmC=12H-zvX=-ncZNv4@V2Q)p`E~D@!hjBP#x>TK0&Bk&Q^toZs~!bBT~WPa?WQ zW?+e^Ns3x(mjqN8!s{F3QBtd$oF?8}vF%lQDj7HQ&-DuN@z>b9D-(sH5~^}>5;Guh z?p&lfVK%#|FR(slMyK=()%E5EE_*baBZ|I6tn46={B`GS^P{!dVkaGXb+?GPx&l`> zeq=mZSXmXYrwKSh#NWyP>#`IC@-lleG*kK=v{KV_j`FCZ$Iz4$&%fzj8?$9B;_H4F zP9qFY7~H$QR#J|Ovp3epo?%OuBkjOHRrZ=b$TL8d~;~1l(-nmD>mXqz})npB52lvPF$)-eiO2@~0bSBFLXMd3W zHorL6`7~;Eh%wm5%$d^Lxx!pfC3v*Ay7J)4%QmxTJRra1fEYe{YYz9D?Z!J)nD`;% zy`WS8Yi9A#*K1vFcMTHNuUp3Q=6J`4W6nh8wzq&R6B3SG zf{dj%z9Nvw?kfQ*DDIH}wJGydP3d--f9^rZk5*O}_{l0j8P}U;Pyb0+^8KN8j+Hyf z(?l#`=AYLoDDo?UX>RQ4R2dcWduU)oBd9K$j^Ps7_2>-*u)+4mzvIRroga64?yn_As>64u#uUn9WSh{N9C^$Pt+YC z0zDPCUGaVs$K(JL%OD$rf^S|}Uy-?f*{)ckI7w&gb-I-mIb*EvpO@<$qvKy>7?ITF zp}ZAGMd(qDR9Z5k(Czs!4gAGDGo-UbraoL9hb=41WRk=O z!U=w6;G8W&ez|(g(9~7E@G<(i;Bsp1OL2LJ^4CSt=5>s#=wO19)DhQ zjqe(W?+mbgurt&0=Rje%YHI&8LjB?p@7on;_4tg$OJzIBEI{Vq)&0$SOoE z0WBNR8FQ&lL_5gAk$zEmcQ>Jc2aJg`qm+YPJP-U0O)@h$+N;mbytOsw%^Qsg?2kje zIWhECp&%gUidi1Z1#3UAheMHD*Rq^vDR+hof7g`ba%frAMMFDT>Cc27 zq$4YenV%DzcxS$(p^Bt?ec1}BTb7IJe;hMnlLg<+BP=5@p5K< z;Bm4LNfYBp@d(g(_gRG5fd!M%JIb$yR}|r1KT5yT$Y)vik8I<0Mg+PPP08HH8uduK zVZ%`mA<*V(Vj4>Xi2Kmi=m1+g$-q~xX4g(qk1M~z{|Jw30h?J~9j|0}bZ_j!e`fz% zIa?grv!2sGqfUxUKsGSd)`R3E_54b^V>|yC^O7}!;pG;dK`&LNEc>Yt zC!0S??1#a}5Em9P228TgH2|c~5#Og}8KCP4C~!%fS$W?YN1*%=@V$t|`&Yxdt?F;M zB%r7Tk-_Lq?4C66>>LROgB41e!f|+yDyPG+P&kXdjiBF80$#irQ z!B<|2?A(2r8LyW`K2-)>yAtzSUqK)m!heO$mRwU!{W?(OiCZU7Lif7`!n2L&rtE|uNkor)!j9x$-lg- z>1%yNS#Q|QrJO9HbKI_?ez4+PYvzMGJlfZW`Tq!=ymG|*nPXN^FVr(5%@vPXz$lex zZ!<^qb8~nW8dFP$?5qX`w~T~Hh$5?-+v79Yz~f~c2GVQ##+TYxGS4bGz7;!$_Le_I z7&i9~cCm?U0{hCeIa&9NbJ(PxI{KLt*t{o77t2IpUWop$6vmhi_~ zfV1g!_z<>PQ6qIp5%p+ybj}Afl<}GAj@281O$x?US?}BCN0XxPyYhDX1?SZ)Ve~Y8 z95VYR`yGlTtofd2Fl`GuM{j#C4wlDW^itEr)7OtrQ(ViF8Gl@%AiaM>Jf0^1igxhK%6uho4uvU z6GmVWNNaI#S_`K3` z>xCo$JAbd%=s^d`gXA`9aN<(w0xj^24FVP#^OJXIs8v~3)~%Ohc0si=^7)YLJLrFM z6R*fN&=A31k(H;7(Jw+i`FCxXwwL42z#%be`V*&dEGZzZm0@?jMY$GBN6YBz2)4rE zJE53I*vk2-!mz-3{O|mD%qLtA@PfoCcaa0gmlo#C^hEs&pSqukybg)oEJ4y6eQB6@ zZi{!~YcR%VFq-&(3$Mm_2Zqd4(kjSor`aStR)vL^Q&lCX&RL1$1EN&|9-jv!#XIu_ zwtq#^%}^$3iTfXJ(p%RnI7|>=k2&dC9O3<@!l$!>Z164{w)GSzrY+lcLz^*o9lM#M zti9~OIf=%6jm1niRaqN6#Mgh^Uu7R`f41XeUlOSGq-giprt(^PFL=P|v7yu6+mLQ; z+g-djAM@r~;q-Zdx@}uyw0F%t6_qw~iTDmq2c^_#=c;M>Do=Ps5~&&-zjt?PT|brZ zCX96GO??d?=>9BC;QkzK8U2*K=^$dp0?+janObCmau>KkYxKnUW7MwY&cRw)_SPi5 zeI!_z?&ao)h3o;QcDH(Sak%j+2Ulqi=a(Co%U174$OLovHED;!6;;N|ZKR?Vaw7d5 zvNaDF_sz&N*yCchK-GIaG^O)c);n4hkO*3(@EWxQIiO3{7yV02;ew6#LU*?_C7MFB zwDT%UEdIs?P}S z14yGoWoxw5p}!TTHeW^Y|ehRn1{4e z%iO@;gzyxnwTsA+PNtU4xo$rFuCO~{A}bpDoW)mK>OFi|&Jpnm1mVY)$%QW2Wxs2h zN+adh4-Ky8&7{W_{3jEWQDX0~4$qt*7slwzPC2b?pQ(k*d;e*n16ZmG~3o~bVN zv%9gi|G)}Z)qI=pwqE4E`z}gh-i>iQ7t?Lo>!c2M??P{+Z#see-1^B;3Q%VCDqLhua3CX3(Fmdt-DXC^hzPE`ad(GgLuj=yVNjUV74C#fSWC;2gFSy+6eJF|JY1y^!sXy}!h(CvTokYFxXY95=*I8OOW7J{qlNA%40Ue8IKQ8FTX zjpN{TM<7SOnXTMQkl&Q(miqv=Lg?U1Qh4oAEKz!WY~G6z3rpnxJ~r>aQU%@CvDykU zZDgJND#U@bb}ecWs!UTNwN>%FRdi0rvNl4}WLK8>s@!JV<)=97ktJTEI`^2l7F(-< z);oPQyG#!av=-9&BL?~D43`XS&+s~KtA66t<|>|kqVy@FA&15;1zzZZ$`+TG>Fpa8 zME(h_kuQ%GN2+ZGaGW5^Ec#?7MD#KZ$bxkPG+Q~PTAyote0EZR#RP73l>U5F+G=(6xUb;N5?k9#X2WGu-V7$sl(gua6VY?869e_# znD2tp>%h@i(YX!2We7WOsjC&qM;y8vUKP;?+cdmyf8e-eRp zsb-asF#0U~w(L<<6erXkE^`#|+&fico`I+O?!VA0WycC$+NY6rirKODmg&cllnxqf zd-*?`n=@&RV!)*KUNM~IAKdU%623E>b>Neu@LKZV^QgLP){E&2TT!bw##YR+UuZ+K zXz;bGMxn$?ZIZiNO2ucxR7M9g&&hP{<*OJ*tEft3&;IPM%#QA0A%oET;($}<5{6aV z?+He8nwXysqisklj-lS2yK{9P7mLJM<7HBR=o1yD(YiQ*xb)%q3AF0t=4oSmZY zdK~O(!hjYW2@5MC>CTiyJ4Xh_k((_n+_+ruZK_hLM(9WwQmTKiKUIfkuo z8mec?RN0c>DtvZoZ%2Ar=G1gtfwogbcHs5HOASbf@%5Z!R!ypHc_yXN$vk%YGeJZn z9R0>z2LF%^resf>>jkTkk4gDwyWj1^`?)+NKdyhLSP}t8!eL?(ZXy3RBIRGP*=r1e zo5%IPa-hLoEc99o%Dj)JV#4?b%_BM>K}<3#<5)cSY!e5AXISK<(8YTUV1TXuga5fZ z`8)rU$h5Gy7TH|sgH%)YI7UduO_K^y4=Z?h5_;SEnn@>LF&F7K)a1b;T_<* zgy*%a0I~Zgi4e)eTF36a)0a1=UYj>N)4vgI@vN5NPwDa4_K>mZ3Q3t~rB`k|?_`Gd zB~gq=S&D1lRe)15ca1+B9Z}@Y*z}cty@mr7wv^$47kMh5=8e6W3}f_u5EY6s-rZo7 z&Kr^Oa5Q0=#WOLYNp=3s;6$EbFyyiBc_3u|KFMr)$}M-qz@+GF(*X^SoAlsM)?m?| z2h{f9Kf;8|*=xD2nCv)6-MPl!72OOsFH!uoP;0n>&Dz?55QIvMXBuG#r z>kw0M9NP?3o+Fq&)!8?QBG|E_VK^WLi8A7!3HnKCqXN zqlBFGrTrH(sz=OlqN1adX z=0n>r-Z!u!59&zP_fw71CE%xMbs-AfOVmSiuJqhuTYO7lyYU_P+J22HsqE~c)%yXZ z;pND>@o6n%a}ZVda74n47C!W_9NnxsFjI`GcZ7b9vGtj8ij+ce_bs!~wdy zn%~UiRpH1)klPc5DJfXKhr7s}O+48fwSjh|&q`Wis~1OvW!O2#`j+1)aI zKkud3Zc)bd4eSK;*d%G?wa;!paGl#$gGtZM`&s=*a6GHBlZ+$NjLqTd>Vw(2u~Z|p zUmuYX(U+5po7pBtSfL3<>qJ2@F^Xc^`CUun672}8p-JC0#8MC^=7>p3N>fUsN2Q6= z!?o^Y*U{v|x=hm!pl|I{UCg@qHigd6xvm8HJZ(9RF%K;Eaj4BjkeW_(+D39{TXSbe zwqgWLyxicMrEmrbWK@lYzNx(^^F9q@U$%O;Mf)#3HSW?I_^*KMty$62hP3qL?4J?& zzGuIMn;Leg4KvmBp32iKL_c=3L@8N{EhL}l*Liv5oAZ42pgmqWH^K_*-im0Os=&{B ziHYPi#9MmWOc`eGG4{*c^e`oBm{TmeCt+CJRMl|$R$Xg)**WtyzaOwZZnCD1a;JaN@u8`qBL@U$3&$v2jc>PLCDL41*Em|0GdaXbkF<Tu0W9a$Z#eX{JxYKg@E=cnytO<2edhLSH1CErlrnW zaakzOYjgckQga?W@mIk*f z`Fb~4rsYA#09v(Mo;lo%wkw6uvU^a+2Zpa(1Fsibb(}$Ux z_m1Y7yKVg%BGS(32FYkr8)~=6&X3e%4FKjubATb)^3>SWOKZx*9BjS|Iila8{n*ZI zjR=5GqUrKbL5?wFt(mO}h5-@eE^E8efY)dz4pp?urtLK~Z1__DPD<<^g1Z6&5qY4_ zo$T2^H%S(r&JSa>L%6jPz2kcqww!U-n_eDNu({~=iX&8Z-rv&%Na+{_?5FQ!Bj_AAV0+xtkz`*UifsVR$Eh~PJ z00zOF7%n$W$ccWv#4jxKSeZAe7N#rR?W(T`)XvUPB1mOP^=rnTu$(hba$6AIYSGW;^ zLAbojgi9c{C!2bCXPMY3mcib?v(;D3(R^sHx&?>`oiY2nNkOwFFFw8BT6PmN<`4&v zWBQfEmO;n^#Oq94KjMe>-2Zcq3Ho(Tc#n7v^HmF$rkbfwg2YS?tY#F^I%MvafpSpi z57$J`h0&tg$-$nvalpG2{supQ1Da=?Hb)1czfc7V;p1D}M=zis6z(wzAIx6_=le}k z#w4#B*JZbepAw|!P7UXP$nxF(v%3P9MYBIX_7?|1ctXCW*Rn(P*83l3;(slOoMvKJ zf9)PM(sP`N*p)HkWuleGySn?&)F?>NAMtAb20YpDl`l%1R{r%L{;?7NLN%MyWUn5B ze}9=ndH{3$^*4Ji3=9+?qnwxli}Uy1i|>;ARYeE@R7D0LP_Mj!aAeQBzP;e1rR7P)vw6wcU=Uu{=)agVj+&csN=&y?!}XpAjQT1@S#29$8ogkBGOJl zp7^VI6YMd)43z3FP*<1zvSL~9j=d9|Z|?4F_yCUiTAmaoDvK`1seqmAzS!hC+=w0G zA=Kq-4B85t(K($TdqrtdlP7T=j!=f`_)A`^A~rdyU@7W$)<8j!7u(a2^tH`LX(q#n zx2==@%=pk}Hy`-A7{h3RdH`=aB)U<4e5!RT{UuoqgtWLD38q)kc}^+Wmu;rnKH2LC z`BD>jD)2E5-Nl%l`-P2P>Ssc9cWuQ;ZkDc6GLj^fW^<|*{X26CQvQu*&qM4ILUT^g1Rw~_2nMh66mFxwe!95JcfAyf%|+0JZ^{1-0>I1 znf8A65m#vk=NI?Q_%Z&|JLS6-X%^T(;uZ-33DjO;wL&!G-CN9D921w!{tSzr@kv#i z&L7z6$5DJt4g^=}^KqHwCmSS>NqQc*!likE5py0UDgI%?t{gHp)B5RV7gA*DrJ>Ze zO%6&NLB=JKjm)XbxJ9}2sUjB%v@8uK9CYPh+W7;;-hq_q8I9S>4~h)5<%DgYl+_n& zNe_Qc*BCS2PA#a$YWt8RAN{k!eiJyHaI#ZQ?YCy>Fln2$q$aO9+wUpa;;|h4X?Jvk z#v4R#?nTeevU?#K$tE8!8vm}=797Ba-20iiU79vMG7+>sYth?xDpTJF#r*B*Vx@=! z8SAyJ$UQ1FkZWJ5Hn7u{(5cvy2DI9MLg?=r!+rICOh*0l#NU#UolXra?e_tr+9Qu- z@v6`#$0m@{w!ys?45)xh1;Bm1d_r4WleV7!az}d4i(0k zJ@{CgSopy7m&#~C3rl=yvQsVU$v(LDTNT!Pl?iz^;ZqN_y{!QOS(`!mKP%jWBB>>l zQj0e(!f_qK4!Oi>j(1c(x)g@xUQSxUYjv_LZYr}`4DBuoza3dh>%KwbGP`Z0@P-=g z8(~4Bo*sJ&FPkPldkQ8Ay&gZ`6yb_Bb;#quBERI;`fc;-P5c^uU7Z}4PXmX4JN_Z# zQ?Q;Rlm3RqhE7qa;yk*9-PC>8XO;0XPsllT)u+W? z?kvod=Ml;mddu10iauuhGIk5g{O)Sce+inxc!d=~EJ(?FN^;MP6u1jq`Tepl+_Wt1 z%wit7bfceMGvS>*F57K&22X(&e03AIQAvkwyqet2mddnAVYPWeu3dhgpUxVlZrzd= z)oaS+CKb8*^~Q47MG}bSQ{r{zN!jn72?<%AR-`|rX*Ro~Y2ISgCQ3vFAwL!5?F*gZ z!(oR)=ZSs8pj-**Er+u0^6WN$PSNWkg3ZI5b$F|Eybpe3W)n3AsGU?cmb*mx7!ekX z|M*r5|DR8if+k-HKrn9;OXLANBWL@p#HDl_!5#Y`3!Xamj^YpwZaiB3hwE#H z@>JzsY8AYL34vF$D!|}LIn^HS$ap83@6r3qO70)Sc=-SpjIR?A&lT)v&&Q|<1XCP5O2rRz>rpadqg}ZESj$@b23{dD9GiRb<=8~~cs;;? z`b=e>#F-s(K=Bc2d#x{s)8d=Z)1%#*m)B7wupsf`ngHHh1E{Hx;$PuTe+#S0qZvP{ z>rB$X>bft@rcRQ6RPf!_-3rf?5g^-8J0Z`I>V6$G-*PL3_Zb*l*U zP8Dh6a~2^=i##kA3j(6&z^Ie)qLyP3FYr$9^tV*kUC6B~yK0AV+anoK+eq(tF*IJ& zp5~~2$(RwJCC|g7d&|V$ItIJfPaRDSUz9iak}n&>JRT>=$FJOvUNHfcdPaDySB2~S{;{VD3#MD zZarFQoNGQ<-Nu(lAyYI;N=O!6Xe#=3=zif~o=ac;V>e`^3QdyMztk1gqKK_}*D%_y z$2iyj7?xA@2cO#!P*e>4^^}OQD1efMN3mRUd*Ke$*8J#WL{_m_N4O}!9d50&P2We_ z@_mr8vWz|1-}2#)g&ND->)oH*9&pg5kB%VKOsqUPw6Bc%0OFS=&62>j+_BGy4D#+| zST!=Uc{PQq2K^R?`CH*Kzf&m5lx0y@z1! z1B8%cMEmivhioDCP&9+_bX-#B5u^XW+4q4%$-9WWrdB&ExVY5t`D#y-+B56q3&#fY zJ#xKh<98OEg4|Rw#L5HvD-$oL7l!9OZv@+-%k{+Rx2%on^>3>UkNHXxjx68c#rxOX zeHSKT-Tee|0H0g&goBi(&u#P$8~OD7>?I|V@bPu)D1xGQH;IiCYAm+zSn!PvDeL`p zW%S6_#uO}2JC3`4&~e-C?Qw7!$AdQAT@Utu@?~87N>)#`Ps&z8i_mP)i6*R64uG))IP=U-qCqYL$~W|U(G?Jb)FDS zxMV*}X`824_|ESX^>@n$B{#nBWXf(gb(_KBbHMjMs#zu_XecYm-}zT3*`LDZnji>1 zNl#l^=X#G64zW}dD6^!-9w1>yFD!SQ&O*r?X+&!G6aYBGS#G&KF1!K5&3c~R#E zXxP0jrHpuQ(ZSSyNB~Co0&je0?>$)_Kq0?(XzB}??)hTUFb%x@a&9!z(F}oYYZ@F~ zN?p0b)LrVkeYsNRYp6}}HU2GH<{b?))t$1(X7_XB$C|xkZRR$Fx;72Q6R;qB`zh)G zxSN4%FzTeM_K|#cP4r07Gs{@vmGy2eNZc)0(Z}$4tz~fS$`{>tv-!B94O_3B@7bEr z#VIqXjnf0LBU1YH?6|Ux<0N==A53t7S7*GDVwiOUo;c$c%r+Pz2+j~$RYMJXmN|T> zLD0dh1S>$m>LFu8B$iq}LROSL5mP{i|Lznf4A)H&ETniyr0~vTm znG5|R_1|(%`j%}ciXU z1t`9+;~uSzN)UdR`RLG%{JNO3lzk84ZWAX^L3fb+1+ZG^)yY8&(>_ht84j1Bs7Zxi z;0ksV8`R&W_^4=SVWknyMt?aMc^XxdSV zS7L1M11&8r1M{&_C)Q?vnbyQ4Xo$&=Cg&dDyHpH%`---iHe#oB5BW#fwv#g*tX{IU zuN`LohCGBzh1jufa;q2OL%w`C(A5YX9C|H)!k5b&$YK!fKR(o*8z?lXNnG=|b${ID z7yj?ciV%miy0&*re1&W$qYSL9Plp&Z?fXv*Zx)J_k;98#e){yw+8E#^nD}&B32(5_ zC=;TxwR~xDC3Z}uC?8VT`a(0)(>!Y5!x2km|Lu1;CVb(O7c>bVKM3yJnIaGZWgGP7e&e_gS!MJ+{9NNu+IV6|yf zLWI`V9jOoNO2;_nMkf>;G~Z@%*k%_Z0p*W2)W?2LvR9kB>7dQ}z_{2odu3Cb=YF8z zpSlyt?MJK}_ZOnyP+zsC(^`Y7Cx29@;Nx&)52A%HFGx0m4|9ajJDR^N-E}L!V4g}6 z6S)+JyUh})Qi3~-f1_qaJbs!`P_vs-ak)-GpX?`d-||$%ITg>Dp4V5AU~CH8CN%+? zD+}q^^zGfp6!!<%>#@1@2%U|QlxC$#B?Dngpd?Z`j0oj0(ilfOE(X=j#y}l7&RIjw zchclcw(evYHNksLaO&ZRhzTkiEhZ*cjm?1xfU|Dic%ezl1yih49 zFNxR+tjyuQWXZJ^MBi7pjK}ds>)?V6rK&TWtS?ng;M@Mp9=!D*)LH)BG;KSe-iCWG zhwgG+p8`Ey=%tP##R}mYC~VJE0s3p6jPxz6fMSlNEUNfsk!8Rvp?LRqNupd(Gk0Je zEMULu-<{L!of#u-m`%x$W%V?#0nCwR^w!5t{I}BCZ}ZvQT6rCR*}vZPSgvwX6N37T z!JFISb)wnFBaK=@`!*$^DSrES=Do)YM`EEDd-Shws80(DXnk?vl%U(2lRb&J*+^ta z38d}HxIX{F=^vkv>v`;yZ?_8hUw!M16k%xZ8)g|EMvu8jwDpVRxV=2ovN=~lj1KZ< z;uosA$jl^96kd<%Lj1=85-GyF5tfZ8QJ->s6GZ0h4#q@{a>~Bt3+TD0ZRvWH9(j?^ zB}9*0&O|SM9Iaulcjko~N7j>xx<;tw)Zsm2d~m2WvtpBm5!j{BEUdO8LTjmglL2iu zl!^lCbiKrqq9^8h55(LT57OgPluwHu5|L!3MM0eFz^99oT5~QDCu-9j*EsL|pdrw& zbG}I#m*O`1rBc;WpAZZ%ic0b3H%~-ol=5o2g z>2A_;AezS?1eixp(tpy_)*^HJlk+rO^p=_Q^80?0?w)Jxr?5dH1g1ceZ{_*U>@FEK z(hO0Nh-3k0vJfVBczvQ3P(WW}?w(#f%T{9`_i?P2qOh7m1*;*oLhEjWd6aXjMEy&l=d0y#u;!hOmG;fj$98=z&D#R7{eR;*ZYFd!c1Kl3r-m(k<)57xG@6!9$%O(pVJ>Vmsgx; zBX*M_r*k6M3#f!x2pD|nX95Vs>7Iy^u2ihuk^wOaBae23HP*T&4z+kaCyWzFAxW%E zi8ZI2yWS5U>tAladyF8y*7e>J67R`Vcs*Y6fNt7Kw90;4yfVg3F+V27KL5o06h}Y? zb=ue*1-&eP7O@qvwHT=#350>(rWEax_Y;RcX#L$2tgk_LXj#`fXYA!&s2XEv{#yQ+ zKJow_Ix;*N8ymSAnPOTqHd1OPtPps=;vJ=R!2~Ur?pS&=da)W+DEAeC0k4YSqV7w4 zKGN#Yi^l;RpZ(8@!$6-ratCs4E{+HmBJTRZ=yY=KF?CobG7094B+L=~rTs@a3QPP^ z`|UhkZ4JLE)z59rd~NxsjCoMM_~Qg{rn}dyrb01evfv2krD_h-zRFEQ$>%0bb{fBS zFApoiKD1sQDFM_GL_%SfKmnnK-ik9}AQ93y;XB6@^ ze|=-orqn#YTpCuMoIS3Dju?|A5jJ$qH?J=&KOD_nnQ-?4v>YG=F58`tA{CGM$Iosq zwGW^3`{{jg46*qjsWbZt$!`+6m0YUK6S&1VgbpdY1G?H=OC+{^EEI{;uJaa@mo_Ye z8)tXs78aVr-Kn7M{_u!HxXm%j`~e%=mNCLu!p4+z6lK^}Rb7XPw_{iDah(idjhqSD z-9}Wuzcu#*YZ|Gq&(E6GOU4DqIbZ_g69#XXRMm_yF(t`jrWTc1mkt<4hYFOw*j3*~ zW{}0g)XheMI4+WZbSjhqF>+k7V6COC8rXG^@S$2I>My+ zep3O+6MpLIkW0`t=Qg%>!jOn#a6KxlQw};KOtY=x<85l(PoGZ)C1JdO{V-gvuvq^vyHplu ze76Js%HTm)Wm%{zf00`r`xP*A3@=FkC>Q#AsBpUm+$IpVya~hOV)Pss|ArhQ<2OJWNNq8LYZ-a|;MN-+J2KER68DD_oMBZHw%aQ{QHjS58h;|h z*B+3}8zb;}0J}0gxFfVQ)RjttsJIxq+w$)%lBU&fx+%>L4mVwk)t{KA46N%d+fe$UE`WJs4| zO+$e%-j|KpL4XgQEfc`at~N&ZdHrQ}k=YIMvKwssI)j%kJD>s!$8UNoO`usST5C38 z6N~CLIycOSeSE?3vF6x~JpS;~go-DQ9UQH5?$34{tqpvYSN`@$&Qck2IL6h*N zEXkZo128w7aVHs2OI-8F-fa>c)BzpD)$@st2RE=rcsW$-^TrcrT}|^mX=QuejbY@x ze0++Gabd&KN$|!yNyyPKZ+3>M+~afgY|9>}25dtvN37J{Iv^GBZOS}#w=tHJM*STp zj)D2#eKUPV%R76XDmMKH1Zz)h!}>50_}X&|p6%6H!Jdn62X%LZXkDpx_FVSvs+rMK z=gvX*_2*<0)s#5H;!TrklcT)_AKDc}0(V)EW~|r%v9PjmF~;gV$abpy?k=YJV0LR4-6|gZYtsk7QnV!U6VqP5~Cp_J9BV_(DpGzYmKyL)k^uAx@#=;pw;L z^+B`Z$n)>@9U*k05+z>>F(m{TK*|5S7thRWOSXYo**U@gPT)UM>!dN?=6Sua*|oR? z1n+L+y+>iAeda;^ub-W!QZH-t|EFw!x5W@)LsHryzgs0Z&Sg~i|J~icr+@~Q16b|* zE1b7VT+&$;5Q!mc4W_A^b;TS@5))Xt-1RjC@o-Z)lz(V%G~llUh~t}?NyN~ z$?fqa>Td1{lqo7f|x?Y-AlFLaoHP%@73&d}u zJt9$5Jg>9XPdd6q33rA7;6&$8u%awgkQz@0JzebSHNcQJCs=1qpc-7C@Yl+)qJHdz zJ5xJWoTLf3xJD_Yx**m6RBb30Fm$@M39c_0-4eH-ZFE8T6y)o8jFIOQDOaW$x*9M< zJnXL{0@JJzckG{-xB8jVGPlbp;1Zki7^#qYD+%M78y2j==28%@Gama3hJij=|GiDN zZ=pGkb>`w;P!1ALPgNJun-DLfCvG?wtwUUZ&L}hl3-ZzMUWJ(^{aYT#mxhY;lYKc|15V&FpJ_A?sst%KX^&5v^~hHW|* z;$oV4B@4x*abl##u;J|sIhn1}P_n|1@W$@N(K%cj~;*O|2A1rUk9FUpzTHCYReYJ8)KJ=woC^+?4)rQfyDk@mEt zv55%JmW4mt8rlB*X$-`C#-`o>x<2q0$h0MUKiEwyIhRET(i=~VBYJ2U8GSqg(u>O0 zWWy9B94d^B!OP(azTlFsHsU7 z8$NI_Txg0B0f-@*3Zs#1dN#AM%p1CwkW6 z;wq{Z-hZoI^z@+bUUS52CIW;2;4kDFt`MImjEW`bT47H z!3IC9KR(a8knDGuGxg8ZF6PCKm{`CV!T-NLGol#d(O;Sm>1ECtV`3o~kAXJ-e0X&Fauma{NFgS3jy4~|F@r_ks4 zoUKQ;@)z|Q29EoL_s9kP(&ua3g<@w&99~^nk}U@|V@O|VJb-(y4HO&Ai^O~K2)>!c zKjoN#0{_$?v(Qhh<_R!z;*XkLtqa$q_v7K_7scj0{(-CrGob=LcZc91m{8zbQ5N%W zd-(6w5;GpX&vt43-~bm|c)hoB*6;Qek2D5_@?AeSAhtBjwK`0*#@+TY$$Z%8>ZGrN z<4nfhvlQpAb4cLoO>>mWZo?m0GwwQhpopA%7y+PHo6sl0Qyalw4aSV(ZB8`@_?_t= zj3@n+HA7bHTiTQfAQ{=c(xIHnV#Z4zl<{tW6Y}w^nz_P_;XoHvbG%ApW?3=B;W)~;G3&3lt~J~&#Ux8hUVi)uIQ3>ES6`^U{68xtjv2Y zSabIfqHnLijH$?%!8lbm#G#XJmOIEpI!-5+W|uGW5l_F1IT@^ns-Rd}V^N(~9fmwP z;wN(L!)QBt*kk=XjeGtM>8mD{W{EDTbnplS$)g|3Pa5vU=2MbRje;c1B4v7sRUC_* zhJ1%*5=C)nXZ+kAnA5RlQmakRMV5)r+BEk_HY%5zwe7R;lQP%vm=YfdH{m7}xc2vn zPk>8OUNSAeQ*KNNUt1BB3_#0JAwa__ZsBtvhZ~A4sgC39L8=hQQy7oO#xk*UTK{c2 zC7N57rqP0uP%K!)&&fN!tCxE57hEV$?~ZkDQ!PNcA~p)(@{=JrZH}MUIYfg5*_0!+`!MoIN97W@WzgxUj7*A#7 zX4IHN2Tg{a!P~AvPF-Prz$ER%8HMr~`1a!D8rr4!;Y`Z9(sDDGo6=;Gq(w0GG2rdx z&Me{t@w(R7gywMRsj8QWj$SP0YX6jyO~Bkmq|l_`+NYlBZo|Z46XifHwS%PTeia7) z612E>Xt=Zls537>GxUh;($q;k1J4of+qcXw8UMV#g`vrRh( zs8phYB1FZdUZl{Fg_3|u^HQM(r3Ls!@~YTq2+^1I~B$J2s@+_0>-|$|HAq44GIL1(giG*1cxMP z0)eW0E&By}OjRqA4Dy2TfMI0N!67BEgn7Q9VPsSkLRc}yDG+3`9+owX&g2mBo?W2P z*q<7E&KvKSCFB|0kE{pUY!l81jX2C2&+$gorT5> ze}lmzXT8P9Ri5gyjMu%!+h%xkgWGuo+~9I?#i#=c$=H~vIBM)7ryt?K4S-8{U}O=2 zw0AX(FIk4wo26xWUBHO-5^Pmj71U2)>4oC0KxO6t$X|nz{*R(wRTHHwg&5qcLQWnZ zt!o0X7ajJDojkTTIyz;gvrU#J8D;)BU48y~Og%T#6QB-QUncTxl zT2WMHck1wI`GLxv0w@o>#sM0*m;8Ke13h!W2rfwIKJbs+a;#Dvgz=C%47zZDdM6I>9 z-p6)c#q>Ih91xR%MeQ`w&mF6%rn)h_lAe`H+O4bJ6Mo(NY)(D&JTyuklT5AEWd*bI zOCx5M&Bq|jj;{mP#~%%MUBuVzib9A7O{?EnwQ27+Ozl$`Ef^E6O6Tc=mP2;N892G+ zqK*p#Ap1xR=E2cU7ISCFvMhrNWGHmXd>|L2mgBPFRRr{O&ZobvAWB(<)S$58Rquz0 zyy>!fo!m~Fzi~0THkXbOc}HV`HmN8Om6~O``QMFMVgJPwc%m@iejQ28g1EYXkHKiu z-`{RD-FJFAOcb_8ni3fr4gu#%|5bSS9B$#Xp`T!?l03aL8KOGk803$h5Qjs2j=J5w z9wbWQ0}9~^v=-EZ+BI?|EZC0VQIoLAG$a4Ga>iHxy+H*kbbyEKIk>zTyH4f<@D^3kCeTbc}^U}pJ}^B6nM?w3l!9~Bx2^SZ!86MvR6q%T(z z?%wL*jK`ut9v#AOjRBV#*}Qiu7%;n5=MP`@BabU0i&maTP?iVW$pF zYETqI&ZWS@Q~Vf4rs7Q5bKsgACKS`@(EJan6pu&EP$*PkWAak-O+&}?>O(LwKm~g| zHC7>~H?6!M1&t4Vx(#zn9y#EM2eJs1wLLq`(qZe{!xloKP!{sfxmX?eLIE|?|1=jO zyMBC8TgcdVzv!gc9gN4?<>`2J7YC9Ey?VfU)|-`m`_1Qxs!(N-3R2nrPK{a8tQvd0 zHc`E0{xdhmrQzesrnfhoA3W-z!KdccjH?25U{vO++ZZbjGWR=?Zg$CPeKQy^b~(vW z2CyoRNp_YAy*kd*%r+_f6<(1g$+r!Zr*1A1=EUtU#2_D95@Y!&Zbg&n?Gig@+QRVk z%z|Z;f-rPwI5f;;|L9WJ^7U-e$&GvPLvJdqW>|uRLqe?;Vv$9@1R7yMid<q)Oj}RaG4*kU&uFjfo{*rD%x*Ah9*g5h20=QDI?Li z`+y!c`8jVjqK|yopiY@DNUI5yf)k=l5XYfi<18vA3Odf}^$_Jo#@kftHy0|uH`|RW zQolA9SA)WMO5J}wsHc<*O#b@pD(FX8{K>PDO(Fbt5{}ztlD-ikxg z9zGW+kF|5%08)LV6<(-7%Cj!5+8)`bEVglnzx@hS5JuoYDCJar>8HJ*Q zQ3P;`NiWbpZqI)RS{8SBbUqf`LsOYZb%$A?o(D z@EIC6aBKgzTV~_Lgl5M3Vku?0L9Wmbk%d|r$uhM0PUbcf4U&QB%-t?pB3_hU;aTWJ ztIoEfqzY1>gYgt4Te=Ny5*>qte|r|qDJ{lN`(W$2D5Hz1_BHWg1Y(RoiTz8>I_&@YSQBfz`Y## zAUr3eM9t}(XI#_0#k>OzJjz!&A|^m`N-)w0hl=+5X~f2JQbO8Pv_Fdu;ZH44osx-9 zlf(y4w&$cT%$NYl|D2PYGT?eZ47%PhvJd(R84H}Q!R6@j#DG#I;@vPcxM}wr!Wq`H z)Mmp{`m9(9BtV^pg0^e~$B>f`1v}M{8#2~&J%>#VvduI|wkIO!C`0R~^MZoWA`oI$ zg38IlNTQYEEao#UjQz<`C{)6c;XJ)71Rc!2o-;g=!ov_m6MiIjRH-SCD(A*y=32@k z=4|-;GnQ9GYglH=5%W>?5QfDGAOdMb9!I+Xe_~qY2^7l5RAI#3u(BKtDVpOw0Is+iH9!d?`iWuonIA_V+Cd zS^P|Ig~;(7Acn_`E@YwM<7zrYX)CZ;vxjmc0liQK_AZiSEzF#$Jm4nokD(}_un(ou zPWcd|$?}SFpk}Ce*OsX-OkLcbA1gxy^>3}$e0YYtsfNLj;lSZNK}~2g(;1-Da3xaI zQ6-aRTm&*!*ZJhfV=4EC;bP=shrgV!vG4+|(DM#5napi0dbc)2ydXGvVSw^8O{{YL zvcZLe{+iK&8>&cYqzQJrJtLQY3on$s3=$?Lu_dLx_Cn|cU>H6oyEo1UCBBZhvDLn? z*q68NvnGGf`ZN=h0!puGLyjVId4((PL?7UP(%&pVrZZ?FSJz&}(G$)^>1>juDf`Wp_EhykaQiI?O#`M`1aNa6VP0}QUu4@Dv1;uJQH2C7$LD;?Hk z@=!sBX}uvtUPOQ?y>8Xg%&NMmjYG`h`UGJ+GT}d$rBE@@#%Mwj#!5ay%U78WPkHNo zA;$|lm4~HH!=%Y#Hyae}5!n!CWo2zH!Mn4-GBt|?CvWw6_Z7xV&&7a&CzfkYmyIP< zFqcX$^zvYnXAdJlL`EB!Aop&5;Qief7Iy?X${=4?Y4W6BDN*El5A5gb;YpGe-3-qn zl-c4B!IOg@9wI|}v;1_5*;*Yn*ks9z<`8Q1bd5PKaglgj`NFgbMRFX>*d>-Agc=c=^stQd@=1hJny8rf#?|2xZ!rFWeTM@V4OpzYHZ`ej)OFRCg$tIc+p0fv z2Sa%$#D-%;KZ`2FL2?Z$EKRqDof}uyj@>-1874R(y}bgf44n0HDg!xrz1fQhNpR#U zpEWnkEUWt%*W}7UJETPtp+ai9Dmcn)?+ivmFt9UNs~Yx;-7h_sYoMhjMxqCbBV!(` znt2znySn%p*6T1x@9PX2$U_~>-$h`i{N&}yjTaObgsDWSR1W@PPqx1Q0M@}uhgS-B zXS{{4%LGb*xTo;;`A-`wJ}*@ce6k?6himY+5Q5lB_*e%&H6NDzEU&w3jGF~S2POZM zxI^M#;`Lx&tCkmdX+V&$J2{FJ}&@!DR4_<w4x{Py zz`V|Xm>((Z7_t*cMS*CZgqqU7m|tqbCQjO2z!^MhJSZuP(vR`dE ztd`~?IqN7KEGWrD(>7hVrT&)qV#1)mY zHgPWKl-*3MbErx`P-Nvq>cCE0_o+1kWt=u#V53Djp0z@!D>&N@NwIjgIH3DTlUp`^ z^V+d#!b;URrpxJK(wYG>UCW?HD1X5oEp$+c1A;7DpGBc~x=^$(1-Kn)VoK2MJ+@XW zAyqPk73E=_%`tD7TjVW`JHHlxq61Uw8s`&-3wwG(pfN(j39B#9O%69qMGl6ib~-O= zPzgUl$H@NB38SY^Bw1abUdz}DL@X*}zU>MiHvR{(T!=U5Lu#CSr-r-b0O`fAH;gO- zVSfAbEE*rO!yVIm27&k&8**4jJjNEbsBxiJN$imhL+<14-L_uULaS2huZ3t;L^8e+`01ci}+{6Y{n!&Y05vo?NnI6OYR+N@;t;uvQ7O&dcuD znQ-I98I+m=8A`&Z%*2r75Hhm!*ENHL?8#xwWe1?AWBzKjEPWuCqlk}yV`7Fsc1tGv z7ijZ8a$JZc^Z#Iq(Pw!i*TP$17jv_RK;c}-w>1B3`^>UZ zRGHgWkTi@CB|$SaoAGIXbwu*6MKO45zVk9>p~8G;X01?ifCz4XoLkCK4`0jqA;+58 zr2g&flThk>!||t^jx$GNWI36)X*<`t`Rl)Hh?Co4mzmK+FMPwg4>#cumJ0uGph~9N zj-C79y6u&l8q{gJ+e4+33~?-)9}ig4Yq1Zq{oH_K$y#8Z?YlIx#3k=%gNld0qeS z(8Q<4A}#eKs7JQbqj5|Au@N~z!#(vYLv3v~?>p&`r>y}wyZ}Pl4)mf0KWHGy?|mqO zdgLbi5*p7nU9sxF&NAZhIy%U&9v06AGYTt0@u(@B{{->;r&IOs_Nf!T*mqY>QYJNB zb&HQad6s1r{|)uc6Ka0IRV4o#3H%qzsDVtmf&1iW`nzu#^WeY~c`mtKqDHNrMg}y$ zGM*YL6P2I@EAGDs;|%);&LcKQ2+hpexO%u5@d~0+4K(hp&}fh2+de-Eqjs{vJ;;jM zZ*Ac2q(OG!!`hAh5j5b4##|L;_fZZxZlBW0zhu>6qX&SJ!M$LMpBt~#N!l+*A*m$m zs8)O^tL~yK(Aj><0-8B?Ue@C5rPE0nX)Q&OciSri>cP&gSo+zW#K7CwO$_qIe;ed6 z{rOFEyxo;kQ^WUpFX<6Pk=}Z(4$gB-ZOg+XI|b1xH*TmLUr3_LeD};sc6-FI4WGD@ zmr%xdb{MjSLd!=a8FBi2hsc4(_GyX(mooCDk_FNI6;q&PN6C$@Qt5RyG4;NPxz~ah zKHIJIwcy5hb=@9B=iL^hNrdEU$-(;&=JVO_3j8mOv~Z|cWwnvJ50uuwno0>C9Ys!A zfY%)0x}_pYwRC8BP_IEZ@t3#orNvEBwOT#FcJN=wx3^zgyV?M<`X$qr!u5wP@a>#;iRKP{Av zA^rr3?YP9X++50O#I}Th1DLT zbE(C2`zrZ-9iVva*B;2#zVG{d+8KW~`amUI?tf-+JNVH zU%z3jUtNh3X;8EFAdHSevW7UrK7YJ@YFW8469ioPq8z~VA?Y5U+Az%E@aP{j@3gt9Hs=ThY6D;D;ljoa!jY^6Y$Z z!saw}b^uZ}RY@B&ha+w8`%*e4OFcBk*KI*_J?-jvdL=IkICE9ye&4{Ll83W8TCg{> z)tLEe6K(xl1Ruu{pM!Y3MH>avXZ)@m5Cdb9p9wW@GeM>FIBWZsRhlzmTl5nyZ+KS}Qu~b9qWT3LKzfR#X@6 z#G@^5%z<@-99T?^Mpm0mBZJ#ymM_z{<_>W61RQsQ={bFzN@fl#t_xKJjLXCYeznT!+PhJSiPHc zU<7!aW#>TUv4}oD^oW(=&&tG2JBn*qMYwOp%E-P5;IZu-o5paBncBeKn^w`qSU!g} zrvjqwl|y&7G64}ikT+2qm~uAgyTb>W7^CZ%hXtx8GG`HHVkI}5GT;Rg{!f*!@T$pVf(NH~I8v`L!Rk;F|xkbK;yZsoW5}^ToFb055215g$;PDTL3Xi=Q?2%H$-S zn>XNaS1|h3T=2WThGN}mDvThVmuWwke=I?x>sXYJNpuj5@NfVHv1X*zSw#R}fWc9HNCN&3`>yv`{RpAS} z!-R;{=EI+;F8icTXQ{>6O=*)TY}0yEFvtjqJG* zIo4|3#Mr=x=)6YS5|yG>Q+=Ryv}b#^lii8{N?u}{ks|EIU%HC160^h8EE!xpRyq14 zwUxO2yJbdFe%aNRs{mL7f9&%+QjZIa>W$p{#RS^+N%d+THlcv>+tmSfzFrp#`W;17+M9v8ww(iRnopE^I5Dh0;{XN^@C9_l;+#g{9^cbeH>=5^7|) zBq<@&#HX5UlvwS;1Nfhx-`maOYkwTqT(k=6y)IHYCwRq4U&R%=WP(qAa0elFdb$>R z>z5B+OkwUpB}26}s&dQe9L0rK|BNjX$@c3p`{TDZy<8BthrPL|jd~(_-51MGv;7!i z&Uvvw>e<}O{o1@m@JIPk&N9MP^Q*xtLDx1sbke+(so6q&KKS(6QS5} zzeZwlNX+&&9)kG!{Y8v}RF*B=?ZqmBcuN1a8f)HMoXuh6+R{x&@_wxcbFb<<(rEV7 z(0&HTzlWs{@FfxZS;N`gFf@?FHfZL~(dDJoXulEx)|iZ*LU+eJIs^_egF(0E3G4fYT`Tc=y>2&EtD(GFYnUb>!N(svP8o#Sht z@qgK^YUFbh&ujd>&Va{c!x=Jn{N4`R`+4Qe$GrUm&za!oTis#v6?~S%T{KyBxlNZV z8H``DoyU$FhBCZ92S6(;P{Py0D?YQmPj4mC_qTR1eB7R?8{5gnE-GS!qmnY&H2%lq zc1w3c*D%TnG1+!EX?Tmbz6A@#WInaQ8?@N_;HoC}CN!HLjTy9CJas%eKK3>E=_+$5 zaI(oBZ3l#_4HHwB-jLG(Z6k+-BlnlvY5C75IwWdE0Nn(Ul1ta_@gqU2ZA*fhLIL6M zL}!;}D%W=Qa1B4n)!{5Cdx3YxRN3uZj z5DN3kGx@PaG{F75lHY!CAjAgd=C_4Ox~4AAq_yps(w0tAX_PL{B{5S{m|hjv^g{*Q z<@pdNYz2d@`uO|X4PDtjcBj#&Jhn29VR`@ZmW>VHXkOV^kUt>D)zR}8tv2rQ`tjL% zBj$E9`A!#oUyu!xuD3xoGGq`V`6Hrpf^1|kBaDkbIR!H5{0Xq!;BCw!3S~#m{e6*G zrd32Kx)!KT1IHwvPG*q{qhns(2Lzw4_h#R8YxqzGVE(@UeaoGrGh$Pm`|C4JbAE`%udIwdI`?H$4%@nKcMwNBC?HIo$v+8~q$J%R{c@o5S z%77ZH?b;t`XWPP1SE280%yF-R=zSna9T@4Y$I7T`bE`XnuKvNAq1R(Mvoz8Rvg?xLv@C4aL^|ED?3Ya> z6X{0YxR>yD|BSEdgsU!dg7cyK1PTIXw#6aU5lN~->o{kDCHK9WUk#7BsjA=*r+uXN zekV3BsPOi%uUA9dMg&FoV;sUaMSTs=m#nVsVM{PO-*W~$Abq$b=d&GgPctLR3!pmu>m^d@G3x<_HO985VV(|9*gl=%i6jU7@jb zF<{{`!|hz%E)8fSrCzR+$Ee<;*=fF8UrA{L_;6LL!rfmx+wi_~VNElMwjN2R-M-y< zy_JNsR<%z@lp@+YnAQm1TjqC~yWF&_pAQ@07~X9PJQTWpsq^A`EPivnp|kxwp1xB{ z@&MLyj{qMr_I^K`A4_RMeta(rYT+rp%f|A2R;n0|>1oNFA=`hyCL3NY1a1$i@u^C~ z;~aiofU(Cc=QuVUyKueJ6TK;)P&nw(?fon(?<%iFe|jonm;DFuJ~jG9E2+4qDs&y` zmpeU_1+h-)^64x|Mw>(nfK?MDazs~NXUD`|d?|olvT1LjZ6DHLK#MAxh z6}+c2Kf^sBt7bo;n4o%NZUpv+9>6ez^+vS_SLbV|6Q=NmHFIDf3?0vhK75|gfIizktcY^i+y_}5c1S?)5Jz= z*>G@G;&F>N2sG%*jeS!LTPM4443H933QO~izh8z+f<$%fUfi5dH+`mF<@lwB6;p>c zGK_NCOG{tw^t;seK~NrIzThL!afD;<&ur@x0^D1;UfG!4rHK6J-32uarSQ|r&DItZ zooi8Ha30H8lc}*e>!0ifhY1kac)`6QF^e{5ev#DhP7}vWOD?EZIrbYX8r>bPiWUv@ zHrJ4(e7|;Q@#%C-4Gn2tO1O`*WZmd;@?%0Y+h|8=PY5bXI$q4fI9iQT^*5RCDG_;whAw&L)|Bn#zOa{6@MkJLei|>c4`1ivlW{4m#b{F^C{R zzSCGle!)}1Z7WXL4kIgxWwT|X9ke@xYC%nk*&n+d9RIvt&opT=erGqck-e#Q9RBL4 zFZ)y9%gW=RiJcFCfgXy4mU(AGULglc=bJh|13eMNUAM;c<)5SBo;T)K{h6_B^2-jf z#hWnZmgp2-*E>04#mG(iVA8xI#*153-c)}V&iC*AZ;8H(35Tf{hU!b|U18%Lrl$8= z*|PTO?>^sX!|y&L3_F+kRum@)aY7bacuZ3*X8Ka&`da-HyL;=S+u=rf_|7=ghCnow zN7PtmG@&@aW3mx0&kwXtcqERN2veL;j$LrOY2-aVsv2zJWWk3E;$)+Cq!j6 zo<9m$yzYO%J;j(oWs8#C8N{CZ9_g3F1I`=~wN4oAu5&QkPW^=n#yzu30UtfC4I`-s zQvhPOrnNy^-)|+#p{KdSDpS75DJul?`I_*skvw{S>p|bEVu5luKx2L$PecME6x7Ez z7_?c!2*;cY8vZSq<^~~rl-7auas$HZ(1(1@$=3%8OXRw<(7VIU>A8V|>z*5orj4<^ zDxc4IaR|kCe}DKF%^cFj#(hwDA|2V3izVB=GFq0$IMbrxW#-7@PTu`B+vC%*1EY&} zDq{ut)Ms=ixk$$dQ0lC*`lSZKwsmAQn|6c)AaRS@8qHdWW*CY;B2pzQljM52>tdZ3 zJX(7LerHwRw^kKnH`Ng9%yzhY5R0U~mbzQl2tv!LI4XFO#+|uO0lm*bYp9t?=Nef; zS~+&jj>}L>s7tR$Zr)Ly>ESUgR?0Y*#xZu`JKS3{bmP`sbac-)ytwVadcII$IyM&n z-0w%X)huoRtl{H52V_kOPH>i=ty}usue7zZW__jCx{ZM4V!3+&u`WWo@Tg1xo}hG; z$yPrSV>%F_Hu=QN7tYQ)TgMAbU?H=nkNe|xqH_T0ZE8=X?pHv+IMbn01H*U7KZhaesDZr810QahA+PDoXP%HL0?o9(;Bq z1Iqrn@5!>0NQ24*!~H$!!&N2NrJP$*X*GrO+2F7#Fq&3mvOGiig5ClHd;5{6k2{K2 zq!o~Yg;n`?h=^O0v98UBBnL*r{;wl$WnrHcv=NG5sFDkA35 z;~cps)gK9lv8;lEO4gtSFS`%{ca8OiKCDqUx;za)1`};sS>a_9?C7rGMbYIw2c_suO zw26k!yfn7-V$x343|fO-Zmi+MFD@M3NsD=sCIw|Sa5(r&eY(U2%gv}INMR(8 zB9KZR-1UL#SJU7*+cDghSCD@RV8S$MHw@&UFXz4*bC(N{DDR9^wPSHq0Roo2YMNi~ zlHcu*jMt`AR5KxFOFuM1tIW|lGomMN{OTw?(MI&X8^s~j9%j5_b2RaR$@Lbgq*8XD zvc%mM^0Nv6cOOu3haQ13scUhFMu9{JTLE8tGbjL~jga}ZF8^tx4JuOjt1$gVw8p>W z5vxpUYR~)7t5MpV_kEf9_r*E6vDH~^hhgHUsM8C3Jn#{II%qqg1kn7CtBidXn zimC7E%RUjRkuas2=59)W3H)*Ow5yT-yf$lOKiABiR#Q3t9()y zkPKNdjeA6ufe$}9XCPmi=t#fbJ3|E4E=Xx%iQ)|QtN3|?O3`opdW4%BK3iFStCM|X zZ!sbil1G;LuKl!tX$ctb^EVydFC}>uOZ`vp(wHY$6;D{)IE^6&m8n5$gHOlU<^A^; zC6U_4d4kUjjn4Nx=huQ*2>tif)eudewCxo?+`9-Qh3O>&}4#>gu77=@#vZq{a%`iq^5_&BJi( z@TjQMyq}1O8iM2m{uwf@1V_Pd9TaSB=CP83lKn8T{J*-^^q^VM(V(xAt=h!v+Z*Rm z&EMF1_*_UN>#4mhYm9}upWNTM|fPj)h>R2L0j)vKs!~FL;-|wYrxO}>v!qJdCqvO zcuV8q+N7h7_q~^wN|*udf~tr3F|L?R$RIpi4#IYTb(U^QdbwE-8>YmdJEC(I7jW*%r|RN_!kEyPf0h2 z)lTKKkP2a7>ViTYb}$z?aO~cj&c-Xfpl-?m)YO&h=A!MKZP$;i#~A`1OwZ#rm$50r zpe5xrmh~zAJknsoGGu%`by*k^TAxiUtQI1~--SkyAFwpe

    >{&aGw*6luH#!@UZ) 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%0AkV!u# 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 Date: Sat, 9 May 2020 00:24:09 +0000 Subject: [PATCH 044/419] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f4aa64..3c68a85 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is to make setting up of vim 8 && neovim 0.4 and above easy and a breeze. Moving on I will use vim and neovim interchangably because they are very similar under the hood. -![Picture Of My Environment](https://drive.google.com/open?id=112xtA4g-MGwFNYd9svOcCjD0hsAv0Tdj) +![Awesome NeoVim](https://github.com/Ultra-Code/nvim/blob/master/assets/AwesomeAndConfigurableNeoVim.png) ## Requirement From f08950d9c8cb525f173c7ef17e6e6df074be76c8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 24 Jun 2020 21:53:18 +0000 Subject: [PATCH 045/419] Improve interaction with nvim when installing vim-plug More Info is to be given to the user when freshly install vim-plug after cloning repository freshly so as to install all needed plugins --- vimplugloader.vim | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/vimplugloader.vim b/vimplugloader.vim index dd9da9c..526cb06 100644 --- a/vimplugloader.vim +++ b/vimplugloader.vim @@ -1,5 +1,28 @@ -if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) - silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs - \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +"Vim-plug Install and related settings + +" Auto-install vim-plug on different systems if it does not exist. For +" The following script to install vim-plug is adapted from vim-plug +" wiki: https://github.com/junegunn/vim-plug/wiki/tips#tips + +"if executable('curl') + "if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) + "silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs + "\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + "autocmd VimEnter * PlugInstall --sync | source $MYVIMRC + "endif + +if executable('curl') + if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) + echomsg 'Installing Vim-plug on your system' + silent execute '!curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs ' + \ . 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' + augroup plug_init + autocmd! + autocmd VimEnter * PlugInstall --sync | quit |source $MYVIMRC + augroup END + endif +else + echoerr 'You have to install curl to install vim-plug, or install ' + \ . 'vim-plug by yourself.' + finish endif From c76f34f608a57b9b91153de81e36861eef0702f0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 24 Jun 2020 22:07:54 +0000 Subject: [PATCH 046/419] Format coc-settings properly --- coc-settings.json | 55 +++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 21fa4d7..94a2e2b 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,8 +1,8 @@ -{ "languageserver": { +{ + "languageserver": { "clangd-10": { "command": "clangd-10", - "args": - [ + "args": [ "--all-scopes-completion", "--clang-tidy", "--completion-style=detailed", @@ -10,28 +10,31 @@ "--header-insertion=iwyu", "--suggest-missing-includes", "-j=2" - ], - "rootPatterns": - [ - "compile_flags.txt", - "compile_commands.json", - ".git/", - ".hg/"], - "filetypes": - [ - "c", - "cpp", - "objc", - "objcpp"] + ], + "rootPatterns": [ + "compile_flags.txt", + "compile_commands.json", + ".git/", + ".hg/" + ], + "filetypes": ["c", "cpp", "objc", "objcpp"] } - } - ,"codeLens.enable": true - ,"suggest.enablePreview": true - ,"html.enable": true - ,"html.format.enable":true - ,"python.linting.enabled":true - ,"coc.preferences.formatOnSaveFiletypes": ["css", "Markdown","dart","json","typescript","javascript","graphql","vue"] - ,"eslint.autoFixOnSave":true - ,"prettier.eslintIntegration": true + }, + "codeLens.enable": true, + "suggest.enablePreview": true, + "html.enable": true, + "html.format.enable": true, + "python.linting.enabled": true, + "coc.preferences.formatOnSaveFiletypes": [ + "css", + "Markdown", + "dart", + "json", + "typescript", + "javascript", + "graphql", + "vue" + ], + "eslint.autoFixOnSave": true, + "prettier.eslintIntegration": true } - From aee348b22a05f2d1ab78c7876cb533cafcde1053 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Jul 2020 19:00:49 +0000 Subject: [PATCH 047/419] Enable autoformat on save for yaml files --- coc-settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coc-settings.json b/coc-settings.json index 94a2e2b..dfd60d0 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -36,5 +36,6 @@ "vue" ], "eslint.autoFixOnSave": true, - "prettier.eslintIntegration": true + "prettier.eslintIntegration": true, + "yaml.format.enable": true } From f40359ddd8ccc3587346d4e85e20a15121ca3785 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Jul 2020 19:06:22 +0000 Subject: [PATCH 048/419] Prevent coc language server from been loaded by default on editor startup --- plugrc.d/vista.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/vista.vim b/plugrc.d/vista.vim index c03a91f..0958798 100644 --- a/plugrc.d/vista.vim +++ b/plugrc.d/vista.vim @@ -30,7 +30,7 @@ let g:vista#renderer#enable_icon = 1 " Executive used when opening vista sidebar without specifying it. " See all the avaliable executives via `:echo g:vista#executives`. -let g:vista_default_executive = 'coc' +"let g:vista_default_executive = 'coc' " Set the executive for some filetypes explicitly. Use the explicit executive " instead of the default one for these filetypes when using `:Vista` without From 8f1795a104538489eab37f53f50f5c9c1ea05eba Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Jul 2020 20:36:32 +0000 Subject: [PATCH 049/419] Configure cmake-language-server for coc.nvim --- coc-settings.json | 10 +++++++++- mapping.d/ultisnip_map.vim | 7 ------- plugins.vim | 6 ------ 3 files changed, 9 insertions(+), 14 deletions(-) delete mode 100644 mapping.d/ultisnip_map.vim diff --git a/coc-settings.json b/coc-settings.json index dfd60d0..b6dd5a2 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -17,7 +17,15 @@ ".git/", ".hg/" ], - "filetypes": ["c", "cpp", "objc", "objcpp"] + "filetypes": ["c", "cpp", "objc", "objcpp"], + "cmake": { + "command": "cmake-language-server", + "filetypes": ["cmake"], + "rootPatterns": ["build/"], + "initializationOptions": { + "buildDirectory": "build" + } + } } }, "codeLens.enable": true, diff --git a/mapping.d/ultisnip_map.vim b/mapping.d/ultisnip_map.vim deleted file mode 100644 index 47f6a6f..0000000 --- a/mapping.d/ultisnip_map.vim +++ /dev/null @@ -1,7 +0,0 @@ -" Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. -let g:UltiSnipsExpandTrigger="" -let g:UltiSnipsJumpForwardTrigger="" -let g:UltiSnipsJumpBackwardTrigger="" - -" If you want :UltiSnipsEdit to split your window. -let g:UltiSnipsEditSplit="vertical" diff --git a/plugins.vim b/plugins.vim index 8f31e27..c2fbf2b 100755 --- a/plugins.vim +++ b/plugins.vim @@ -81,15 +81,9 @@ Plug 'neoclide/coc.nvim', {'branch': 'release'} " === Code Snippets Plugins === "For snippets in neovim -" Track the engine. -Plug 'SirVer/ultisnips' - "Bootstrap snippets Plug 'jvanja/vim-bootstrap4-snippets' -" Snippets are separated from the engine. Add this if you want them: -Plug 'honza/vim-snippets' - " === Syntax Highlighting Engine === "Syntastic is a syntax checking plugin for Vim Plug 'scrooloose/syntastic' From 63f7211836d87c8e8d3254d34b066b50d3f77492 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Jul 2020 20:37:35 +0000 Subject: [PATCH 050/419] Remove ultisnips from mappings --- mapinit.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/mapinit.vim b/mapinit.vim index d9a5af3..d522170 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -13,4 +13,3 @@ source ~/.config/nvim/mapping.d/multi_cursor_map.vim source ~/.config/nvim/mapping.d/folding_map.vim source ~/.config/nvim/mapping.d/dart_map.vim source ~/.config/nvim/mapping.d/terminal_map.vim -source ~/.config/nvim/mapping.d/ultisnip_map.vim From d10fe73066b3e13f33865ad93a5d2d9ed8dc3795 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Jul 2020 20:38:15 +0000 Subject: [PATCH 051/419] Add coc-db to global extentions for coc.nvim --- plugrc.d/coc.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 8a2840d..4a907b5 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -58,7 +58,6 @@ command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organize set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} let g:coc_global_extensions = [ - \ 'coc-ultisnips', \ 'coc-syntax', \ 'coc-snippets', \ 'coc-prettier', @@ -75,4 +74,5 @@ let g:coc_global_extensions = [ \ 'coc-html', \ 'coc-flutter', \ 'coc-css', + \ 'coc-db' \ ] From e9fc00302bc3dc8b4b79d00f2906236464a49c43 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 7 Aug 2020 13:23:05 +0000 Subject: [PATCH 052/419] Fix issues with cmake-language-server --- coc-settings.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index b6dd5a2..737beda 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -17,14 +17,14 @@ ".git/", ".hg/" ], - "filetypes": ["c", "cpp", "objc", "objcpp"], - "cmake": { - "command": "cmake-language-server", - "filetypes": ["cmake"], - "rootPatterns": ["build/"], - "initializationOptions": { - "buildDirectory": "build" - } + "filetypes": ["c", "cpp", "objc", "objcpp"] + }, + "cmake": { + "command": "cmake-language-server", + "filetypes": ["cmake"], + "rootPatterns": ["build/"], + "initializationOptions": { + "buildDirectory": "build" } } }, From adbb47daf4e4d825a48b64bb9220c993dd5808e1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 24 Aug 2020 00:40:52 +0000 Subject: [PATCH 053/419] Add caching for systax highlighting --- plugrc.d/airline.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugrc.d/airline.vim b/plugrc.d/airline.vim index d7d2b57..2c97c59 100644 --- a/plugrc.d/airline.vim +++ b/plugrc.d/airline.vim @@ -1,6 +1,10 @@ "Enable powerline fonts symbols let g:airline_powerline_fonts=1 +"enable caching of the various syntax highlighting groups. +"And use :AirlineRefresh to clear the cache +let g:airline_highlighting_cache = 1 + "Set terminal color to 256 colors set t_Co=256 From 4c841e2ef717b6733eb6707384cfc263d5c47093 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 24 Aug 2020 00:45:52 +0000 Subject: [PATCH 054/419] Remove the bash shell variable --- editor.vim | 3 --- plugins.vim | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/editor.vim b/editor.vim index f0b5db0..0a6fef0 100644 --- a/editor.vim +++ b/editor.vim @@ -37,9 +37,6 @@ endif \ | exe "normal! g`\"" \ | endif -"Sets the shell used for executing OS command" -set shell=/usr/bin/bash - "Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if "available. This will store the multi-level undo information in a file. The result is "that when you change a file, exit Vim, and then edit the file again, you can undo diff --git a/plugins.vim b/plugins.vim index c2fbf2b..2a450dc 100755 --- a/plugins.vim +++ b/plugins.vim @@ -106,6 +106,9 @@ Plug 'ryanoasis/vim-devicons' " === DataBase === Plug 'tpope/vim-dadbod' +" === Documentation === +Plug 'kkoomen/vim-doge' + " Initialize plugin system call plug#end() From e64e3882ccce56c385dcde0ed9e237b1093f07ea Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 24 Aug 2020 18:34:42 +0000 Subject: [PATCH 055/419] Use zsh as shell for neovim embeded terminal --- mapping.d/coc_map.vim | 10 +++++----- mapping.d/tab_buffer_map.vim | 27 +++++++++++++-------------- mapping.d/terminal_map.vim | 2 +- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index 0c808fc..fbd4ffb 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -2,17 +2,17 @@ " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. "Map for trigger completion, completion confirm, snippet expand and jump like VSCode +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + inoremap \ pumvisible() ? coc#_select_confirm() : \ coc#expandableOrJumpable() ? "\=coc#rpc#request('doKeymap',['snippets-expand-jump',''])\" : \ check_back_space() ? "\" : \ coc#refresh() -function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' -endfunction - "Note: the `coc-snippets` extension is required for this to work. let g:coc_snippet_next = '' diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index b224e06..4fc660c 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -1,19 +1,18 @@ " === Moving around, tabs, windows and buffers === " -" Smart way to move between windows -"map j -"map k -"map h -"map l -" use alt+hjkl to move between split/vsplit panels -tnoremap h -tnoremap j -tnoremap k -tnoremap l -nnoremap h -nnoremap j -nnoremap k -nnoremap l +"To use `ALT+{h,j,k,l}` to navigate windows from any mode: > +:tnoremap h +:tnoremap j +:tnoremap k +:tnoremap l +:inoremap h +:inoremap j +:inoremap k +:inoremap l +:nnoremap h +:nnoremap j +:nnoremap k +:nnoremap l " Close the current buffer map bd :bdelete diff --git a/mapping.d/terminal_map.vim b/mapping.d/terminal_map.vim index d915323..e26fd23 100644 --- a/mapping.d/terminal_map.vim +++ b/mapping.d/terminal_map.vim @@ -3,7 +3,7 @@ tnoremap :q " open terminal on ctrl+n function! OpenTerminal() - split term://bash + split term://zsh resize 10 endfunction From 1beddc26b5adf78a813a6b359d79fe3194e232e7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 24 Aug 2020 18:50:44 +0000 Subject: [PATCH 056/419] Use XDG_BASE_DIR Specification for configuring the directories --- init.vim | 12 ++++++------ mapinit.vim | 28 ++++++++++++++-------------- pluginit.vim | 26 +++++++++++++------------- plugins.vim | 8 ++++---- terminal.vim | 5 ++--- vimplugloader.vim | 6 +++--- 6 files changed, 42 insertions(+), 43 deletions(-) diff --git a/init.vim b/init.vim index a611043..07d0d68 100755 --- a/init.vim +++ b/init.vim @@ -2,30 +2,30 @@ "=================================================================== "=== PLUG LOADER === "=================================================================== -source $HOME/.config/nvim/vimplugloader.vim +source $XDG_CONFIG_HOME/nvim/vimplugloader.vim "=================================================================== "=== EDITOR CONFIGURATIONS === "=================================================================== -source $HOME/.config/nvim/editor.vim +source $XDG_CONFIG_HOME/nvim/editor.vim "=================================================================== "=== TERMINAL CONFIGURATIONS === "=================================================================== -source $HOME/.config/nvim/terminal.vim +source $XDG_CONFIG_HOME/nvim/terminal.vim "=================================================================== "=== MAPPINGS ONFIGURATIONS === "=================================================================== -source $HOME/.config/nvim/mapinit.vim +source $XDG_CONFIG_HOME/nvim/mapinit.vim "=================================================================== "=== PLUGINS CONFIGURATIONS === "=================================================================== -source $HOME/.config/nvim/pluginit.vim +source $XDG_CONFIG_HOME/nvim/pluginit.vim "=================================================================== "=== UI CONFIGURATIONS === "=================================================================== -source $HOME/.config/nvim/ui.vim +source $XDG_CONFIG_HOME/nvim/ui.vim diff --git a/mapinit.vim b/mapinit.vim index d522170..daac7b8 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -1,15 +1,15 @@ "Source the various mappings -source ~/.config/nvim/mapping.d/coc_map.vim -source ~/.config/nvim/mapping.d/fzf_map.vim -source ~/.config/nvim/mapping.d/nerdtree_map.vim -source ~/.config/nvim/mapping.d/copy_paste_map.vim -source ~/.config/nvim/mapping.d/visual_fnd_replace_map.vim -source ~/.config/nvim/mapping.d/spellcheck_map.vim -source ~/.config/nvim/mapping.d/tab_buffer_map.vim -source ~/.config/nvim/mapping.d/syntastic_map.vim -source ~/.config/nvim/mapping.d/markdown_preview_map.vim -source ~/.config/nvim/mapping.d/highlighting_map.vim -source ~/.config/nvim/mapping.d/multi_cursor_map.vim -source ~/.config/nvim/mapping.d/folding_map.vim -source ~/.config/nvim/mapping.d/dart_map.vim -source ~/.config/nvim/mapping.d/terminal_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/coc_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/fzf_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/nerdtree_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/copy_paste_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/visual_fnd_replace_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/spellcheck_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/tab_buffer_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/syntastic_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/markdown_preview_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/highlighting_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/multi_cursor_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/folding_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/dart_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/terminal_map.vim diff --git a/pluginit.vim b/pluginit.vim index b5bbfd9..5af2ae2 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -2,16 +2,16 @@ "== PLUGINS INIT == "========================================================== " -source ~/.config/nvim/plugins.vim -source ~/.config/nvim/plugrc.d/coc.vim -source ~/.config/nvim/plugrc.d/markdown_preview.vim -source ~/.config/nvim/plugrc.d/syntastic.vim -source ~/.config/nvim/plugrc.d/neoformat.vim -source ~/.config/nvim/plugrc.d/multiple_cursor.vim -source ~/.config/nvim/plugrc.d/nerdtree_git.vim -source ~/.config/nvim/plugrc.d/airline.vim -source ~/.config/nvim/plugrc.d/fzf.vim -source ~/.config/nvim/plugrc.d/devicons.vim -source ~/.config/nvim/plugrc.d/dart_flutter.vim -source ~/.config/nvim/plugrc.d/vista.vim -source ~/.config/nvim/plugrc.d/clang_tools.vim +source $XDG_CONFIG_HOME/nvim/plugins.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/coc.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/markdown_preview.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/syntastic.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/neoformat.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/multiple_cursor.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/nerdtree_git.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/airline.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/fzf.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/devicons.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/dart_flutter.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/vista.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/clang_tools.vim diff --git a/plugins.vim b/plugins.vim index 2a450dc..a55723d 100755 --- a/plugins.vim +++ b/plugins.vim @@ -63,7 +63,7 @@ Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } " === Language Specific Plugins === "Dart language support in vim -Plug 'dart-lang/dart-vim-plugin' +"Plug 'dart-lang/dart-vim-plugin' "TypeScript Language support in neovim and vim @@ -71,7 +71,7 @@ Plug 'dart-lang/dart-vim-plugin' Plug 'HerringtonDarkholme/yats.vim' "GraphQL This Vim plugin provides GraphQL file detection, syntax highlighting, and indentation. -Plug 'jparise/vim-graphql' +"Plug 'jparise/vim-graphql' " == Code Completion Engine === @@ -104,10 +104,10 @@ Plug 'preservim/nerdtree' Plug 'ryanoasis/vim-devicons' " === DataBase === -Plug 'tpope/vim-dadbod' +"Plug 'tpope/vim-dadbod' " === Documentation === -Plug 'kkoomen/vim-doge' +"Plug 'kkoomen/vim-doge' " Initialize plugin system call plug#end() diff --git a/terminal.vim b/terminal.vim index 52a6ef1..705a6d1 100644 --- a/terminal.vim +++ b/terminal.vim @@ -2,6 +2,5 @@ set splitright set splitbelow -" start terminal in insert mode -au BufEnter * if &buftype == 'terminal' | :startinsert | endif - +"Always start terminal in insert mode +autocmd TermOpen * startinsert diff --git a/vimplugloader.vim b/vimplugloader.vim index 526cb06..dabbddb 100644 --- a/vimplugloader.vim +++ b/vimplugloader.vim @@ -12,13 +12,13 @@ "endif if executable('curl') - if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) + if empty(glob('$XDG_DATA_HOME/nvim/site/autoload/plug.vim')) echomsg 'Installing Vim-plug on your system' - silent execute '!curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs ' + silent execute '!curl -fLo $XDG_DATA_HOME/nvim/site/autoload/plug.vim --create-dirs ' \ . 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' augroup plug_init autocmd! - autocmd VimEnter * PlugInstall --sync | quit |source $MYVIMRC + autocmd VimEnter * PlugInstall --sync | quit |source % augroup END endif else From 241647037904879870a55c8f961bffba50505bcf Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 29 Aug 2020 07:27:54 +0000 Subject: [PATCH 057/419] Use clangd-11 --- coc-settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coc-settings.json b/coc-settings.json index 737beda..cd0d00d 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,7 +1,7 @@ { "languageserver": { "clangd-10": { - "command": "clangd-10", + "command": "clangd-11", "args": [ "--all-scopes-completion", "--clang-tidy", From 8df254b770b576315581ee8e5ff8f21a8b68d7b8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 29 Aug 2020 07:28:41 +0000 Subject: [PATCH 058/419] Fix nerdtree deprecation error --- plugrc.d/nerdtree_git.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/nerdtree_git.vim b/plugrc.d/nerdtree_git.vim index 79da460..a8c1ec7 100644 --- a/plugrc.d/nerdtree_git.vim +++ b/plugrc.d/nerdtree_git.vim @@ -18,7 +18,7 @@ let g:NERDTreeIgnore = [] let g:NERDTreeStatusline = '' "let g:NERDTreeShowIgnoredStatus = 1 -let g:NERDTreeIndicatorMapCustom = { +let g:NERDTreeGitStatusIndicatorMapCustom = { \ "Modified" : "✹", \ "Staged" : "✚", \ "Untracked" : "✭", From 09bcd89eca9dd8d5469ba57465039fabe4bd62ea Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 31 Aug 2020 08:45:13 +0000 Subject: [PATCH 059/419] Remove esc mapping to exit nvim terminal so as to get access to vi mode in term --- mapping.d/terminal_map.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapping.d/terminal_map.vim b/mapping.d/terminal_map.vim index e26fd23..96e6335 100644 --- a/mapping.d/terminal_map.vim +++ b/mapping.d/terminal_map.vim @@ -1,5 +1,5 @@ " turn terminal to normal mode with escape -tnoremap :q +"tnoremap :q " open terminal on ctrl+n function! OpenTerminal() From 55b6d51ab47c47d48f00d4742caf9cf7a2df1287 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 31 Aug 2020 08:46:48 +0000 Subject: [PATCH 060/419] Disable the fzf_default_command now since it isn't used in nvim --- plugrc.d/fzf.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/fzf.vim b/plugrc.d/fzf.vim index 5f585f9..7d66e0d 100644 --- a/plugrc.d/fzf.vim +++ b/plugrc.d/fzf.vim @@ -1,5 +1,5 @@ "defalut regex tool -let $FZF_DEFAULT_COMMAND = 'ag -g ""' +"let $FZF_DEFAULT_COMMAND = 'ag -g ""' " Default fzf layout " - down / up / left / right From dbf317827b25320919139824841df0d8f80fa34f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 2 Sep 2020 20:33:41 +0000 Subject: [PATCH 061/419] Update clang-format to version 11 --- plugrc.d/clang_tools.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 29c371d..4bf37ae 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -1,5 +1,5 @@ function! Formatonsave() let l:formatdiff = 1 - py3f /usr/share/clang/clang-format-10/clang-format.py + py3f /usr/share/clang/clang-format-11/clang-format.py endfunction autocmd BufWritePre *.h,*.c,*.cpp,*.hpp call Formatonsave() From 1129087d033c259c80f604ea5f5f2a88021308f7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Sep 2020 23:53:15 +0000 Subject: [PATCH 062/419] Remove plugins which aren't used frequently from globally enabled plugins --- plugrc.d/coc.vim | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 4a907b5..51b90a0 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -64,7 +64,6 @@ let g:coc_global_extensions = [ \ 'coc-pairs', \ 'coc-json', \ 'coc-eslint', - \ 'coc-emoji', \ 'coc-emmet', \ 'coc-yaml', \ 'coc-vetur', @@ -72,7 +71,5 @@ let g:coc_global_extensions = [ \ 'coc-python', \ 'coc-markdownlint', \ 'coc-html', - \ 'coc-flutter', \ 'coc-css', - \ 'coc-db' \ ] From adcce3b26fdf013df7d8b1e0e4fae9e664177a81 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Sep 2020 23:57:52 +0000 Subject: [PATCH 063/419] Enable a .vimbak for vimbackup files in /tmp/ --- editor.vim | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/editor.vim b/editor.vim index 0a6fef0..cf4f5fe 100644 --- a/editor.vim +++ b/editor.vim @@ -21,7 +21,6 @@ filetype plugin indent on syntax on "set assembly language file to use nasm -let filetype_i = "nasm" let g:asmsyntax = "nasm" "Set clipboard to the + and * registers @@ -53,15 +52,16 @@ else endif "for vim's swap ; undo and backup organization -set backupdir=/tmp// "Location for backup of files before editing " -set directory=/tmp// "The location of swap files ,ie buffers that have not been save ie in memory -set undodir=/tmp// "Location for storing undo tree of the edited file" +set backupdir=/tmp// "Location for backup of files before editing " +set directory=/tmp// "The location of swap files ,ie buffers that have not been save ie in memory +set undodir=/tmp// "Location for storing undo tree of the edited file" +set backupext=.vimbak "The extension to be used for vim backup files "Do not keep a backup or .swp file. I don't like to have junk "files, my source is anyway in cvs/svn/p4/git. -set backup " create a backup of the file before editing -set undofile " enable undofile , which helps you undo a lot and redo also a lot +set backup " create a backup of the file before editing +set undofile " enable undofile , which helps you undo a lot and redo also a lot set noswapfile " enable saving unsaved/unwritten files in a *.swp file set nocompatible " Use Vim defaults (much better!), Vi is for 70's programmers! @@ -153,9 +153,6 @@ set tags=tags "Disable default mappings from omni for sql let g:omni_sql_no_default_maps = 1 -"Remove Trailing whitespaces in specified documents on write of buffer -"autocmd FileType c,cpp,java,php autocmd BufWritePre %s/\s\+$//e - "Remove Trailing whitespaces in all files autocmd BufWritePre * %s/\s\+$//e From a70e9a7af41c515c1fa03895b9f015b6c13ef7a4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Sep 2020 23:58:39 +0000 Subject: [PATCH 064/419] Remove unneeded plugins --- plugins.vim | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/plugins.vim b/plugins.vim index a55723d..3e0f353 100755 --- a/plugins.vim +++ b/plugins.vim @@ -11,6 +11,7 @@ call plug#begin('$HOME/.local/share/nvim/plugged') " === Editor Plugins === " + "Multiple cursor editing Plug 'terryma/vim-multiple-cursors' @@ -21,11 +22,13 @@ Plug 'easymotion/vim-easymotion' Plug 'scrooloose/nerdcommenter' " === Themes and Colour Scheme === + Plug 'danilo-augusto/vim-afterglow' Plug 'joshdick/onedark.vim' Plug 'morhetz/gruvbox' " === Git Plugin === + "A vim plugin which shows git diff in the gutter (sign column). Plug 'airblade/vim-gitgutter' @@ -36,40 +39,39 @@ Plug 'tpope/vim-fugitive' Plug 'Xuyuanp/nerdtree-git-plugin' " === Satus Line === + "Status bar plugin Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' " === Source Code Formater === + "A neoformat plugin for code formating Plug 'sbdchd/neoformat' " === Fuzzy Finder === + "fzf is a general-purpose command-line fuzzy finder. " PlugInstall and PlugUpdate will clone fzf in ~/.fzf and run the install script Plug 'junegunn/fzf', { 'dir': '~/.local/share/nvim/plugged/fzf/', 'do': './install --all' } - " Both options are optional. You don't have to install fzf in ~/.fzf - " and you don't have to run the install script if you use fzf only in Vim. +" Both options are optional. You don't have to install fzf in ~/.fzf +" and you don't have to run the install script if you use fzf only in Vim. Plug 'junegunn/fzf.vim' " === Markdown Plugins === + "Markdown Syntax Highlighting" Plug 'godlygeek/tabular' Plug 'plasticboy/vim-markdown' -"A markdown previewer -Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app & yarn install' } +"A markdown previewer prebuild binary +Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': 'markdown' } " === Language Specific Plugins === "Dart language support in vim "Plug 'dart-lang/dart-vim-plugin' -"TypeScript Language support in neovim and vim - -"TypeScrip Syntax Highlighting -Plug 'HerringtonDarkholme/yats.vim' - "GraphQL This Vim plugin provides GraphQL file detection, syntax highlighting, and indentation. "Plug 'jparise/vim-graphql' @@ -80,35 +82,37 @@ Plug 'HerringtonDarkholme/yats.vim' Plug 'neoclide/coc.nvim', {'branch': 'release'} " === Code Snippets Plugins === + "For snippets in neovim "Bootstrap snippets Plug 'jvanja/vim-bootstrap4-snippets' " === Syntax Highlighting Engine === + "Syntastic is a syntax checking plugin for Vim Plug 'scrooloose/syntastic' +"TypeScript Syntax Highlighting +Plug 'HerringtonDarkholme/yats.vim' + "A collection of language packs for Vim. Plug 'sheerun/vim-polyglot' " === Tag Bar Plugin === + "View and search LSP symbols, tags in Vim/NeoVim." Plug 'liuchengxu/vista.vim' " === UI === " + " A Neovim File explorer Plug 'preservim/nerdtree' " == Icons == " + " Glyphs and Icons for neovim Plug 'ryanoasis/vim-devicons' -" === DataBase === -"Plug 'tpope/vim-dadbod' - -" === Documentation === -"Plug 'kkoomen/vim-doge' - " Initialize plugin system call plug#end() From 59ccd6beeabe819db1bbe0cfafe1cbe25ca407fa Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Sep 2020 23:59:30 +0000 Subject: [PATCH 065/419] Update README.md --- README.md | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 3c68a85..eb69ee7 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,14 @@ under the hood. ## Requirement -Installation of plugins in neovim or vim requires python support -(python 2 or python 3).You can check if your neovim has python support by running -`:echo has("python3")` and `:echo has("python2")`. +Installation of plugins in neovim or vim requires `python 3` support +.You can check if your neovim has python support by running +`:echo has("python3")` __Neovim__ -Neovim does not come with python support by default, and additional setup is required. +Neovim does not come out of the box with python 3 support + +>Additional Setup is required for python 3 First install [pynvim](https://github.com/neovim/pynvim) @@ -21,10 +23,11 @@ First install [pynvim](https://github.com/neovim/pynvim) python3 -m pip install pynvim ``` -And add the following configuration in your `.vimrc` +And add the following configuration in your `$XDG_CONFIG_HOME/nvim/editor.vim` or +`$HOME/.config/nvim/editor.vim` ```bash -let g:python3_host_prog=/path/to/python/executable/ +let g:python3_host_prog=/path/to/python3/executable/on/your/system ``` __Vim Plug is A minimalist Vim plugin manager__ as quoted by their site @@ -65,9 +68,10 @@ $uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' ### Neovim __Note:__ Now the is automatic Vim-Plug installation for all neovim users -All you have to do is clone the project to `$HOME/.config/nvim/` and open nvim -and watch some beautiful magic happen . Thanks to @junegunn/vim-plug and all -colaborators. +All you have to do is clone the project to `$HOME/.config/nvim/` or `$XDG_CONFIG_HOME/nvim/` +and open nvim and watch some beautiful magic happen. __Note__ the evironment variable +`$XDG_DATA_HOME` must be defined for this to work else you must fallback to using +the method specifed below. Thanks to @junegunn/vim-plug and all colaborators. #### Unix @@ -91,7 +95,7 @@ $uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' ### Install Plugins Using Vim-Plug -move to ~/.config/nvim/ and open the plugins.vim file +move to `$XDG_CONFIG_HOME/nvim` or `~/.config/nvim/` and open the plugins.vim file and run this commands ```bash @@ -99,10 +103,12 @@ and run this commands :PlugInstall #To install plugins -:PlugUpdate #To update Vim-Plug +:PlugUpdate #To update plugins + +:PlugUpgrade #To upgrade to the latest version of Vim-Plug :PlugClean # Comment the plugin you want to remove with '"' then :source % - # and run PlugClean + # and run PlugClean to remove that commented plugin ``` And Assumming you plan to get involved in web developemt then you should @@ -139,6 +145,14 @@ for help using the various plugins and extensions to view the help pages and instruction manual on the various extensions +In addtion to these plugins ,some plugins like Vista have external dependencies +which have to be installed in other to use them. + +```bash +sudo aptitude install universal-ctags #enable vista to generate source code + #tags +``` + >>Big ShoutOuts to the Creators of Vim && Neovim. >Another to all the creators of the various vim and neovim extensions. >And Last but not the least __God Bless The Vim && Neovim Community for this From ee77756388efa05e1c9cbccdcf20595f9b158c02 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 12 Sep 2020 00:31:48 +0000 Subject: [PATCH 066/419] Add *.cxx and *.hxx as c++ extensions for formating --- plugrc.d/clang_tools.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 4bf37ae..1a0f4a7 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -2,4 +2,4 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/clang/clang-format-11/clang-format.py endfunction -autocmd BufWritePre *.h,*.c,*.cpp,*.hpp call Formatonsave() +autocmd BufWritePre *.h,*.c,*.cpp,*.hpp,*.cxx,*.hxx call Formatonsave() From 1e1ad1cad2bdb300a9433687cc686cf6f46c317c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 29 Sep 2020 21:24:52 +0000 Subject: [PATCH 067/419] Add clang-formating for inline and template files ie. *.i* && *.t* --- plugrc.d/clang_tools.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 1a0f4a7..b20023f 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -2,4 +2,4 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/clang/clang-format-11/clang-format.py endfunction -autocmd BufWritePre *.h,*.c,*.cpp,*.hpp,*.cxx,*.hxx call Formatonsave() +autocmd BufWritePre *.h,*.c,*.cpp,*.hpp,*.tpp,*.ipp,*.cxx,*.hxx,*.txx,*.ixx call Formatonsave() From 5d1fce7d33b367c131e07ca16dfa7c271fc45f7f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 30 Sep 2020 07:55:16 +0000 Subject: [PATCH 068/419] Add a LINCENSE file --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From f9743580f97ebc7c84d32a7b507d7b8fc5d883d5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Oct 2020 13:55:18 +0000 Subject: [PATCH 069/419] Add configurations for stylelintplus and css While also extending filetypes for clangd language server --- coc-settings.json | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index cd0d00d..cf9245b 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,6 +1,6 @@ { "languageserver": { - "clangd-10": { + "clangd": { "command": "clangd-11", "args": [ "--all-scopes-completion", @@ -9,7 +9,7 @@ "--background-index", "--header-insertion=iwyu", "--suggest-missing-includes", - "-j=2" + "-j=4" ], "rootPatterns": [ "compile_flags.txt", @@ -17,7 +17,7 @@ ".git/", ".hg/" ], - "filetypes": ["c", "cpp", "objc", "objcpp"] + "filetypes": ["c", "cpp", "c++", "cxx", "cc", "h", "hpp", "h++", "hxx"] }, "cmake": { "command": "cmake-language-server", @@ -45,5 +45,11 @@ ], "eslint.autoFixOnSave": true, "prettier.eslintIntegration": true, - "yaml.format.enable": true + "yaml.format.enable": true, + "css.validate": false, + "less.validate": false, + "scss.validate": false, + "wxss.validate": false, + "stylelintplus.autoFixOnSave": true, + "stylelintplus.validateOnSave": true } From 96f34904054383d8f3164fdb246bbecb498b3e9d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Oct 2020 13:59:19 +0000 Subject: [PATCH 070/419] Improve show_documentation func as per the coc.nvim docs Also add the stylelintplus packages as a global extension --- plugrc.d/coc.vim | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 51b90a0..09ac4ee 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -10,6 +10,16 @@ set signcolumn=yes " 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('') + elseif (coc#rpc#ready()) + call CocActionAsync('doHover') + else + execute '!' . &keywordprg . " " . expand('') + endif +endfunction + "a more automatic behavior where when cursoring over a word, "You see either the diagnostic if it exists, otherwise the documentation function! ShowDocIfNoDiagnostic(timer_id) @@ -25,14 +35,6 @@ endfunction autocmd CursorHoldI * :call show_hover_doc() autocmd CursorHold * :call show_hover_doc() -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') @@ -72,4 +74,5 @@ let g:coc_global_extensions = [ \ 'coc-markdownlint', \ 'coc-html', \ 'coc-css', + \'coc-stylelintplus' \ ] From 2a7f8e713c32e6d3827595cd13ef9d206445b97f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Oct 2020 14:03:50 +0000 Subject: [PATCH 071/419] Improve mappings for trigger and add mappings for scrolling on float windows and popups Also add mappings for forward range selection and auto select first completion on pressed --- mapping.d/coc_map.vim | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index fbd4ffb..5927648 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -2,16 +2,21 @@ " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. "Map for trigger completion, completion confirm, snippet expand and jump like VSCode +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 -inoremap - \ pumvisible() ? coc#_select_confirm() : - \ coc#expandableOrJumpable() ? "\=coc#rpc#request('doKeymap',['snippets-expand-jump',''])\" : - \ check_back_space() ? "\" : - \ coc#refresh() +" Make auto-select the first completion item and notify coc.nvim to +" format on enter, could be remapped by other vim plugin +inoremap pumvisible() ? coc#_select_confirm() + \: "\u\\=coc#on_enter()\" "Note: the `coc-snippets` extension is required for this to work. let g:coc_snippet_next = '' @@ -49,9 +54,19 @@ nmap ac (coc-codeaction) " Fix autofix problem of current line nmap qf (coc-fix-current) -" Use for select selections ranges, needs server support, like: coc-tsserver, coc-python -"nmap (coc-range-select) -"xmap (coc-range-select) +" Remap and for scroll float windows/popups. +" Note coc#float#scroll works on neovim >= 0.4.3 or vim >= 8.2.0750 +nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" +nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" +inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" +inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" + + +" Use CTRL-S for selections ranges. +" Requires 'textDocument/selectionRange' support of language server. +" Use for select selections ranges, needs server support, like: coc-tsserver, coc-python +nmap (coc-range-select) +xmap (coc-range-select) "xmap (coc-range-select-backword) " Using CocList From 5d0b8c872d4b91135325b1f5e956b78dce4bda1a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Oct 2020 14:07:12 +0000 Subject: [PATCH 072/419] Change colorscheme to onedark --- ui.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui.vim b/ui.vim index 23ee231..79b86e6 100644 --- a/ui.vim +++ b/ui.vim @@ -8,12 +8,12 @@ set background=dark "colorscheme evening "Onedark colorscheme -"colorscheme onedark -"let g:airline_theme="onedark" +colorscheme onedark +let g:airline_theme="onedark" "Gruvbox colorscheme -colorscheme gruvbox -let g:airline_theme="gruvbox" +"colorscheme gruvbox +"let g:airline_theme="gruvbox" "Afterglow colorscheme "colorscheme afterglow From 30ac913d66b4439373ebecee743774fe94be20cd Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Oct 2020 14:21:13 +0000 Subject: [PATCH 073/419] Improve neoformat's augroup fmt as per it docs --- plugrc.d/neoformat.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/neoformat.vim b/plugrc.d/neoformat.vim index 2f56913..55cb265 100644 --- a/plugrc.d/neoformat.vim +++ b/plugrc.d/neoformat.vim @@ -33,5 +33,5 @@ let g:neoformat_enabled_python = ['yapf'] augroup fmt autocmd! - autocmd BufWritePre *.py,*.nix,CMakeLists.txt :Neoformat + autocmd BufWritePre *.py,*.nix,CMakeLists.txt undojoin | Neoformat augroup END From 092fbfd98d46826911d8025456a7ecb04a303dc7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 28 Oct 2020 16:10:03 +0000 Subject: [PATCH 074/419] replace deprecated coc#utils#has_float with coc#float#has_float --- plugrc.d/coc.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 09ac4ee..9c5c4c9 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -23,7 +23,7 @@ endfunction "a more automatic behavior where when cursoring over a word, "You see either the diagnostic if it exists, otherwise the documentation function! ShowDocIfNoDiagnostic(timer_id) - if (coc#util#has_float() == 0) + if (coc#float#has_float() == 0) silent call CocActionAsync('doHover') endif endfunction From de3bd3ba6be91f88c37ebffa4b21b50acc597372 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Oct 2020 23:08:23 +0000 Subject: [PATCH 075/419] Add tabprevious mapping to tab_buffer_map --- mapping.d/tab_buffer_map.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index 4fc660c..74d883b 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -32,6 +32,7 @@ map to :tabonly map tc :tabclose map tm :tabmove map tn :tabnext +map tp :tabprevious " Let 'tl' toggle between this and the last accessed tab let g:lasttab = 1 From cd07ccbf7c08c0a7681e105ebb7edf934e46de1f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Oct 2020 23:18:00 +0000 Subject: [PATCH 076/419] Remove dart language and flutter support --- mapinit.vim | 1 - mapping.d/dart_map.vim | 6 ------ pluginit.vim | 1 - plugrc.d/dart_flutter.vim | 8 -------- 4 files changed, 16 deletions(-) delete mode 100644 mapping.d/dart_map.vim delete mode 100644 plugrc.d/dart_flutter.vim diff --git a/mapinit.vim b/mapinit.vim index daac7b8..11f66dc 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -11,5 +11,4 @@ source $XDG_CONFIG_HOME/nvim/mapping.d/markdown_preview_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/highlighting_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/multi_cursor_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/folding_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/dart_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/terminal_map.vim diff --git a/mapping.d/dart_map.vim b/mapping.d/dart_map.vim deleted file mode 100644 index 4eb4d4d..0000000 --- a/mapping.d/dart_map.vim +++ /dev/null @@ -1,6 +0,0 @@ -"With the cursor on either a return statement (when it is the only statement -"in a method block) or on the => in a method definition, toggle between the -"two ways to write the method. If it is an expression body method (=>) convert -"to a block body ({} and a return) or vice versa - -noremap tr :DartToggleMethodBodyType diff --git a/pluginit.vim b/pluginit.vim index 5af2ae2..980b506 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -12,6 +12,5 @@ source $XDG_CONFIG_HOME/nvim/plugrc.d/nerdtree_git.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/airline.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/fzf.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/devicons.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/dart_flutter.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/vista.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/clang_tools.vim diff --git a/plugrc.d/dart_flutter.vim b/plugrc.d/dart_flutter.vim deleted file mode 100644 index ddf021d..0000000 --- a/plugrc.d/dart_flutter.vim +++ /dev/null @@ -1,8 +0,0 @@ -"Enable HTML syntax highlighting inside Dart strings -let dart_html_in_string=v:true - -"Enable Dart style guide syntax (like 2-space indentation) -let g:dart_style_guide = 2 - -"Enable DartFmt execution on buffer save -let g:dart_format_on_save = 1 From 7d50cb802f07a81f772d22afa42027c238dd9069 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Oct 2020 23:23:37 +0000 Subject: [PATCH 077/419] Remove stale and unused plugins remove bootstrap snippets plugin and stale disabled plugins like that for dart and graphql --- plugins.vim | 8 -------- 1 file changed, 8 deletions(-) diff --git a/plugins.vim b/plugins.vim index 3e0f353..6e08302 100755 --- a/plugins.vim +++ b/plugins.vim @@ -69,11 +69,6 @@ Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': " === Language Specific Plugins === -"Dart language support in vim -"Plug 'dart-lang/dart-vim-plugin' - -"GraphQL This Vim plugin provides GraphQL file detection, syntax highlighting, and indentation. -"Plug 'jparise/vim-graphql' " == Code Completion Engine === @@ -83,9 +78,6 @@ Plug 'neoclide/coc.nvim', {'branch': 'release'} " === Code Snippets Plugins === -"For snippets in neovim -"Bootstrap snippets -Plug 'jvanja/vim-bootstrap4-snippets' " === Syntax Highlighting Engine === From 27b271392106a2560d44b0c9238570bf8d78a4ab Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 31 Oct 2020 14:43:00 +0000 Subject: [PATCH 078/419] Add mapping for poping tags --- mapping.d/tab_buffer_map.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index 74d883b..cea8e5e 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -47,3 +47,4 @@ map te :tabedit =expand("%:p:h") " Switch CWD to the directory of the open buffer map cd :cd %:p:h:pwd +nmap :pop From f4aeb31630ccd2d35ccddfe23d301f315d355d04 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 1 Dec 2020 00:02:25 +0000 Subject: [PATCH 079/419] Add more filetypes for detection by language server and formatter --- coc-settings.json | 2 +- plugrc.d/clang_tools.vim | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index cf9245b..2871d59 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -17,7 +17,7 @@ ".git/", ".hg/" ], - "filetypes": ["c", "cpp", "c++", "cxx", "cc", "h", "hpp", "h++", "hxx"] + "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", "txx"] }, "cmake": { "command": "cmake-language-server", diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index b20023f..6aafeec 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -2,4 +2,4 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/clang/clang-format-11/clang-format.py endfunction -autocmd BufWritePre *.h,*.c,*.cpp,*.hpp,*.tpp,*.ipp,*.cxx,*.hxx,*.txx,*.ixx call Formatonsave() +autocmd BufWritePre *.c,*.h,*.cpp,*.hpp,*.cxx,*.hxx,*.tpp,*.txx call Formatonsave() From 5b3acfbaccd009dfde85081545811a36350def72 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 3 Dec 2020 14:53:24 +0000 Subject: [PATCH 080/419] Use more memorable mappings for Coc-* List & *Next & *Prev --- mapping.d/coc_map.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index 5927648..ea4644c 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -71,7 +71,7 @@ xmap (coc-range-select) " Using CocList " Show all diagnostics -nnoremap a :CocList diagnostics +nnoremap d :CocList diagnostics " Manage extensions nnoremap e :CocList extensions " Show commands @@ -81,9 +81,9 @@ nnoremap o :CocList outline " Search workspace symbols nnoremap s :CocList -I symbols " Do default action for next item. -nnoremap j :CocNext +nnoremap n :CocNext " Do default action for previous item. -nnoremap k :CocPrev +nnoremap p :CocPrev " Resume latest coc list -nnoremap p :CocListResume +nnoremap r :CocListResume From b88f3e7d8b8f4dc9e007f0a0e4575ff05816a322 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 12 Dec 2020 14:27:48 +0000 Subject: [PATCH 081/419] Remove unused and redundant configurations that are the default or have better default Also disable mouse usage to enable and force more usage of the keyboard NOTE: it can be re-enabled with set mouse=a --- editor.vim | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/editor.vim b/editor.vim index cf4f5fe..8f46535 100644 --- a/editor.vim +++ b/editor.vim @@ -11,7 +11,6 @@ set ffs=unix,dos,mac set encoding=UTF-8 " == Python provider configurations == " -let g:python_host_prog='/usr/bin/python2' let g:python3_host_prog='/usr/bin/python3' "enable loading the plugin files for specific file types @@ -80,7 +79,7 @@ set bs=2 " allow backspacing over everything in insert mode set hidden " This option allows you to switch between multiple buffers "without saving a changed buffer -set mouse=a " Automatically enable mouse usage +set mouse="" " Automatically enable mouse usage set mousehide " Hide the mouse pointer while typing. @@ -88,8 +87,6 @@ set incsearch " highlight search string as search pattern is entered set hlsearch "disables last search hilighting -"set wildmode=full " get bash-like tab completions with longest and list - set number " Show line numbers set wrap " Automatically wrap text that extends beyond the screen length. @@ -136,7 +133,7 @@ set cmdheight=2 "Command line height set autowriteall "Auto-write all file changes -set history=300 "Set the history size to maximum. by default it is 20 +set history=10000 "Set the history size to maximum. by default it is 20 set list " Display unprintable characters f12 - switches @@ -150,9 +147,6 @@ set foldlevel=99 "Enable Tags set tags=tags -"Disable default mappings from omni for sql -let g:omni_sql_no_default_maps = 1 - "Remove Trailing whitespaces in all files autocmd BufWritePre * %s/\s\+$//e From 961fe19e70becba410d2adda9153b00cffa081d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 12 Dec 2020 23:24:46 +0000 Subject: [PATCH 082/419] Remove plugin loader since it will ever be used only once ie. during firstime initialization of vim-plug but always loaded or executed --- init.vim | 5 ----- vimplugloader.vim | 28 ---------------------------- 2 files changed, 33 deletions(-) delete mode 100644 vimplugloader.vim diff --git a/init.vim b/init.vim index 07d0d68..dbfbe6b 100755 --- a/init.vim +++ b/init.vim @@ -1,9 +1,4 @@ "The system wide config file is found in /usr/share/nvim/sysinit.vim -"=================================================================== -"=== PLUG LOADER === -"=================================================================== -source $XDG_CONFIG_HOME/nvim/vimplugloader.vim - "=================================================================== "=== EDITOR CONFIGURATIONS === "=================================================================== diff --git a/vimplugloader.vim b/vimplugloader.vim deleted file mode 100644 index dabbddb..0000000 --- a/vimplugloader.vim +++ /dev/null @@ -1,28 +0,0 @@ -"Vim-plug Install and related settings - -" Auto-install vim-plug on different systems if it does not exist. For -" The following script to install vim-plug is adapted from vim-plug -" wiki: https://github.com/junegunn/vim-plug/wiki/tips#tips - -"if executable('curl') - "if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) - "silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs - "\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - "autocmd VimEnter * PlugInstall --sync | source $MYVIMRC - "endif - -if executable('curl') - if empty(glob('$XDG_DATA_HOME/nvim/site/autoload/plug.vim')) - echomsg 'Installing Vim-plug on your system' - silent execute '!curl -fLo $XDG_DATA_HOME/nvim/site/autoload/plug.vim --create-dirs ' - \ . 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' - augroup plug_init - autocmd! - autocmd VimEnter * PlugInstall --sync | quit |source % - augroup END - endif -else - echoerr 'You have to install curl to install vim-plug, or install ' - \ . 'vim-plug by yourself.' - finish -endif From 24e8081a7e4fbb7801cd4e4dc8f41e489c6e2a3f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 00:22:05 +0000 Subject: [PATCH 083/419] Update README.md with some changes --- README.md | 81 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index eb69ee7..72045d3 100644 --- a/README.md +++ b/README.md @@ -35,60 +35,65 @@ __Vim Plug is A minimalist Vim plugin manager__ as quoted by their site ### Installation of Vim-Plug -[Download plug.vim](https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim) -and put it in the "autoload" directory. +#### _NOTE_ -### Vim +_Now the is automatic Vim-Plug installation for all neovim and vim users +You can automate the process by putting the following commands in your Vim configuration +file as suggested [here][auto]. and open nvim and watch some beautiful magic happen. +___This is a one time activity so after vim-plug has been istalled you can +remove these commands from your config. +The $MYVIMRC is an environment variable that should point to your init.vim file +for neovim users and .vimrc file for vim users___ ._ + +__Note for neovim users__ +_On linux the path for the plugin is `$XDG_DATA_HOME/nvim/site/autoload/plug.vim` +if the evironment variable `$XDG_DATA_HOME` is defined __else__ use the default +`'~/.local/share/nvim/site/autoload/plug.vim` for this to work_ + +__Thanks to @junegunn/vim-plug and all colaborators.__ + +[auto]: https://github.com/junegunn/vim-plug/wiki/tips#automatic-installation + +### Neovim #### Unix -```sh -curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ +```zsh +curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim ``` -You can automate the process by putting the command in your Vim configuration -file as suggested [here][auto]. - -[auto]: https://github.com/junegunn/vim-plug/wiki/tips#automatic-installation - ##### Windows (PowerShell) ```powershell -md ~\vimfiles\autoload +md ~\AppData\Local\nvim\autoload $uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' (New-Object Net.WebClient).DownloadFile( $uri, $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( - "~\vimfiles\autoload\plug.vim" + "~\AppData\Local\nvim\autoload\plug.vim" ) ) ``` -### Neovim - -__Note:__ Now the is automatic Vim-Plug installation for all neovim users -All you have to do is clone the project to `$HOME/.config/nvim/` or `$XDG_CONFIG_HOME/nvim/` -and open nvim and watch some beautiful magic happen. __Note__ the evironment variable -`$XDG_DATA_HOME` must be defined for this to work else you must fallback to using -the method specifed below. Thanks to @junegunn/vim-plug and all colaborators. +### Vim #### Unix -```sh -curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ +```bash +curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim ``` ##### Windows (PowerShell) ```powershell -md ~\AppData\Local\nvim\autoload +md ~\vimfiles\autoload $uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' (New-Object Net.WebClient).DownloadFile( $uri, $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( - "~\AppData\Local\nvim\autoload\plug.vim" + "~\vimfiles\autoload\plug.vim" ) ) ``` @@ -111,6 +116,18 @@ and run this commands # and run PlugClean to remove that commented plugin ``` +For modern c/c++ developemt + +```bash +sudo aptitude install gcc ccls cppcheck +#Note: When using another build system like build2 you will need to dry run +#your build system and pipe the output to compiledb to generate compile_commands.json +# eg. $ b -vn clean update |& compiledb +sudo aptitude install clangd clang-format clang-tidy clang # don't forget to +#generate a compile_commands.json file using cmake with 'cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +#in your project directory OR +``` + And Assumming you plan to get involved in web developemt then you should insllall the following plugins @@ -122,19 +139,18 @@ insllall the following plugins there are a lot of other extentions you can install for the coc.nvim language server client [Coc.nvim](https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions) -for python +`Note to change the plugins that are automatically installed by coc.nvim edit +the plugrc.d/coc.vim's global_extension variable with your desired plugins` -```bash -:CocInstall coc-python -pip3 install flake8 yapf # For linting and formatting +```vim +let g:coc_global_extensions=[] ``` -for c/c++ +for python ```bash -sudo aptitude install clangd clang-format clang-tidy clang # don't forget to -#generate a compile_commands.json file using cmake with 'cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -#in your project directory +:CocInstall coc-python +pip3 install flake8 yapf # For linting and formatting ``` for help using the various plugins and extensions @@ -149,8 +165,7 @@ In addtion to these plugins ,some plugins like Vista have external dependencies which have to be installed in other to use them. ```bash -sudo aptitude install universal-ctags #enable vista to generate source code - #tags +sudo aptitude install universal-ctags # enable vista to generate source code tags ``` >>Big ShoutOuts to the Creators of Vim && Neovim. From eb82bf5b1992947ea9000d8732028914e4468eea Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 00:28:27 +0000 Subject: [PATCH 084/419] Enable support for haskell programming using the haskell-language-server and use ccls as defauld lsp for c/c++ development instead of clangd NOTE: configurations for clangd are still valid and an optimum alternative but your preference for either mainly using gcc or clang as your default compiler might inform your decision to use either of the two Both are great softwares are I will most likely be always changing between the two clang with clangd and clang-tidy for static anlysis while gcc with ccls and cppcheck for static analysis --- coc-settings.json | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 2871d59..754a456 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,7 +1,7 @@ { "languageserver": { - "clangd": { - "command": "clangd-11", + /* "clangd": { + "command": "clangd", "args": [ "--all-scopes-completion", "--clang-tidy", @@ -18,6 +18,33 @@ ".hg/" ], "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", "txx"] + },*/ + "ccls": { + "command": "ccls", + "filetypes": [ + "c", + "cpp", + "cxx", + "c++", + "h", + "hpp", + "hxx", + "h++", + "tpp", + "txx", + "t++" + ], + "rootPatterns": [".ccls", "compile_commands.json", ".git/", ".hg/"], + "args": ["--log-file=.ccls-cache/log", "-v=1"], + "initializationOptions": { + "cache": { + "directory": ".ccls-cache" + }, + "client": { + "snippetSupport": true + }, + "index": { "threads": 4 } + } }, "cmake": { "command": "cmake-language-server", @@ -26,6 +53,18 @@ "initializationOptions": { "buildDirectory": "build" } + }, + "haskell": { + "command": "haskell-language-server-wrapper", + "args": ["--lsp"], + "rootPatterns": [ + "*.cabal", + "stack.yaml", + "cabal.project", + "package.yaml", + "hie.yaml" + ], + "filetypes": ["haskell", "lhaskell"] } }, "codeLens.enable": true, From 1a3a9f308f41edd2925df3f71310b19f29d26d88 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 00:32:17 +0000 Subject: [PATCH 085/419] Make clipboard default to only unnamedplus buffer so that its data doesn't overwrite data in the unnamed or unnamedstar buffer --- editor.vim | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/editor.vim b/editor.vim index 8f46535..4f9b4d0 100644 --- a/editor.vim +++ b/editor.vim @@ -22,9 +22,10 @@ syntax on "set assembly language file to use nasm let g:asmsyntax = "nasm" -"Set clipboard to the + and * registers +"Set clipboard to the + registers only +"if you want to use the * also add ,unnamed if has('clipboard') - set clipboard+=unnamedplus,unnamed + set clipboard+=unnamedplus endif "Restore cursor to file position in previous editing session @@ -70,8 +71,6 @@ set expandtab " always expands tab to spaces. It is good when peers use dif set wildmenu "Display completion matches in a status line. That is when you type "and there is more than one match. -set termguicolors "Set true colours in terminal - set completeopt=menuone,preview,noinsert " Don't let autocomplete affect usual typing habits set bs=2 " allow backspacing over everything in insert mode From 5a213d171db15717dce3cd646bc6b7106c3d809f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 01:52:33 +0000 Subject: [PATCH 086/419] Deprecate the use of vim devicons because it only adds up to asthetic looks but doesn't improve usage by much --- pluginit.vim | 2 +- plugrc.d/{ => deprecated}/devicons.vim | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename plugrc.d/{ => deprecated}/devicons.vim (100%) diff --git a/pluginit.vim b/pluginit.vim index 980b506..d1f722f 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -11,6 +11,6 @@ source $XDG_CONFIG_HOME/nvim/plugrc.d/multiple_cursor.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/nerdtree_git.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/airline.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/fzf.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/devicons.vim +"source $XDG_CONFIG_HOME/nvim/plugrc.d/devicons.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/vista.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/clang_tools.vim diff --git a/plugrc.d/devicons.vim b/plugrc.d/deprecated/devicons.vim similarity index 100% rename from plugrc.d/devicons.vim rename to plugrc.d/deprecated/devicons.vim From a063b21f180b45f85932b72310719c2238fe40d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 01:57:54 +0000 Subject: [PATCH 087/419] Remove plugins I rearly use and disable use of deprecated plugins ie. Remove Vim-* EasyMotion Fugitive AirlineTheme and Typescript Syntax highlight since it is included by default by polyglot Comment out the deprecated vim devicons for future removal --- plugins.vim | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/plugins.vim b/plugins.vim index 6e08302..feb365a 100755 --- a/plugins.vim +++ b/plugins.vim @@ -15,9 +15,6 @@ call plug#begin('$HOME/.local/share/nvim/plugged') "Multiple cursor editing Plug 'terryma/vim-multiple-cursors' -" EasyMotion provides a mush simpler way to use motions in vim -Plug 'easymotion/vim-easymotion' - "A commenter for different Language Plug 'scrooloose/nerdcommenter' @@ -32,9 +29,6 @@ Plug 'morhetz/gruvbox' "A vim plugin which shows git diff in the gutter (sign column). Plug 'airblade/vim-gitgutter' -"A git wrapper -Plug 'tpope/vim-fugitive' - "A plugin of NERDTree showing git status flags Plug 'Xuyuanp/nerdtree-git-plugin' @@ -42,7 +36,6 @@ Plug 'Xuyuanp/nerdtree-git-plugin' "Status bar plugin Plug 'vim-airline/vim-airline' - Plug 'vim-airline/vim-airline-themes' " === Source Code Formater === @@ -82,12 +75,9 @@ Plug 'neoclide/coc.nvim', {'branch': 'release'} " === Syntax Highlighting Engine === "Syntastic is a syntax checking plugin for Vim - Plug 'scrooloose/syntastic' - -"TypeScript Syntax Highlighting -Plug 'HerringtonDarkholme/yats.vim' +Plug 'scrooloose/syntastic' -"A collection of language packs for Vim. +"A collection of language syntax packs for Vim. Plug 'sheerun/vim-polyglot' " === Tag Bar Plugin === @@ -103,7 +93,7 @@ Plug 'preservim/nerdtree' " == Icons == " " Glyphs and Icons for neovim -Plug 'ryanoasis/vim-devicons' +"Plug 'ryanoasis/vim-devicons' " Initialize plugin system call plug#end() From b9683af4cacd9aa948fd9c2ece52064f82d67617 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:30:21 +0000 Subject: [PATCH 088/419] Use a clang_format.py script with is independent of the version of clang-format --- plugrc.d/clang_tools.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 6aafeec..9bb50e2 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -1,5 +1,5 @@ function! Formatonsave() let l:formatdiff = 1 - py3f /usr/share/clang/clang-format-11/clang-format.py + py3f /usr/share/vim/addons/syntax/clang-format.py endfunction autocmd BufWritePre *.c,*.h,*.cpp,*.hpp,*.cxx,*.hxx,*.tpp,*.txx call Formatonsave() From 63f4c972c6a8cb002562d1f780ea88283dc0f471 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:32:34 +0000 Subject: [PATCH 089/419] Remove redundant functions and disable ShowDocIfNoDignostics --- plugrc.d/coc.vim | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 9c5c4c9..1bf8a4a 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -1,10 +1,10 @@ " You will have bad experience for diagnostic messages when it's default 4000. -set updatetime=300 +set updatetime=100 " don't give |ins-completion-menu| messages. set shortmess+=c -" always show signcolumns +" always merge signcolumn and number column into one set signcolumn=yes " Use K to show documentation in preview window @@ -29,23 +29,15 @@ function! ShowDocIfNoDiagnostic(timer_id) endfunction function! s:show_hover_doc() - call timer_start(500, 'ShowDocIfNoDiagnostic') + call timer_start(3000, 'ShowDocIfNoDiagnostic') endfunction -autocmd CursorHoldI * :call show_hover_doc() -autocmd CursorHold * :call show_hover_doc() +"autocmd CursorHoldI * :call show_hover_doc() +"autocmd CursorHold * :call show_hover_doc() -" Highlight symbol under cursor on CursorHold +" Highlight the symbol and its references when holding the cursor. autocmd CursorHold * silent call CocActionAsync('highlight') - -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 - +autocmd CursorHoldI * silent call CocActionAsync('showSignatureHelp') " Use `:Format` to format current buffer command! -nargs=0 Format :call CocAction('format') From 0e23ea41bb8a46cca86be2aac7d332f07a960264 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:37:36 +0000 Subject: [PATCH 090/419] Remove all plugin configs and mappings since they equally maps to the default provided --- mapinit.vim | 1 - mapping.d/multi_cursor_map.vim | 9 --------- pluginit.vim | 1 - 3 files changed, 11 deletions(-) delete mode 100644 mapping.d/multi_cursor_map.vim diff --git a/mapinit.vim b/mapinit.vim index 11f66dc..a768179 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -9,6 +9,5 @@ source $XDG_CONFIG_HOME/nvim/mapping.d/tab_buffer_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/syntastic_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/markdown_preview_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/highlighting_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/multi_cursor_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/folding_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/terminal_map.vim diff --git a/mapping.d/multi_cursor_map.vim b/mapping.d/multi_cursor_map.vim deleted file mode 100644 index a8a0c80..0000000 --- a/mapping.d/multi_cursor_map.vim +++ /dev/null @@ -1,9 +0,0 @@ -" Default mapping -let g:multi_cursor_start_word_key = '' -let g:multi_cursor_select_all_word_key = '' -let g:multi_cursor_start_key = 'g' -let g:multi_cursor_select_all_key = 'g' -let g:multi_cursor_next_key = '' -let g:multi_cursor_prev_key = '' -let g:multi_cursor_skip_key = '' -let g:multi_cursor_quit_key = '' diff --git a/pluginit.vim b/pluginit.vim index d1f722f..6e89e7e 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -7,7 +7,6 @@ source $XDG_CONFIG_HOME/nvim/plugrc.d/coc.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/markdown_preview.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/syntastic.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/neoformat.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/multiple_cursor.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/nerdtree_git.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/airline.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/fzf.vim From 93eb91c16aaaf3bf216ccd23632623e11cf2c23f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:41:54 +0000 Subject: [PATCH 091/419] Improve support for c++ static analysis using cppcheck gcc and clang_tidy/clang_check --- plugrc.d/syntastic.vim | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index 1feb856..f2f9576 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -1,38 +1,39 @@ +"Recommended Syntax for syntastic +set statusline+=%#warningmsg# +set statusline+=%{SyntasticStatuslineFlag()} +set statusline+=%* + "Syntatic Python Linter Configuration let g:syntastic_python_python_exec = 'python3' let g:syntastic_python_checkers = ['flake8'] let g:syntastic_python_flake8_args = "" "Syntastic C++ Linter Configuration -let g:syntastic_cpp_checkers = ['gcc'] -let g:syntastic_cpp_compiler = 'clang++-9' -let g:syntastic_cpp_compiler_options = '-std=c++17' +let g:syntastic_aggregate_errors = 1 "display all errors from all checkers together" +let g:syntastic_cpp_checkers = ['cppcheck'] +let g:syntastic_cpp_clang_check_args="--extra-arg='-std=c++20'" +"checker args +let g:syntastic_cpp_cppcheck_args="--enable=warning,style,performance,portability,information,missingInclude --inconclusive --force -j 4 --template=gcc --language=c++" +let g:syntastic_cpp_compiler = 'g++' +let g:syntastic_cpp_compiler_options = '-std=c++20' +let g:syntastic_cpp_check_header = 1 -"Recommended Syntax for syntastic -set statusline+=%#warningmsg# -set statusline+=%{SyntasticStatuslineFlag()} -set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 " auto open/close location list -let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_open = 0 " check also when just opened the file let g:syntastic_check_on_wq = 0 -let g:syntastic_aggregate_errors = 1 -let g:syntastic_mode="passive" -let g:syntastic_enable_signs=0 - -"Addition , experimental -" check also when just opened the file -let g:syntastic_check_on_open = 1 +let b:syntastic_mode="active" +let g:syntastic_enable_signs = 1 " syntastic checker for javascript. "let g:syntastic_javascript_checkers = ['eslint'] " don't put icons on the sign column (it hides the vcs status icons of signify) -"let g:syntastic_enable_signs = 0 let g:syntastic_error_symbol = '✗' let g:syntastic_warning_symbol = '⚠' let g:syntastic_style_error_symbol = '✗' let g:syntastic_style_warning_symbol = '⚠' -let g:syntastic_always_populate_loc_list = 1 +"Let syntastic enable ballons ie.popups for error messages +let g:syntastic_enable_balloons =1 From 006a43522627f3902762ae17af113d0bc59bbb9a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:51:48 +0000 Subject: [PATCH 092/419] Modify mappings for calling SyntasticCheck and opening and closing location window for code --- mapping.d/syntastic_map.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapping.d/syntastic_map.vim b/mapping.d/syntastic_map.vim index a52d615..a31dc97 100644 --- a/mapping.d/syntastic_map.vim +++ b/mapping.d/syntastic_map.vim @@ -1,3 +1,3 @@ "Perform SyntasticCheck -nnoremap :SyntasticCheck :lopen -nnoremap :SyntasticCheck :lclose +nnoremap :SyntasticCheck :lopen +nnoremap :SyntasticCheck :lclose From f1d995d0cf438fa6785ed55cf869f0e44efe262b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:54:13 +0000 Subject: [PATCH 093/419] Remove empty config file for no longer exiting plugins --- plugrc.d/easymotion.vim | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 plugrc.d/easymotion.vim diff --git a/plugrc.d/easymotion.vim b/plugrc.d/easymotion.vim deleted file mode 100644 index e69de29..0000000 From a6d2053879b37e5956fd438a857da05f770dafb2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 02:58:08 +0000 Subject: [PATCH 094/419] Add recommended ccls mappings for coc --- mapinit.vim | 1 + mapping.d/ccls.vim | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 mapping.d/ccls.vim diff --git a/mapinit.vim b/mapinit.vim index a768179..097b4e1 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -11,3 +11,4 @@ source $XDG_CONFIG_HOME/nvim/mapping.d/markdown_preview_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/highlighting_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/folding_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/terminal_map.vim +source $XDG_CONFIG_HOME/nvim/mapping.d/ccls.vim diff --git a/mapping.d/ccls.vim b/mapping.d/ccls.vim new file mode 100644 index 0000000..4f7217c --- /dev/null +++ b/mapping.d/ccls.vim @@ -0,0 +1,34 @@ +" Cross reference extensions +" bases +nn xb :call CocLocations('ccls','$ccls/inheritance') +" bases of up to 3 levels +nn xB :call CocLocations('ccls','$ccls/inheritance',{'levels':3}) +" derived +nn xd :call CocLocations('ccls','$ccls/inheritance',{'derived':v:true}) +" derived of up to 3 levels +nn xD :call CocLocations('ccls','$ccls/inheritance',{'derived':v:true,'levels':3}) + +" caller +nn xc :call CocLocations('ccls','$ccls/call') +" callee +nn xC :call CocLocations('ccls','$ccls/call',{'callee':v:true}) + +" $ccls/member +" member variables / variables in a namespace +nn xm :call CocLocations('ccls','$ccls/member') +" member functions / functions in a namespace +nn xf :call CocLocations('ccls','$ccls/member',{'kind':3}) +" nested classes / types in a namespace +nn xs :call CocLocations('ccls','$ccls/member',{'kind':2}) + +nmap xt (coc-type-definition) +nn xv :call CocLocations('ccls','$ccls/vars') +nn xV :call CocLocations('ccls','$ccls/vars',{'kind':1}) + +nn xx x + +"$ccls/navigate +nn :call CocLocations('ccls','$ccls/navigate',{'direction':'D'}) +nn :call CocLocations('ccls','$ccls/navigate',{'direction':'L'}) +nn :call CocLocations('ccls','$ccls/navigate',{'direction':'R'}) +nn :call CocLocations('ccls','$ccls/navigate',{'direction':'U'}) From a2c91d21177a79addf859cbf453ef04f8cd514c9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 14:13:13 +0000 Subject: [PATCH 095/419] Improve support for scrolling float/pop-up windows and Add mappings for Backward range selection --- mapping.d/coc_map.vim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index ea4644c..ab76518 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -56,18 +56,21 @@ nmap qf (coc-fix-current) " Remap and for scroll float windows/popups. " Note coc#float#scroll works on neovim >= 0.4.3 or vim >= 8.2.0750 +if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" - +vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" +vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" +endif " Use CTRL-S for selections ranges. " Requires 'textDocument/selectionRange' support of language server. " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python nmap (coc-range-select) xmap (coc-range-select) -"xmap (coc-range-select-backword) +xmap (coc-range-select-backword) " Using CocList " Show all diagnostics From cceeab981463fef369d41e75df4a49e46cbf15b5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 13 Dec 2020 21:36:51 +0000 Subject: [PATCH 096/419] Add support haskell formatting --- plugrc.d/neoformat.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugrc.d/neoformat.vim b/plugrc.d/neoformat.vim index 55cb265..3baf97a 100644 --- a/plugrc.d/neoformat.vim +++ b/plugrc.d/neoformat.vim @@ -31,7 +31,10 @@ let g:neoformat_cmakelists_cmakeformat = { " stdin - send data to stdin of formatter (default: 0), let g:neoformat_enabled_python = ['yapf'] +"Haskell code formatter +let g:neoformat_enabled_haskell= ['hindent'] + augroup fmt autocmd! - autocmd BufWritePre *.py,*.nix,CMakeLists.txt undojoin | Neoformat + autocmd BufWritePre *.hs,*.py,*.nix,CMakeLists.txt | Neoformat augroup END From 2604f00dda741cacce8e5456193434bbe21e10d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 27 Dec 2020 13:14:18 +0000 Subject: [PATCH 097/419] Make clangd the default c++ language server because it provides more fix-its and modernizations than ccls Add virtual text support for diagnostics NOTE:Works only in neovim Prefer coc-stylelint over coc-stylelint-plus due to issues with stylelint-plus tslib --- coc-settings.json | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 754a456..69c6b78 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -1,6 +1,6 @@ { "languageserver": { - /* "clangd": { + "clangd": { "command": "clangd", "args": [ "--all-scopes-completion", @@ -18,7 +18,7 @@ ".hg/" ], "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", "txx"] - },*/ + } /* "ccls": { "command": "ccls", "filetypes": [ @@ -35,7 +35,6 @@ "t++" ], "rootPatterns": [".ccls", "compile_commands.json", ".git/", ".hg/"], - "args": ["--log-file=.ccls-cache/log", "-v=1"], "initializationOptions": { "cache": { "directory": ".ccls-cache" @@ -45,7 +44,7 @@ }, "index": { "threads": 4 } } - }, + },*/, "cmake": { "command": "cmake-language-server", "filetypes": ["cmake"], @@ -68,7 +67,10 @@ } }, "codeLens.enable": true, + "diagnostic.virtualText": true, "suggest.enablePreview": true, + "suggest.enablePreselect": true, + "suggest.triggerAfterInsertEnter": true, "html.enable": true, "html.format.enable": true, "python.linting.enabled": true, @@ -84,11 +86,5 @@ ], "eslint.autoFixOnSave": true, "prettier.eslintIntegration": true, - "yaml.format.enable": true, - "css.validate": false, - "less.validate": false, - "scss.validate": false, - "wxss.validate": false, - "stylelintplus.autoFixOnSave": true, - "stylelintplus.validateOnSave": true + "yaml.format.enable": true } From a23a29242ee46aa1e8ae115f11cd4bc6b4fb965c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 27 Dec 2020 13:15:59 +0000 Subject: [PATCH 098/419] Enable mouse support fully by default because scrolling in terminal pane doesn't work without it --- editor.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor.vim b/editor.vim index 4f9b4d0..827d619 100644 --- a/editor.vim +++ b/editor.vim @@ -78,7 +78,7 @@ set bs=2 " allow backspacing over everything in insert mode set hidden " This option allows you to switch between multiple buffers "without saving a changed buffer -set mouse="" " Automatically enable mouse usage +set mouse=a "Automatically enable mouse usage set mousehide " Hide the mouse pointer while typing. From 73c645cbb26ecedb47afe2bc0535c34608ef511b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 27 Dec 2020 14:22:52 +0000 Subject: [PATCH 099/419] Add new mappings for coc-* refactor, openlink and codelens-action Change mappings for codeaction-line and let gr map to coc-references-used also use for coc-range-select-backward remove support for coc-range* in x-mode ie. only visual --- mapping.d/coc_map.vim | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index ab76518..4a7bd1b 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -29,7 +29,7 @@ nmap ]d (coc-diagnostic-next) nmap gd (coc-definition) nmap gt (coc-type-definition) nmap gi (coc-implementation) -nmap gr (coc-references) +nmap gr (coc-references-used) " Remap for rename current word nmap rn (coc-rename) @@ -46,14 +46,23 @@ xmap f (coc-format-selected) nmap f (coc-format-selected) " Remap for do codeAction of selected region, ex: `aap` for current paragraph -xmap a (coc-codeaction-selected) -nmap a (coc-codeaction-selected) +xmap a (coc-codeaction-line) +nmap a (coc-codeaction-line) " Remap for do codeAction of current line nmap ac (coc-codeaction) " Fix autofix problem of current line nmap qf (coc-fix-current) +"Do command from codeLens of current line +nmap cdl (coc-codelens-action) + +"Open refactor window for refactor of current symbol. +nmap r (coc-refactor) + +"Open link under cursor +nmap ol (coc-openlink) + " Remap and for scroll float windows/popups. " Note coc#float#scroll works on neovim >= 0.4.3 or vim >= 8.2.0750 if has('nvim-0.4.0') || has('patch-8.2.0750') @@ -69,8 +78,7 @@ endif " Requires 'textDocument/selectionRange' support of language server. " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python nmap (coc-range-select) -xmap (coc-range-select) -xmap (coc-range-select-backword) +nmap (coc-range-select-backword) " Using CocList " Show all diagnostics From 87c0b45f8942a2cd9b2ac534a64b13de71d7f8f6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 27 Dec 2020 14:48:22 +0000 Subject: [PATCH 100/419] Replace coc-stylelintplus with coc-stylelint --- plugrc.d/coc.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 1bf8a4a..8c68b9d 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -66,5 +66,5 @@ let g:coc_global_extensions = [ \ 'coc-markdownlint', \ 'coc-html', \ 'coc-css', - \'coc-stylelintplus' + \'coc-stylelint' \ ] From 80ec3defe1ace8b7ab05e4dcbf6ebdbaef1be68a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 27 Dec 2020 18:58:33 +0000 Subject: [PATCH 101/419] Remove mapping for auto-select first completion option with --- mapping.d/coc_map.vim | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index 4a7bd1b..d792176 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -1,5 +1,5 @@ -" Use tab for trigger completion with characters ahead and navigate. -" Use command ':verbose imap ' to make sure tab is not mapped by other plugin. +"Use tab for trigger completion with characters ahead and navigate. +"Use command ':verbose imap ' to make sure tab is not mapped by other plugin. "Map for trigger completion, completion confirm, snippet expand and jump like VSCode inoremap @@ -13,11 +13,6 @@ function! s:check_back_space() abort return !col || getline('.')[col - 1] =~# '\s' endfunction -" Make auto-select the first completion item and notify coc.nvim to -" format on enter, could be remapped by other vim plugin -inoremap pumvisible() ? coc#_select_confirm() - \: "\u\\=coc#on_enter()\" - "Note: the `coc-snippets` extension is required for this to work. let g:coc_snippet_next = '' From 7ee327e81480835fb02e1cc07ccd79ef17a8b720 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 27 Dec 2020 19:01:25 +0000 Subject: [PATCH 102/419] Add support for cross-file-rename in clangd and change it completion-style to bundled --- coc-settings.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index 69c6b78..55a8880 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -3,9 +3,10 @@ "clangd": { "command": "clangd", "args": [ - "--all-scopes-completion", + "--all-scopes-completion=true", "--clang-tidy", - "--completion-style=detailed", + "--completion-style=bundled", + "--cross-file-rename", "--background-index", "--header-insertion=iwyu", "--suggest-missing-includes", @@ -68,6 +69,7 @@ }, "codeLens.enable": true, "diagnostic.virtualText": true, + "diagnostic.virtualTextCurrentLineOnly": false, "suggest.enablePreview": true, "suggest.enablePreselect": true, "suggest.triggerAfterInsertEnter": true, From cdaf3ce179f9fa44720c3718e89f8131f79ff25f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Jan 2021 14:02:47 +0000 Subject: [PATCH 103/419] Add new option --recovery-ast for clangd-11 which help preserve ast for broken c++ code --- coc-settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/coc-settings.json b/coc-settings.json index 55a8880..dd708b8 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -10,6 +10,7 @@ "--background-index", "--header-insertion=iwyu", "--suggest-missing-includes", + "--recovery-ast", "-j=4" ], "rootPatterns": [ From 88377aefd88aea5219bbd297ec9963893b64c9f8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 20:53:17 +0000 Subject: [PATCH 104/419] Restore for accepting suggestions and auto-completions --- mapping.d/coc_map.vim | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index d792176..8d2d044 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -8,14 +8,14 @@ inoremap \ coc#refresh() inoremap pumvisible() ? "\" : "\" +" to confirm completion, use: carriage return (Enter) +inoremap pumvisible() ? "\" : "\" + function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction -"Note: the `coc-snippets` extension is required for this to work. -let g:coc_snippet_next = '' - " Use `[d` and `]d` to navigate diagnostics nmap [d (coc-diagnostic-prev) nmap ]d (coc-diagnostic-next) @@ -92,4 +92,3 @@ nnoremap n :CocNext nnoremap p :CocPrev " Resume latest coc list nnoremap r :CocListResume - From 9121a3f96c374b23c6043ca7d296335e04c18a01 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 21:45:46 +0000 Subject: [PATCH 105/419] Fix error in nohlsearch command and change mapping to --- mapping.d/highlighting_map.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapping.d/highlighting_map.vim b/mapping.d/highlighting_map.vim index c816bae..328e9b4 100644 --- a/mapping.d/highlighting_map.vim +++ b/mapping.d/highlighting_map.vim @@ -1,2 +1,2 @@ " Use to clear the highlighting of :set hlsearch. -nnoremap :noh +nnoremap :nohl From 2fef7f80ff489de5808a56963b4f8e2b7b56b565 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 21:52:20 +0000 Subject: [PATCH 106/419] Add support for clang llvm's static analysis using clang-check This new feature support can be invoked using in normal mode of neovim or vim --- plugrc.d/clang_tools.vim | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 9bb50e2..dffa5df 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -1,3 +1,29 @@ +function! ClangCheckImpl(cmd) + if &autowrite | wall | endif + echo "Running " . a:cmd . " ..." + let l:output = system(a:cmd) + cexpr l:output + cwindow + let w:quickfix_title = a:cmd + if v:shell_error != 0 + cc + endif + let g:clang_check_last_cmd = a:cmd +endfunction + +function! ClangCheck() + let l:filename = expand('%') + if l:filename =~ '\.\(cpp\|cxx\|cc\|c\)$' + call ClangCheckImpl("clang-check --analyze " . l:filename) + elseif exists("g:clang_check_last_cmd") + call ClangCheckImpl(g:clang_check_last_cmd) + else + echo "Can't detect file's compilation arguments and no previous clang-check invocation!" + endif +endfunction + +nmap :call ClangCheck() + function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/vim/addons/syntax/clang-format.py From 887ebc4088c8236fbfa90eab6f130cf0c950ad90 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 22:00:57 +0000 Subject: [PATCH 107/419] Remove support for clang-check static analysis using syntastic This is because loading clang-check takes quite a long time So using syntastic to invoke it is very undesirable Because systastic is invoked on every save of the current buffer Instead the new builtin support should be used to run clang-check,using --- plugrc.d/syntastic.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index f2f9576..e8914ba 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -11,7 +11,6 @@ let g:syntastic_python_flake8_args = "" "Syntastic C++ Linter Configuration let g:syntastic_aggregate_errors = 1 "display all errors from all checkers together" let g:syntastic_cpp_checkers = ['cppcheck'] -let g:syntastic_cpp_clang_check_args="--extra-arg='-std=c++20'" "checker args let g:syntastic_cpp_cppcheck_args="--enable=warning,style,performance,portability,information,missingInclude --inconclusive --force -j 4 --template=gcc --language=c++" let g:syntastic_cpp_compiler = 'g++' From 0cbbc25d4811441b851b8916453d1006ccafa376 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 22:03:28 +0000 Subject: [PATCH 108/419] Change colorscheme to onedark --- ui.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui.vim b/ui.vim index 79b86e6..9d564c6 100644 --- a/ui.vim +++ b/ui.vim @@ -1,4 +1,4 @@ -"Enable terminal colors 256 +"Enable true colours in terminal set termguicolors "Set the background color of nvim From 1bf76cbe8cb3ba3ecb1abd7a26208aabff131eb9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 23:11:48 +0000 Subject: [PATCH 109/419] Add image of awesome-neovim with c/c++ --- assets/AwesomeNeovimForC++.png | Bin 0 -> 301940 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/AwesomeNeovimForC++.png diff --git a/assets/AwesomeNeovimForC++.png b/assets/AwesomeNeovimForC++.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c230d4ce943a32c3f672c6c26d1931c0a2a3cc GIT binary patch literal 301940 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 w@;dt1Q#^No})j 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

    Uq~YSXW|EqE@?~@C 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�&C>DefXvj@`aryt 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

    v@m=rAhSuzsh7Y$0@VY4K>vPL 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 z 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

    @j9r0Mih6Kx`3jciQvmEd2PI*=_)R9CJ1M}mF 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 JSZe4L@lONo7a;%u literal 0 HcmV?d00001 From 906dadeea1e268cdd749c77be1b7aa8da5ecd835 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Jan 2021 23:46:05 +0000 Subject: [PATCH 110/419] Update README.md --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 72045d3..dbab927 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,22 @@ This is to make setting up of vim 8 && neovim 0.4 and above easy and a breeze. Moving on I will use vim and neovim interchangably because they are very similar under the hood. -![Awesome NeoVim](https://github.com/Ultra-Code/nvim/blob/master/assets/AwesomeAndConfigurableNeoVim.png) +## Awesome NeoVim with C++ + +Supports the following + +- clang , gcc compilers +- clang-tidy linter +- clang-format formater +- clangd lsp server with coc.nvim lsp client +- cppcheck and clang-check static anlysis +- autocompletion,documentation and all other features supported by clangd and + coc.nvim +![Awesome-NeoVim with C++](https://github.com/Ultra-Code/awesome-neovim/blob/master/assets/AwesomeNeovimForC%2B%2B.png) + +## Awesome Neovim for Ts with Vue + +![Awesome NeoVim with Ts and Vue](https://github.com/Ultra-Code/nvim/blob/master/assets/AwesomeAndConfigurableNeoVim.png) ## Requirement From bfc66d1f26c2b2e6a74e62923c5f7d0df68871fc Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 27 Jan 2021 00:05:34 +0000 Subject: [PATCH 111/419] Update README.md --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index dbab927..762f94d 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,30 @@ Supports the following - clang-format formater - clangd lsp server with coc.nvim lsp client - cppcheck and clang-check static anlysis +- All build systems build2 , cmake , meason ++ - autocompletion,documentation and all other features supported by clangd and coc.nvim ![Awesome-NeoVim with C++](https://github.com/Ultra-Code/awesome-neovim/blob/master/assets/AwesomeNeovimForC%2B%2B.png) ## Awesome Neovim for Ts with Vue +Supports the following and more .... + +- Node v12+ +- eslint linter +- pretteir formatter +- Tsserver with coc.nvim +- autocompletion,documentation and all other features supported by tsserver and + coc.nvim + ![Awesome NeoVim with Ts and Vue](https://github.com/Ultra-Code/nvim/blob/master/assets/AwesomeAndConfigurableNeoVim.png) +>__NOTE__ the languages supported out of the box are +>c++,c,cmake,python3,js,html5+,css3+,ts,vue,haskell,markdown,json +>__But__ support for other languages can easily be add by using it required +[lsp's](https://github.com/neoclide/coc.nvim/wiki/Language-servers) +>and [coc-extentions](https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions) + ## Requirement Installation of plugins in neovim or vim requires `python 3` support From fd8b3fe03e55c961da51ba36bdbe277bd1296c66 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 5 Feb 2021 03:21:45 +0000 Subject: [PATCH 112/419] Completely remove deprecated plugin --- plugrc.d/deprecated/devicons.vim | 109 ------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 plugrc.d/deprecated/devicons.vim diff --git a/plugrc.d/deprecated/devicons.vim b/plugrc.d/deprecated/devicons.vim deleted file mode 100644 index 8802d6d..0000000 --- a/plugrc.d/deprecated/devicons.vim +++ /dev/null @@ -1,109 +0,0 @@ -" loading the plugin -let g:webdevicons_enable = 1 - -" adding the flags to NERDTree -let g:webdevicons_enable_nerdtree = 1 - -" adding the custom source to unite -"let g:webdevicons_enable_unite = 1 - -" adding the column to vimfiler -"let g:webdevicons_enable_vimfiler = 1 - -" adding to vim-airline's tabline -let g:webdevicons_enable_airline_tabline = 1 - -" adding to vim-airline's statusline -let g:webdevicons_enable_airline_statusline = 1 - -" ctrlp glyphs -"let g:webdevicons_enable_ctrlp = 1 - -" adding to vim-startify screen -"let g:webdevicons_enable_startify = 1 - -" adding to flagship's statusline -"let g:webdevicons_enable_flagship_statusline = 1 - -" turn on/off file node glyph decorations (not particularly useful) -"let g:WebDevIconsUnicodeDecorateFileNodes = 1 - -" use double-width(1) or single-width(0) glyphs -" only manipulates padding, has no effect on terminal or set(guifont) font -let g:WebDevIconsUnicodeGlyphDoubleWidth = 1 - -" whether or not to show the nerdtree brackets around flags -let g:webdevicons_conceal_nerdtree_brackets = 1 - -" the amount of space to use after the glyph character (default ' ') -let g:WebDevIconsNerdTreeAfterGlyphPadding = ' ' - -" Force extra padding in NERDTree so that the filetype icons line up vertically -let g:WebDevIconsNerdTreeGitPluginForceVAlign = 1 - -" Adding the custom source to denite -"let g:webdevicons_enable_denite = 1 - -" The amount of space to use after the glyph character in vim-airline tabline(default '') - let g:WebDevIconsTabAirLineAfterGlyphPadding = ' ' - -" The amount of space to use before the glyph character in vim-airline tabline(default ' ') - let g:WebDevIconsTabAirLineBeforeGlyphPadding = ' ' - -"Character Mapping -" change the default character when no match found -"let g:WebDevIconsUnicodeDecorateFileNodesDefaultSymbol = 'ƛ' - -" set a byte character marker (BOM) utf-8 symbol when retrieving file encoding -" disabled by default with no value -let g:WebDevIconsUnicodeByteOrderMarkerDefaultSymbol = '' - -" enable folder/directory glyph flag (disabled by default with 0) -let g:WebDevIconsUnicodeDecorateFolderNodes = 1 - -" enable open and close folder/directory glyph flags (disabled by default with 0) -let g:DevIconsEnableFoldersOpenClose = 1 - -" enable pattern matching glyphs on folder/directory (enabled by default with 1) -let g:DevIconsEnableFolderPatternMatching = 1 - -" enable file extension pattern matching glyphs on folder/directory (disabled by default with 0) -let g:DevIconsEnableFolderExtensionPatternMatching = 1 - -" enable custom folder/directory glyph exact matching -" (enabled by default when g:WebDevIconsUnicodeDecorateFolderNodes is set to 1) -let WebDevIconsUnicodeDecorateFolderNodesExactMatches = 1 - -" change the default folder/directory glyph/icon -let g:WebDevIconsUnicodeDecorateFolderNodesDefaultSymbol='' - -" change the default open folder/directory glyph/icon (default is '') -let g:DevIconsDefaultFolderOpenSymbol='' - -" change the default dictionary mappings for file extension matches -" Custom icons for file extensions -let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {} " needed -let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['js'] = '' -let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['ts'] = 'ﯤ' -let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['json'] = 'ﬥ' - - -" change the default dictionary mappings for exact file node matches -" Custom icons for specific filenames -let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols = {} " needed -let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['ormconfig.js'] = '' -let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['.env'] = 'ﭩ' -let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['.editorconfig'] = '' -let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['.npmrc'] = '' -let g:WebDevIconsUnicodeDecorateFileNodesExactSymbols['src'] = '' - - -" add or override pattern matches for filetypes -" these take precedence over the file extensions -let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols = {} " needed -let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*jquery.*\.js$'] = 'ƛ' -let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols = {} " needed -let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.test.ts'] = 'ﭧ' - -let g:WebDevIconsOS = 'Linux' - From b1d6a6915c93740fbd7c591d4d5cf421e26ecdbc Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 5 Feb 2021 03:33:33 +0000 Subject: [PATCH 113/419] Add filetype detection for cxx module interface files --- coc-settings.json | 3 ++- pluginit.vim | 2 +- plugrc.d/ftdetect.vim | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 plugrc.d/ftdetect.vim diff --git a/coc-settings.json b/coc-settings.json index dd708b8..e06fce4 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -19,7 +19,8 @@ ".git/", ".hg/" ], - "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", "txx"] + "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", + "txx","mpp","mxx"] } /* "ccls": { "command": "ccls", diff --git a/pluginit.vim b/pluginit.vim index 6e89e7e..e56d68f 100644 --- a/pluginit.vim +++ b/pluginit.vim @@ -10,6 +10,6 @@ source $XDG_CONFIG_HOME/nvim/plugrc.d/neoformat.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/nerdtree_git.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/airline.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/fzf.vim -"source $XDG_CONFIG_HOME/nvim/plugrc.d/devicons.vim +source $XDG_CONFIG_HOME/nvim/plugrc.d/ftdetect.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/vista.vim source $XDG_CONFIG_HOME/nvim/plugrc.d/clang_tools.vim diff --git a/plugrc.d/ftdetect.vim b/plugrc.d/ftdetect.vim new file mode 100644 index 0000000..54db35b --- /dev/null +++ b/plugrc.d/ftdetect.vim @@ -0,0 +1,3 @@ +augroup detectfiletypes + autocmd! BufRead,BufNewFile *.mxx,*.mpp,*.txx,*.tpp setfiletype cpp +augroup END From 6c0d845ae11ba99b2b0180de28dfc6aa884f41ab Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 5 Feb 2021 03:42:22 +0000 Subject: [PATCH 114/419] Add clang-format on save for cxx module interface file --- plugrc.d/clang_tools.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index dffa5df..6d7450d 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -28,4 +28,5 @@ function! Formatonsave() let l:formatdiff = 1 py3f /usr/share/vim/addons/syntax/clang-format.py endfunction -autocmd BufWritePre *.c,*.h,*.cpp,*.hpp,*.cxx,*.hxx,*.tpp,*.txx call Formatonsave() + +autocmd BufWritePre *.c,*.h,*.cpp,*.hpp,*.tpp,*.mpp,*.cxx,*.hxx,*.txx,*.mxx call Formatonsave() From 545bdf81009641b8d51ce534972a98bc7ad41c97 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 17 Feb 2021 23:55:53 +0000 Subject: [PATCH 115/419] Revamp mappings for spellcheck to more intuitive defaults --- mapping.d/spellcheck_map.vim | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mapping.d/spellcheck_map.vim b/mapping.d/spellcheck_map.vim index 4298057..35d381b 100644 --- a/mapping.d/spellcheck_map.vim +++ b/mapping.d/spellcheck_map.vim @@ -1,11 +1,14 @@ " === Spell checking === " " For help on spell checking :help spell -" Pressing ,ss will toggle and untoggle spell checking -map ss :setlocal spell! +" Pressing ,st will toggle and untoggle spell checking +map st :setlocal spell! "toggle to alternate configuration of spellcheck " Shortcuts using -map sn ]s -map sp [s -map sa zg -map s? z= +map sn ]s "next spellcheck iteam +map sp [s "previous spellcheck iteam +map sg zg "mark word as good in local spellfile :NOTE checkout zG for internal spellfile +map sw zw "mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile +map usg zug "undo marking of word as good +map usw zuw "undo marking of word as wrong +map sc z= "check for suggestions for the underlined word From 84a073f34cf2b6bab8bf6d7a70b14410ddc14b6d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 18 Feb 2021 00:13:54 +0000 Subject: [PATCH 116/419] Add mappings for tabfirst and tabnext with positional arguments --- mapping.d/tab_buffer_map.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index cea8e5e..708f8d1 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -33,6 +33,8 @@ map tc :tabclose map tm :tabmove map tn :tabnext map tp :tabprevious +map tf :tabfirst +map t :tabnext "pass a positive or negative argument to the command to move by that step" " Let 'tl' toggle between this and the last accessed tab let g:lasttab = 1 From a3ec32c3ff5f94be70f1993c4d777690a398bb95 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 18 Feb 2021 00:30:43 +0000 Subject: [PATCH 117/419] Remove support for ccls This is because clangd does all it does and more --- coc-settings.json | 34 +++------------------------------- mapinit.vim | 1 - mapping.d/ccls.vim | 34 ---------------------------------- 3 files changed, 3 insertions(+), 66 deletions(-) delete mode 100644 mapping.d/ccls.vim diff --git a/coc-settings.json b/coc-settings.json index e06fce4..ba89b83 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -5,7 +5,7 @@ "args": [ "--all-scopes-completion=true", "--clang-tidy", - "--completion-style=bundled", + "--completion-style=detailed", "--cross-file-rename", "--background-index", "--header-insertion=iwyu", @@ -14,40 +14,12 @@ "-j=4" ], "rootPatterns": [ - "compile_flags.txt", "compile_commands.json", - ".git/", - ".hg/" + ".git/" ], "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", "txx","mpp","mxx"] - } /* - "ccls": { - "command": "ccls", - "filetypes": [ - "c", - "cpp", - "cxx", - "c++", - "h", - "hpp", - "hxx", - "h++", - "tpp", - "txx", - "t++" - ], - "rootPatterns": [".ccls", "compile_commands.json", ".git/", ".hg/"], - "initializationOptions": { - "cache": { - "directory": ".ccls-cache" - }, - "client": { - "snippetSupport": true - }, - "index": { "threads": 4 } - } - },*/, + }, "cmake": { "command": "cmake-language-server", "filetypes": ["cmake"], diff --git a/mapinit.vim b/mapinit.vim index 097b4e1..a768179 100644 --- a/mapinit.vim +++ b/mapinit.vim @@ -11,4 +11,3 @@ source $XDG_CONFIG_HOME/nvim/mapping.d/markdown_preview_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/highlighting_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/folding_map.vim source $XDG_CONFIG_HOME/nvim/mapping.d/terminal_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/ccls.vim diff --git a/mapping.d/ccls.vim b/mapping.d/ccls.vim deleted file mode 100644 index 4f7217c..0000000 --- a/mapping.d/ccls.vim +++ /dev/null @@ -1,34 +0,0 @@ -" Cross reference extensions -" bases -nn xb :call CocLocations('ccls','$ccls/inheritance') -" bases of up to 3 levels -nn xB :call CocLocations('ccls','$ccls/inheritance',{'levels':3}) -" derived -nn xd :call CocLocations('ccls','$ccls/inheritance',{'derived':v:true}) -" derived of up to 3 levels -nn xD :call CocLocations('ccls','$ccls/inheritance',{'derived':v:true,'levels':3}) - -" caller -nn xc :call CocLocations('ccls','$ccls/call') -" callee -nn xC :call CocLocations('ccls','$ccls/call',{'callee':v:true}) - -" $ccls/member -" member variables / variables in a namespace -nn xm :call CocLocations('ccls','$ccls/member') -" member functions / functions in a namespace -nn xf :call CocLocations('ccls','$ccls/member',{'kind':3}) -" nested classes / types in a namespace -nn xs :call CocLocations('ccls','$ccls/member',{'kind':2}) - -nmap xt (coc-type-definition) -nn xv :call CocLocations('ccls','$ccls/vars') -nn xV :call CocLocations('ccls','$ccls/vars',{'kind':1}) - -nn xx x - -"$ccls/navigate -nn :call CocLocations('ccls','$ccls/navigate',{'direction':'D'}) -nn :call CocLocations('ccls','$ccls/navigate',{'direction':'L'}) -nn :call CocLocations('ccls','$ccls/navigate',{'direction':'R'}) -nn :call CocLocations('ccls','$ccls/navigate',{'direction':'U'}) From aa89ffb3eeaf17fd845fafefd15302dbe5a2afc4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 18 Feb 2021 00:32:18 +0000 Subject: [PATCH 118/419] Add spanish to spellcheck supported language --- editor.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editor.vim b/editor.vim index 827d619..3b094ad 100644 --- a/editor.vim +++ b/editor.vim @@ -102,9 +102,9 @@ set showmatch " Highlight matching brace set complete+=kspell "text complete with CTRL-N or CTRL-P -"set spell " Enable spell-checking +"set spell " Enable spell-checking -set spelllang=en_us +set spelllang=es_mx,en_us " Enable spell checking for espanol y ingles" set visualbell "Use visual bell (no beeping) From 5211dc1656c2641eafba7fcbcb47e6217ad00584 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 18 Feb 2021 00:34:24 +0000 Subject: [PATCH 119/419] Update comment to reflect changes to mapping --- mapping.d/highlighting_map.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapping.d/highlighting_map.vim b/mapping.d/highlighting_map.vim index 328e9b4..05b62c9 100644 --- a/mapping.d/highlighting_map.vim +++ b/mapping.d/highlighting_map.vim @@ -1,2 +1,2 @@ " Use to clear the highlighting of :set hlsearch. -nnoremap :nohl +nnoremap hl :nohl From 22baafb7abc7d3cf2313583aa7df9e3807245171 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 6 Mar 2021 20:47:55 +0000 Subject: [PATCH 120/419] Revert to TAB for completion ,jump ,snippet etc.. --- mapping.d/coc_map.vim | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/mapping.d/coc_map.vim b/mapping.d/coc_map.vim index 8d2d044..a7fb5da 100644 --- a/mapping.d/coc_map.vim +++ b/mapping.d/coc_map.vim @@ -1,12 +1,19 @@ -"Use tab for trigger completion with characters ahead and navigate. "Use command ':verbose imap ' to make sure tab is not mapped by other plugin. "Map for trigger completion, completion confirm, snippet expand and jump like VSCode - -inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() -inoremap pumvisible() ? "\" : "\" + inoremap + \ pumvisible() ? coc#_select_confirm() : + \ coc#expandableOrJumpable() ? + \ "\=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\" : + \ check_back_space() ? "\" : + \ coc#refresh() + + function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' + endfunction + +"Note: the `coc-snippets` extension is required for this to work. +let g:coc_snippet_next = '' " to confirm completion, use: carriage return (Enter) inoremap pumvisible() ? "\" : "\" From 89be94c5d2f5a0b6fbadd2a9d3e66b9e435ae392 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 6 Mar 2021 20:50:08 +0000 Subject: [PATCH 121/419] Group doc_show_hover and symbol highlight/references in a augroup --- plugrc.d/coc.vim | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/plugrc.d/coc.vim b/plugrc.d/coc.vim index 8c68b9d..89f438a 100644 --- a/plugrc.d/coc.vim +++ b/plugrc.d/coc.vim @@ -32,12 +32,17 @@ function! s:show_hover_doc() call timer_start(3000, 'ShowDocIfNoDiagnostic') endfunction -"autocmd CursorHoldI * :call show_hover_doc() -"autocmd CursorHold * :call show_hover_doc() +augroup hover_doc + autocmd! + "autocmd CursorHoldI * :call show_hover_doc() + "autocmd CursorHold * :call show_hover_doc() +augroup end +augroup reference_signature + autocmd! " Highlight the symbol and its references when holding the cursor. autocmd CursorHold * silent call CocActionAsync('highlight') -autocmd CursorHoldI * silent call CocActionAsync('showSignatureHelp') +augroup end " Use `:Format` to format current buffer command! -nargs=0 Format :call CocAction('format') From 134373019268f5c1a0d92c130cfa6a57a0742091 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 6 Mar 2021 20:58:02 +0000 Subject: [PATCH 122/419] Update Plugin resource for fzf --- plugins.vim | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/plugins.vim b/plugins.vim index feb365a..99f3119 100755 --- a/plugins.vim +++ b/plugins.vim @@ -45,11 +45,7 @@ Plug 'sbdchd/neoformat' " === Fuzzy Finder === "fzf is a general-purpose command-line fuzzy finder. -" PlugInstall and PlugUpdate will clone fzf in ~/.fzf and run the install script -Plug 'junegunn/fzf', { 'dir': '~/.local/share/nvim/plugged/fzf/', 'do': './install --all' } -" Both options are optional. You don't have to install fzf in ~/.fzf -" and you don't have to run the install script if you use fzf only in Vim. -Plug 'junegunn/fzf.vim' +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " === Markdown Plugins === From 2b145d80721997661f5c782d591d9c202c6f368f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 6 Mar 2021 21:01:33 +0000 Subject: [PATCH 123/419] Use local variable line ie.l:lines=all for specify to formatOnSave to format the whole buffer this replaces the formatdiff=1 with cause errors when writing a new buffer --- plugrc.d/clang_tools.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim index 6d7450d..05b5712 100644 --- a/plugrc.d/clang_tools.vim +++ b/plugrc.d/clang_tools.vim @@ -25,7 +25,7 @@ endfunction nmap :call ClangCheck() function! Formatonsave() - let l:formatdiff = 1 + let l:lines = "all" py3f /usr/share/vim/addons/syntax/clang-format.py endfunction From 9bad83441c4c7a85cdf38ed9f9e0cf1e0532dd1a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 6 Mar 2021 21:26:28 +0000 Subject: [PATCH 124/419] Tidy up args for clangd --- coc-settings.json | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/coc-settings.json b/coc-settings.json index ba89b83..6ca5087 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -3,15 +3,10 @@ "clangd": { "command": "clangd", "args": [ - "--all-scopes-completion=true", "--clang-tidy", - "--completion-style=detailed", - "--cross-file-rename", - "--background-index", - "--header-insertion=iwyu", - "--suggest-missing-includes", - "--recovery-ast", - "-j=4" + "--completion-style=bundled", + "-j=4", + "--malloc-trim" ], "rootPatterns": [ "compile_commands.json", From bd0d09928ce8cbbc895a9c483ca0eefe3b766ed5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 15 Mar 2021 17:05:54 +0000 Subject: [PATCH 125/419] Update markdown previews mappings and configuration --- mapping.d/markdown_preview_map.vim | 10 ------- plugrc.d/markdown_preview.vim | 45 ++++++++---------------------- 2 files changed, 11 insertions(+), 44 deletions(-) diff --git a/mapping.d/markdown_preview_map.vim b/mapping.d/markdown_preview_map.vim index 3a62612..38089d5 100644 --- a/mapping.d/markdown_preview_map.vim +++ b/mapping.d/markdown_preview_map.vim @@ -1,12 +1,2 @@ - " for normal mode - "nmap MarkdownPreview - "" for insert mode - "imap MarkdownPreview - "" for normal mode - "nmap StopMarkdownPreview - "" for insert mode - "imap StopMarkdownPreview - " for insert mode " - imap MarkdownPreviewToggle " for normal mode " nmap MarkdownPreviewToggle diff --git a/plugrc.d/markdown_preview.vim b/plugrc.d/markdown_preview.vim index 1b9be04..e59e18e 100644 --- a/plugrc.d/markdown_preview.vim +++ b/plugrc.d/markdown_preview.vim @@ -1,36 +1,4 @@ -" let g:mkdp_path_to_chrome = "" - "" Path to the chrome or the command to open chrome (or other modern browsers). - "" If set, g:mkdp_browserfunc would be ignored. - - "let g:mkdp_browserfunc = 'MKDP_browserfunc_default' - "" Callback Vim function to open browser, the only parameter is the url to open. - - "let g:mkdp_auto_start = 0 - "" Set to 1, Vim will open the preview window on entering the Markdown - "" buffer. - - "let g:mkdp_auto_open = 0 - "" Set to 1, Vim will automatically open the preview window when you edit a - "" Markdown file. - - "let g:mkdp_auto_close = 1 - "" Set to 1, Vim will automatically close the current preview window when - "" switching from one Markdown buffer to another. - - "let g:mkdp_refresh_slow = 0 - "" Set to 1, Vim will just refresh Markdown when saving the buffer or - "" leaving from insert mode. With default 0, it will automatically refresh - "" Markdown as you edit or move the cursor. - - "let g:mkdp_command_for_global = 0 - "" Set to 1, the MarkdownPreview command can be used for all files, - "" by default it can only be used in Markdown files. - - "let g:mkdp_open_to_the_world = 0 - "" Set to 1, the preview server will be available to others in your network. - "" By default, the server only listens on localhost (127.0.0.1). - - " set to 1, nvim will open the preview window after entering the markdown buffer +" set to 1, nvim will open the preview window after entering the markdown buffer " default: 0 let g:mkdp_auto_start = 0 @@ -86,6 +54,8 @@ let g:mkdp_browserfunc = '' " relative: mean the cursor position alway show at the relative positon of the preview page " hide_yaml_meta: if hide yaml metadata, default is 1 " sequence_diagrams: js-sequence-diagrams options +" content_editable: if enable content editable for preview page, default: v:false +" disable_filename: if disable filename header for preview page, default: 0 let g:mkdp_preview_options = { \ 'mkit': {}, \ 'katex': {}, @@ -95,13 +65,17 @@ let g:mkdp_preview_options = { \ 'sync_scroll_type': 'middle', \ 'hide_yaml_meta': 1, \ 'sequence_diagrams': {}, - \ 'flowchart_diagrams': {} + \ 'flowchart_diagrams': {}, + \ 'content_editable': v:false, + \ 'disable_filename': 0 \ } " use a custom markdown style must be absolute path +" like '/Users/username/markdown.css' or expand('~/markdown.css') let g:mkdp_markdown_css = '' " use a custom highlight style must absolute path +" like '/Users/username/highlight.css' or expand('~/highlight.css') let g:mkdp_highlight_css = '' " use a custom port to start server or random for empty @@ -111,3 +85,6 @@ let g:mkdp_port = '' " ${name} will be replace with the file name let g:mkdp_page_title = '「${name}」' +" recognized filetypes +" these filetypes will have MarkdownPreview... commands +let g:mkdp_filetypes = ['markdown'] From ee6a2a5846c931e88c0fec085ef49387541d338d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 16 Mar 2021 03:52:52 +0000 Subject: [PATCH 126/419] Add malloc-trim option to clangd and enable pylint as the default python linter --- coc-settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coc-settings.json b/coc-settings.json index 6ca5087..5f958bd 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -4,7 +4,6 @@ "command": "clangd", "args": [ "--clang-tidy", - "--completion-style=bundled", "-j=4", "--malloc-trim" ], @@ -45,6 +44,7 @@ "html.enable": true, "html.format.enable": true, "python.linting.enabled": true, + "python.linting.pylintEnabled": true, "coc.preferences.formatOnSaveFiletypes": [ "css", "Markdown", From 96055122dcda96c7924872279f5eceb2e62361b4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 16 Mar 2021 04:26:32 +0000 Subject: [PATCH 127/419] Detect buildfile as using make and *.pdc as markdown.pandoc --- plugrc.d/ftdetect.vim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugrc.d/ftdetect.vim b/plugrc.d/ftdetect.vim index 54db35b..dfe9e78 100644 --- a/plugrc.d/ftdetect.vim +++ b/plugrc.d/ftdetect.vim @@ -1,3 +1,11 @@ augroup detectfiletypes autocmd! BufRead,BufNewFile *.mxx,*.mpp,*.txx,*.tpp setfiletype cpp augroup END + +augroup pandoc_syntax + au! BufNewFile,BufFilePre,BufRead *.pdc set filetype=markdown.pandoc +augroup END + +augroup build2_syntax + au! BufNewFile,BufFilePre,BufRead buildfile set filetype=make +augroup END From 97b33edf35359b55377f94a75196b0682abc069d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 16 Mar 2021 04:27:19 +0000 Subject: [PATCH 128/419] Add plugin for pandoc's markdown syntax --- plugins.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins.vim b/plugins.vim index 99f3119..ab54643 100755 --- a/plugins.vim +++ b/plugins.vim @@ -54,7 +54,10 @@ Plug 'godlygeek/tabular' Plug 'plasticboy/vim-markdown' "A markdown previewer prebuild binary -Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': 'markdown' } +Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} + +"Pandoc Markdown +Plug 'vim-pandoc/vim-pandoc-syntax' " === Language Specific Plugins === From 44b5a523aa7f0d41412dda534ee568a908f3d2d9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 1 Apr 2021 02:51:23 +0000 Subject: [PATCH 129/419] Use the pandoc syntax for vim wiki Set *.pdc as having a filetype of pandoc --- plugrc.d/ftdetect.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugrc.d/ftdetect.vim b/plugrc.d/ftdetect.vim index dfe9e78..59b3164 100644 --- a/plugrc.d/ftdetect.vim +++ b/plugrc.d/ftdetect.vim @@ -6,6 +6,10 @@ augroup pandoc_syntax au! BufNewFile,BufFilePre,BufRead *.pdc set filetype=markdown.pandoc augroup END +augroup pandoc_syntax + autocmd! FileType vimwiki set syntax=markdown.pandoc +augroup END + augroup build2_syntax au! BufNewFile,BufFilePre,BufRead buildfile set filetype=make augroup END From 2f52ad57c582d63b5912e2448231e6ce7e73760f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 1 Apr 2021 02:54:50 +0000 Subject: [PATCH 130/419] Add support for vim wiki for organizing notes --- plugins.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins.vim b/plugins.vim index ab54643..337fa2e 100755 --- a/plugins.vim +++ b/plugins.vim @@ -59,6 +59,9 @@ Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': "Pandoc Markdown Plug 'vim-pandoc/vim-pandoc-syntax' +"Vim Wiki +Plug 'vimwiki/vimwiki' + " === Language Specific Plugins === From 7b9f6296113df0410652cbc4b5508cee1f3b878f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 1 Apr 2021 09:24:58 +0000 Subject: [PATCH 131/419] Revert using pandoc syntax for vimwiki --- plugrc.d/ftdetect.vim | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugrc.d/ftdetect.vim b/plugrc.d/ftdetect.vim index 59b3164..dfe9e78 100644 --- a/plugrc.d/ftdetect.vim +++ b/plugrc.d/ftdetect.vim @@ -6,10 +6,6 @@ augroup pandoc_syntax au! BufNewFile,BufFilePre,BufRead *.pdc set filetype=markdown.pandoc augroup END -augroup pandoc_syntax - autocmd! FileType vimwiki set syntax=markdown.pandoc -augroup END - augroup build2_syntax au! BufNewFile,BufFilePre,BufRead buildfile set filetype=make augroup END From 7c9b44739f72f1b026e1b8a860be7cc2f33faa6a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Apr 2021 10:29:54 +0000 Subject: [PATCH 132/419] Change spellcheck mapping from ,st to ,ts The new mappings can be taken as meaning toggle spellcheck --- mapping.d/spellcheck_map.vim | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mapping.d/spellcheck_map.vim b/mapping.d/spellcheck_map.vim index 35d381b..75fb38d 100644 --- a/mapping.d/spellcheck_map.vim +++ b/mapping.d/spellcheck_map.vim @@ -1,14 +1,14 @@ " === Spell checking === " " For help on spell checking :help spell -" Pressing ,st will toggle and untoggle spell checking -map st :setlocal spell! "toggle to alternate configuration of spellcheck +" Pressing ,ts will toggle and untoggle spell checking +map ts :setlocal spell! "toggle to alternate configuration of spellcheck " Shortcuts using -map sn ]s "next spellcheck iteam -map sp [s "previous spellcheck iteam -map sg zg "mark word as good in local spellfile :NOTE checkout zG for internal spellfile -map sw zw "mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile +map sn ]s "next spellcheck iteam +map sp [s "previous spellcheck iteam +map sg zg "mark word as good in local spellfile :NOTE checkout zG for internal spellfile +map sw zw "mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile map usg zug "undo marking of word as good map usw zuw "undo marking of word as wrong map sc z= "check for suggestions for the underlined word From 6721f32b7f115a4e457f559ce1fa21a6b155674d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Apr 2021 12:13:13 +0000 Subject: [PATCH 133/419] Cosmetic change for tabnext to prevent comment from popup in ex command mode when ,t is invoked --- mapping.d/tab_buffer_map.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mapping.d/tab_buffer_map.vim b/mapping.d/tab_buffer_map.vim index 708f8d1..7e8fa2e 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/mapping.d/tab_buffer_map.vim @@ -34,7 +34,8 @@ map tm :tabmove map tn :tabnext map tp :tabprevious map tf :tabfirst -map t :tabnext "pass a positive or negative argument to the command to move by that step" +"pass a positive or negative argument to the command to move by that step" +map t :tabnext " Let 'tl' toggle between this and the last accessed tab let g:lasttab = 1 From dd52015847702db45082fc9fca45f1212e8ba7ca Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 23 May 2021 02:21:13 +0000 Subject: [PATCH 134/419] Prefer gas as the default assembler with intel syntax --- editor.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor.vim b/editor.vim index 3b094ad..71e1129 100644 --- a/editor.vim +++ b/editor.vim @@ -20,7 +20,7 @@ filetype plugin indent on syntax on "set assembly language file to use nasm -let g:asmsyntax = "nasm" +let g:asmsyntax = "asm" "Set clipboard to the + registers only "if you want to use the * also add ,unnamed From ccfabab3a9811b635e0884ed39a6aaa8e9c1e05d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 27 May 2021 13:56:43 +0000 Subject: [PATCH 135/419] Detect *.s and *.asm as assembly files --- plugrc.d/ftdetect.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugrc.d/ftdetect.vim b/plugrc.d/ftdetect.vim index dfe9e78..0c0c462 100644 --- a/plugrc.d/ftdetect.vim +++ b/plugrc.d/ftdetect.vim @@ -9,3 +9,7 @@ augroup END augroup build2_syntax au! BufNewFile,BufFilePre,BufRead buildfile set filetype=make augroup END + +augroup asmfiletypes + autocmd! BufRead,BufNewFile *.s,*.asm set filetype=asm +augroup END From 31d1c3580468561ee2afb8633117f2cacef392ff Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 27 May 2021 14:14:30 +0000 Subject: [PATCH 136/419] Specify the --query-driver option since clangd doesn't detect g++-11 stdlib files Use n+1 for number of jobs used by clangd --- coc-settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coc-settings.json b/coc-settings.json index 5f958bd..839f918 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -3,8 +3,9 @@ "clangd": { "command": "clangd", "args": [ + "--query-driver=/usr/bin/g++", "--clang-tidy", - "-j=4", + "-j=5", "--malloc-trim" ], "rootPatterns": [ From 84b3ff5cb529e2a9f817548ad38ef41f40ccd7c8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 27 May 2021 16:33:42 +0000 Subject: [PATCH 137/419] Add vimwiki to emoji filetype --- coc-settings.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/coc-settings.json b/coc-settings.json index 839f918..16ca89f 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -58,5 +58,8 @@ ], "eslint.autoFixOnSave": true, "prettier.eslintIntegration": true, - "yaml.format.enable": true + "yaml.format.enable": true, + "coc.source.emoji.filetypes":[ + "markdown","vimwiki" + ] } From e921f53888465206b95a155a9d5e7a675dea3003 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 27 May 2021 16:39:45 +0000 Subject: [PATCH 138/419] Minor tweaks to syntastic --- plugrc.d/syntastic.vim | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugrc.d/syntastic.vim b/plugrc.d/syntastic.vim index e8914ba..e602c7c 100644 --- a/plugrc.d/syntastic.vim +++ b/plugrc.d/syntastic.vim @@ -15,13 +15,13 @@ let g:syntastic_cpp_checkers = ['cppcheck'] let g:syntastic_cpp_cppcheck_args="--enable=warning,style,performance,portability,information,missingInclude --inconclusive --force -j 4 --template=gcc --language=c++" let g:syntastic_cpp_compiler = 'g++' let g:syntastic_cpp_compiler_options = '-std=c++20' -let g:syntastic_cpp_check_header = 1 - +let g:syntastic_cpp_check_header = 0 "change to 0" +"fill the |location-list| with the errors found by the checkers" let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 " auto open/close location list let g:syntastic_check_on_open = 0 " check also when just opened the file -let g:syntastic_check_on_wq = 0 +let g:syntastic_check_on_wq = 0 " check when ever buffers are written to disk" let b:syntastic_mode="active" let g:syntastic_enable_signs = 1 @@ -31,8 +31,8 @@ let g:syntastic_enable_signs = 1 " don't put icons on the sign column (it hides the vcs status icons of signify) let g:syntastic_error_symbol = '✗' let g:syntastic_warning_symbol = '⚠' -let g:syntastic_style_error_symbol = '✗' -let g:syntastic_style_warning_symbol = '⚠' +let g:syntastic_style_error_symbol = 's>' +let g:syntastic_style_warning_symbol = 'sw' "Let syntastic enable ballons ie.popups for error messages -let g:syntastic_enable_balloons =1 +let g:syntastic_enable_balloons =1 "Enable or Disable ballons" From 05b0a10f8f8428dc9fb9a3a04039c8a900ff02bf Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 8 Jun 2021 00:16:53 +0000 Subject: [PATCH 139/419] Refactor neovim configurations to use lua.init move all configuration file in root to lua folder all config folders like mapping and plugrc are move to lua/ prefer lua plugins alternative to vimscript plugins Notable mentions *use nvim-lsp over coc.nvim *lualine over airline *nvim-tree over nerdtree *telescope over fzf.vim *Neomake over syntastic Over time all vimscript will be converted to lua This is a work in progress and more testing would have to be done to claim stable. NOTE: In the Long run all plugins not used will be deleted alongside their configurations --- editor.vim | 151 ---------------- {plugrc.d => ftdetect}/ftdetect.vim | 0 init.lua | 27 +++ init.vim | 26 --- lua/editor.lua | 166 ++++++++++++++++++ lua/mapinit.lua | 22 +++ lua/mapping/autopairs.lua | 21 +++ {mapping.d => lua/mapping}/coc_map.vim | 0 lua/mapping/compe.lua | 60 +++++++ lua/mapping/copy_paste_map.vim | 5 + {mapping.d => lua/mapping}/folding_map.vim | 0 {mapping.d => lua/mapping}/fzf_map.vim | 0 .../mapping}/highlighting_map.vim | 0 lua/mapping/lspconfig.lua | 79 +++++++++ .../mapping}/markdown_preview_map.vim | 0 {mapping.d => lua/mapping}/nerdtree_map.vim | 0 {mapping.d => lua/mapping}/spellcheck_map.vim | 0 {mapping.d => lua/mapping}/syntastic_map.vim | 0 {mapping.d => lua/mapping}/tab_buffer_map.vim | 2 +- lua/mapping/telescope.lua | 7 + {mapping.d => lua/mapping}/terminal_map.vim | 0 lua/mapping/tree.lua | 51 ++++++ lua/mapping/trouble.lua | 18 ++ lua/mapping/vista.lua | 1 + .../mapping}/visual_fnd_replace_map.vim | 0 lua/mapping/vsnip.vim | 22 +++ lua/pluginit.lua | 26 +++ lua/plugins.lua | 118 +++++++++++++ {plugrc.d => lua/plugrc}/airline.vim | 0 lua/plugrc/bufferline.lua | 21 +++ {plugrc.d => lua/plugrc}/coc.vim | 9 - lua/plugrc/compe.lua | 29 +++ {plugrc.d => lua/plugrc}/fzf.vim | 0 lua/plugrc/lspconfig.lua | 42 +++++ lua/plugrc/lualine.lua | 57 ++++++ {plugrc.d => lua/plugrc}/markdown_preview.vim | 0 {plugrc.d => lua/plugrc}/multiple_cursor.vim | 0 {plugrc.d => lua/plugrc}/neoformat.vim | 7 + lua/plugrc/neomake.lua | 20 +++ {plugrc.d => lua/plugrc}/nerdtree_git.vim | 0 lua/plugrc/onedark.lua | 17 ++ {plugrc.d => lua/plugrc}/sexy_status_bar.vim | 0 {plugrc.d => lua/plugrc}/syntastic.vim | 0 lua/plugrc/tree.lua | 81 +++++++++ lua/plugrc/treesitter.lua | 15 ++ lua/plugrc/trouble.lua | 46 +++++ lua/plugrc/vista.lua | 4 + lua/plugrc/whichkey.lua | 62 +++++++ lua/terminal.lua | 9 + lua/utils.lua | 12 ++ mapinit.vim | 13 -- mapping.d/copy_paste_map.vim | 4 - pluginit.vim | 15 -- plugins.vim | 102 ----------- plugrc.d/clang_tools.vim | 32 ---- plugrc.d/vista.vim | 53 ------ terminal.vim | 6 - ui.vim | 28 --- 58 files changed, 1046 insertions(+), 440 deletions(-) delete mode 100644 editor.vim rename {plugrc.d => ftdetect}/ftdetect.vim (100%) create mode 100755 init.lua delete mode 100755 init.vim create mode 100644 lua/editor.lua create mode 100644 lua/mapinit.lua create mode 100644 lua/mapping/autopairs.lua rename {mapping.d => lua/mapping}/coc_map.vim (100%) create mode 100644 lua/mapping/compe.lua create mode 100644 lua/mapping/copy_paste_map.vim rename {mapping.d => lua/mapping}/folding_map.vim (100%) rename {mapping.d => lua/mapping}/fzf_map.vim (100%) rename {mapping.d => lua/mapping}/highlighting_map.vim (100%) create mode 100644 lua/mapping/lspconfig.lua rename {mapping.d => lua/mapping}/markdown_preview_map.vim (100%) rename {mapping.d => lua/mapping}/nerdtree_map.vim (100%) rename {mapping.d => lua/mapping}/spellcheck_map.vim (100%) rename {mapping.d => lua/mapping}/syntastic_map.vim (100%) rename {mapping.d => lua/mapping}/tab_buffer_map.vim (98%) create mode 100644 lua/mapping/telescope.lua rename {mapping.d => lua/mapping}/terminal_map.vim (100%) create mode 100644 lua/mapping/tree.lua create mode 100644 lua/mapping/trouble.lua create mode 100644 lua/mapping/vista.lua rename {mapping.d => lua/mapping}/visual_fnd_replace_map.vim (100%) create mode 100644 lua/mapping/vsnip.vim create mode 100644 lua/pluginit.lua create mode 100755 lua/plugins.lua rename {plugrc.d => lua/plugrc}/airline.vim (100%) create mode 100644 lua/plugrc/bufferline.lua rename {plugrc.d => lua/plugrc}/coc.vim (88%) create mode 100644 lua/plugrc/compe.lua rename {plugrc.d => lua/plugrc}/fzf.vim (100%) create mode 100644 lua/plugrc/lspconfig.lua create mode 100644 lua/plugrc/lualine.lua rename {plugrc.d => lua/plugrc}/markdown_preview.vim (100%) rename {plugrc.d => lua/plugrc}/multiple_cursor.vim (100%) rename {plugrc.d => lua/plugrc}/neoformat.vim (85%) create mode 100644 lua/plugrc/neomake.lua rename {plugrc.d => lua/plugrc}/nerdtree_git.vim (100%) create mode 100644 lua/plugrc/onedark.lua rename {plugrc.d => lua/plugrc}/sexy_status_bar.vim (100%) rename {plugrc.d => lua/plugrc}/syntastic.vim (100%) create mode 100644 lua/plugrc/tree.lua create mode 100644 lua/plugrc/treesitter.lua create mode 100644 lua/plugrc/trouble.lua create mode 100644 lua/plugrc/vista.lua create mode 100644 lua/plugrc/whichkey.lua create mode 100644 lua/terminal.lua create mode 100644 lua/utils.lua delete mode 100644 mapinit.vim delete mode 100644 mapping.d/copy_paste_map.vim delete mode 100644 pluginit.vim delete mode 100755 plugins.vim delete mode 100644 plugrc.d/clang_tools.vim delete mode 100644 plugrc.d/vista.vim delete mode 100644 terminal.vim delete mode 100644 ui.vim diff --git a/editor.vim b/editor.vim deleted file mode 100644 index 71e1129..0000000 --- a/editor.vim +++ /dev/null @@ -1,151 +0,0 @@ -" Remap leader key to , -" With a map leader it's possible to do extra key combinations -" like w saves the current file -let mapleader = "," -let g:mapleader = "," -let maplocalleader = "." - -" Use Unix as the standard file type -set ffs=unix,dos,mac - -set encoding=UTF-8 - -" == Python provider configurations == " -let g:python3_host_prog='/usr/bin/python3' - -"enable loading the plugin files for specific file types -filetype plugin indent on - -"Switch on syntax highlighting. -syntax on - -"set assembly language file to use nasm -let g:asmsyntax = "asm" - -"Set clipboard to the + registers only -"if you want to use the * also add ,unnamed -if has('clipboard') - set clipboard+=unnamedplus -endif - -"Restore cursor to file position in previous editing session -"This autocommand jumps to the last known position in a file -"just after opening it, if the '" mark is set: > -:au BufReadPost * -\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' -\ | exe "normal! g`\"" -\ | endif - -"Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if -"available. This will store the multi-level undo information in a file. The result is -"that when you change a file, exit Vim, and then edit the file again, you can undo -"the changes made previously. -if has("vms") - set nobackup -else - set backup - if has('persistent_undo') - set undofile - set undolevels=30000 - set undoreload=30000 - endif -endif - -"for vim's swap ; undo and backup organization -set backupdir=/tmp// "Location for backup of files before editing " -set directory=/tmp// "The location of swap files ,ie buffers that have not been save ie in memory -set undodir=/tmp// "Location for storing undo tree of the edited file" -set backupext=.vimbak "The extension to be used for vim backup files - - -"Do not keep a backup or .swp file. I don't like to have junk -"files, my source is anyway in cvs/svn/p4/git. -set backup " create a backup of the file before editing -set undofile " enable undofile , which helps you undo a lot and redo also a lot -set noswapfile " enable saving unsaved/unwritten files in a *.swp file - -set nocompatible " Use Vim defaults (much better!), Vi is for 70's programmers! - -set expandtab " always expands tab to spaces. It is good when peers use different editor. - -set wildmenu "Display completion matches in a status line. That is when you type - "and there is more than one match. - -set completeopt=menuone,preview,noinsert " Don't let autocomplete affect usual typing habits - -set bs=2 " allow backspacing over everything in insert mode - -set hidden " This option allows you to switch between multiple buffers - "without saving a changed buffer - -set mouse=a "Automatically enable mouse usage - -set mousehide " Hide the mouse pointer while typing. - -set incsearch " highlight search string as search pattern is entered - -set hlsearch "disables last search hilighting - -set number " Show line numbers - -set wrap " Automatically wrap text that extends beyond the screen length. - -set backspace=indent,eol,start " Fixes common backspace problems - -set laststatus=2 " Status bar - -set showbreak=>>>\ \ \ " Wrap-broken line prefix - -set textwidth=79 " Line wrap (number of cols) - -set showmatch " Highlight matching brace - -set complete+=kspell "text complete with CTRL-N or CTRL-P - -"set spell " Enable spell-checking - -set spelllang=es_mx,en_us " Enable spell checking for espanol y ingles" - -set visualbell "Use visual bell (no beeping) - -set ignorecase "Always case-insensitie - -set smartcase " Enable smart-case search - -set autoindent " Auto-indent new lines - -set wildignorecase "case insensitive auto completion - -set shiftwidth=4 " Number of auto-indent spaces - -set smartindent " Enable smart-indent - -set smarttab " Enable smart-tabs - -set softtabstop=4 " Number of spaces per Tab - -set confirm " Prompt confirmation dialogs - -set ruler " Show row and column ruler information - -set cmdheight=2 "Command line height - -set autowriteall "Auto-write all file changes - -set history=10000 "Set the history size to maximum. by default it is 20 - -set list " Display unprintable characters f12 - switches - -set listchars=tab:••\ ,trail:•,extends:»,precedes:« " Unprintable chars mapping - - -" Enable folding -set foldmethod=indent -set foldlevel=99 - -"Enable Tags -set tags=tags - -"Remove Trailing whitespaces in all files -autocmd BufWritePre * %s/\s\+$//e - diff --git a/plugrc.d/ftdetect.vim b/ftdetect/ftdetect.vim similarity index 100% rename from plugrc.d/ftdetect.vim rename to ftdetect/ftdetect.vim diff --git a/init.lua b/init.lua new file mode 100755 index 0000000..0824cb4 --- /dev/null +++ b/init.lua @@ -0,0 +1,27 @@ +-- The system wide config file is found in /usr/share/nvim/sysinit.vim + +-- =================================================================== +-- === EDITOR CONFIGURATIONS === +-- =================================================================== +require('editor') + +-- =================================================================== +-- === PLUGINS CONFIGURATIONS === +-- =================================================================== +require('plugins') +require('pluginit') + +-- =================================================================== +-- === MAPPINGS ONFIGURATIONS === +-- =================================================================== +require('mapinit') + +-- =================================================================== +-- === FILETYPE CONFIGURATIONS === +-- =================================================================== +vim.cmd[[source $XDG_CONFIG_HOME/nvim/ftdetect/ftdetect.vim]] + +-- =================================================================== +-- === TERMINAL CONFIGURATIONS === +-- =================================================================== +require('terminal') diff --git a/init.vim b/init.vim deleted file mode 100755 index dbfbe6b..0000000 --- a/init.vim +++ /dev/null @@ -1,26 +0,0 @@ -"The system wide config file is found in /usr/share/nvim/sysinit.vim -"=================================================================== -"=== EDITOR CONFIGURATIONS === -"=================================================================== -source $XDG_CONFIG_HOME/nvim/editor.vim - -"=================================================================== -"=== TERMINAL CONFIGURATIONS === -"=================================================================== -source $XDG_CONFIG_HOME/nvim/terminal.vim - -"=================================================================== -"=== MAPPINGS ONFIGURATIONS === -"=================================================================== -source $XDG_CONFIG_HOME/nvim/mapinit.vim - -"=================================================================== -"=== PLUGINS CONFIGURATIONS === -"=================================================================== -source $XDG_CONFIG_HOME/nvim/pluginit.vim - -"=================================================================== -"=== UI CONFIGURATIONS === -"=================================================================== -source $XDG_CONFIG_HOME/nvim/ui.vim - diff --git a/lua/editor.lua b/lua/editor.lua new file mode 100644 index 0000000..5104031 --- /dev/null +++ b/lua/editor.lua @@ -0,0 +1,166 @@ +local o=vim.o +local wo=vim.wo +local bo=vim.bo +local g=vim.g +local cmd=vim.cmd +local fn=vim.fn +-- Remap leader key to , +-- With a map leader it's possible to do extra key combinations +-- like w saves the current file + +g.mapleader = ',' + +-- Use Unix as the standard file type +cmd[[set ffs=unix,dos,mac]] + +cmd[[set encoding=UTF-8]] + +-- == Python provider configurations == -- +g.python3_host_prog='/usr/bin/python3' + +--enable loading the plugin files for specific file types +cmd[[filetype plugin indent on]] + +--Switch on syntax highlighting. +cmd[[syntax on]] + +--set assembly language file to use nasm +g.asmsyntax = 'asm' + +--Set clipboard to the + registers only +--if you want to use the * also add ,unnamed +if fn.has('clipboard') == 1 then + cmd[[set clipboard+=unnamedplus]] +end + +--Restore cursor to file position in previous editing session +--This autocommand jumps to the last known position in a file +--just after opening it, if the '-- mark is set: > +--[[vim.call[[ +:au BufReadPost * +\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' +\ | exe "normal! g`\"" +\ | endif +]] + +--Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if +--available. This will store the multi-level undo information in a file. The result is +--that when you change a file, exit Vim, and then edit the file again, you can undo +--the changes made previously. +if fn.has('vms')==1 then + cmd[[set nobackup]] +else + cmd[[set backup]] + if fn.has('persistent_undo')==1 then + cmd[[set undofile]] + cmd[[set undolevels=30000]] + cmd[[set undoreload=30000]] + end +end + +--for vim's swap ; undo and backup organization +cmd[[set backupdir=/tmp//]] --Location for backup of files before editing -- +cmd[[set directory=/tmp//]] --The location of swap files ,ie buffers that have not been save ie in memory +cmd[[set undodir=/tmp//]] --Location for storing undo tree of the edited file-- +cmd[[set backupext=.vimbak]] --The extension to be used for vim backup files + +-- You will have bad experience for diagnostic messages when it's default 4000. +cmd[[set updatetime=100]] + +-- don't give |ins-completion-menu| messages. +cmd[[set shortmess+=c]] + +-- always merge signcolumn and number column into one +cmd[[set signcolumn=yes]] + + +--Do not keep a backup or .swp file. I don't like to have junk +--files, my source is anyway in cvs/svn/p4/git. +cmd[[set backup]] -- create a backup of the file before editing +cmd[[set undofile]] -- enable undofile , which helps you undo a lot and redo also a lot +cmd[[set noswapfile]] -- enable saving unsaved/unwritten files in a *.swp file + +cmd[[set nocompatible]] -- Use Vim defaults (much better!), Vi is for 70's programmers! + +cmd[[set expandtab]] -- always expands tab to spaces. It is good when peers use different editor. + +cmd[[set wildmenu]] --Display completion matches in a status line. That is when you type + --and there is more than one match. + +cmd[[set completeopt=menuone,noselect]] -- Don't let autocomplete affect usual typing habits + +cmd[[set bs=2]] -- allow backspacing over everything in insert mode + +cmd[[set hidden]] -- This option allows you to switch between multiple buffers + --without saving a changed buffer + +cmd[[set mouse=a]] --Automatically enable mouse usage + +cmd[[set mousehide]] -- Hide the mouse pointer while typing. + +cmd[[set incsearch]] -- highlight search string as search pattern is entered + +cmd[[set hlsearch]] --disables last search hilighting + +cmd[[set number]] -- Show line numbers + +cmd[[set wrap]] -- Automatically wrap text that extends beyond the screen length. + +cmd[[set backspace=indent,eol,start]] -- Fixes common backspace problems + +cmd[[set laststatus=2]] -- Status bar + +cmd[[set showbreak=>>>\ \ \]] -- Wrap-broken line prefix + +cmd[[set textwidth=79]] -- Line wrap (number of cols) + +cmd[[set showmatch]] -- Highlight matching brace + +cmd[[set complete+=kspell]] --text complete with CTRL-N or CTRL-P + +--set spell -- Enable spell-checking + +cmd[[set spelllang=es_mx,en_us]] -- Enable spell checking for espanol y ingles-- + +cmd[[set visualbell]] --Use visual bell (no beeping) + +cmd[[set ignorecase]] --Always case-insensitie + +cmd[[set smartcase]] -- Enable smart-case search + +cmd[[set autoindent]] -- Auto-indent new lines + +cmd[[set wildignorecase]] --case insensitive auto completion + +cmd[[set shiftwidth=4]] -- Number of auto-indent spaces + +cmd[[set smartindent]] -- Enable smart-indent + +cmd[[set smarttab]] -- Enable smart-tabs + +cmd[[set softtabstop=4]] -- Number of spaces per Tab + +cmd[[set confirm]] -- Prompt confirmation dialogs + +cmd[[set ruler]] -- Show row and column ruler information + +cmd[[set cmdheight=2]] --Command line height + +cmd[[set autowriteall]] --Auto-write all file changes + +cmd[[set history=10000]] --Set the history size to maximum. by default it is 20 + +cmd[[set list]] -- Display unprintable characters f12 - switches + +cmd[[set listchars=tab:••\ ,trail:•,extends:»,precedes:« ]] -- Unprintable chars mapping + + +-- Enable folding +cmd[[set foldmethod=indent]] +cmd[[set foldlevel=99]] + +--Enable Tags +cmd[[set tags=tags]] + +--Remove Trailing whitespaces in all files +cmd[[autocmd BufWritePre * %s/\s\+$//e]] diff --git a/lua/mapinit.lua b/lua/mapinit.lua new file mode 100644 index 0000000..ba74d1e --- /dev/null +++ b/lua/mapinit.lua @@ -0,0 +1,22 @@ +--Source the various mappings +local cmd= vim.cmd +cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/coc_map.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/fzf_map.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/nerdtree_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/copy_paste_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/visual_fnd_replace_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/spellcheck_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/tab_buffer_map.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/syntastic_map.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/markdown_preview_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/highlighting_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/folding_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/terminal_map.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/vsnip.vim]] +require('mapping/compe') +require('mapping/lspconfig') +require('mapping/autopairs') +require('mapping/tree') +require('mapping/telescope') +require('mapping/trouble') +require('mapping/vista') diff --git a/lua/mapping/autopairs.lua b/lua/mapping/autopairs.lua new file mode 100644 index 0000000..8c789c8 --- /dev/null +++ b/lua/mapping/autopairs.lua @@ -0,0 +1,21 @@ +local remap = vim.api.nvim_set_keymap +local npairs = require('nvim-autopairs') + +-- skip it, if you use another global object +_G.MUtils= {} + +vim.g.completion_confirm_key = "" +MUtils.completion_confirm=function() + if vim.fn.pumvisible() ~= 0 then + if vim.fn.complete_info()["selected"] ~= -1 then + return vim.fn["compe#confirm"](npairs.esc("")) + else + return npairs.esc("") + end + else + return npairs.autopairs_cr() + end +end + + +remap('i' , '','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true}) diff --git a/mapping.d/coc_map.vim b/lua/mapping/coc_map.vim similarity index 100% rename from mapping.d/coc_map.vim rename to lua/mapping/coc_map.vim diff --git a/lua/mapping/compe.lua b/lua/mapping/compe.lua new file mode 100644 index 0000000..339b1a0 --- /dev/null +++ b/lua/mapping/compe.lua @@ -0,0 +1,60 @@ +local function map(mode, lhs, rhs, opts) +local options= {noremap=true,silent=true,expr=true} + if opts then options = vim.tbl_extend('force', options, opts) end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) +end + +--local fn=vim.fn +--map('i','','compe#complete()') +--map('i','', 'compe#confirm()') +-- Mappings for auto import +vim.cmd[[ +inoremap compe#complete() +inoremap compe#confirm('') +inoremap compe#close('') +inoremap compe#scroll({ 'delta': +4 }) +inoremap compe#scroll({ 'delta': -4 }) +]] + +local t = function(str) + return vim.api.nvim_replace_termcodes(str, true, true, true) +end + +local check_back_space = function() + local col = vim.fn.col('.') - 1 + if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then + return true + else + return false + end +end + +-- Use (s-)tab to: +--- move to prev/next item in completion menuone +--- jump to prev/next snippet's placeholder +_G.tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + elseif vim.fn.call("vsnip#available", {1}) == 1 then + return t "(vsnip-expand-or-jump)" + elseif check_back_space() then + return t "" + else + return vim.fn['compe#complete']() + end +end +_G.s_tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then + return t "(vsnip-jump-prev)" + else + -- If is not working in your terminal, change it to + return t "" + end +end + +vim.api.nvim_set_keymap("i", "", "v:lua.tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("s", "", "v:lua.tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("i", "", "v:lua.s_tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("s", "", "v:lua.s_tab_complete()", {expr = true}) diff --git a/lua/mapping/copy_paste_map.vim b/lua/mapping/copy_paste_map.vim new file mode 100644 index 0000000..b5b6c98 --- /dev/null +++ b/lua/mapping/copy_paste_map.vim @@ -0,0 +1,5 @@ +" == Mappings for keyborad copy and paste == " +inoremap "*p +vnoremap "*y +vnoremap "*d +nnoremap "%y* diff --git a/mapping.d/folding_map.vim b/lua/mapping/folding_map.vim similarity index 100% rename from mapping.d/folding_map.vim rename to lua/mapping/folding_map.vim diff --git a/mapping.d/fzf_map.vim b/lua/mapping/fzf_map.vim similarity index 100% rename from mapping.d/fzf_map.vim rename to lua/mapping/fzf_map.vim diff --git a/mapping.d/highlighting_map.vim b/lua/mapping/highlighting_map.vim similarity index 100% rename from mapping.d/highlighting_map.vim rename to lua/mapping/highlighting_map.vim diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua new file mode 100644 index 0000000..8910362 --- /dev/null +++ b/lua/mapping/lspconfig.lua @@ -0,0 +1,79 @@ +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer + local function set_keymap(...) vim.api.nvim_set_keymap( ...) end + local function set_option(...) vim.api.nvim_set_option( ...) end + + --Enable completion triggered by + set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + + -- See `:help vim.lsp.*` for documentation on any of the below functions + set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + --set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + --set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + --set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + --set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + --set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + --set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + --set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + + -- Document Highlight on CursorHold(I) + vim.cmd [[autocmd CursorHold lua vim.lsp.buf.document_highlight()]] + vim.cmd [[autocmd CursorHoldI lua vim.lsp.buf.document_highlight()]] + vim.cmd [[autocmd CursorMoved lua vim.lsp.buf.clear_references()]] + +-- lsp provider to find the cursor word definition and reference +vim.cmd[[ + nnoremap gh lua require'lspsaga.provider'.lsp_finder() +]] + +-- code action +vim.cmd[[ +nnoremap ca lua require('lspsaga.codeaction').code_action() +vnoremap ca :lua require('lspsaga.codeaction').range_code_action() +]] + +-- show hover doc +vim.cmd [[ +nnoremap K lua require('lspsaga.hover').render_hover_doc() +]] + +-- scroll down hover doc or scroll in definition preview +vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] +-- scroll up hover doc +vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] + +-- show signature help +vim.cmd[[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] + +-- rename +vim.cmd[[nnoremap rn lua require('lspsaga.rename').rename()]] + +-- preview definition +vim.cmd[[nnoremap gd lua require'lspsaga.provider'.preview_definition()]] + +-- jump diagnostic +vim.cmd[[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] +vim.cmd[[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] + +-- only show diagnostic if cursor is over the area +vim.cmd[[nnoremap sc lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] + +-- show line diagnostic +vim.cmd[[nnoremap sl lua require'lspsaga.diagnostic'.show_line_diagnostics()]] + +-- float terminal also you can pass the cli command in open_float_terminal function +vim.cmd[[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] +-- or open_float_terminal('lazygit') +vim.cmd[[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] diff --git a/mapping.d/markdown_preview_map.vim b/lua/mapping/markdown_preview_map.vim similarity index 100% rename from mapping.d/markdown_preview_map.vim rename to lua/mapping/markdown_preview_map.vim diff --git a/mapping.d/nerdtree_map.vim b/lua/mapping/nerdtree_map.vim similarity index 100% rename from mapping.d/nerdtree_map.vim rename to lua/mapping/nerdtree_map.vim diff --git a/mapping.d/spellcheck_map.vim b/lua/mapping/spellcheck_map.vim similarity index 100% rename from mapping.d/spellcheck_map.vim rename to lua/mapping/spellcheck_map.vim diff --git a/mapping.d/syntastic_map.vim b/lua/mapping/syntastic_map.vim similarity index 100% rename from mapping.d/syntastic_map.vim rename to lua/mapping/syntastic_map.vim diff --git a/mapping.d/tab_buffer_map.vim b/lua/mapping/tab_buffer_map.vim similarity index 98% rename from mapping.d/tab_buffer_map.vim rename to lua/mapping/tab_buffer_map.vim index 7e8fa2e..a2e1ab5 100644 --- a/mapping.d/tab_buffer_map.vim +++ b/lua/mapping/tab_buffer_map.vim @@ -50,4 +50,4 @@ map te :tabedit =expand("%:p:h") " Switch CWD to the directory of the open buffer map cd :cd %:p:h:pwd -nmap :pop +"nmap :pop diff --git a/lua/mapping/telescope.lua b/lua/mapping/telescope.lua new file mode 100644 index 0000000..c0f885d --- /dev/null +++ b/lua/mapping/telescope.lua @@ -0,0 +1,7 @@ +-- Using lua functions +local map=vim.api.nvim_set_keymap +local options={noremap=true,silent=true} +map('n','ff',[[lua require('telescope.builtin').find_files()]] ,options) +map('n','fg',[[lua require('telescope.builtin').live_grep()]] ,options) +map('n','fb',[[lua require('telescope.builtin').buffers()]] ,options) +map('n','fh',[[lua require('telescope.builtin').help_tags()]],options) diff --git a/mapping.d/terminal_map.vim b/lua/mapping/terminal_map.vim similarity index 100% rename from mapping.d/terminal_map.vim rename to lua/mapping/terminal_map.vim diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua new file mode 100644 index 0000000..cfd4085 --- /dev/null +++ b/lua/mapping/tree.lua @@ -0,0 +1,51 @@ +local map=vim.api.nvim_set_keymap +local option={nnoremap=tree} + +map('n','n',':NvimTreeToggle',option) +map('n','r',':NvimTreeRefresh',option) +--map('n','tf',':NvimTreeFindFile',option) + +--[[ + [nnoremap :NvimTreeToggle + [nnoremap r :NvimTreeRefresh + [nnoremap n :NvimTreeFindFile + ]] +-- NvimTreeOpen and NvimTreeClose are also available if you need them + +local tree_cb = require'nvim-tree.config'.nvim_tree_callback + vim.g.nvim_tree_bindings = { + [""] = ":YourVimFunction()", + ["u"] = ":lua require'some_module'.some_function()", + + -- default mappings + [""] = tree_cb("edit"), + ["o"] = tree_cb("edit"), + ["<2-LeftMouse>"] = tree_cb("edit"), + ["<2-RightMouse>"] = tree_cb("cd"), + [""] = tree_cb("cd"), + [""] = tree_cb("vsplit"), + [""] = tree_cb("split"), + [""] = tree_cb("tabnew"), + ["<"] = tree_cb("prev_sibling"), + [">"] = tree_cb("next_sibling"), + [""] = tree_cb("close_node"), + [""] = tree_cb("close_node"), + [""] = tree_cb("preview"), + ["I"] = tree_cb("toggle_ignored"), + ["H"] = tree_cb("toggle_dotfiles"), + ["R"] = tree_cb("refresh"), + ["a"] = tree_cb("create"), + ["d"] = tree_cb("remove"), + ["r"] = tree_cb("rename"), + [""] = tree_cb("full_rename"), + ["x"] = tree_cb("cut"), + ["c"] = tree_cb("copy"), + ["p"] = tree_cb("paste"), + ["y"] = tree_cb("copy_name"), + ["Y"] = tree_cb("copy_path"), + ["gy"] = tree_cb("copy_absolute_path"), + ["[c"] = tree_cb("prev_git_item"), + ["]c"] = tree_cb("next_git_item"), + ["-"] = tree_cb("dir_up"), + ["q"] = tree_cb("close"), + } diff --git a/lua/mapping/trouble.lua b/lua/mapping/trouble.lua new file mode 100644 index 0000000..226e04f --- /dev/null +++ b/lua/mapping/trouble.lua @@ -0,0 +1,18 @@ +vim.api.nvim_set_keymap("n", "xx", "TroubleToggle", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "xw", "TroubleToggle lsp_workspace_diagnostics", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "xd", "TroubleToggle lsp_document_diagnostics", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "xl", "TroubleToggle loclist", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "xq", "TroubleToggle quickfix", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "xR", "TroubleToggle lsp_references", + {silent = true, noremap = true} +) diff --git a/lua/mapping/vista.lua b/lua/mapping/vista.lua new file mode 100644 index 0000000..7e55b5f --- /dev/null +++ b/lua/mapping/vista.lua @@ -0,0 +1 @@ +vim.api.nvim_set_keymap('n','vt','Vista!! ',{silent=true}) diff --git a/mapping.d/visual_fnd_replace_map.vim b/lua/mapping/visual_fnd_replace_map.vim similarity index 100% rename from mapping.d/visual_fnd_replace_map.vim rename to lua/mapping/visual_fnd_replace_map.vim diff --git a/lua/mapping/vsnip.vim b/lua/mapping/vsnip.vim new file mode 100644 index 0000000..9b58695 --- /dev/null +++ b/lua/mapping/vsnip.vim @@ -0,0 +1,22 @@ +" NOTE: You can use other key to expand snippet. + +" Expand +imap vsnip#expandable() ? '(vsnip-expand)' : '' +smap vsnip#expandable() ? '(vsnip-expand)' : '' + +" Expand or jump +imap vsnip#available(1) ? '(vsnip-expand-or-jump)' : '' +smap vsnip#available(1) ? '(vsnip-expand-or-jump)' : '' + +" Jump forward or backward +imap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' +smap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' +imap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' +smap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' + +" Select or cut text to use as $TM_SELECTED_TEXT in the next snippet. +" See https://github.com/hrsh7th/vim-vsnip/pull/50 +nmap s (vsnip-select-text) +xmap s (vsnip-select-text) +nmap S (vsnip-cut-text) +xmap S (vsnip-cut-text) diff --git a/lua/pluginit.lua b/lua/pluginit.lua new file mode 100644 index 0000000..6cd99fe --- /dev/null +++ b/lua/pluginit.lua @@ -0,0 +1,26 @@ +--========================================================== +--== PLUGINS INIT == +--========================================================== +-- +local cmd=vim.cmd +cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/coc.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/markdown_preview.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/syntastic.vim]] +cmd[[source $XDG_CONFIG_HOME/nvim/lua/plugrc/neoformat.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/nerdtree_git.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/airline.vim]] +cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/fzf.vim]] +require('plugrc/vista') +require('plugrc/tree') +require('plugrc/lspconfig') +require('plugrc/lualine') +require('gitsigns').setup() +require('plugrc/compe') +require("plugrc/bufferline") +require('nvim-autopairs').setup() +require('plugrc/neomake') +require('plugrc/treesitter') +require('telescope').setup() +require('plugrc/onedark') +require('plugrc/trouble') +require('plugrc/whichkey') diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100755 index 0000000..62dce6c --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,118 @@ +-- ============================================================================ -- +-- === PLUGINS === -- +-- ============================================================================ -- +--PLUG INS FOR NEOVIM +--Specify a directory for plugins +---For Neovim: ~/.local/share/nvim/plugged +--To make config resuable system wide use absolute path instead eg. +--/home/$USER/.local/share/nvim/plugged +---Avoid using standard Vim directory names like 'plugin' + +require 'paq-nvim' { + +{'savq/paq-nvim'}; +-- === Editor Plugins === -- +--A commenter for different Language +{'b3nj5m1n/kommentary'}; + +-- === Themes and Colour Scheme === +{'navarasu/onedark.nvim'}; + +-- === Git Plugin === + +--A vim plugin which shows git diff in the gutter (sign column). +{'lewis6991/gitsigns.nvim'}; + +-- === Status Line === + +--Status bar plugin +-- A blazing fast and easy to configure neovim statusline +{'hoob3rt/lualine.nvim'}; +-- Tabline +-- A snazzy buffer line (with minimal tab integration) for Neovim +{'akinsho/nvim-bufferline.lua'}; + +-- === Source Code Formater === + +--A neoformat plugin for code formating +{'sbdchd/neoformat',opt=true}; + +-- === Fuzzy Finder === +-- a highly extendable fuzzy finder over lists +-- for Find, Filter, Preview, Pick +{'nvim-lua/popup.nvim'}; +{'nvim-lua/plenary.nvim'}; +{'nvim-telescope/telescope.nvim'}; + +-- === Syntax Plugins === +--Nvim Treesitter configurations and abstraction layer +{'nvim-treesitter/nvim-treesitter', run=':TSUpdate'}; + +--Pandoc Markdown Syntax Highlighting-- +{'vim-pandoc/vim-pandoc-syntax',opt=true}; + +-- === Preview Plugin === +--A markdown previewer prebuild binary +{'npxbr/glow.nvim',run = ":GlowInstall",opt=true}; + + +--Vim Wiki +{'vimwiki/vimwiki',opt=true}; + +-- === Language Specific Plugins === + + +-- == LSP Client === + +--Coc is an intellisense engine for Vim/Neovim +--Use release branch (Recommend) +{'neoclide/coc.nvim', branch='release',opt=true}; +-- +{'neovim/nvim-lspconfig'}; +--A light-weight lsp plugin +{'glepnir/lspsaga.nvim'}; +--Show function signature when you type +{'ray-x/lsp_signature.nvim'}; +-- A pretty diagnostics, references, telescope +-- results, quickfix and location +-- list to help you solve all the trouble your code is causing +{'folke/trouble.nvim'}; + +--displays a popup with possible key bindings +--of the command you started typing +{"folke/which-key.nvim"}; + +-- == Auto Completions Engine == +{'hrsh7th/nvim-compe'}; + +-- Auto pairs +{'windwp/nvim-autopairs'}; + +-- === Code Snippets Plugins === +{"hrsh7th/vim-vsnip"}; + +--Snippets collection for a set of different +--programming languages for faster development. +{"rafamadriz/friendly-snippets"}; + +-- === Syntax Highlighting Engine === +--Asynchronous linting and make framework +{'neomake/neomake'}; + +-- === Tag Bar Plugin === + +--View and search LSP symbols, tags in Vim/NeoVim.-- +{'liuchengxu/vista.vim',opt=true}; + +-- === UI === -- +-- A Neovim File explorer +{'kyazdani42/nvim-tree.lua'}; + +-- == Icons == -- + +-- Glyphs and Icons for neovim +--Plug 'ryanoasis/vim-devicons' +{'kyazdani42/nvim-web-devicons'}; + +-- Initialize plugin system +} diff --git a/plugrc.d/airline.vim b/lua/plugrc/airline.vim similarity index 100% rename from plugrc.d/airline.vim rename to lua/plugrc/airline.vim diff --git a/lua/plugrc/bufferline.lua b/lua/plugrc/bufferline.lua new file mode 100644 index 0000000..826bb4d --- /dev/null +++ b/lua/plugrc/bufferline.lua @@ -0,0 +1,21 @@ +require('bufferline').setup { + options = { + numbers = "buffer_id", --| "ordinal" | "none" | "both", + number_style = "none", -- | "superscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2 + mappings = false, --| true , + max_name_length = 18, + max_prefix_length = 15, -- prefix used when a buffer is de-duplicated + tab_size = 18, + offsets = {{filetype = "NvimTree", text = "File Explorer", text_align = "left" --[[| "center" | "right",]]}}, + show_buffer_icons = true, --| false, -- disable filetype icons for buffers + show_buffer_close_icons = true,--| false, + show_close_icon = true, --| false, + show_tab_indicators = true, --| false, + persist_buffer_sort = true, -- whether or not custom sorted buffers should persist + -- can also be a table containing 2 custom separators + -- [focused and unfocused]. eg: { '|', '|' } + separator_style = "slant", --| "thick" | "thin" | { 'any', 'any' }, + enforce_regular_tabs = false, --| true, + always_show_bufferline = true, --| false, + } +} diff --git a/plugrc.d/coc.vim b/lua/plugrc/coc.vim similarity index 88% rename from plugrc.d/coc.vim rename to lua/plugrc/coc.vim index 89f438a..259828b 100644 --- a/plugrc.d/coc.vim +++ b/lua/plugrc/coc.vim @@ -1,12 +1,3 @@ -" You will have bad experience for diagnostic messages when it's default 4000. -set updatetime=100 - -" don't give |ins-completion-menu| messages. -set shortmess+=c - -" always merge signcolumn and number column into one -set signcolumn=yes - " Use K to show documentation in preview window nnoremap K :call show_documentation() diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua new file mode 100644 index 0000000..98af82e --- /dev/null +++ b/lua/plugrc/compe.lua @@ -0,0 +1,29 @@ +require'compe'.setup { + enabled = true; + autocomplete = true; + debug = false; + min_length = 1; + preselect = 'enable'; + throttle_time = 80; + source_timeout = 200; + incomplete_delay = 400; + max_abbr_width = 100; + max_kind_width = 100; + max_menu_width = 100; + documentation = true; + + source = { + path = true; + buffer = true; + calc = true; + nvim_lsp = true; + nvim_lua = true; + vsnip = true; + ultisnips = true; + spell = true; + tags = true; + snippets_nvim = true; + treesitter = true; + }; +} +vim.cmd[[highlight link CompeDocumentation NormalFloat]] diff --git a/plugrc.d/fzf.vim b/lua/plugrc/fzf.vim similarity index 100% rename from plugrc.d/fzf.vim rename to lua/plugrc/fzf.vim diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua new file mode 100644 index 0000000..c1b698c --- /dev/null +++ b/lua/plugrc/lspconfig.lua @@ -0,0 +1,42 @@ +local lsp=require('lspconfig') +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true; +lsp.clangd.setup{ +cmd = +{ "clangd", "--query-driver=/usr/bin/g++","--clang-tidy","-j=5","--malloc-trim" }, +capabilities=capabilities; +filetypes = { "c", "cpp"}, + -- on_init = function to handle changing offsetEncoding +root_dir = lsp.util.root_pattern("compile_commands.json", ".git"), +} + +lsp.hls.setup{capabilities=capabilities;} +require('lspsaga').init_lsp_saga() + cfg = { + bind = true, -- This is mandatory, otherwise border config won't get registered. + -- If you want to hook lspsaga or other signature handler, pls set to false + doc_lines = 9, -- will show two lines of comment/doc + --(if there are more than two lines in doc, will be truncated); + -- set to 0 if you DO NOT want any API comments be shown + -- This setting only take effect in insert mode, + -- it does not affect signature help in normal + -- mode, 10 by default + + floating_window = true, -- show hint in a floating window, + --set to false for virtual text only mode + hint_enable = true, -- virtual hint enable + hint_prefix = "🐼 ", -- Panda for parameter + hint_scheme = "String", + use_lspsaga = false, -- set to true if you want to use lspsaga popup + hi_parameter = "Search", -- how your parameter will be highlight + max_height = 18, -- max height of signature floating_window, + --if content is more than max_height, you can scroll down + -- to view the hiding contents + max_width = 120, -- max_width of signature floating_window, + --line will be wrapped if exceed max_width + handler_opts = { + border = "single" -- double, single, shadow, none + }, +} + +require'lsp_signature'.on_attach(cfg) diff --git a/lua/plugrc/lualine.lua b/lua/plugrc/lualine.lua new file mode 100644 index 0000000..060de98 --- /dev/null +++ b/lua/plugrc/lualine.lua @@ -0,0 +1,57 @@ +local function total_num_lines() + return vim.fn.expand(vim.fn.line('$')) +end + +require'lualine'.setup { + options = { + icons_enabled = true, + theme = 'gruvbox', + component_separators = {'', ''}, + section_separators = {'', ''}, + disabled_filetypes = {}, + padding = 1, -- adds padding to the left and right of components + left_padding = 1, -- adds padding to the left of components + right_padding =1, -- adds padding to the right of components + upper = false, -- displays components in uppercase + lower = false, -- displays components in lowercase + format = nil -- format function, formats component's output + }, + sections = { + lualine_a = {'mode'}, + lualine_b = {'branch','diff'}, + lualine_c = { + { + 'filename', + file_status = true, -- displays file status (readonly status, modified status) + path = 1 -- 0 = just filename, 1 = relative path, 2 = absolute path + } + }, + lualine_x = {'encoding', 'fileformat', 'filetype'}, + lualine_y = {}, --'progress' is the default + lualine_z = { + {'location', + left_padding = 0, -- adds padding to the left of components + right_padding =0, -- adds padding to the right of components + icon = nil, -- displays icon in front of the component + separator = ':', -- overwrites component_separators for component + condition = nil, -- condition function, component is loaded when function returns true + -- custom color for component in format + -- color = {fg = '#rrggbb', bg= '#rrggbb', gui='style'} + -- or highlight group + -- color = "WarningMsg" + color = nil + }, + total_num_lines + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = {'filename'}, + lualine_x = {'location'}, + lualine_y = {}, + lualine_z = {} + }, + tabline = {}, + extensions = {} +} + } diff --git a/plugrc.d/markdown_preview.vim b/lua/plugrc/markdown_preview.vim similarity index 100% rename from plugrc.d/markdown_preview.vim rename to lua/plugrc/markdown_preview.vim diff --git a/plugrc.d/multiple_cursor.vim b/lua/plugrc/multiple_cursor.vim similarity index 100% rename from plugrc.d/multiple_cursor.vim rename to lua/plugrc/multiple_cursor.vim diff --git a/plugrc.d/neoformat.vim b/lua/plugrc/neoformat.vim similarity index 85% rename from plugrc.d/neoformat.vim rename to lua/plugrc/neoformat.vim index 3baf97a..734dde2 100644 --- a/plugrc.d/neoformat.vim +++ b/lua/plugrc/neoformat.vim @@ -18,6 +18,11 @@ let g:neoformat_python_yapf = { \ 'valid_exit_codes': [0, 23], \ 'no_append': 1, \ } +let g:neoformat_cpp_clangformat={ + \ 'exe':'clang-format', + \ 'args': ['-style=file'], + \ 'stdin':1, + \} let g:neoformat_nix_nixfmt = { \ 'exe': 'nixfmt', \ 'args': ["--width=80" ,"--check"], @@ -34,6 +39,8 @@ let g:neoformat_enabled_python = ['yapf'] "Haskell code formatter let g:neoformat_enabled_haskell= ['hindent'] +let g:neofomat_enabled_cpp=['clangformat'] + augroup fmt autocmd! autocmd BufWritePre *.hs,*.py,*.nix,CMakeLists.txt | Neoformat diff --git a/lua/plugrc/neomake.lua b/lua/plugrc/neomake.lua new file mode 100644 index 0000000..20ac1c6 --- /dev/null +++ b/lua/plugrc/neomake.lua @@ -0,0 +1,20 @@ +--When writing a buffer (no delay). +vim.fn['neomake#configure#automake']('nw',750) + +-- Neomake C configurations +vim.g.neomake_c_uses_stdin = 1 +vim.g.neomake_c_enabled_makers = {'cppcheck'} +vim.g.neomake_c_cppcheck_maker = { + exe ='cppcheck', + args={'--enable=warning,style,performance,portability,information,missingInclude', + '--inconclusive','--force','-j 4','--template=gcc','--language=c'}, +} + +-- Neomake C++ configurations +vim.g.neomake_cpp_uses_stdin = 1 +vim.g.neomake_cpp_enabled_makers = {'cppcheck'} +vim.g.neomake_cpp_cppcheck_maker = { + exe ='cppcheck', + args={'--enable=warning,style,performance,portability,information,missingInclude', + '--inconclusive','--force','-j 4','--template=gcc','--language=c++'}, +} diff --git a/plugrc.d/nerdtree_git.vim b/lua/plugrc/nerdtree_git.vim similarity index 100% rename from plugrc.d/nerdtree_git.vim rename to lua/plugrc/nerdtree_git.vim diff --git a/lua/plugrc/onedark.lua b/lua/plugrc/onedark.lua new file mode 100644 index 0000000..bab7fd6 --- /dev/null +++ b/lua/plugrc/onedark.lua @@ -0,0 +1,17 @@ +--Enable true colours in terminal +vim.cmd[[set termguicolors]] + +--Set the background color of nvim +vim.cmd[[set background=dark]] + +--Default colorscheme +--colorscheme evening + +--Onedark colorscheme +vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer +require('onedark').setup() +vim.cmd[[colorscheme onedark]] + +--set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 +-- Set status line display +-- source $HOME/.config/nvim/plugrc.d/sexy_status_bar.vim diff --git a/plugrc.d/sexy_status_bar.vim b/lua/plugrc/sexy_status_bar.vim similarity index 100% rename from plugrc.d/sexy_status_bar.vim rename to lua/plugrc/sexy_status_bar.vim diff --git a/plugrc.d/syntastic.vim b/lua/plugrc/syntastic.vim similarity index 100% rename from plugrc.d/syntastic.vim rename to lua/plugrc/syntastic.vim diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua new file mode 100644 index 0000000..1bf1ffd --- /dev/null +++ b/lua/plugrc/tree.lua @@ -0,0 +1,81 @@ +local g=vim.g + +--g.nvim_tree_side = 'right' --left by default +--g.nvim_tree_width = 40 --30 by default +g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} --empty by default +g.nvim_tree_gitignore = 1 --0 by default +g.nvim_tree_auto_open = 0 --0 by default, opens the tree when typing `vim $DIR` or `vim` +g.nvim_tree_auto_close = 1 --0 by default, closes the tree when it's the last window +g.nvim_tree_auto_ignore_ft = { } --empty by default, don't auto open tree on specific filetypes. +g.nvim_tree_quit_on_open = 0 --0 by default, closes the tree when you open a file +--g.nvim_tree_follow = 1 --0 by default, this option allows the cursor to be updated when entering a buffer +g.nvim_tree_indent_markers = 1 --0 by default, this option shows indent markers when folders are open +--g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` +g.nvim_tree_git_hl = 1 --0 by default, will enable file highlight for git attributes (can be used without the icons). +g.nvim_tree_highlight_opened_files = 1 --0 by default, will enable folder and file icon highlight for opened files/directories. +--g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options +--g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open +--g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file +--g.nvim_tree_disable_netrw = 0 --1 by default, disables netrw +--g.nvim_tree_hijack_netrw = 0 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) +--g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names +--g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree +--g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics +--g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. +g.nvim_tree_window_picker_exclude = { + filetype= { + 'packer', + 'qf' + }, + buftype= { + 'terminal' + } + } +-- Dictionary of buffer option names mapped to a list of option values that +-- indicates to the window picker that the buffer's window should not be +-- selectable. +--[[ + [g.nvim_tree_special_files = [ 'README.md'] -- List of filenames that gets highlighted with NvimTreeSpecialFile + [g.nvim_tree_show_icons = { + [ \ 'git': 1, + [ \ 'folders': 1, + [ \ 'files': 1, + [ \ } + ]] +--If 0, do not show the icons for one of 'git' 'folder' and 'files' +--1 by default, notice that if 'files' is 1, it will only display +--if nvim-web-devicons is installed and on your runtimepath + +-- default will show icon by default if no icon is provided +-- default shows no icon by default +--[[ + [g.nvim_tree_icons = { + [ \ 'default': '', + [ \ 'symlink': '', + [ \ 'git': { + [ \ 'unstaged': --✗--, + [ \ 'staged': --✓--, + [ \ 'unmerged': ----, + [ \ 'renamed': --➜--, + [ \ 'untracked': --★--, + [ \ 'deleted': ----, + [ \ 'ignored': --◌-- + [ \ }, + [ \ 'folder': { + [ \ 'default': ----, + [ \ 'open': ----, + [ \ 'empty': ----, + [ \ 'empty_open': ----, + [ \ 'symlink': ----, + [ \ 'symlink_open': ----, + [ \ }, + [ \ 'lsp': { + [ \ 'hint': ----, + [ \ 'info': ----, + [ \ 'warning': ----, + [ \ 'error': ----, + [ \ } + [ \ } + ]] +-- a list of groups can be found at `:help nvim_tree_highlight` +--highlight NvimTreeFolderIcon guibg=blue diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua new file mode 100644 index 0000000..2177628 --- /dev/null +++ b/lua/plugrc/treesitter.lua @@ -0,0 +1,15 @@ +require'nvim-treesitter.configs'.setup { + ensure_installed = {'cpp','c','yaml','comment','json','haskell','lua','python'}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages + ignore_install = {}, -- List of parsers to ignore installing + highlight = { + enable = true, -- false will disable the whole extension + disable = {}, -- list of language that will be disabled + }, + incremental_selection = { + enable = true + }, + indent = { + enable = true + }, + autopairs={enable = true} +} diff --git a/lua/plugrc/trouble.lua b/lua/plugrc/trouble.lua new file mode 100644 index 0000000..a7e316d --- /dev/null +++ b/lua/plugrc/trouble.lua @@ -0,0 +1,46 @@ +require("trouble").setup +{ + position = "bottom", -- position of the list can be: bottom, top, left, right + height = 10, -- height of the trouble list when position is top or bottom + width = 50, -- width of the list when position is left or right + icons = true, -- use devicons for filenames + mode = "lsp_workspace_diagnostics", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" + fold_open = "", -- icon used for open folds + fold_closed = "", -- icon used for closed folds + action_keys = { -- key mappings for actions in the trouble list + -- map to {} to remove a mapping, for example: + -- close = {}, + close = "q", -- close the list + cancel = "", -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = {"", ""}, -- jump to the diagnostic or open / close folds + open_split = { "" }, -- open buffer in new split + open_vsplit = { "" }, -- open buffer in new vsplit + open_tab = { "" }, -- open buffer in new tab + jump_close = {"o"}, -- jump to the diagnostic and close the list + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "K", -- opens a small poup with the full multiline message + preview = "p", -- preview the diagnostic location + close_folds = {"zM", "zm"}, -- close all folds + open_folds = {"zR", "zr"}, -- open all folds + toggle_fold = {"zA", "za"}, -- toggle fold of current file + previous = "k", -- preview item + next = "j" -- next item + }, + indent_lines = true, -- add an indent guide below the fold icons + auto_open = false, -- automatically open the list when you have diagnostics + auto_close = false, -- automatically close the list when you have no diagnostics + auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window + auto_fold = false, -- automatically fold a file trouble list at creation + signs = { + -- icons / text used for a diagnostic + error = "", + warning = "", + hint = "", + information = "", + other = "﫠" + }, + use_lsp_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client +} + diff --git a/lua/plugrc/vista.lua b/lua/plugrc/vista.lua new file mode 100644 index 0000000..c77312c --- /dev/null +++ b/lua/plugrc/vista.lua @@ -0,0 +1,4 @@ +local g=vim.g + +g.vista_sidebar_width=40 +g.vista_echo_cursor_strategy='floating_win' diff --git a/lua/plugrc/whichkey.lua b/lua/plugrc/whichkey.lua new file mode 100644 index 0000000..61dc4f6 --- /dev/null +++ b/lua/plugrc/whichkey.lua @@ -0,0 +1,62 @@ +require('which-key').setup +{ + plugins = { + marks = true, -- shows a list of your marks on ' and ` + registers = true, -- shows your registers on " in NORMAL or in INSERT mode + -- the presets plugin, adds help for a bunch of default keybindings in Neovim + -- No actual key bindings are created + spelling = { + enabled = false, -- enabling this will show WhichKey when pressing z= to select spelling suggestions + suggestions = 20, -- how many suggestions should be shown in the list? + }, + presets = { + operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion + motions = true, -- adds help for motions + text_objects = true, -- help for text objects triggered after entering an operator + windows = true, -- default bindings on + nav = true, -- misc bindings to work with windows + z = true, -- bindings for folds, spelling and others prefixed with z + g = true, -- bindings for prefixed with g + }, + }, + -- add operators that will trigger motion and text object completion + -- to enable all native operators, set the preset / operators plugin above + operators = { gc = "Comments" }, + key_labels = { + -- override the label used to display some keys. It doesn't effect WK in any other way. + -- For example: + -- [""] = "SPC", + -- [""] = "RET", + -- [""] = "TAB", + }, + icons = { + breadcrumb = "»", -- symbol used in the command line area that shows your active key combo + separator = "➜", -- symbol used between a key and it's label + group = "+", -- symbol prepended to a group + }, + window = { + border = "none", -- none, single, double, shadow + position = "bottom", -- bottom, top + margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] + padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] + }, + layout = { + height = { min = 4, max = 25 }, -- min and max height of the columns + width = { min = 20, max = 50 }, -- min and max width of the columns + spacing = 3, -- spacing between columns + align = "left", -- align columns left, center or right + }, + ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label + hidden = { "", "", "", "", "call", "lua", "^:", "^ "}, -- hide mapping boilerplate + show_help = true, -- show help message on the command line when the popup is visible + triggers = "auto", -- automatically setup triggers + -- triggers = {""} -- or specify a list manually + triggers_blacklist = { + -- list of mode / prefixes that should never be hooked by WhichKey + -- this is mostly relevant for key maps that start with a native binding + -- most people should not need to change this + i = { "j", "k" }, + v = { "j", "k" }, + }, +} + diff --git a/lua/terminal.lua b/lua/terminal.lua new file mode 100644 index 0000000..c01a082 --- /dev/null +++ b/lua/terminal.lua @@ -0,0 +1,9 @@ +-- open new split panes to right and below +vim.cmd[[set splitright]] +vim.cmd[[set splitbelow]] + +--hide line numbers in terminal windows +vim.cmd[[au BufEnter term://* setlocal nonumber]] + +--Always start terminal in insert mode +vim.cmd[[autocmd TermOpen * startinsert]] diff --git a/lua/utils.lua b/lua/utils.lua new file mode 100644 index 0000000..cdc4c35 --- /dev/null +++ b/lua/utils.lua @@ -0,0 +1,12 @@ +function _G.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 + +local scopes = {o = vim.o, b = vim.bo, w = vim.wo} + +function _G.opt(scope, key, value) + scopes[scope][key] = value + if scope ~= 'o' then scopes['o'][key] = value end +end diff --git a/mapinit.vim b/mapinit.vim deleted file mode 100644 index a768179..0000000 --- a/mapinit.vim +++ /dev/null @@ -1,13 +0,0 @@ -"Source the various mappings -source $XDG_CONFIG_HOME/nvim/mapping.d/coc_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/fzf_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/nerdtree_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/copy_paste_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/visual_fnd_replace_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/spellcheck_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/tab_buffer_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/syntastic_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/markdown_preview_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/highlighting_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/folding_map.vim -source $XDG_CONFIG_HOME/nvim/mapping.d/terminal_map.vim diff --git a/mapping.d/copy_paste_map.vim b/mapping.d/copy_paste_map.vim deleted file mode 100644 index 4ba18f5..0000000 --- a/mapping.d/copy_paste_map.vim +++ /dev/null @@ -1,4 +0,0 @@ -" == Mappings for keyborad copy and paste == " -:inoremap "+pa -:vnoremap "+y -:vnoremap "+d diff --git a/pluginit.vim b/pluginit.vim deleted file mode 100644 index e56d68f..0000000 --- a/pluginit.vim +++ /dev/null @@ -1,15 +0,0 @@ -"========================================================== -"== PLUGINS INIT == -"========================================================== -" -source $XDG_CONFIG_HOME/nvim/plugins.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/coc.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/markdown_preview.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/syntastic.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/neoformat.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/nerdtree_git.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/airline.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/fzf.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/ftdetect.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/vista.vim -source $XDG_CONFIG_HOME/nvim/plugrc.d/clang_tools.vim diff --git a/plugins.vim b/plugins.vim deleted file mode 100755 index 337fa2e..0000000 --- a/plugins.vim +++ /dev/null @@ -1,102 +0,0 @@ -" ============================================================================ " -" === PLUGINS === " -" ============================================================================ " -"PLUG INS FOR NEOVIM -"Specify a directory for plugins -"-For Neovim: ~/.local/share/nvim/plugged -"To make config resuable system wide use absolute path instead eg. -"/home/$USER/.local/share/nvim/plugged -"-Avoid using standard Vim directory names like 'plugin' - -call plug#begin('$HOME/.local/share/nvim/plugged') - -" === Editor Plugins === " - -"Multiple cursor editing -Plug 'terryma/vim-multiple-cursors' - -"A commenter for different Language -Plug 'scrooloose/nerdcommenter' - -" === Themes and Colour Scheme === - -Plug 'danilo-augusto/vim-afterglow' -Plug 'joshdick/onedark.vim' -Plug 'morhetz/gruvbox' - -" === Git Plugin === - -"A vim plugin which shows git diff in the gutter (sign column). -Plug 'airblade/vim-gitgutter' - -"A plugin of NERDTree showing git status flags -Plug 'Xuyuanp/nerdtree-git-plugin' - -" === Satus Line === - -"Status bar plugin - Plug 'vim-airline/vim-airline' - -" === Source Code Formater === - -"A neoformat plugin for code formating -Plug 'sbdchd/neoformat' - -" === Fuzzy Finder === - -"fzf is a general-purpose command-line fuzzy finder. -Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } - -" === Markdown Plugins === - -"Markdown Syntax Highlighting" -Plug 'godlygeek/tabular' -Plug 'plasticboy/vim-markdown' - -"A markdown previewer prebuild binary -Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} - -"Pandoc Markdown -Plug 'vim-pandoc/vim-pandoc-syntax' - -"Vim Wiki -Plug 'vimwiki/vimwiki' - -" === Language Specific Plugins === - - -" == Code Completion Engine === - -"Coc is an intellisense engine for Vim/Neovim -"Use release branch (Recommend) -Plug 'neoclide/coc.nvim', {'branch': 'release'} - -" === Code Snippets Plugins === - - -" === Syntax Highlighting Engine === - -"Syntastic is a syntax checking plugin for Vim -Plug 'scrooloose/syntastic' - -"A collection of language syntax packs for Vim. -Plug 'sheerun/vim-polyglot' - -" === Tag Bar Plugin === - -"View and search LSP symbols, tags in Vim/NeoVim." -Plug 'liuchengxu/vista.vim' - -" === UI === " - -" A Neovim File explorer -Plug 'preservim/nerdtree' - -" == Icons == " - -" Glyphs and Icons for neovim -"Plug 'ryanoasis/vim-devicons' - -" Initialize plugin system -call plug#end() - diff --git a/plugrc.d/clang_tools.vim b/plugrc.d/clang_tools.vim deleted file mode 100644 index 05b5712..0000000 --- a/plugrc.d/clang_tools.vim +++ /dev/null @@ -1,32 +0,0 @@ -function! ClangCheckImpl(cmd) - if &autowrite | wall | endif - echo "Running " . a:cmd . " ..." - let l:output = system(a:cmd) - cexpr l:output - cwindow - let w:quickfix_title = a:cmd - if v:shell_error != 0 - cc - endif - let g:clang_check_last_cmd = a:cmd -endfunction - -function! ClangCheck() - let l:filename = expand('%') - if l:filename =~ '\.\(cpp\|cxx\|cc\|c\)$' - call ClangCheckImpl("clang-check --analyze " . l:filename) - elseif exists("g:clang_check_last_cmd") - call ClangCheckImpl(g:clang_check_last_cmd) - else - echo "Can't detect file's compilation arguments and no previous clang-check invocation!" - endif -endfunction - -nmap :call ClangCheck() - -function! Formatonsave() - let l:lines = "all" - py3f /usr/share/vim/addons/syntax/clang-format.py -endfunction - -autocmd BufWritePre *.c,*.h,*.cpp,*.hpp,*.tpp,*.mpp,*.cxx,*.hxx,*.txx,*.mxx call Formatonsave() diff --git a/plugrc.d/vista.vim b/plugrc.d/vista.vim deleted file mode 100644 index 0958798..0000000 --- a/plugrc.d/vista.vim +++ /dev/null @@ -1,53 +0,0 @@ -"You can do the following to show the nearest method/function in your statusline -"function! NearestMethodOrFunction() abort - "return get(b:, 'vista_nearest_method_or_function', '') -"endfunction - -"set statusline+=%{NearestMethodOrFunction()} - -" OR -" By default vista.vim never run if you don't call it explicitly. -" -" If you want to show the nearest function in your statusline automatically, -" you can add the following line to your vimrc -autocmd VimEnter * call vista#RunForNearestMethodOrFunction() - -" Ensure you have installed some decent font to show these pretty symbols, -" then you can enable icon for the kind. -let g:vista#renderer#enable_icon = 1 - -" The default icons can't be suitable for all the filetypes, you can extend it as you wish. -"let g:vista#renderer#icons = { -"\ "function": "\uf794", -"\ "variable": "\uf71b", -"\ } - -" How each level is indented and what to prepend. -" This could make the display more compact or more spacious. -" e.g., more compact: ["▸ ", ""] -" Note: this option only works the LSP executives, doesn't work for `:Vista ctags`. -"let g:vista_icon_indent = ["╰─▸ ", "├─▸ "] - -" Executive used when opening vista sidebar without specifying it. -" See all the avaliable executives via `:echo g:vista#executives`. -"let g:vista_default_executive = 'coc' - -" Set the executive for some filetypes explicitly. Use the explicit executive -" instead of the default one for these filetypes when using `:Vista` without -" specifying the executive. -"let g:vista_executive_for = { - "\ 'cpp': 'ctags', - "\ 'php': 'ctags', - "\ } - -" Declare the command including the executable and options used to generate ctags output -" for some certain filetypes.The file path will be appened to your custom command. -" For example: -"let g:vista_ctags_cmd = { - "\ 'haskell': 'hasktags -x -o - -c', - "\ } - -" To enable fzf's preview window set g:vista_fzf_preview. -" The elements of g:vista_fzf_preview will be passed as arguments to fzf#vim#with_preview() -" For example: -let g:vista_fzf_preview = ['right:50%'] diff --git a/terminal.vim b/terminal.vim deleted file mode 100644 index 705a6d1..0000000 --- a/terminal.vim +++ /dev/null @@ -1,6 +0,0 @@ -" open new split panes to right and below -set splitright -set splitbelow - -"Always start terminal in insert mode -autocmd TermOpen * startinsert diff --git a/ui.vim b/ui.vim deleted file mode 100644 index 9d564c6..0000000 --- a/ui.vim +++ /dev/null @@ -1,28 +0,0 @@ -"Enable true colours in terminal -set termguicolors - -"Set the background color of nvim -set background=dark - -"Default colorscheme -"colorscheme evening - -"Onedark colorscheme -colorscheme onedark -let g:airline_theme="onedark" - -"Gruvbox colorscheme -"colorscheme gruvbox -"let g:airline_theme="gruvbox" - -"Afterglow colorscheme -"colorscheme afterglow -"let g:airline_theme="afterglow" -"let g:afterglow_blackout=0 -"let g:afterglow_inherit_background=1 -"let g:afterglow_italic_comments=1 -"let g:one_allow_italics = 1 " I love italic for comments - -"set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 -" Set status line display -" source $HOME/.config/nvim/plugrc.d/sexy_status_bar.vim From 3c0ddab5d2ecf8f8316201d79cb3e585a6a2f4aa Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 8 Jun 2021 23:09:31 +0000 Subject: [PATCH 140/419] Add filetype detections for zig --- ftdetect/ftdetect.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ftdetect/ftdetect.vim b/ftdetect/ftdetect.vim index 0c0c462..dc4a8f9 100644 --- a/ftdetect/ftdetect.vim +++ b/ftdetect/ftdetect.vim @@ -13,3 +13,7 @@ augroup END augroup asmfiletypes autocmd! BufRead,BufNewFile *.s,*.asm set filetype=asm augroup END + +augroup zigfile + autocmd! BufRead,BufNewFile *.zig set filetype=zig +augroup END From 4bc0d4873558f56bd243709f1b6affd42a5551ac Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 8 Jun 2021 23:11:27 +0000 Subject: [PATCH 141/419] Add zig lsp configurations --- lua/plugrc/lspconfig.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua index c1b698c..91420dd 100644 --- a/lua/plugrc/lspconfig.lua +++ b/lua/plugrc/lspconfig.lua @@ -11,6 +11,13 @@ root_dir = lsp.util.root_pattern("compile_commands.json", ".git"), } lsp.hls.setup{capabilities=capabilities;} +require'lspconfig'.zls.setup +{ + cmd={"zls"}, + filetypes = {"zig","zir"}, + capabilities=capabilities; + root_dir = lsp.util.root_pattern("zls.json", ".git") +} require('lspsaga').init_lsp_saga() cfg = { bind = true, -- This is mandatory, otherwise border config won't get registered. From d7651a783e2d4047ae78d3830d11b7bff52b69e6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 8 Jun 2021 23:14:44 +0000 Subject: [PATCH 142/419] Add zig to treesitter ensure_installed --- lua/plugrc/treesitter.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 2177628..957a0dd 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -1,5 +1,5 @@ require'nvim-treesitter.configs'.setup { - ensure_installed = {'cpp','c','yaml','comment','json','haskell','lua','python'}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages + ensure_installed = {'cpp','c','zig','yaml','comment','json','haskell','lua','python'}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing highlight = { enable = true, -- false will disable the whole extension From 2c2103ee6525128497f9a1eb65daf5ec8b5fd66e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 8 Jun 2021 23:54:00 +0000 Subject: [PATCH 143/419] Remove autocommand for lsp.buf.ducument_highlight() --- lua/mapping/lspconfig.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 8910362..c6b1da4 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -28,11 +28,6 @@ set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - -- Document Highlight on CursorHold(I) - vim.cmd [[autocmd CursorHold lua vim.lsp.buf.document_highlight()]] - vim.cmd [[autocmd CursorHoldI lua vim.lsp.buf.document_highlight()]] - vim.cmd [[autocmd CursorMoved lua vim.lsp.buf.clear_references()]] - -- lsp provider to find the cursor word definition and reference vim.cmd[[ nnoremap gh lua require'lspsaga.provider'.lsp_finder() From 072ba8a3cc87f4ebbe6886b150f487a71fd4b488 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Jun 2021 07:40:00 +0000 Subject: [PATCH 144/419] Refactor and make changes to make mappings easier to recollect --- lua/mapping/lspconfig.lua | 33 +++++++++++++++++++++------------ lua/mapping/trouble.lua | 25 +++++++------------------ 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index c6b1da4..29a36de 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -10,28 +10,37 @@ local opts = { noremap=true, silent=true } -- See `:help vim.lsp.*` for documentation on any of the below functions - set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) --set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - --set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + --set_keymap('n', 'dt', 'lua vim.lsp.buf.type_definition()', opts) --set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) --set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) --set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) --set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) --set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + --set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) -- lsp provider to find the cursor word definition and reference vim.cmd[[ - nnoremap gh lua require'lspsaga.provider'.lsp_finder() + nnoremap gdr lua require'lspsaga.provider'.lsp_finder() ]] +-- lsp highlight element under cursor +--[[ vim.cmd[[ +highlight link LspReferenceText WildMenu +highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp +highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp +autocmd CursorHold lua vim.lsp.buf.document_highlight() +autocmd CursorHoldI lua vim.lsp.buf.document_highlight() +autocmd CursorMoved lua vim.lsp.buf.clear_references() +]] --]] -- code action vim.cmd[[ @@ -50,23 +59,23 @@ vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] -- show signature help -vim.cmd[[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] +vim.cmd[[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] -- rename vim.cmd[[nnoremap rn lua require('lspsaga.rename').rename()]] -- preview definition -vim.cmd[[nnoremap gd lua require'lspsaga.provider'.preview_definition()]] +vim.cmd[[nnoremap pd lua require'lspsaga.provider'.preview_definition()]] -- jump diagnostic vim.cmd[[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] vim.cmd[[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] -- only show diagnostic if cursor is over the area -vim.cmd[[nnoremap sc lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] +vim.cmd[[nnoremap scd lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] -- show line diagnostic -vim.cmd[[nnoremap sl lua require'lspsaga.diagnostic'.show_line_diagnostics()]] +vim.cmd[[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] -- float terminal also you can pass the cli command in open_float_terminal function vim.cmd[[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] diff --git a/lua/mapping/trouble.lua b/lua/mapping/trouble.lua index 226e04f..7f08732 100644 --- a/lua/mapping/trouble.lua +++ b/lua/mapping/trouble.lua @@ -1,18 +1,7 @@ -vim.api.nvim_set_keymap("n", "xx", "TroubleToggle", - {silent = true, noremap = true} -) -vim.api.nvim_set_keymap("n", "xw", "TroubleToggle lsp_workspace_diagnostics", - {silent = true, noremap = true} -) -vim.api.nvim_set_keymap("n", "xd", "TroubleToggle lsp_document_diagnostics", - {silent = true, noremap = true} -) -vim.api.nvim_set_keymap("n", "xl", "TroubleToggle loclist", - {silent = true, noremap = true} -) -vim.api.nvim_set_keymap("n", "xq", "TroubleToggle quickfix", - {silent = true, noremap = true} -) -vim.api.nvim_set_keymap("n", "xR", "TroubleToggle lsp_references", - {silent = true, noremap = true} -) +local opt = {silent = true, noremap = true} +vim.api.nvim_set_keymap("n", "tt", "TroubleToggle",opt) +vim.api.nvim_set_keymap("n", "tw", "TroubleToggle lsp_workspace_diagnostics",opt) +vim.api.nvim_set_keymap("n", "td", "TroubleToggle lsp_document_diagnostics",opt) +vim.api.nvim_set_keymap("n", "tl", "TroubleToggle loclist",opt) +vim.api.nvim_set_keymap("n", "tq", "TroubleToggle quickfix",opt) +vim.api.nvim_set_keymap("n", "tr", "TroubleToggle lsp_references",opt) From 45c926ef2cc645d12258e4fae38dedeead7889a9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Jun 2021 07:24:50 +0000 Subject: [PATCH 145/419] Renable and simplify restoring cursor to previous edition session position --- lua/editor.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 5104031..a1cc8e0 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -36,11 +36,11 @@ end --Restore cursor to file position in previous editing session --This autocommand jumps to the last known position in a file --just after opening it, if the '-- mark is set: > ---[[vim.call[[ -:au BufReadPost * -\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' -\ | exe "normal! g`\"" -\ | endif +cmd[[ +augroup restore_cursor + autocmd! + autocmd BufReadPost * call setpos(".", getpos("'\"")) +augroup END ]] --Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if @@ -87,7 +87,7 @@ cmd[[set expandtab]] -- always expands tab to spaces. It is good when peers cmd[[set wildmenu]] --Display completion matches in a status line. That is when you type --and there is more than one match. -cmd[[set completeopt=menuone,noselect]] -- Don't let autocomplete affect usual typing habits +cmd[[set completeopt=menuone,preview,noselect]] -- Don't let autocomplete affect usual typing habits cmd[[set bs=2]] -- allow backspacing over everything in insert mode From 0a16e011850b49026757404bb2b03ca30e8ac7ae Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Jun 2021 07:35:23 +0000 Subject: [PATCH 146/419] Remove mappings that have been replaced by lspsaga mappings --- lua/mapping/lspconfig.lua | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 29a36de..f3f0d3f 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -1,7 +1,7 @@ -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer - local function set_keymap(...) vim.api.nvim_set_keymap( ...) end - local function set_option(...) vim.api.nvim_set_option( ...) end + local function set_keymap(...) vim.api.nvim_set_keymap(...) end + local function set_option(...) vim.api.nvim_set_option(...) end --Enable completion triggered by set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') @@ -12,35 +12,17 @@ -- See `:help vim.lsp.*` for documentation on any of the below functions set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - --set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - --set_keymap('n', 'dt', 'lua vim.lsp.buf.type_definition()', opts) - --set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - --set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - --set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - --set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - --set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - --set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) -- lsp provider to find the cursor word definition and reference vim.cmd[[ nnoremap gdr lua require'lspsaga.provider'.lsp_finder() ]] --- lsp highlight element under cursor ---[[ vim.cmd[[ -highlight link LspReferenceText WildMenu -highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp -highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp -autocmd CursorHold lua vim.lsp.buf.document_highlight() -autocmd CursorHoldI lua vim.lsp.buf.document_highlight() -autocmd CursorMoved lua vim.lsp.buf.clear_references() -]] --]] -- code action vim.cmd[[ @@ -55,6 +37,7 @@ nnoremap K lua require('lspsaga.hover').render_hover_doc() -- scroll down hover doc or scroll in definition preview vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] + -- scroll up hover doc vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] @@ -79,5 +62,6 @@ vim.cmd[[nnoremap sld lua require'lspsaga.diagnostic'.show_ -- float terminal also you can pass the cli command in open_float_terminal function vim.cmd[[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] + -- or open_float_terminal('lazygit') vim.cmd[[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] From efadd58e46043259ad0f7f29efb374d8b629fa6c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Jun 2021 09:20:26 +0000 Subject: [PATCH 147/419] Set some mappings based on conditonal capabilities of language servers This help to enable only the features supported by a particular language and prevents creating mappings for unsupported features, which prevents errors echoed to neovims message --- lua/plugrc/lspconfig.lua | 49 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua index 91420dd..2aad2ae 100644 --- a/lua/plugrc/lspconfig.lua +++ b/lua/plugrc/lspconfig.lua @@ -1,28 +1,69 @@ local lsp=require('lspconfig') + +local on_attach = function(client,buffer) + + local function set_keymap(...) + vim.api.nvim_buf_set_keymap(buffer, ...) + end + + local opts = {noremap = true, silent = true} + +-- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting == true then + set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) + elseif client.resolved_capabilities.document_range_formatting == true then + set_keymap("n", "lf", "lua vim.lsp.buf.range_formatting()", opts) + end + + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight ==true then + -- lsp highlight element under cursor + vim.cmd[[ + highlight link LspReferenceText WildMenu + highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp + highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp + augroup lsp_document_highlight + autocmd! * + autocmd CursorHold lua vim.lsp.buf.document_highlight() + autocmd CursorHoldI lua vim.lsp.buf.document_highlight() + autocmd CursorMoved lua vim.lsp.buf.clear_references() + augroup END + ]] + end + + -- client.resolved_capabilities.type_definition =false + if client.resolved_capabilities.type_definition == true then + set_keymap('n', 'dt', 'lua vim.lsp.buf.type_definition()', opts) + end + +end + local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true; lsp.clangd.setup{ cmd = { "clangd", "--query-driver=/usr/bin/g++","--clang-tidy","-j=5","--malloc-trim" }, -capabilities=capabilities; +capabilities=capabilities, +on_attach= on_attach, filetypes = { "c", "cpp"}, -- on_init = function to handle changing offsetEncoding root_dir = lsp.util.root_pattern("compile_commands.json", ".git"), } -lsp.hls.setup{capabilities=capabilities;} +lsp.hls.setup{capabilities=capabilities, on_attach=on_attach} require'lspconfig'.zls.setup { cmd={"zls"}, filetypes = {"zig","zir"}, - capabilities=capabilities; + capabilities=capabilities, + on_attach=on_attach, root_dir = lsp.util.root_pattern("zls.json", ".git") } require('lspsaga').init_lsp_saga() cfg = { bind = true, -- This is mandatory, otherwise border config won't get registered. -- If you want to hook lspsaga or other signature handler, pls set to false - doc_lines = 9, -- will show two lines of comment/doc + doc_lines = 18,-- will show two lines of comment/doc --(if there are more than two lines in doc, will be truncated); -- set to 0 if you DO NOT want any API comments be shown -- This setting only take effect in insert mode, From c7a39eb5b3d70f216c5f5d75ef4f4346bbfa60f4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Jun 2021 09:26:53 +0000 Subject: [PATCH 148/419] Set troubles default mode to diagnostics mode Also enable auto close when there are no diagnostics --- lua/plugrc/trouble.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/trouble.lua b/lua/plugrc/trouble.lua index a7e316d..09d47d7 100644 --- a/lua/plugrc/trouble.lua +++ b/lua/plugrc/trouble.lua @@ -4,7 +4,7 @@ require("trouble").setup height = 10, -- height of the trouble list when position is top or bottom width = 50, -- width of the list when position is left or right icons = true, -- use devicons for filenames - mode = "lsp_workspace_diagnostics", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" + mode = "lsp_document_diagnostics", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" fold_open = "", -- icon used for open folds fold_closed = "", -- icon used for closed folds action_keys = { -- key mappings for actions in the trouble list @@ -30,7 +30,7 @@ require("trouble").setup }, indent_lines = true, -- add an indent guide below the fold icons auto_open = false, -- automatically open the list when you have diagnostics - auto_close = false, -- automatically close the list when you have no diagnostics + auto_close = true, -- automatically close the list when you have no diagnostics auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window auto_fold = false, -- automatically fold a file trouble list at creation signs = { From de344fa961eb3a3e80e71e00b1ae70c56cee8c21 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Jun 2021 09:28:13 +0000 Subject: [PATCH 149/419] Merge commands into a single Terminal autogroup command --- lua/terminal.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lua/terminal.lua b/lua/terminal.lua index c01a082..74813ab 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -2,8 +2,11 @@ vim.cmd[[set splitright]] vim.cmd[[set splitbelow]] ---hide line numbers in terminal windows -vim.cmd[[au BufEnter term://* setlocal nonumber]] - ---Always start terminal in insert mode -vim.cmd[[autocmd TermOpen * startinsert]] +vim.cmd [[ + augroup Terminal + autocmd! + au TermOpen * tnoremap :q + au TermOpen * startinsert + au TermOpen * set nonumber + augroup end +]] From 9c46128d23b3e3be29bd2cd2de0ad228a1165b87 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 17 Jun 2021 17:02:57 +0000 Subject: [PATCH 150/419] require lsp_singnature's attach function in the on_attach function --- lua/plugrc/lspconfig.lua | 57 ++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua index 2aad2ae..46afb45 100644 --- a/lua/plugrc/lspconfig.lua +++ b/lua/plugrc/lspconfig.lua @@ -1,7 +1,36 @@ local lsp=require('lspconfig') + signature_cfg = { + bind = true, -- This is mandatory, otherwise border config won't get registered. + -- If you want to hook lspsaga or other signature handler, pls set to false + doc_lines = 18,-- will show two lines of comment/doc + --(if there are more than two lines in doc, will be truncated); + -- set to 0 if you DO NOT want any API comments be shown + -- This setting only take effect in insert mode, + -- it does not affect signature help in normal + -- mode, 10 by default + + floating_window = true, -- show hint in a floating window, + --set to false for virtual text only mode + hint_enable = true, -- virtual hint enable + hint_prefix = "🐼 ", -- Panda for parameter + hint_scheme = "String", + use_lspsaga = false, -- set to true if you want to use lspsaga popup + hi_parameter = "Search", -- how your parameter will be highlight + max_height = 18, -- max height of signature floating_window, + --if content is more than max_height, you can scroll down + -- to view the hiding contents + max_width = 120, -- max_width of signature floating_window, + --line will be wrapped if exceed max_width + handler_opts = { + border = "single" -- double, single, shadow, none + }, +} + local on_attach = function(client,buffer) + require'lsp_signature'.on_attach(signature_cfg) + local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) end @@ -60,31 +89,3 @@ require'lspconfig'.zls.setup root_dir = lsp.util.root_pattern("zls.json", ".git") } require('lspsaga').init_lsp_saga() - cfg = { - bind = true, -- This is mandatory, otherwise border config won't get registered. - -- If you want to hook lspsaga or other signature handler, pls set to false - doc_lines = 18,-- will show two lines of comment/doc - --(if there are more than two lines in doc, will be truncated); - -- set to 0 if you DO NOT want any API comments be shown - -- This setting only take effect in insert mode, - -- it does not affect signature help in normal - -- mode, 10 by default - - floating_window = true, -- show hint in a floating window, - --set to false for virtual text only mode - hint_enable = true, -- virtual hint enable - hint_prefix = "🐼 ", -- Panda for parameter - hint_scheme = "String", - use_lspsaga = false, -- set to true if you want to use lspsaga popup - hi_parameter = "Search", -- how your parameter will be highlight - max_height = 18, -- max height of signature floating_window, - --if content is more than max_height, you can scroll down - -- to view the hiding contents - max_width = 120, -- max_width of signature floating_window, - --line will be wrapped if exceed max_width - handler_opts = { - border = "single" -- double, single, shadow, none - }, -} - -require'lsp_signature'.on_attach(cfg) From 3be98f02e5f087b4f4003657000601f646f260d0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 10 Jul 2021 23:25:32 +0000 Subject: [PATCH 151/419] Update tree to use new mappings api --- lua/mapping/tree.lua | 70 ++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua index cfd4085..ce26a18 100644 --- a/lua/mapping/tree.lua +++ b/lua/mapping/tree.lua @@ -5,47 +5,39 @@ map('n','n',':NvimTreeToggle',option) map('n','r',':NvimTreeRefresh',option) --map('n','tf',':NvimTreeFindFile',option) ---[[ - [nnoremap :NvimTreeToggle - [nnoremap r :NvimTreeRefresh - [nnoremap n :NvimTreeFindFile - ]] -- NvimTreeOpen and NvimTreeClose are also available if you need them local tree_cb = require'nvim-tree.config'.nvim_tree_callback vim.g.nvim_tree_bindings = { - [""] = ":YourVimFunction()", - ["u"] = ":lua require'some_module'.some_function()", - - -- default mappings - [""] = tree_cb("edit"), - ["o"] = tree_cb("edit"), - ["<2-LeftMouse>"] = tree_cb("edit"), - ["<2-RightMouse>"] = tree_cb("cd"), - [""] = tree_cb("cd"), - [""] = tree_cb("vsplit"), - [""] = tree_cb("split"), - [""] = tree_cb("tabnew"), - ["<"] = tree_cb("prev_sibling"), - [">"] = tree_cb("next_sibling"), - [""] = tree_cb("close_node"), - [""] = tree_cb("close_node"), - [""] = tree_cb("preview"), - ["I"] = tree_cb("toggle_ignored"), - ["H"] = tree_cb("toggle_dotfiles"), - ["R"] = tree_cb("refresh"), - ["a"] = tree_cb("create"), - ["d"] = tree_cb("remove"), - ["r"] = tree_cb("rename"), - [""] = tree_cb("full_rename"), - ["x"] = tree_cb("cut"), - ["c"] = tree_cb("copy"), - ["p"] = tree_cb("paste"), - ["y"] = tree_cb("copy_name"), - ["Y"] = tree_cb("copy_path"), - ["gy"] = tree_cb("copy_absolute_path"), - ["[c"] = tree_cb("prev_git_item"), - ["]c"] = tree_cb("next_git_item"), - ["-"] = tree_cb("dir_up"), - ["q"] = tree_cb("close"), + { key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit") }, + { key = {"<2-RightMouse>", ""}, cb = tree_cb("cd") }, + { key = "", cb = tree_cb("vsplit") }, + { key = "", cb = tree_cb("split") }, + { key = "", cb = tree_cb("tabnew") }, + { key = "<", cb = tree_cb("prev_sibling") }, + { key = ">", cb = tree_cb("next_sibling") }, + { key = "P", cb = tree_cb("parent_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("preview") }, + { key = "K", cb = tree_cb("first_sibling") }, + { key = "J", cb = tree_cb("last_sibling") }, + { key = "I", cb = tree_cb("toggle_ignored") }, + { key = "H", cb = tree_cb("toggle_dotfiles") }, + { key = "R", cb = tree_cb("refresh") }, + { key = "a", cb = tree_cb("create") }, + { key = "d", cb = tree_cb("remove") }, + { key = "r", cb = tree_cb("rename") }, + { key = "", cb = tree_cb("full_rename") }, + { key = "x", cb = tree_cb("cut") }, + { key = "c", cb = tree_cb("copy") }, + { key = "p", cb = tree_cb("paste") }, + { key = "y", cb = tree_cb("copy_name") }, + { key = "Y", cb = tree_cb("copy_path") }, + { key = "gy", cb = tree_cb("copy_absolute_path") }, + { key = "[c", cb = tree_cb("prev_git_item") }, + { key = "]c", cb = tree_cb("next_git_item") }, + { key = "-", cb = tree_cb("dir_up") }, + { key = "q", cb = tree_cb("close") }, + { key = "g?", cb = tree_cb("toggle_help") }, } From d01cf0b308ea2dbab1c58667453c056a3d49c3d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 10 Jul 2021 23:26:13 +0000 Subject: [PATCH 152/419] Revert preview for completeopt --- lua/editor.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/editor.lua b/lua/editor.lua index a1cc8e0..09d876b 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -87,7 +87,7 @@ cmd[[set expandtab]] -- always expands tab to spaces. It is good when peers cmd[[set wildmenu]] --Display completion matches in a status line. That is when you type --and there is more than one match. -cmd[[set completeopt=menuone,preview,noselect]] -- Don't let autocomplete affect usual typing habits +cmd[[set completeopt=menuone,noselect]] -- Don't let autocomplete affect usual typing habits cmd[[set bs=2]] -- allow backspacing over everything in insert mode From 0ac0142d3d5e553711372a39d723761b6d3a7b84 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 10 Jul 2021 23:28:00 +0000 Subject: [PATCH 153/419] Remap workspace mappings to prevent clashes with vimwiki mappings --- lua/mapping/lspconfig.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index f3f0d3f..ee2c686 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -13,9 +13,9 @@ set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + set_keymap('n', 'aw', 'lua vim.lsp.buf.add_workspace_folder()', opts) + set_keymap('n', 'rw', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + set_keymap('n', 'lw', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) From 43fbb8fd71f7b4c13fc821b79f2934edd490b91f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 10 Jul 2021 23:29:02 +0000 Subject: [PATCH 154/419] Remove coc.nvim since it is fully replaced by nvim-lsp --- lua/plugins.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 62dce6c..1e5c83c 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -63,11 +63,7 @@ require 'paq-nvim' { -- == LSP Client === - ---Coc is an intellisense engine for Vim/Neovim ---Use release branch (Recommend) -{'neoclide/coc.nvim', branch='release',opt=true}; --- +--Nvim LSP client {'neovim/nvim-lspconfig'}; --A light-weight lsp plugin {'glepnir/lspsaga.nvim'}; From e8d32ed0fa7bf7d577e68bca20286109a5573e57 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 10 Jul 2021 23:34:58 +0000 Subject: [PATCH 155/419] Fix conditional client formatting capabilities mappings Make some miscellaneous option changes --- lua/plugrc/lspconfig.lua | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua index 46afb45..053a9fe 100644 --- a/lua/plugrc/lspconfig.lua +++ b/lua/plugrc/lspconfig.lua @@ -3,7 +3,7 @@ local lsp=require('lspconfig') signature_cfg = { bind = true, -- This is mandatory, otherwise border config won't get registered. -- If you want to hook lspsaga or other signature handler, pls set to false - doc_lines = 18,-- will show two lines of comment/doc + doc_lines = 9,-- will show two lines of comment/doc --(if there are more than two lines in doc, will be truncated); -- set to 0 if you DO NOT want any API comments be shown -- This setting only take effect in insert mode, @@ -23,7 +23,7 @@ local lsp=require('lspconfig') max_width = 120, -- max_width of signature floating_window, --line will be wrapped if exceed max_width handler_opts = { - border = "single" -- double, single, shadow, none + border = "shadow" -- double, single, shadow, none }, } @@ -38,14 +38,15 @@ local on_attach = function(client,buffer) local opts = {noremap = true, silent = true} -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting == true then + if client.resolved_capabilities.document_formatting then set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) - elseif client.resolved_capabilities.document_range_formatting == true then - set_keymap("n", "lf", "lua vim.lsp.buf.range_formatting()", opts) + end + if client.resolved_capabilities.document_range_formatting then + set_keymap("v", "lf", "lua vim.lsp.buf.range_formatting()", opts) end -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight ==true then + if client.resolved_capabilities.document_highlight then -- lsp highlight element under cursor vim.cmd[[ highlight link LspReferenceText WildMenu @@ -61,7 +62,7 @@ local on_attach = function(client,buffer) end -- client.resolved_capabilities.type_definition =false - if client.resolved_capabilities.type_definition == true then + if client.resolved_capabilities.type_definition then set_keymap('n', 'dt', 'lua vim.lsp.buf.type_definition()', opts) end @@ -88,4 +89,4 @@ require'lspconfig'.zls.setup on_attach=on_attach, root_dir = lsp.util.root_pattern("zls.json", ".git") } -require('lspsaga').init_lsp_saga() +require('lspsaga').init_lsp_saga{} From e152ff87a067469b77a747a5016a1224cc59bccc Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 11 Jul 2021 11:05:20 +0000 Subject: [PATCH 156/419] rename mapinit to init and move into mappings This allows mapping to be required which will in turn call init --- lua/{mapinit.lua => mapping/init.lua} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lua/{mapinit.lua => mapping/init.lua} (100%) diff --git a/lua/mapinit.lua b/lua/mapping/init.lua similarity index 100% rename from lua/mapinit.lua rename to lua/mapping/init.lua From 37382ddfed7f9a91ca59658a5c64253678de1912 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 11 Jul 2021 11:06:40 +0000 Subject: [PATCH 157/419] rename pluginit to init and move into plugrc This allows plugrc to be required which will in turn call init --- lua/{pluginit.lua => plugrc/init.lua} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lua/{pluginit.lua => plugrc/init.lua} (100%) diff --git a/lua/pluginit.lua b/lua/plugrc/init.lua similarity index 100% rename from lua/pluginit.lua rename to lua/plugrc/init.lua From 76fc863ab7e561f82c74591730a0e92dd6af3e86 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 11 Jul 2021 11:07:32 +0000 Subject: [PATCH 158/419] Require mapping and plugrc --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 0824cb4..b11bab9 100755 --- a/init.lua +++ b/init.lua @@ -9,12 +9,12 @@ require('editor') -- === PLUGINS CONFIGURATIONS === -- =================================================================== require('plugins') -require('pluginit') +require('plugrc') -- =================================================================== -- === MAPPINGS ONFIGURATIONS === -- =================================================================== -require('mapinit') +require('mapping') -- =================================================================== -- === FILETYPE CONFIGURATIONS === From b254172b2bedcef8ca58de2dbeef4736f19b4481 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 12 Jul 2021 23:32:17 +0000 Subject: [PATCH 159/419] Replace vim-vsnips with LuaSnip and tryout symbols-outline --- lua/plugins.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 1e5c83c..5b3cf0f 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -85,7 +85,7 @@ require 'paq-nvim' { {'windwp/nvim-autopairs'}; -- === Code Snippets Plugins === -{"hrsh7th/vim-vsnip"}; +{"L3MON4D3/LuaSnip"}; --Snippets collection for a set of different --programming languages for faster development. @@ -99,6 +99,7 @@ require 'paq-nvim' { --View and search LSP symbols, tags in Vim/NeoVim.-- {'liuchengxu/vista.vim',opt=true}; +{'simrat39/symbols-outline.nvim'}; -- === UI === -- -- A Neovim File explorer From c12beb74865a1c2c7fa8889080e426c21231e282 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 00:58:34 +0000 Subject: [PATCH 160/419] Add lsp_install plugin for lsp installation --- lua/plugins.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/plugins.lua b/lua/plugins.lua index 5b3cf0f..ad9bec6 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -65,6 +65,8 @@ require 'paq-nvim' { -- == LSP Client === --Nvim LSP client {'neovim/nvim-lspconfig'}; +-- Install lsp's +{'kabouzeid/nvim-lspinstall'}; --A light-weight lsp plugin {'glepnir/lspsaga.nvim'}; --Show function signature when you type From 367da544dd7b3f9f0788089476aeee21d7637234 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 02:57:10 +0000 Subject: [PATCH 161/419] set options with nvim lua api --- lua/editor.lua | 155 +++++++++++++++++++++++-------------------------- 1 file changed, 74 insertions(+), 81 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 09d876b..8738120 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -10,11 +10,6 @@ local fn=vim.fn g.mapleader = ',' --- Use Unix as the standard file type -cmd[[set ffs=unix,dos,mac]] - -cmd[[set encoding=UTF-8]] - -- == Python provider configurations == -- g.python3_host_prog='/usr/bin/python3' @@ -22,7 +17,7 @@ g.python3_host_prog='/usr/bin/python3' cmd[[filetype plugin indent on]] --Switch on syntax highlighting. -cmd[[syntax on]] +o.syntax = 'on' --set assembly language file to use nasm g.asmsyntax = 'asm' @@ -30,7 +25,8 @@ g.asmsyntax = 'asm' --Set clipboard to the + registers only --if you want to use the * also add ,unnamed if fn.has('clipboard') == 1 then - cmd[[set clipboard+=unnamedplus]] + -- cmd[[set clipboard+=unnamedplus]] + o.clipboard = 'unnamed,unnamedplus' end --Restore cursor to file position in previous editing session @@ -48,119 +44,116 @@ augroup END --that when you change a file, exit Vim, and then edit the file again, you can undo --the changes made previously. if fn.has('vms')==1 then - cmd[[set nobackup]] + o.backup = false else - cmd[[set backup]] - if fn.has('persistent_undo')==1 then - cmd[[set undofile]] - cmd[[set undolevels=30000]] - cmd[[set undoreload=30000]] +-- create a backup of the file before editing + o.backup = true + if fn.has('persistent_undo') == 1 then +-- enable undofile , which helps you undo a lot and redo also a lot + o.undofile = true + o.undolevels = 30000 + o.undoreload = 30000 end end --for vim's swap ; undo and backup organization -cmd[[set backupdir=/tmp//]] --Location for backup of files before editing -- -cmd[[set directory=/tmp//]] --The location of swap files ,ie buffers that have not been save ie in memory -cmd[[set undodir=/tmp//]] --Location for storing undo tree of the edited file-- -cmd[[set backupext=.vimbak]] --The extension to be used for vim backup files +--Location for backup of files before editing -- +o.backupdir = '/tmp/' +--The location of swap files ,ie buffers that have not been save ie in memory +o.directory = '/tmp/' +--Location for storing undo tree of the edited file-- +o.undodir = '/tmp/' +--The extension to be used for vim backup files +o.backupext = '.vimbak' -- You will have bad experience for diagnostic messages when it's default 4000. -cmd[[set updatetime=100]] +o.updatetime = 100 -- don't give |ins-completion-menu| messages. -cmd[[set shortmess+=c]] +o.shortmess = 'c' -- always merge signcolumn and number column into one -cmd[[set signcolumn=yes]] - - ---Do not keep a backup or .swp file. I don't like to have junk ---files, my source is anyway in cvs/svn/p4/git. -cmd[[set backup]] -- create a backup of the file before editing -cmd[[set undofile]] -- enable undofile , which helps you undo a lot and redo also a lot -cmd[[set noswapfile]] -- enable saving unsaved/unwritten files in a *.swp file - -cmd[[set nocompatible]] -- Use Vim defaults (much better!), Vi is for 70's programmers! - -cmd[[set expandtab]] -- always expands tab to spaces. It is good when peers use different editor. - -cmd[[set wildmenu]] --Display completion matches in a status line. That is when you type - --and there is more than one match. - -cmd[[set completeopt=menuone,noselect]] -- Don't let autocomplete affect usual typing habits - -cmd[[set bs=2]] -- allow backspacing over everything in insert mode - -cmd[[set hidden]] -- This option allows you to switch between multiple buffers - --without saving a changed buffer - -cmd[[set mouse=a]] --Automatically enable mouse usage - -cmd[[set mousehide]] -- Hide the mouse pointer while typing. - -cmd[[set incsearch]] -- highlight search string as search pattern is entered - -cmd[[set hlsearch]] --disables last search hilighting - -cmd[[set number]] -- Show line numbers - -cmd[[set wrap]] -- Automatically wrap text that extends beyond the screen length. +o.signcolumn = 'yes' -cmd[[set backspace=indent,eol,start]] -- Fixes common backspace problems +-- enable saving unsaved/unwritten files in a *.swp file +o.swapfile = false -cmd[[set laststatus=2]] -- Status bar +-- always expands tab to spaces. It is good when peers use different editor. +o.expandtab = true -cmd[[set showbreak=>>>\ \ \]] -- Wrap-broken line prefix +-- Don't let autocomplete affect usual typing habits +o.completeopt = 'menuone,noselect' -cmd[[set textwidth=79]] -- Line wrap (number of cols) +-- This option allows you to switch between multiple buffers +o.hidden = true --without saving a changed buffer -cmd[[set showmatch]] -- Highlight matching brace +--Automatically enable mouse usage +o.mouse = 'a' -cmd[[set complete+=kspell]] --text complete with CTRL-N or CTRL-P +-- Show line numbers +o.number = true ---set spell -- Enable spell-checking +-- Wrap-broken line prefix +o.showbreak = [[>>>\ \ \]] -cmd[[set spelllang=es_mx,en_us]] -- Enable spell checking for espanol y ingles-- +-- Line wrap (number of cols) +o.textwidth = 79 -cmd[[set visualbell]] --Use visual bell (no beeping) +-- Highlight matching brace +o.showmatch = true -cmd[[set ignorecase]] --Always case-insensitie +--text complete with CTRL-N or CTRL-P +o.complete = 'kspell' -cmd[[set smartcase]] -- Enable smart-case search +-- Enable spell checking for espanol y ingles-- +o.spelllang = 'es_mx,en_us' -cmd[[set autoindent]] -- Auto-indent new lines +--Use visual bell (no beeping) +o.visualbell = true -cmd[[set wildignorecase]] --case insensitive auto completion +--Always case-insensitie +o.ignorecase = true -cmd[[set shiftwidth=4]] -- Number of auto-indent spaces +-- Enable smart-case search +o.smartcase = true -cmd[[set smartindent]] -- Enable smart-indent +--case insensitive auto completion +o.wildignorecase = true -cmd[[set smarttab]] -- Enable smart-tabs +-- Number of auto-indent spaces +o.shiftwidth = 4 -cmd[[set softtabstop=4]] -- Number of spaces per Tab +-- Enable smart-indent +o.smartindent = true -cmd[[set confirm]] -- Prompt confirmation dialogs +-- Number of spaces per Tab +o.softtabstop = 4 -cmd[[set ruler]] -- Show row and column ruler information +-- Prompt confirmation dialogs +o.confirm = true -cmd[[set cmdheight=2]] --Command line height +-- Show row and column ruler information +o.ruler = true -cmd[[set autowriteall]] --Auto-write all file changes +--Command line height +o.cmdheight = 2 -cmd[[set history=10000]] --Set the history size to maximum. by default it is 20 +--Auto-write all file changes +o.autowriteall = true -cmd[[set list]] -- Display unprintable characters f12 - switches +--Set the history size to maximum. by default it is 20 +o.history = 10000 -cmd[[set listchars=tab:••\ ,trail:•,extends:»,precedes:« ]] -- Unprintable chars mapping +-- Display unprintable characters f12 - switches +o.list = true +-- Unprintable chars mapping +o.listchars = [[tab:••,trail:•,extends:»,precedes:«]] -- Enable folding -cmd[[set foldmethod=indent]] -cmd[[set foldlevel=99]] +o.foldmethod = 'indent' ---Enable Tags -cmd[[set tags=tags]] +o.foldlevel = 99 --Remove Trailing whitespaces in all files cmd[[autocmd BufWritePre * %s/\s\+$//e]] From 8bda41f76bfa0f78e4c81649fc6eff33935e6452 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 02:58:20 +0000 Subject: [PATCH 162/419] use luasnip for tab autocompletion --- lua/mapping/compe.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/mapping/compe.lua b/lua/mapping/compe.lua index 339b1a0..a147143 100644 --- a/lua/mapping/compe.lua +++ b/lua/mapping/compe.lua @@ -35,8 +35,8 @@ end _G.tab_complete = function() if vim.fn.pumvisible() == 1 then return t "" - elseif vim.fn.call("vsnip#available", {1}) == 1 then - return t "(vsnip-expand-or-jump)" + elseif require'luasnip'.expand_or_jumpable() then + return t "luasnip-expand-or-jump" elseif check_back_space() then return t "" else @@ -46,8 +46,8 @@ end _G.s_tab_complete = function() if vim.fn.pumvisible() == 1 then return t "" - elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then - return t "(vsnip-jump-prev)" + elseif require'luasnip'.jumpable(-1) then + return t "luasnip-jump-prev" else -- If is not working in your terminal, change it to return t "" From 54039cd8199a6a1cc0f41e38f7501f9eb20d3398 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 03:01:13 +0000 Subject: [PATCH 163/419] Remove vsnip --- lua/mapping/vsnip.vim | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 lua/mapping/vsnip.vim diff --git a/lua/mapping/vsnip.vim b/lua/mapping/vsnip.vim deleted file mode 100644 index 9b58695..0000000 --- a/lua/mapping/vsnip.vim +++ /dev/null @@ -1,22 +0,0 @@ -" NOTE: You can use other key to expand snippet. - -" Expand -imap vsnip#expandable() ? '(vsnip-expand)' : '' -smap vsnip#expandable() ? '(vsnip-expand)' : '' - -" Expand or jump -imap vsnip#available(1) ? '(vsnip-expand-or-jump)' : '' -smap vsnip#available(1) ? '(vsnip-expand-or-jump)' : '' - -" Jump forward or backward -imap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' -smap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' -imap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' -smap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' - -" Select or cut text to use as $TM_SELECTED_TEXT in the next snippet. -" See https://github.com/hrsh7th/vim-vsnip/pull/50 -nmap s (vsnip-select-text) -xmap s (vsnip-select-text) -nmap S (vsnip-cut-text) -xmap S (vsnip-cut-text) From 555f3233e87044d2889566c56a6f46213a12e14c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 03:07:07 +0000 Subject: [PATCH 164/419] Remove symbol_outlines --- lua/plugins.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index ad9bec6..8af7b59 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -101,7 +101,6 @@ require 'paq-nvim' { --View and search LSP symbols, tags in Vim/NeoVim.-- {'liuchengxu/vista.vim',opt=true}; -{'simrat39/symbols-outline.nvim'}; -- === UI === -- -- A Neovim File explorer From 82e3ad35a6ca4c7b66105345870781d14b66f1d9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 03:08:48 +0000 Subject: [PATCH 165/419] Disable some sources and enable luasnip source --- lua/plugrc/compe.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 98af82e..d9cb0d9 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -16,14 +16,14 @@ require'compe'.setup { path = true; buffer = true; calc = true; + luasnip = true; nvim_lsp = true; nvim_lua = true; - vsnip = true; - ultisnips = true; - spell = true; + vsnip = false; + ultisnips = false; + spell = false; tags = true; - snippets_nvim = true; - treesitter = true; + treesitter = false; }; } vim.cmd[[highlight link CompeDocumentation NormalFloat]] From ffabaaf37e64707919e0186d9d76c202914471b2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 06:53:03 +0000 Subject: [PATCH 166/419] Add the branch option for glow.nvim --- lua/plugins.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 8af7b59..c499920 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -53,7 +53,7 @@ require 'paq-nvim' { -- === Preview Plugin === --A markdown previewer prebuild binary -{'npxbr/glow.nvim',run = ":GlowInstall",opt=true}; +{'npxbr/glow.nvim',branch="main",run = ":GlowInstall",opt=true}; --Vim Wiki From 14b8050f2694a502fb88ca2c54f6a5a0ad5d3c46 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 07:18:26 +0000 Subject: [PATCH 167/419] Add treesitter syntax for vue,typescript,scss,html Remove syntax for c and yaml --- lua/plugrc/treesitter.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 957a0dd..1435c62 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -1,5 +1,6 @@ require'nvim-treesitter.configs'.setup { - ensure_installed = {'cpp','c','zig','yaml','comment','json','haskell','lua','python'}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages + ensure_installed = {'cpp','zig','comment','json','haskell','lua','vue','typescript','scss','html'}, + -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing highlight = { enable = true, -- false will disable the whole extension From 07ca752ef79758aa3447e73be24ae49eda2f31ea Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 08:10:06 +0000 Subject: [PATCH 168/419] enable nosplit inccommand option for completions --- lua/editor.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/editor.lua b/lua/editor.lua index 8738120..2476c21 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -56,13 +56,19 @@ else end end +--Incremental live completion +o.inccommand = "nosplit" + --for vim's swap ; undo and backup organization --Location for backup of files before editing -- o.backupdir = '/tmp/' + --The location of swap files ,ie buffers that have not been save ie in memory o.directory = '/tmp/' + --Location for storing undo tree of the edited file-- o.undodir = '/tmp/' + --The extension to be used for vim backup files o.backupext = '.vimbak' From a2135e249856b6c1daeab7d535f6904c6185bffe Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 08:19:21 +0000 Subject: [PATCH 169/419] Require plugins for ui like buffer and statusline in ui.lua --- lua/ui.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lua/ui.lua diff --git a/lua/ui.lua b/lua/ui.lua new file mode 100644 index 0000000..caaac46 --- /dev/null +++ b/lua/ui.lua @@ -0,0 +1,20 @@ +--Enable true colours in terminal +vim.o.termguicolors = true + +--Set the background color of nvim +vim.o.background = 'dark' + +--Onedark colorscheme +vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer +require('onedark').setup() +vim.cmd[[colorscheme onedark]] + +-- Treesitter syntax highlighting +require('plugrc/treesitter') + +-- status line +require('plugrc/lualine') + +-- buffer line +require("plugrc/bufferline") + From 14cac2db1e6bb897aedef43661a87002100fc173 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 08:32:19 +0000 Subject: [PATCH 170/419] load ui after editor configurations --- init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.lua b/init.lua index b11bab9..292cf3f 100755 --- a/init.lua +++ b/init.lua @@ -5,6 +5,11 @@ -- =================================================================== require('editor') +-- =================================================================== +-- === UI CONFIGURATIONS === +-- =================================================================== +require('ui') + -- =================================================================== -- === PLUGINS CONFIGURATIONS === -- =================================================================== From fee9c56cb011eea540aecf8bd64b32489ea8fc5f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 08:33:40 +0000 Subject: [PATCH 171/419] Asthetic changes --- lua/plugrc/onedark.lua | 17 ----------------- lua/ui.lua | 12 ++++-------- 2 files changed, 4 insertions(+), 25 deletions(-) delete mode 100644 lua/plugrc/onedark.lua diff --git a/lua/plugrc/onedark.lua b/lua/plugrc/onedark.lua deleted file mode 100644 index bab7fd6..0000000 --- a/lua/plugrc/onedark.lua +++ /dev/null @@ -1,17 +0,0 @@ ---Enable true colours in terminal -vim.cmd[[set termguicolors]] - ---Set the background color of nvim -vim.cmd[[set background=dark]] - ---Default colorscheme ---colorscheme evening - ---Onedark colorscheme -vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer -require('onedark').setup() -vim.cmd[[colorscheme onedark]] - ---set guifont=SauceCodePro\ Nerd\ Font\ Medium\ 11 --- Set status line display --- source $HOME/.config/nvim/plugrc.d/sexy_status_bar.vim diff --git a/lua/ui.lua b/lua/ui.lua index caaac46..057a7b1 100644 --- a/lua/ui.lua +++ b/lua/ui.lua @@ -1,16 +1,10 @@ --Enable true colours in terminal vim.o.termguicolors = true ---Set the background color of nvim -vim.o.background = 'dark' - ---Onedark colorscheme +-- Onedark colorscheme vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer -require('onedark').setup() -vim.cmd[[colorscheme onedark]] --- Treesitter syntax highlighting -require('plugrc/treesitter') +require('onedark').setup() -- status line require('plugrc/lualine') @@ -18,3 +12,5 @@ require('plugrc/lualine') -- buffer line require("plugrc/bufferline") +-- Treesitter syntax highlighting +require('plugrc/treesitter') From 7c287ba747be917a5d00a95cb8c18245116a2f28 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 08:38:54 +0000 Subject: [PATCH 172/419] Configure and install some lsp servers using lsp install Make some tweaks to the config --- lua/plugrc/lspconfig.lua | 112 ++++++++++++++++++++++++++++++--------- 1 file changed, 87 insertions(+), 25 deletions(-) diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua index 053a9fe..68e8103 100644 --- a/lua/plugrc/lspconfig.lua +++ b/lua/plugrc/lspconfig.lua @@ -1,17 +1,18 @@ -local lsp=require('lspconfig') - - signature_cfg = { +local signature_cfg = { bind = true, -- This is mandatory, otherwise border config won't get registered. -- If you want to hook lspsaga or other signature handler, pls set to false doc_lines = 9,-- will show two lines of comment/doc --(if there are more than two lines in doc, will be truncated); -- set to 0 if you DO NOT want any API comments be shown -- This setting only take effect in insert mode, - -- it does not affect signature help in normal + -- it does not affect signature help in normal -- mode, 10 by default floating_window = true, -- show hint in a floating window, - --set to false for virtual text only mode + --set to false for virtual text only mode + + fix_pos = true, -- set to true, the floating window will + -- not auto-close until finish all parameters hint_enable = true, -- virtual hint enable hint_prefix = "🐼 ", -- Panda for parameter hint_scheme = "String", @@ -25,16 +26,25 @@ local lsp=require('lspconfig') handler_opts = { border = "shadow" -- double, single, shadow, none }, + extra_trigger_chars = {} -- Array of extra characters that will + -- trigger signature completion, e.g., {"(", ","} } local on_attach = function(client,buffer) require'lsp_signature'.on_attach(signature_cfg) + require('lspsaga').init_lsp_saga{} local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) end + local function set_option(...) + vim.api.nvim_buf_set_option(buffer, ...) + end + + set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + local opts = {noremap = true, silent = true} -- Set some keybinds conditional on server capabilities @@ -68,25 +78,77 @@ local on_attach = function(client,buffer) end -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.snippetSupport = true; -lsp.clangd.setup{ -cmd = -{ "clangd", "--query-driver=/usr/bin/g++","--clang-tidy","-j=5","--malloc-trim" }, -capabilities=capabilities, -on_attach= on_attach, -filetypes = { "c", "cpp"}, - -- on_init = function to handle changing offsetEncoding -root_dir = lsp.util.root_pattern("compile_commands.json", ".git"), +-- 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.api.nvim_get_runtime_file('', true), + }, + }, } -lsp.hls.setup{capabilities=capabilities, on_attach=on_attach} -require'lspconfig'.zls.setup -{ - cmd={"zls"}, - filetypes = {"zig","zir"}, - capabilities=capabilities, - on_attach=on_attach, - root_dir = lsp.util.root_pattern("zls.json", ".git") -} -require('lspsaga').init_lsp_saga{} +-- 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 + +local local_lsp_servers = {'clangd','hls','zls'} + +-- lsp-install +local function setup_servers() + require'lspinstall'.setup() + + -- get all installed servers + -- html ,css,lua,tailwindcss,vue,typescript + local servers = require'lspinstall'.installed_servers() + -- ... and add manually installed servers + if servers then + table.insert(servers,'clangd') + table.insert(servers,'zls') + table.insert(servers,'hls') + else + servers = local_lsp_servers + end + + for _, server in pairs(servers) do + local config = make_config() + + -- language specific config + if server == "clangd" then + config.cmd = { "clangd","--query-driver=/usr/bin/g++","--clang-tidy","-j=5","--malloc-trim"}; + config.filetypes = {"c", "cpp"}; -- we don't want objective-c and objective-cpp! + end + + if server == "lua" then + config.settings = lua_settings; + end + + 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 From 44a5cfdddcf80d7975975df0c0efa5fdb9edfe2f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 13 Jul 2021 08:39:59 +0000 Subject: [PATCH 173/419] Move some plugins to ui and reorder plugins --- lua/plugrc/init.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 6cd99fe..385e769 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -13,14 +13,10 @@ cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/fzf.vim]] require('plugrc/vista') require('plugrc/tree') require('plugrc/lspconfig') -require('plugrc/lualine') require('gitsigns').setup() require('plugrc/compe') -require("plugrc/bufferline") require('nvim-autopairs').setup() require('plugrc/neomake') -require('plugrc/treesitter') require('telescope').setup() -require('plugrc/onedark') require('plugrc/trouble') require('plugrc/whichkey') From 1efced6a9f29c8e8cb5ba9bb47d3d683e7b7765f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 00:20:34 +0000 Subject: [PATCH 174/419] Remove vsnip mappings --- lua/mapping/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index ba74d1e..410c6ed 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -12,7 +12,6 @@ cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/markdown_preview_map.vim]] cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/highlighting_map.vim]] cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/folding_map.vim]] cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/terminal_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/vsnip.vim]] require('mapping/compe') require('mapping/lspconfig') require('mapping/autopairs') From 394391aaaa4a0e9a46b678fcea4304688ba7dbbb Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 01:55:22 +0000 Subject: [PATCH 175/419] Modularize and simplify lspconfig configuration --- lua/plugrc/lspconfig.lua | 154 ----------------------------- lua/plugrc/lspconfig/init.lua | 114 +++++++++++++++++++++ lua/plugrc/lspconfig/settings.lua | 40 ++++++++ lua/plugrc/lspconfig/signature.lua | 33 +++++++ 4 files changed, 187 insertions(+), 154 deletions(-) delete mode 100644 lua/plugrc/lspconfig.lua create mode 100644 lua/plugrc/lspconfig/init.lua create mode 100644 lua/plugrc/lspconfig/settings.lua create mode 100644 lua/plugrc/lspconfig/signature.lua diff --git a/lua/plugrc/lspconfig.lua b/lua/plugrc/lspconfig.lua deleted file mode 100644 index 68e8103..0000000 --- a/lua/plugrc/lspconfig.lua +++ /dev/null @@ -1,154 +0,0 @@ -local signature_cfg = { - bind = true, -- This is mandatory, otherwise border config won't get registered. - -- If you want to hook lspsaga or other signature handler, pls set to false - doc_lines = 9,-- will show two lines of comment/doc - --(if there are more than two lines in doc, will be truncated); - -- set to 0 if you DO NOT want any API comments be shown - -- This setting only take effect in insert mode, - -- it does not affect signature help in normal - -- mode, 10 by default - - floating_window = true, -- show hint in a floating window, - --set to false for virtual text only mode - - fix_pos = true, -- set to true, the floating window will - -- not auto-close until finish all parameters - hint_enable = true, -- virtual hint enable - hint_prefix = "🐼 ", -- Panda for parameter - hint_scheme = "String", - use_lspsaga = false, -- set to true if you want to use lspsaga popup - hi_parameter = "Search", -- how your parameter will be highlight - max_height = 18, -- max height of signature floating_window, - --if content is more than max_height, you can scroll down - -- to view the hiding contents - max_width = 120, -- max_width of signature floating_window, - --line will be wrapped if exceed max_width - handler_opts = { - border = "shadow" -- double, single, shadow, none - }, - extra_trigger_chars = {} -- Array of extra characters that will - -- trigger signature completion, e.g., {"(", ","} -} - -local on_attach = function(client,buffer) - - require'lsp_signature'.on_attach(signature_cfg) - require('lspsaga').init_lsp_saga{} - - local function set_keymap(...) - vim.api.nvim_buf_set_keymap(buffer, ...) - end - - local function set_option(...) - vim.api.nvim_buf_set_option(buffer, ...) - end - - set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - - local opts = {noremap = true, silent = true} - --- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) - end - if client.resolved_capabilities.document_range_formatting then - set_keymap("v", "lf", "lua vim.lsp.buf.range_formatting()", opts) - end - - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - -- lsp highlight element under cursor - vim.cmd[[ - highlight link LspReferenceText WildMenu - highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp - highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorHoldI lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]] - end - - -- client.resolved_capabilities.type_definition =false - if client.resolved_capabilities.type_definition then - set_keymap('n', 'dt', 'lua vim.lsp.buf.type_definition()', opts) - 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.api.nvim_get_runtime_file('', 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 - -local local_lsp_servers = {'clangd','hls','zls'} - --- lsp-install -local function setup_servers() - require'lspinstall'.setup() - - -- get all installed servers - -- html ,css,lua,tailwindcss,vue,typescript - local servers = require'lspinstall'.installed_servers() - -- ... and add manually installed servers - if servers then - table.insert(servers,'clangd') - table.insert(servers,'zls') - table.insert(servers,'hls') - else - servers = local_lsp_servers - end - - for _, server in pairs(servers) do - local config = make_config() - - -- language specific config - if server == "clangd" then - config.cmd = { "clangd","--query-driver=/usr/bin/g++","--clang-tidy","-j=5","--malloc-trim"}; - config.filetypes = {"c", "cpp"}; -- we don't want objective-c and objective-cpp! - end - - if server == "lua" then - config.settings = lua_settings; - end - - 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/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua new file mode 100644 index 0000000..da2f973 --- /dev/null +++ b/lua/plugrc/lspconfig/init.lua @@ -0,0 +1,114 @@ +local signature_cfg = require('plugrc/lspconfig/signature') +local on_attach = function(client, buffer) + + require'lsp_signature'.on_attach(signature_cfg) + require('lspsaga').init_lsp_saga {} + + local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) end + + local function set_option(...) vim.api.nvim_buf_set_option(buffer, ...) end + + set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + local opts = {noremap = true, silent = true} + + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", + opts) + end + if client.resolved_capabilities.document_range_formatting then + set_keymap("v", "lf", + "lua vim.lsp.buf.range_formatting()", opts) + end + + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight then + -- lsp highlight element under cursor + vim.cmd [[ + highlight link LspReferenceText WildMenu + highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp + highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp + augroup lsp_document_highlight + autocmd! * + autocmd CursorHold lua vim.lsp.buf.document_highlight() + autocmd CursorHoldI lua vim.lsp.buf.document_highlight() + autocmd CursorMoved lua vim.lsp.buf.clear_references() + augroup END + ]] + end + + -- client.resolved_capabilities.type_definition =false + if client.resolved_capabilities.type_definition then + set_keymap('n', 'dt', + 'lua vim.lsp.buf.type_definition()', opts) + end + +end + +local settings = require('plugrc.lspconfig.settings') +local lua_settings = settings.lua_settings +local efm_settings = settings.efm_settings +local clangd_setting = settings.clangd_setting + +-- 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, + + rootdir = vim.loop.cwd + } +end + +local local_lsp_servers = {'clangd', 'hls', 'zls', 'efm'} + +-- lsp-install +local function setup_servers() + require'lspinstall'.setup() + + -- get all installed servers + -- html ,css,lua,tailwindcss,vue,typescript + local servers = require'lspinstall'.installed_servers() + -- ... and add manually installed servers + if servers then + for _, local_server in pairs(local_lsp_servers) do + table.insert(servers, local_server) + end + else + servers = local_lsp_servers + end + + for _, server in pairs(servers) do + local config = make_config() + + -- language specific config + if server == "clangd" then + config.cmd = clangd_setting.cmd + config.filetypes = clangd_setting.filetypes + end + + if server == "lua" then config.settings = lua_settings; end + + if server == "efm" then + config.init_options = efm_settings.init_options; + config.settings = efm_settings.settings; + config.filetypes = {"lua"} + end + + 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/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua new file mode 100644 index 0000000..3f537c3 --- /dev/null +++ b/lua/plugrc/lspconfig/settings.lua @@ -0,0 +1,40 @@ +local settings = {} + +-- Configure lua language server for neovim development +settings.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.api.nvim_get_runtime_file('', true) + } + } +}; + +settings.efm_settings = { + init_options = {documentFormatting = true}, + settings = { + rootMarkers = {".git/"}, + languages = { + lua = {{formatCommand = "lua-format -i", formatStdin = true}} + } + } +}; + +settings.clangd_setting = { + cmd = { + "clangd", "--query-driver=/usr/bin/g++", "--clang-tidy", "-j=5", + "--malloc-trim" + }, + filetypes = {"c", "cpp"} -- we don't want objective-c and objective-cpp! +}; + +return settings diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua new file mode 100644 index 0000000..b706e73 --- /dev/null +++ b/lua/plugrc/lspconfig/signature.lua @@ -0,0 +1,33 @@ +local signature_cfg = { + bind = true, -- This is mandatory, otherwise border config won't get registered. + -- If you want to hook lspsaga or other signature handler, pls set to false + doc_lines = 9, -- will show two lines of comment/doc + -- (if there are more than two lines in doc, will be truncated); + -- set to 0 if you DO NOT want any API comments be shown + -- This setting only take effect in insert mode, + -- it does not affect signature help in normal + -- mode, 10 by default + + floating_window = true, -- show hint in a floating window, + -- set to false for virtual text only mode + + fix_pos = true, -- set to true, the floating window will + -- not auto-close until finish all parameters + hint_enable = true, -- virtual hint enable + hint_prefix = "🐼 ", -- Panda for parameter + hint_scheme = "String", + use_lspsaga = false, -- set to true if you want to use lspsaga popup + hi_parameter = "Search", -- how your parameter will be highlight + max_height = 18, -- max height of signature floating_window, + -- if content is more than max_height, you can scroll down + -- to view the hiding contents + max_width = 120, -- max_width of signature floating_window, + -- line will be wrapped if exceed max_width + handler_opts = { + border = "shadow" -- double, single, shadow, none + }, + extra_trigger_chars = {} -- Array of extra characters that will + -- trigger signature completion, e.g., {"(", ","} +} + +return signature_cfg From 1c2deacc5aa2be546e6cbd08740aa8bd1390099f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 17:35:18 +0000 Subject: [PATCH 176/419] Use efm for linting and formating Add lua-formatter with lua-format Add c and cpp linter with cppcheck --- lua/plugrc/lspconfig/settings.lua | 42 +++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 3f537c3..a546c94 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -17,17 +17,49 @@ settings.lua_settings = { library = vim.api.nvim_get_runtime_file('', true) } } -}; +} + +local linters = {} + +linters.cppcheck = { + cpp = { + lintCommand = 'cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c++ ${INPUT}', + lintStdin = true, + lintFormats = {'%f:%l:%c: %m'}, + lintIgnoreExitCode = true + }, + c = { + lintCommand = 'cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c ${INPUT}', + lintStdin = true, + lintFormats = {'%f:%l:%c: %m'}, + lintIgnoreExitCode = true + } +} + +local formatters = {} + +formatters.lua_format = {formatCommand = "lua-format -i", formatStdin = true} settings.efm_settings = { - init_options = {documentFormatting = true}, + log_level = 0, + log_file = '/tmp/efm.log', + init_options = { + documentFormatting = true, + codeAction = true, + hover = true, + documentSymbol = true, + completion = false + }, + filetypes = {"lua", "cpp", "c"}, settings = { rootMarkers = {".git/"}, languages = { - lua = {{formatCommand = "lua-format -i", formatStdin = true}} + lua = {formatters.lua_format}, + cpp = {linters.cppcheck.cpp}, + c = {linters.cppcheck.c} } } -}; +} settings.clangd_setting = { cmd = { @@ -35,6 +67,6 @@ settings.clangd_setting = { "--malloc-trim" }, filetypes = {"c", "cpp"} -- we don't want objective-c and objective-cpp! -}; +} return settings From 520b510f63b001f490a36483a8f442a39f07ded4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 18:25:18 +0000 Subject: [PATCH 177/419] Use efm_settings for filetype --- lua/plugrc/lspconfig/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index da2f973..e4c89d8 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -97,7 +97,7 @@ local function setup_servers() if server == "efm" then config.init_options = efm_settings.init_options; config.settings = efm_settings.settings; - config.filetypes = {"lua"} + config.filetypes = efm_settings.filetypes end require'lspconfig'[server].setup(config); From 80c90220da1ab724f18cac8b3ebdf62e888838fb Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 19:15:13 +0000 Subject: [PATCH 178/419] Add mappings for automatically showing line diagnostics --- lua/mapping/lspconfig.lua | 74 +++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index ee2c686..6118461 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -1,31 +1,36 @@ -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer - local function set_keymap(...) vim.api.nvim_set_keymap(...) end - local function set_option(...) vim.api.nvim_set_option(...) end - - --Enable completion triggered by - set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - local opts = { noremap=true, silent=true } - - -- See `:help vim.lsp.*` for documentation on any of the below functions - set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - set_keymap('n', 'aw', 'lua vim.lsp.buf.add_workspace_folder()', opts) - set_keymap('n', 'rw', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - set_keymap('n', 'lw', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) +local function set_keymap(...) vim.api.nvim_set_keymap(...) end +local function set_option(...) vim.api.nvim_set_option(...) end + +-- Enable completion triggered by +set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + +-- Mappings. +local opts = {noremap = true, silent = true} + +-- See `:help vim.lsp.*` for documentation on any of the below functions +set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) +set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) +set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) +set_keymap('n', 'aw', 'lua vim.lsp.buf.add_workspace_folder()', + opts) +set_keymap('n', 'rw', + 'lua vim.lsp.buf.remove_workspace_folder()', opts) +set_keymap('n', 'lw', + 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', + opts) +set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) +set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', + opts) -- lsp provider to find the cursor word definition and reference -vim.cmd[[ +vim.cmd [[ nnoremap gdr lua require'lspsaga.provider'.lsp_finder() ]] -- code action -vim.cmd[[ +vim.cmd [[ nnoremap ca lua require('lspsaga.codeaction').code_action() vnoremap ca :lua require('lspsaga.codeaction').range_code_action() ]] @@ -36,32 +41,39 @@ nnoremap K lua require('lspsaga.hover').render_hover_doc() ]] -- scroll down hover doc or scroll in definition preview -vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] +vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] -- scroll up hover doc -vim.cmd[[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] +vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] -- show signature help -vim.cmd[[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] +vim.cmd [[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] -- rename -vim.cmd[[nnoremap rn lua require('lspsaga.rename').rename()]] +vim.cmd [[nnoremap rn lua require('lspsaga.rename').rename()]] -- preview definition -vim.cmd[[nnoremap pd lua require'lspsaga.provider'.preview_definition()]] +vim.cmd [[nnoremap pd lua require'lspsaga.provider'.preview_definition()]] -- jump diagnostic -vim.cmd[[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] -vim.cmd[[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] +vim.cmd [[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] +vim.cmd [[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] -- only show diagnostic if cursor is over the area -vim.cmd[[nnoremap scd lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] +vim.cmd [[nnoremap scd lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] -- show line diagnostic -vim.cmd[[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] +vim.cmd [[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] + +vim.cmd [[ +augroup show_diagnostics +autocmd! * +autocmd CursorHold lua require'lspsaga.diagnostic'.show_line_diagnostics() +augroup END +]] -- float terminal also you can pass the cli command in open_float_terminal function -vim.cmd[[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] +vim.cmd [[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] -- or open_float_terminal('lazygit') -vim.cmd[[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] +vim.cmd [[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] From fdd182cc7b534fefb206f27cc06bf0928698a892 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 19:17:26 +0000 Subject: [PATCH 179/419] Add lspsaga configuration --- lua/plugrc/lspconfig/init.lua | 4 +++- lua/plugrc/lspconfig/saga.lua | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 lua/plugrc/lspconfig/saga.lua diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index e4c89d8..c40642d 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,8 +1,10 @@ local signature_cfg = require('plugrc/lspconfig/signature') +local saga_cfg = require('plugrc/lspconfig/saga') + local on_attach = function(client, buffer) require'lsp_signature'.on_attach(signature_cfg) - require('lspsaga').init_lsp_saga {} + require('lspsaga').init_lsp_saga(saga_cfg) local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) end diff --git a/lua/plugrc/lspconfig/saga.lua b/lua/plugrc/lspconfig/saga.lua new file mode 100644 index 0000000..8291d14 --- /dev/null +++ b/lua/plugrc/lspconfig/saga.lua @@ -0,0 +1,19 @@ +local saga_cfg = { + -- max_preview_lines = 10, -- preview lines of lsp_finder and definition preview + finder_action_keys = { + open = 'o', + vsplit = 'v', + split = 's', + quit = 'q', + scroll_down = '', + scroll_up = '' -- quit can be a table + }, + code_action_keys = {quit = 'q', exec = ''}, + rename_action_keys = { + quit = 'q', + exec = '' -- quit can be a table + }, + -- "single" "double" "round" "plus" + border_style = "round" +} +return saga_cfg From 511c845fec5ec159c592c11364e1133ba36617d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 21:55:51 +0000 Subject: [PATCH 180/419] Don't use saga diagnostic signs --- lua/plugrc/lspconfig/saga.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/saga.lua b/lua/plugrc/lspconfig/saga.lua index 8291d14..a25b952 100644 --- a/lua/plugrc/lspconfig/saga.lua +++ b/lua/plugrc/lspconfig/saga.lua @@ -1,5 +1,5 @@ local saga_cfg = { - -- max_preview_lines = 10, -- preview lines of lsp_finder and definition preview + use_saga_diagnostic_sign = false, finder_action_keys = { open = 'o', vsplit = 'v', From c3f921d3f134c22b23356bc8b1c8d5f4e437e36d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 14 Jul 2021 23:13:49 +0000 Subject: [PATCH 181/419] move auto cmd from augroup so that it is executed in every buffer --- lua/mapping/lspconfig.lua | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 6118461..17ba788 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -65,12 +65,7 @@ vim.cmd [[nnoremap scd lua require'lspsaga.diagnostic'.show -- show line diagnostic vim.cmd [[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] -vim.cmd [[ -augroup show_diagnostics -autocmd! * -autocmd CursorHold lua require'lspsaga.diagnostic'.show_line_diagnostics() -augroup END -]] +vim.cmd [[autocmd CursorHold * lua require'lspsaga.diagnostic'.show_line_diagnostics()]] -- float terminal also you can pass the cli command in open_float_terminal function vim.cmd [[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] From 52812b7ce326c51ce7dd205994dab97d96ffbe07 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 15 Jul 2021 18:36:53 +0000 Subject: [PATCH 182/419] setup functions for configuring builtin lsp --- lua/plugrc/lspconfig/init.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index c40642d..d4d5443 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,7 +1,10 @@ -local signature_cfg = require('plugrc/lspconfig/signature') -local saga_cfg = require('plugrc/lspconfig/saga') - local on_attach = function(client, buffer) + local signature_cfg = require('plugrc/lspconfig/signature') + local saga_cfg = require('plugrc/lspconfig/saga') + local builtin_lsp = require('plugrc/lspconfig/config') + builtin_lsp.completion_kinds() + builtin_lsp.sign_column_diagnostic_symbols() + builtin_lsp.disable_virtual_text() require'lsp_signature'.on_attach(signature_cfg) require('lspsaga').init_lsp_saga(saga_cfg) From 4f16b81f667a715f2b414e268c45d5ff0094cabe Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 15 Jul 2021 18:40:11 +0000 Subject: [PATCH 183/419] Builtin lsp configurations Disable virtual text and prefer floating window Add lsp completion kinds Modify gutter with user defined icons --- lua/plugrc/lspconfig/config.lua | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 lua/plugrc/lspconfig/config.lua diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/config.lua new file mode 100644 index 0000000..d73b515 --- /dev/null +++ b/lua/plugrc/lspconfig/config.lua @@ -0,0 +1,55 @@ +local M = {} + +M.icons = { + Class = " ", + Color = " ", + Constant = " ", + Constructor = " ", + Enum = "了 ", + EnumMember = " ", + Field = " ", + File = " ", + Folder = " ", + Function = " ", + Interface = "ﰮ ", + Keyword = " ", + Method = "ƒ ", + Module = " ", + Property = " ", + Snippet = "﬌ ", + Struct = " ", + Text = " ", + Unit = " ", + Value = " ", + Variable = " " +} + +function M.completion_kinds() + local kinds = vim.lsp.protocol.CompletionItemKind + for i, kind in ipairs(kinds) do kinds[i] = M.icons[kind] or kind end +end + +function M.sign_column_diagnostic_symbols() + local signs = { + Error = " ", + Warning = " ", + Hint = " ", + Information = " " + } + for type, icon in pairs(signs) do + local hl = "LspDiagnosticsSign" .. type + vim.fn.sign_define(hl, {text = icon, texthl = hl, numhl = ""}) + end +end + +function M.disable_virtual_text() + vim.lsp.handlers["textDocument/publishDiagnostics"] = + vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { + virtual_text = false, + signs = true, + update_in_insert = true, + underline = true + }) +end + +return M From 17a9729b54d34d98ced1f63aaf9d7e34634500f5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 15 Jul 2021 23:32:58 +0000 Subject: [PATCH 184/419] remove(linter,formater):Remove neomake and neoformat Remove since their funtionality have been replaced by efm-langserver --- lua/plugins.lua | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index c499920..a6abf68 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -32,11 +32,6 @@ require 'paq-nvim' { -- A snazzy buffer line (with minimal tab integration) for Neovim {'akinsho/nvim-bufferline.lua'}; --- === Source Code Formater === - ---A neoformat plugin for code formating -{'sbdchd/neoformat',opt=true}; - -- === Fuzzy Finder === -- a highly extendable fuzzy finder over lists -- for Find, Filter, Preview, Pick @@ -93,10 +88,6 @@ require 'paq-nvim' { --programming languages for faster development. {"rafamadriz/friendly-snippets"}; --- === Syntax Highlighting Engine === ---Asynchronous linting and make framework -{'neomake/neomake'}; - -- === Tag Bar Plugin === --View and search LSP symbols, tags in Vim/NeoVim.-- From 2a248e55df0eae67e20771508be0ff6d92273db7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 15 Jul 2021 23:34:59 +0000 Subject: [PATCH 185/419] cleanup(config): remove neoformat and neomake configurations --- lua/plugrc/neoformat.vim | 47 ---------------------------------------- lua/plugrc/neomake.lua | 20 ----------------- 2 files changed, 67 deletions(-) delete mode 100644 lua/plugrc/neoformat.vim delete mode 100644 lua/plugrc/neomake.lua diff --git a/lua/plugrc/neoformat.vim b/lua/plugrc/neoformat.vim deleted file mode 100644 index 734dde2..0000000 --- a/lua/plugrc/neoformat.vim +++ /dev/null @@ -1,47 +0,0 @@ -" Enable alignment -let g:neoformat_basic_format_align = 1 - -" Enable tab to spaces conversion -let g:neoformat_basic_format_retab = 1 - -" Enable trimmming of trailing whitespace -let g:neoformat_basic_format_trim = 1 - -"Only dispaly message if there is an error -let g:neoformat_only_msg_on_error = 1 - -let g:neoformat_python_yapf = { - \ 'exe': 'yapf', - \ 'args': [], - \ 'replace': 0, - \ 'stdin': 1, - \ 'valid_exit_codes': [0, 23], - \ 'no_append': 1, - \ } -let g:neoformat_cpp_clangformat={ - \ 'exe':'clang-format', - \ 'args': ['-style=file'], - \ 'stdin':1, - \} -let g:neoformat_nix_nixfmt = { - \ 'exe': 'nixfmt', - \ 'args': ["--width=80" ,"--check"], - \ 'replace': 0, - \ 'stdin': 1, - \} -let g:neoformat_cmakelists_cmakeformat = { - \'exe':'cmake-format', - \} -" replace - replace the file, instead of updating buffer (default: 0), -" stdin - send data to stdin of formatter (default: 0), -let g:neoformat_enabled_python = ['yapf'] - -"Haskell code formatter -let g:neoformat_enabled_haskell= ['hindent'] - -let g:neofomat_enabled_cpp=['clangformat'] - -augroup fmt - autocmd! - autocmd BufWritePre *.hs,*.py,*.nix,CMakeLists.txt | Neoformat -augroup END diff --git a/lua/plugrc/neomake.lua b/lua/plugrc/neomake.lua deleted file mode 100644 index 20ac1c6..0000000 --- a/lua/plugrc/neomake.lua +++ /dev/null @@ -1,20 +0,0 @@ ---When writing a buffer (no delay). -vim.fn['neomake#configure#automake']('nw',750) - --- Neomake C configurations -vim.g.neomake_c_uses_stdin = 1 -vim.g.neomake_c_enabled_makers = {'cppcheck'} -vim.g.neomake_c_cppcheck_maker = { - exe ='cppcheck', - args={'--enable=warning,style,performance,portability,information,missingInclude', - '--inconclusive','--force','-j 4','--template=gcc','--language=c'}, -} - --- Neomake C++ configurations -vim.g.neomake_cpp_uses_stdin = 1 -vim.g.neomake_cpp_enabled_makers = {'cppcheck'} -vim.g.neomake_cpp_cppcheck_maker = { - exe ='cppcheck', - args={'--enable=warning,style,performance,portability,information,missingInclude', - '--inconclusive','--force','-j 4','--template=gcc','--language=c++'}, -} From cbd2f3037eb41361b29cd7c93f7e6f7550980923 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 15 Jul 2021 23:55:32 +0000 Subject: [PATCH 186/419] cleanup(config): remove all unused plugins configurations --- lua/plugrc/airline.vim | 42 --------------- lua/plugrc/coc.vim | 66 ------------------------ lua/plugrc/fzf.vim | 33 ------------ lua/plugrc/init.lua | 11 +--- lua/plugrc/markdown_preview.vim | 90 --------------------------------- lua/plugrc/multiple_cursor.vim | 2 - lua/plugrc/nerdtree_git.vim | 86 ------------------------------- lua/plugrc/sexy_status_bar.vim | 38 -------------- lua/plugrc/syntastic.vim | 38 -------------- 9 files changed, 1 insertion(+), 405 deletions(-) delete mode 100644 lua/plugrc/airline.vim delete mode 100644 lua/plugrc/coc.vim delete mode 100644 lua/plugrc/fzf.vim delete mode 100644 lua/plugrc/markdown_preview.vim delete mode 100644 lua/plugrc/multiple_cursor.vim delete mode 100644 lua/plugrc/nerdtree_git.vim delete mode 100644 lua/plugrc/sexy_status_bar.vim delete mode 100644 lua/plugrc/syntastic.vim diff --git a/lua/plugrc/airline.vim b/lua/plugrc/airline.vim deleted file mode 100644 index 2c97c59..0000000 --- a/lua/plugrc/airline.vim +++ /dev/null @@ -1,42 +0,0 @@ -"Enable powerline fonts symbols -let g:airline_powerline_fonts=1 - -"enable caching of the various syntax highlighting groups. -"And use :AirlineRefresh to clear the cache -let g:airline_highlighting_cache = 1 - -"Set terminal color to 256 colors -set t_Co=256 - -"Enable tabline extention -let g:airline#extensions#tabline#enabled = 1 - -"Separators can be configured independently for the tabline, -"so here is how you can define "straight" tabs -"let g:airline#extensions#tabline#left_sep = ' ' -"let g:airline#extensions#tabline#left_alt_sep = '|' - -"In addition, you can also choose which path formatter airline uses. -"This affects how file paths are displayed in each individual tab as -"well as the current buffer indicator in the upper right. To do so, -"set the formatter field with - -let g:airline#extensions#tabline#formatter = 'unique_tail' - -" AIRLINE SETTINGS -let g:airline#extensions#tabline#show_close_button = 1 -let g:airline#extensions#tabline#close_symbol = '×' -let g:airline#extensions#tabline#buffer_nr_show = 1 -let g:airline_skip_empty_sections = 1 -"let g:airline#extensions#tabline#fnamemod = ':t' -let g:airline#extensions#syntastic#enabled = 1 -let g:airline_detect_iminsert=1 -let g:airline#extensions#tmuxline#enabled = 1 -let g:airline#extensions#tabline#show_tabs = 1 -let g:airline#extensions#tabline#show_buffers = 1 -let g:airline#extensions#tabline#tab_nr_type = 1 " tab number -let g:airline#extensions#tabline#show_splits = 1 -let g:airline#extensions#wordcount#enabled = 0 -"let g:airline_theme='base16' -let g:airline#extensions#tagbar#enabled = 1 -" END AIRLINE SETTINGS diff --git a/lua/plugrc/coc.vim b/lua/plugrc/coc.vim deleted file mode 100644 index 259828b..0000000 --- a/lua/plugrc/coc.vim +++ /dev/null @@ -1,66 +0,0 @@ -" 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('') - elseif (coc#rpc#ready()) - call CocActionAsync('doHover') - else - execute '!' . &keywordprg . " " . expand('') - endif -endfunction - -"a more automatic behavior where when cursoring over a word, -"You see either the diagnostic if it exists, otherwise the documentation -function! ShowDocIfNoDiagnostic(timer_id) - if (coc#float#has_float() == 0) - silent call CocActionAsync('doHover') - endif -endfunction - -function! s:show_hover_doc() - call timer_start(3000, 'ShowDocIfNoDiagnostic') -endfunction - -augroup hover_doc - autocmd! - "autocmd CursorHoldI * :call show_hover_doc() - "autocmd CursorHold * :call show_hover_doc() -augroup end - -augroup reference_signature - autocmd! -" Highlight the symbol and its references when holding the cursor. -autocmd CursorHold * silent call CocActionAsync('highlight') -augroup end - -" 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', ) - -" use `:OR` for organize import of current buffer -command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') - -" Add status line support, for integration with other plugin, checkout `:h coc-status` -set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} - -let g:coc_global_extensions = [ - \ 'coc-syntax', - \ 'coc-snippets', - \ 'coc-prettier', - \ 'coc-pairs', - \ 'coc-json', - \ 'coc-eslint', - \ 'coc-emmet', - \ 'coc-yaml', - \ 'coc-vetur', - \ 'coc-tsserver', - \ 'coc-python', - \ 'coc-markdownlint', - \ 'coc-html', - \ 'coc-css', - \'coc-stylelint' - \ ] diff --git a/lua/plugrc/fzf.vim b/lua/plugrc/fzf.vim deleted file mode 100644 index 7d66e0d..0000000 --- a/lua/plugrc/fzf.vim +++ /dev/null @@ -1,33 +0,0 @@ -"defalut regex tool -"let $FZF_DEFAULT_COMMAND = 'ag -g ""' - -" Default fzf layout -" - down / up / left / right -let g:fzf_layout = { 'down': '~40%' } - -" In Neovim, you can set up fzf window using a Vim command -let g:fzf_layout = { 'window': 'enew' } -let g:fzf_layout = { 'window': '-tabnew' } -let g:fzf_layout = { 'window': '10new' } - -" Customize fzf colors to match your color scheme -let g:fzf_colors = -\ { 'fg': ['fg', 'Normal'], - \ 'bg': ['bg', 'Normal'], - \ 'hl': ['fg', 'Comment'], - \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], - \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], - \ 'hl+': ['fg', 'Statement'], - \ 'info': ['fg', 'PreProc'], - \ 'border': ['fg', 'Ignore'], - \ 'prompt': ['fg', 'Conditional'], - \ 'pointer': ['fg', 'Exception'], - \ 'marker': ['fg', 'Keyword'], - \ 'spinner': ['fg', 'Label'], - \ 'header': ['fg', 'Comment'] } - -" Enable per-command history. -" CTRL-N and CTRL-P will be automatically bound to next-history and -" previous-history instead of down and up. If you don't like the change, -" explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS. -let g:fzf_history_dir = '~/.local/share/fzf-history' diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 385e769..c2c0841 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -2,21 +2,12 @@ --== PLUGINS INIT == --========================================================== -- -local cmd=vim.cmd -cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/coc.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/markdown_preview.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/syntastic.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/plugrc/neoformat.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/nerdtree_git.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/airline.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/plugrc/fzf.vim]] require('plugrc/vista') require('plugrc/tree') require('plugrc/lspconfig') -require('gitsigns').setup() +require('plugrc/gitsigns') require('plugrc/compe') require('nvim-autopairs').setup() -require('plugrc/neomake') require('telescope').setup() require('plugrc/trouble') require('plugrc/whichkey') diff --git a/lua/plugrc/markdown_preview.vim b/lua/plugrc/markdown_preview.vim deleted file mode 100644 index e59e18e..0000000 --- a/lua/plugrc/markdown_preview.vim +++ /dev/null @@ -1,90 +0,0 @@ -" set to 1, nvim will open the preview window after entering the markdown buffer -" default: 0 -let g:mkdp_auto_start = 0 - -" set to 1, the nvim will auto close current preview window when change -" from markdown buffer to another buffer -" default: 1 -let g:mkdp_auto_close = 1 - -" set to 1, the vim will refresh markdown when save the buffer or -" leave from insert mode, default 0 is auto refresh markdown as you edit or -" move the cursor -" default: 0 -let g:mkdp_refresh_slow = 0 - -" set to 1, the MarkdownPreview command can be use for all files, -" by default it can be use in markdown file -" default: 0 -let g:mkdp_command_for_global = 0 - -" set to 1, preview server available to others in your network -" by default, the server listens on localhost (127.0.0.1) -" default: 0 -let g:mkdp_open_to_the_world = 0 - -" use custom IP to open preview page -" useful when you work in remote vim and preview on local browser -" more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9 -" default empty -let g:mkdp_open_ip = '' - -" specify browser to open preview page -" default: '' -let g:mkdp_browser = '' - -" set to 1, echo preview page url in command line when open preview page -" default is 0 -let g:mkdp_echo_preview_url = 0 - -" a custom vim function name to open preview page -" this function will receive url as param -" default is empty -let g:mkdp_browserfunc = '' - -" options for markdown render -" mkit: markdown-it options for render -" katex: katex options for math -" uml: markdown-it-plantuml options -" maid: mermaid options -" disable_sync_scroll: if disable sync scroll, default 0 -" sync_scroll_type: 'middle', 'top' or 'relative', default value is 'middle' -" middle: mean the cursor position alway show at the middle of the preview page -" top: mean the vim top viewport alway show at the top of the preview page -" relative: mean the cursor position alway show at the relative positon of the preview page -" hide_yaml_meta: if hide yaml metadata, default is 1 -" sequence_diagrams: js-sequence-diagrams options -" content_editable: if enable content editable for preview page, default: v:false -" disable_filename: if disable filename header for preview page, default: 0 -let g:mkdp_preview_options = { - \ 'mkit': {}, - \ 'katex': {}, - \ 'uml': {}, - \ 'maid': {}, - \ 'disable_sync_scroll': 0, - \ 'sync_scroll_type': 'middle', - \ 'hide_yaml_meta': 1, - \ 'sequence_diagrams': {}, - \ 'flowchart_diagrams': {}, - \ 'content_editable': v:false, - \ 'disable_filename': 0 - \ } - -" use a custom markdown style must be absolute path -" like '/Users/username/markdown.css' or expand('~/markdown.css') -let g:mkdp_markdown_css = '' - -" use a custom highlight style must absolute path -" like '/Users/username/highlight.css' or expand('~/highlight.css') -let g:mkdp_highlight_css = '' - -" use a custom port to start server or random for empty -let g:mkdp_port = '' - -" preview page title -" ${name} will be replace with the file name -let g:mkdp_page_title = '「${name}」' - -" recognized filetypes -" these filetypes will have MarkdownPreview... commands -let g:mkdp_filetypes = ['markdown'] diff --git a/lua/plugrc/multiple_cursor.vim b/lua/plugrc/multiple_cursor.vim deleted file mode 100644 index af00191..0000000 --- a/lua/plugrc/multiple_cursor.vim +++ /dev/null @@ -1,2 +0,0 @@ -let g:multi_cursor_use_default_mapping=0 - diff --git a/lua/plugrc/nerdtree_git.vim b/lua/plugrc/nerdtree_git.vim deleted file mode 100644 index a8c1ec7..0000000 --- a/lua/plugrc/nerdtree_git.vim +++ /dev/null @@ -1,86 +0,0 @@ -"Automatically delete the buffer of the file you just deleted with NerdTree -let NERDTreeAutoDeleteBuffer = 1 - -"Automatically close nerdtree when you open a file -let NERDTreeQuitOnOpen = 1 - -"Some pretty ui option -let NERDTreeDirArrows = 1 -let g:loaded_nerdtree_git = 1 - -"Show hidden files -let NERDTreeShowHidden=1 - -"let g:NERDTreeMinimalUI = 1 - -let g:NERDTreeIgnore = [] - -let g:NERDTreeStatusline = '' - -"let g:NERDTreeShowIgnoredStatus = 1 -let g:NERDTreeGitStatusIndicatorMapCustom = { - \ "Modified" : "✹", - \ "Staged" : "✚", - \ "Untracked" : "✭", - \ "Renamed" : "➜", - \ "Unmerged" : "═", - \ "Deleted" : "✖", - \ "Dirty" : "✗", - \ "Clean" : "✔︎", - \ 'Ignored' : '☒', - \ "Unknown" : "?" - \ } - -"automatically close a tab if the only remaining window is NerdTree -autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif - -"open NerdTree when you’re starting -" -"autocmd vimenter * NERDTree - -""Open nerd tree on start up when no files are specified -autocmd StdinReadPre * let s:std_in=1 -autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif - -"How can I open NERDTree automatically when vim starts up on opening a directory -" -autocmd StdinReadPre * let s:std_in=1 -autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif - -" NERDTress File highlighting -function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg) -exec 'autocmd FileType nerdtree highlight ' a:extension ' ctermbg=' a:bg ' ctermfg=' a:fg ' guibg=' a:guibg ' guifg=' a:guifg -exec 'autocmd FileType nerdtree syn match ' a:extension .' #^\s\+.*' a:extension '$#' -endfunction - -call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515') -call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515') -call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515') -call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515') -call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515') -call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515') -call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515') -call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515') -call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515') -call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515') -call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515') -call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515') -call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515') -call NERDTreeHighlightFile('ds_store', 'Gray', 'none', '#686868', '#151515') -call NERDTreeHighlightFile('gitconfig', 'Gray', 'none', '#686868', '#151515') -call NERDTreeHighlightFile('gitignore', 'Gray', 'none', '#686868', '#151515') -call NERDTreeHighlightFile('bashrc', 'Gray', 'none', '#686868', '#151515') -call NERDTreeHighlightFile('bashprofile', 'Gray', 'none', '#686868', '#151515') - -" NERDTress File highlighting only the glyph/icon -" test highlight just the glyph (icons) in nerdtree: -autocmd filetype nerdtree highlight haskell_icon ctermbg=none ctermfg=Red guifg=#ffa500 -autocmd filetype nerdtree highlight html_icon ctermbg=none ctermfg=Red guifg=#ffa500 -autocmd filetype nerdtree highlight go_icon ctermbg=none ctermfg=Red guifg=#ffa500 - -autocmd filetype nerdtree syn match haskell_icon ## containedin=NERDTreeFile -" if you are using another syn highlight for a given line (e.g. -" NERDTreeHighlightFile) need to give that name in the 'containedin' for this -" other highlight to work with it -autocmd filetype nerdtree syn match html_icon ## containedin=NERDTreeFile,html -autocmd filetype nerdtree syn match go_icon ## containedin=NERDTreeFile diff --git a/lua/plugrc/sexy_status_bar.vim b/lua/plugrc/sexy_status_bar.vim deleted file mode 100644 index 2d0e21b..0000000 --- a/lua/plugrc/sexy_status_bar.vim +++ /dev/null @@ -1,38 +0,0 @@ -set statusline= -"set statusline+=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ [BUFFER=%n] -set statusline+=%#DiffAdd#%{(mode()=='n')?'\ \ NORMAL\ ':''} -set statusline+=%#DiffChange#%{(mode()=='i')?'\ \ INSERT\ ':''} -set statusline+=%#DiffDelete#%{(mode()=='r')?'\ \ RPLACE\ ':''} -set statusline+=%#Cursor#%{(mode()=='v')?'\ \ VISUAL\ ':''} -set statusline+=\BUFFER\ %n\ " buffer number -set statusline+=%#Visual# " colour -set statusline+=%{&paste?'\ PASTE\ ':''} -set statusline+=%{&spell?'\ SPELL\ ':''} -set statusline+=%#CursorIM# " colour -set statusline+=%R " readonly flag -set statusline+=%M " modified [+] flag -set statusline+=%#Cursor# " colour -set statusline+=%#CursorLine# " colour -set statusline+=\ %t\ " short file name -set statusline+=%= " right align -set statusline+=%#CursorLine# " colour -set statusline+=\ %Y\ " file type -set statusline+=%#Visual# -set statusline+=\%{&ff}\ " file formart -set statusline+=%#CursorIM# " colour -set statusline+=\ %3l:%-2c\ " line + column -set statusline+=%#Cursor# " colour -set statusline+=\ %3p%%\ " percentage -function! GitBranch() - return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'") -endfunction - -function! StatuslineGit() - let l:branchname = GitBranch() - return strlen(l:branchname) > 0?' '.l:branchname.' ':'' -endfunction -set statusline+=%{StatuslineGit()} -set statusline+=%#CursorColumn# -set statusline+=%#PmenuSel# -set statusline+=%#LineNr# "for more information about colour you can check" - ":so $VIMRUNTIME/syntax/hitest.vim diff --git a/lua/plugrc/syntastic.vim b/lua/plugrc/syntastic.vim deleted file mode 100644 index e602c7c..0000000 --- a/lua/plugrc/syntastic.vim +++ /dev/null @@ -1,38 +0,0 @@ -"Recommended Syntax for syntastic -set statusline+=%#warningmsg# -set statusline+=%{SyntasticStatuslineFlag()} -set statusline+=%* - -"Syntatic Python Linter Configuration -let g:syntastic_python_python_exec = 'python3' -let g:syntastic_python_checkers = ['flake8'] -let g:syntastic_python_flake8_args = "" - -"Syntastic C++ Linter Configuration -let g:syntastic_aggregate_errors = 1 "display all errors from all checkers together" -let g:syntastic_cpp_checkers = ['cppcheck'] -"checker args -let g:syntastic_cpp_cppcheck_args="--enable=warning,style,performance,portability,information,missingInclude --inconclusive --force -j 4 --template=gcc --language=c++" -let g:syntastic_cpp_compiler = 'g++' -let g:syntastic_cpp_compiler_options = '-std=c++20' -let g:syntastic_cpp_check_header = 0 "change to 0" - -"fill the |location-list| with the errors found by the checkers" -let g:syntastic_always_populate_loc_list = 1 -let g:syntastic_auto_loc_list = 1 " auto open/close location list -let g:syntastic_check_on_open = 0 " check also when just opened the file -let g:syntastic_check_on_wq = 0 " check when ever buffers are written to disk" - -let b:syntastic_mode="active" -let g:syntastic_enable_signs = 1 - -" syntastic checker for javascript. -"let g:syntastic_javascript_checkers = ['eslint'] -" don't put icons on the sign column (it hides the vcs status icons of signify) -let g:syntastic_error_symbol = '✗' -let g:syntastic_warning_symbol = '⚠' -let g:syntastic_style_error_symbol = 's>' -let g:syntastic_style_warning_symbol = 'sw' - -"Let syntastic enable ballons ie.popups for error messages -let g:syntastic_enable_balloons =1 "Enable or Disable ballons" From b9024472d207a600b9dcd59d0704fb9c510910e7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 00:07:37 +0000 Subject: [PATCH 187/419] config(gitsigns): Add configurations for gitsigns --- lua/plugrc/gitsigns.lua | 86 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lua/plugrc/gitsigns.lua diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua new file mode 100644 index 0000000..7f6c92e --- /dev/null +++ b/lua/plugrc/gitsigns.lua @@ -0,0 +1,86 @@ +local GitStatus = { + Modified = "✹", + Staged = "✚", + Untracked = "✭", + Renamed = "➜", + Unmerged = "═", + Deleted = "✖", + Dirty = "✗", + Clean = "✔︎", + Ignored = '☒', + Unknown = "?" +} + +require('gitsigns').setup { + signs = { + add = { + hl = 'GitSignsAdd', + text = "✚", + numhl = 'GitSignsAddNr', + linehl = 'GitSignsAddLn' + }, + change = { + hl = 'GitSignsChange', + text = "✹", + numhl = 'GitSignsChangeNr', + linehl = 'GitSignsChangeLn' + }, + delete = { + hl = 'GitSignsDelete', + text = "✖", + numhl = 'GitSignsDeleteNr', + linehl = 'GitSignsDeleteLn' + }, + topdelete = { + hl = 'GitSignsDelete', + text = '‾', + numhl = 'GitSignsDeleteNr', + linehl = 'GitSignsDeleteLn' + }, + changedelete = { + hl = 'GitSignsChange', + text = '~', + numhl = 'GitSignsChangeNr', + linehl = 'GitSignsChangeLn' + } + }, + numhl = false, + linehl = false, + keymaps = { + -- Default keymap options + noremap = true, + buffer = true, + + ['n ]c'] = { + expr = true, + "&diff ? ']c' : 'lua require\"gitsigns.actions\".next_hunk()'" + }, + ['n [c'] = { + expr = true, + "&diff ? '[c' : 'lua require\"gitsigns.actions\".prev_hunk()'" + }, + + ['n hs'] = 'lua require"gitsigns".stage_hunk()', + ['v hs'] = 'lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})', + ['n hu'] = 'lua require"gitsigns".undo_stage_hunk()', + ['n hr'] = 'lua require"gitsigns".reset_hunk()', + ['v hr'] = 'lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})', + ['n hR'] = 'lua require"gitsigns".reset_buffer()', + ['n hp'] = 'lua require"gitsigns".preview_hunk()', + ['n hb'] = 'lua require"gitsigns".blame_line(true)', + + -- Text objects + ['o ih'] = ':lua require"gitsigns.actions".select_hunk()', + ['x ih'] = ':lua require"gitsigns.actions".select_hunk()' + }, + watch_index = {interval = 1000, follow_files = true}, + current_line_blame = false, + current_line_blame_delay = 1000, + current_line_blame_position = 'eol', + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + word_diff = false, + use_decoration_api = true, + use_internal_diff = true -- If luajit is present +} From 2b68ff9c8c2beb06ab9f5603528190bb07fddbeb Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 00:18:19 +0000 Subject: [PATCH 188/419] cleanup(mappings): Remove mappings of removed plugins --- lua/mapping/coc_map.vim | 101 ------------------------- lua/mapping/fzf_map.vim | 36 --------- lua/mapping/markdown_preview_map.vim | 2 - lua/mapping/nerdtree_map.vim | 6 -- lua/mapping/syntastic_map.vim | 3 - lua/mapping/visual_fnd_replace_map.vim | 3 - 6 files changed, 151 deletions(-) delete mode 100644 lua/mapping/coc_map.vim delete mode 100644 lua/mapping/fzf_map.vim delete mode 100644 lua/mapping/markdown_preview_map.vim delete mode 100644 lua/mapping/nerdtree_map.vim delete mode 100644 lua/mapping/syntastic_map.vim delete mode 100644 lua/mapping/visual_fnd_replace_map.vim diff --git a/lua/mapping/coc_map.vim b/lua/mapping/coc_map.vim deleted file mode 100644 index a7fb5da..0000000 --- a/lua/mapping/coc_map.vim +++ /dev/null @@ -1,101 +0,0 @@ -"Use command ':verbose imap ' to make sure tab is not mapped by other plugin. -"Map for trigger completion, completion confirm, snippet expand and jump like VSCode - inoremap - \ pumvisible() ? coc#_select_confirm() : - \ coc#expandableOrJumpable() ? - \ "\=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\" : - \ check_back_space() ? "\" : - \ coc#refresh() - - function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' - endfunction - -"Note: the `coc-snippets` extension is required for this to work. -let g:coc_snippet_next = '' - -" to confirm completion, use: carriage return (Enter) -inoremap pumvisible() ? "\" : "\" - -function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' -endfunction - -" Use `[d` and `]d` to navigate diagnostics -nmap [d (coc-diagnostic-prev) -nmap ]d (coc-diagnostic-next) - -" Remap keys for gotos -nmap gd (coc-definition) -nmap gt (coc-type-definition) -nmap gi (coc-implementation) -nmap gr (coc-references-used) - -" Remap for rename current word -nmap rn (coc-rename) - -"Setup Prettier command in your init.vim or .vimrc -"So you can use :Prettier to format current buffer. -command! -nargs=0 Prettier :CocCommand prettier.formatFile - -"Then your can f for range format.Prettier range format only support -"languageId including: javascript, javascriptreact, typescript, typescriptreact, -"json and graphql -" Remap for format selected region -xmap f (coc-format-selected) -nmap f (coc-format-selected) - -" Remap for do codeAction of selected region, ex: `aap` for current paragraph -xmap a (coc-codeaction-line) -nmap a (coc-codeaction-line) - -" Remap for do codeAction of current line -nmap ac (coc-codeaction) -" Fix autofix problem of current line -nmap qf (coc-fix-current) - -"Do command from codeLens of current line -nmap cdl (coc-codelens-action) - -"Open refactor window for refactor of current symbol. -nmap r (coc-refactor) - -"Open link under cursor -nmap ol (coc-openlink) - -" Remap and for scroll float windows/popups. -" Note coc#float#scroll works on neovim >= 0.4.3 or vim >= 8.2.0750 -if has('nvim-0.4.0') || has('patch-8.2.0750') -nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" -nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" -inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" -inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" -vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" -vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" -endif - -" Use CTRL-S for selections ranges. -" Requires 'textDocument/selectionRange' support of language server. -" Use for select selections ranges, needs server support, like: coc-tsserver, coc-python -nmap (coc-range-select) -nmap (coc-range-select-backword) - -" Using CocList -" Show all diagnostics -nnoremap d :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 n :CocNext -" Do default action for previous item. -nnoremap p :CocPrev -" Resume latest coc list -nnoremap r :CocListResume diff --git a/lua/mapping/fzf_map.vim b/lua/mapping/fzf_map.vim deleted file mode 100644 index d3bcb68..0000000 --- a/lua/mapping/fzf_map.vim +++ /dev/null @@ -1,36 +0,0 @@ -"mappings for Fzf -"" This is the default extra key bindings -nnoremap :FZF -let g:fzf_action = { - \ 'ctrl-t': 'tab split', - \ 'ctrl-s': 'split', - \ 'ctrl-v': 'vsplit' - \} - -" Mapping selecting mappings -nmap (fzf-maps-n) -xmap (fzf-maps-x) -omap (fzf-maps-o) - -" Insert mode completion -imap (fzf-complete-word) -imap (fzf-complete-path) -imap (fzf-complete-file-ag) -imap (fzf-complete-line) - -" Advanced customization using autoload functions -inoremap fzf#vim#complete#word({'left': '15%'}) - -" Replace the default dictionary completion with fzf-based fuzzy completion -inoremap fzf#vim#complete('cat /usr/share/dict/words') - - -function! s:fzf_statusline() - " Override statusline as you like - highlight fzf1 ctermfg=161 ctermbg=251 - highlight fzf2 ctermfg=23 ctermbg=251 - highlight fzf3 ctermfg=237 ctermbg=251 - setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f -endfunction - -autocmd! User FzfStatusLine call fzf_statusline() diff --git a/lua/mapping/markdown_preview_map.vim b/lua/mapping/markdown_preview_map.vim deleted file mode 100644 index 38089d5..0000000 --- a/lua/mapping/markdown_preview_map.vim +++ /dev/null @@ -1,2 +0,0 @@ - " for normal mode " - nmap MarkdownPreviewToggle diff --git a/lua/mapping/nerdtree_map.vim b/lua/mapping/nerdtree_map.vim deleted file mode 100644 index 77038a6..0000000 --- a/lua/mapping/nerdtree_map.vim +++ /dev/null @@ -1,6 +0,0 @@ -"Toggle NERDTreeToggle on and of -nnoremap n :NERDTreeToggle - -"directly open NerdTree on the file you’re editing to -"quickly perform operations on it with NERDTreeFind -nnoremap v :NERDTreeFind diff --git a/lua/mapping/syntastic_map.vim b/lua/mapping/syntastic_map.vim deleted file mode 100644 index a31dc97..0000000 --- a/lua/mapping/syntastic_map.vim +++ /dev/null @@ -1,3 +0,0 @@ -"Perform SyntasticCheck -nnoremap :SyntasticCheck :lopen -nnoremap :SyntasticCheck :lclose diff --git a/lua/mapping/visual_fnd_replace_map.vim b/lua/mapping/visual_fnd_replace_map.vim deleted file mode 100644 index 40330fb..0000000 --- a/lua/mapping/visual_fnd_replace_map.vim +++ /dev/null @@ -1,3 +0,0 @@ -" === Visual find and replace === " -" When you press r you can search and replace the selected text -vnoremap r :call VisualSelection('replace', '') From 91b54d914a667e4fab78a1252f8dd68cb4457a0f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 00:18:59 +0000 Subject: [PATCH 189/419] cleanup(mappings): Remove unused editor mappings --- lua/mapping/copy_paste_map.vim | 5 ----- lua/mapping/folding_map.vim | 2 -- 2 files changed, 7 deletions(-) delete mode 100644 lua/mapping/copy_paste_map.vim delete mode 100644 lua/mapping/folding_map.vim diff --git a/lua/mapping/copy_paste_map.vim b/lua/mapping/copy_paste_map.vim deleted file mode 100644 index b5b6c98..0000000 --- a/lua/mapping/copy_paste_map.vim +++ /dev/null @@ -1,5 +0,0 @@ -" == Mappings for keyborad copy and paste == " -inoremap "*p -vnoremap "*y -vnoremap "*d -nnoremap "%y* diff --git a/lua/mapping/folding_map.vim b/lua/mapping/folding_map.vim deleted file mode 100644 index f28e97e..0000000 --- a/lua/mapping/folding_map.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Enable folding with the spacebar -nnoremap za From f4bea3e99b93de62353b4fe8667f14675685ce0f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 00:22:12 +0000 Subject: [PATCH 190/419] refactor(names): Remove trailling _map in names Also prepare files for conversion to lua --- lua/mapping/{highlighting_map.vim => highlighting.lua} | 0 lua/mapping/{spellcheck_map.vim => spellcheck.lua} | 0 lua/mapping/{tab_buffer_map.vim => tab_buffer.lua} | 0 lua/mapping/{terminal_map.vim => terminal.lua} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename lua/mapping/{highlighting_map.vim => highlighting.lua} (100%) rename lua/mapping/{spellcheck_map.vim => spellcheck.lua} (100%) rename lua/mapping/{tab_buffer_map.vim => tab_buffer.lua} (100%) rename lua/mapping/{terminal_map.vim => terminal.lua} (100%) diff --git a/lua/mapping/highlighting_map.vim b/lua/mapping/highlighting.lua similarity index 100% rename from lua/mapping/highlighting_map.vim rename to lua/mapping/highlighting.lua diff --git a/lua/mapping/spellcheck_map.vim b/lua/mapping/spellcheck.lua similarity index 100% rename from lua/mapping/spellcheck_map.vim rename to lua/mapping/spellcheck.lua diff --git a/lua/mapping/tab_buffer_map.vim b/lua/mapping/tab_buffer.lua similarity index 100% rename from lua/mapping/tab_buffer_map.vim rename to lua/mapping/tab_buffer.lua diff --git a/lua/mapping/terminal_map.vim b/lua/mapping/terminal.lua similarity index 100% rename from lua/mapping/terminal_map.vim rename to lua/mapping/terminal.lua From e6fc4e4816612a9e89916d49582479aa7b1afa64 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:27:36 +0000 Subject: [PATCH 191/419] feature: Add termcode and dump utility functions --- lua/utils.lua | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lua/utils.lua b/lua/utils.lua index cdc4c35..a8c9c24 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -1,12 +1,24 @@ function _G.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 local scopes = {o = vim.o, b = vim.bo, w = vim.wo} function _G.opt(scope, key, value) - scopes[scope][key] = value - if scope ~= 'o' then scopes['o'][key] = value end + scopes[scope][key] = value + if scope ~= 'o' then scopes['o'][key] = value end +end + +function _G.dump(...) + local objects = vim.tbl_map(vim.inspect, {...}) + print(unpack(objects)) + return ... +end + +-- escape termcode and keycode in lua for use in mapping expressions +function _G.t(str) + -- Adjust boolean arguments as needed + return vim.api.nvim_replace_termcodes(str, true, true, true) end From a97cdb20e1ca23b851ca1b1775bf1db0a5cb9e77 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:29:22 +0000 Subject: [PATCH 192/419] refactor(vim->lua): map to lua global funtion convert code to lua --- lua/mapping/terminal.lua | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lua/mapping/terminal.lua b/lua/mapping/terminal.lua index 96e6335..e30129b 100644 --- a/lua/mapping/terminal.lua +++ b/lua/mapping/terminal.lua @@ -1,11 +1,14 @@ -" turn terminal to normal mode with escape -"tnoremap :q +require('utils') +-- turn terminal to normal mode with escape +-- tnoremap :q -" open terminal on ctrl+n -function! OpenTerminal() - split term://zsh - resize 10 -endfunction +-- open terminal on ctrl+n +function _G.OpenTerminal() + vim.cmd [[ + split term://zsh + resize 10 + ]] +end -"Mapping to open terminal emulator in nvim -nnoremap :call OpenTerminal() +-- Mapping to open terminal emulator in nvim +map('n', '', ':call v:lua.OpenTerminal()') From 9b8b8cba851d8d135617b0374b6a9944546cf226 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:34:31 +0000 Subject: [PATCH 193/419] change(mapping): Change terminal close mapping to Improve mapping closing prefer :bd! ie.buffer delete over :q! quit and use nvim lua api for mapping --- lua/terminal.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lua/terminal.lua b/lua/terminal.lua index 74813ab..435efa6 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -1,11 +1,10 @@ -- open new split panes to right and below -vim.cmd[[set splitright]] -vim.cmd[[set splitbelow]] - +vim.go.splitright = true +vim.go.splitbelow = true vim.cmd [[ augroup Terminal autocmd! - au TermOpen * tnoremap :q + au TermOpen * tnoremap :bd! au TermOpen * startinsert au TermOpen * set nonumber augroup end From 9ad0b8ec8525c861b049551a0b5576a70c7dcccc Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:43:14 +0000 Subject: [PATCH 194/419] fixup(clipboard): fix clipboard option with append from vim.opt use both unnamed and unnamedplus for clipboard --- lua/editor.lua | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 2476c21..836da01 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,6 +1,4 @@ local o=vim.o -local wo=vim.wo -local bo=vim.bo local g=vim.g local cmd=vim.cmd local fn=vim.fn @@ -25,8 +23,7 @@ g.asmsyntax = 'asm' --Set clipboard to the + registers only --if you want to use the * also add ,unnamed if fn.has('clipboard') == 1 then - -- cmd[[set clipboard+=unnamedplus]] - o.clipboard = 'unnamed,unnamedplus' + vim.opt.clipboard:append('unnamed,unnamedplus') end --Restore cursor to file position in previous editing session From f9e82ee14859007ce495deac64248a3115e208b8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:44:39 +0000 Subject: [PATCH 195/419] refactor(vim->lua): change to lua and fix comment --- lua/mapping/highlighting.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/mapping/highlighting.lua b/lua/mapping/highlighting.lua index 05b62c9..f122b12 100644 --- a/lua/mapping/highlighting.lua +++ b/lua/mapping/highlighting.lua @@ -1,2 +1,3 @@ -" Use to clear the highlighting of :set hlsearch. -nnoremap hl :nohl +require('utils') +-- Use l to clear the highlighting of :set hlsearch. +map('n', 'hl', ':nohl') From e5fb4733f0946cec98502191a24ee430763d9be6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:47:10 +0000 Subject: [PATCH 196/419] refactor(vim->lua): change mappings to use vim lua api --- lua/mapping/spellcheck.lua | 34 ++++++++----- lua/mapping/tab_buffer.lua | 99 ++++++++++++++++++-------------------- 2 files changed, 68 insertions(+), 65 deletions(-) diff --git a/lua/mapping/spellcheck.lua b/lua/mapping/spellcheck.lua index 75fb38d..2c6cc68 100644 --- a/lua/mapping/spellcheck.lua +++ b/lua/mapping/spellcheck.lua @@ -1,14 +1,24 @@ -" === Spell checking === " -" For help on spell checking :help spell +require('utils') +-- === Spell checking === " +-- For help on spell checking :help spell -" Pressing ,ts will toggle and untoggle spell checking -map ts :setlocal spell! "toggle to alternate configuration of spellcheck +-- Pressing ,ts will toggle and untoggle spell checking +-- toggle to alternate configuration of spellcheck +local opt = {noremap = false} +map('', 'ts', ':setlocal spell!', opt) -" Shortcuts using -map sn ]s "next spellcheck iteam -map sp [s "previous spellcheck iteam -map sg zg "mark word as good in local spellfile :NOTE checkout zG for internal spellfile -map sw zw "mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile -map usg zug "undo marking of word as good -map usw zuw "undo marking of word as wrong -map sc z= "check for suggestions for the underlined word +-- Shortcuts using +-- next spellcheck iteam +map('', 'sn', ']s', opt) +-- previous spellcheck iteam +map('', 'sp', 's[', opt) +-- mark word as good in local spellfile :NOTE checkout zG for internal spellfile +map('', 'sg', 'gz', opt) +-- mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile +map('', 'sw', 'wz', opt) +-- undo marking of word as good +map('', 'usg', 'ugz', opt) +-- undo marking of word as wrong +map('', 'usw', 'uwz', opt) +-- check for suggestions for the underlined word +map('', 'sc', '=z', opt) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index a2e1ab5..618a957 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -1,53 +1,46 @@ -" === Moving around, tabs, windows and buffers === " - -"To use `ALT+{h,j,k,l}` to navigate windows from any mode: > -:tnoremap h -:tnoremap j -:tnoremap k -:tnoremap l -:inoremap h -:inoremap j -:inoremap k -:inoremap l -:nnoremap h -:nnoremap j -:nnoremap k -:nnoremap l - -" Close the current buffer -map bd :bdelete - -" Close all the buffers -map ba :bufdo bd - -map bn :bnext -map bp :bprevious -map bf :bfirst -map bl :blast - - -" Useful mappings for managing tabs -map tnw :tabnew -map to :tabonly -map tc :tabclose -map tm :tabmove -map tn :tabnext -map tp :tabprevious -map tf :tabfirst -"pass a positive or negative argument to the command to move by that step" -map t :tabnext - -" Let 'tl' toggle between this and the last accessed tab -let g:lasttab = 1 -nmap tl :exe "tabn ".g:lasttab -au TabLeave * let g:lasttab = tabpagenr() - - -" Opens a new tab with the current buffer's path -" Super useful when editing files in the same directory -map te :tabedit =expand("%:p:h") - -" Switch CWD to the directory of the open buffer -map cd :cd %:p:h:pwd - -"nmap :pop +require('utils') +-- === Moving around, tabs, windows and buffers === -- + +-- To use `ALT+{h,j,k,l}` to navigate windows from any mode: > +map('t', '', [[h]]) +map('t', '', [[j]]) +map('t', '', [[k]]) +map('t', '', [[l]]) +map('i', '', [[h]]) +map('i', '', [[j]]) +map('i', '', [[k]]) +map('i', '', [[l]]) +map('n', '', 'h') +map('n', '', 'j') +map('n', '', 'k') +map('n', '', 'l') + +-- Close the current buffer +local opt = {noremap = false} +map('', 'bd', ':bdelete', opt) + +-- Close all the buffers +map('', 'ba', ':bufdo bd', opt) + +map('', 'bn', ':bnext', opt) +map('', 'bp', ':bprevious', opt) +map('', 'bf', ':bfirst', opt) +map('', 'bl', ':blast', opt) + +-- Useful mappings for managing tabs +map('', 'tnw', ':tabnew', opt) +map('', 'to', ':tabonly', opt) +map('', 'tc', ':tabclose', opt) +map('', 'tm', ':tabmove', opt) +map('', 'tn', ':tabnext', opt) +map('', 'tp', ':tabprevious', opt) +map('', 'tf', ':tabfirst', opt) +-- pass a positive or negative argument to the command to move by that step-- +map('', 't', ':tabnext', opt) + +-- Opens a new tab with the current buffer's path +-- Super useful when editing files in the same directory +map('', 'te', ':tabedit =expand("%:p:h")', opt) + +-- Switch CWD to the directory of the open buffer +map('', 'cd', ':cd %:p:h:pwd', opt) From 11386d072d0761b8e8ef7903a5418f9ce4d1baf1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:48:36 +0000 Subject: [PATCH 197/419] organize: move tag back mapping into tags file --- lua/mapping/tags.lua | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 lua/mapping/tags.lua diff --git a/lua/mapping/tags.lua b/lua/mapping/tags.lua new file mode 100644 index 0000000..fa111e2 --- /dev/null +++ b/lua/mapping/tags.lua @@ -0,0 +1,3 @@ +-- pop tags in the reverse of C-] +-- ie going back +map('n','',':pop',opt) From 7e93579d7e307035e4705b274ef48447edb77798 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 04:50:03 +0000 Subject: [PATCH 198/419] load convert vim mapping files at init point --- lua/mapping/init.lua | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 410c6ed..4a7809f 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -1,17 +1,7 @@ ---Source the various mappings -local cmd= vim.cmd -cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/coc_map.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/fzf_map.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/nerdtree_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/copy_paste_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/visual_fnd_replace_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/spellcheck_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/tab_buffer_map.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/syntastic_map.vim]] -cmd[["source $XDG_CONFIG_HOME/nvim/lua/mapping/markdown_preview_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/highlighting_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/folding_map.vim]] -cmd[[source $XDG_CONFIG_HOME/nvim/lua/mapping/terminal_map.vim]] +require('mapping/spellcheck') +require('mapping/tab_buffer') +require('mapping/highlighting') +require('mapping/terminal') require('mapping/compe') require('mapping/lspconfig') require('mapping/autopairs') @@ -19,3 +9,4 @@ require('mapping/tree') require('mapping/telescope') require('mapping/trouble') require('mapping/vista') +require('mapping/tags') From 7a74e2df5c4d720baeaedd28da9110cdb95c3695 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 06:24:48 +0000 Subject: [PATCH 199/419] revert: Revert tags addition This funtionality is by default provided by c-t --- lua/mapping/init.lua | 1 - lua/mapping/tags.lua | 3 --- 2 files changed, 4 deletions(-) delete mode 100644 lua/mapping/tags.lua diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 4a7809f..6d0c348 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -9,4 +9,3 @@ require('mapping/tree') require('mapping/telescope') require('mapping/trouble') require('mapping/vista') -require('mapping/tags') diff --git a/lua/mapping/tags.lua b/lua/mapping/tags.lua deleted file mode 100644 index fa111e2..0000000 --- a/lua/mapping/tags.lua +++ /dev/null @@ -1,3 +0,0 @@ --- pop tags in the reverse of C-] --- ie going back -map('n','',':pop',opt) From 4d8b57554bf26093bd9bd4001090bbc3e8e33d3d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 12:16:48 +0000 Subject: [PATCH 200/419] feature: Add utility function for reloading modules --- lua/utils.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/utils.lua b/lua/utils.lua index a8c9c24..137092e 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -22,3 +22,8 @@ function _G.t(str) -- Adjust boolean arguments as needed return vim.api.nvim_replace_termcodes(str, true, true, true) end + +function _G.reload(module, parent_directory) + local reload_module = require('plenary.reload').reload_module + reload_module(module, parent_directory) +end From 9f5885971017aaab58bb4436eec0789f85aa9764 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 16 Jul 2021 13:18:02 +0000 Subject: [PATCH 201/419] feature: Add and change some gutter and kind icons --- lua/plugrc/lspconfig/config.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/config.lua index d73b515..6bf718a 100644 --- a/lua/plugrc/lspconfig/config.lua +++ b/lua/plugrc/lspconfig/config.lua @@ -1,7 +1,8 @@ local M = {} +--   漣      ﱮ M.icons = { - Class = " ", + Class = " ", Color = " ", Constant = " ", Constructor = " ", @@ -9,7 +10,7 @@ M.icons = { EnumMember = " ", Field = " ", File = " ", - Folder = " ", + Folder = " ", Function = " ", Interface = "ﰮ ", Keyword = " ", @@ -18,10 +19,10 @@ M.icons = { Property = " ", Snippet = "﬌ ", Struct = " ", - Text = " ", + Text = " ", Unit = " ", Value = " ", - Variable = " " + Variable = "﬚ " } function M.completion_kinds() @@ -30,11 +31,12 @@ function M.completion_kinds() end function M.sign_column_diagnostic_symbols() +--    --  --   ﯧ  --   ﯦ local signs = { - Error = " ", - Warning = " ", - Hint = " ", - Information = " " + Error = " ", + Warning = " ", + Hint = " ", + Information = " " } for type, icon in pairs(signs) do local hl = "LspDiagnosticsSign" .. type From 8cf99137b7c74b98195273eeec104161692d89d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 17 Jul 2021 18:45:26 +0000 Subject: [PATCH 202/419] Use map utility function --- lua/mapping/tree.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua index ce26a18..39d21d8 100644 --- a/lua/mapping/tree.lua +++ b/lua/mapping/tree.lua @@ -1,8 +1,7 @@ -local map=vim.api.nvim_set_keymap -local option={nnoremap=tree} +require('utils') -map('n','n',':NvimTreeToggle',option) -map('n','r',':NvimTreeRefresh',option) +map('n','n',':NvimTreeToggle') +map('n','r',':NvimTreeRefresh') --map('n','tf',':NvimTreeFindFile',option) -- NvimTreeOpen and NvimTreeClose are also available if you need them From a304ea70fa451f961fd860a9e6e86ff0b88084fd Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 17 Jul 2021 18:46:23 +0000 Subject: [PATCH 203/419] change(map): change mapping from c-t to m-t --- lua/mapping/terminal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/mapping/terminal.lua b/lua/mapping/terminal.lua index e30129b..5c3ae84 100644 --- a/lua/mapping/terminal.lua +++ b/lua/mapping/terminal.lua @@ -11,4 +11,4 @@ function _G.OpenTerminal() end -- Mapping to open terminal emulator in nvim -map('n', '', ':call v:lua.OpenTerminal()') +map('n', '', ':call v:lua.OpenTerminal()') From ae37818351b6a98dc93697b8774f9faad0fee893 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 20 Jul 2021 18:37:56 +0000 Subject: [PATCH 204/419] clenup : Remove settings for coc --- coc-settings.json | 65 ----------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 coc-settings.json diff --git a/coc-settings.json b/coc-settings.json deleted file mode 100644 index 16ca89f..0000000 --- a/coc-settings.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "languageserver": { - "clangd": { - "command": "clangd", - "args": [ - "--query-driver=/usr/bin/g++", - "--clang-tidy", - "-j=5", - "--malloc-trim" - ], - "rootPatterns": [ - "compile_commands.json", - ".git/" - ], - "filetypes": ["c", "h", "cpp", "hpp", "cxx", "hxx", "tpp", - "txx","mpp","mxx"] - }, - "cmake": { - "command": "cmake-language-server", - "filetypes": ["cmake"], - "rootPatterns": ["build/"], - "initializationOptions": { - "buildDirectory": "build" - } - }, - "haskell": { - "command": "haskell-language-server-wrapper", - "args": ["--lsp"], - "rootPatterns": [ - "*.cabal", - "stack.yaml", - "cabal.project", - "package.yaml", - "hie.yaml" - ], - "filetypes": ["haskell", "lhaskell"] - } - }, - "codeLens.enable": true, - "diagnostic.virtualText": true, - "diagnostic.virtualTextCurrentLineOnly": false, - "suggest.enablePreview": true, - "suggest.enablePreselect": true, - "suggest.triggerAfterInsertEnter": true, - "html.enable": true, - "html.format.enable": true, - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, - "coc.preferences.formatOnSaveFiletypes": [ - "css", - "Markdown", - "dart", - "json", - "typescript", - "javascript", - "graphql", - "vue" - ], - "eslint.autoFixOnSave": true, - "prettier.eslintIntegration": true, - "yaml.format.enable": true, - "coc.source.emoji.filetypes":[ - "markdown","vimwiki" - ] -} From 420cfc3a4dc7ac72971e5b8150bfca400b35c49b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 01:13:05 +0000 Subject: [PATCH 205/419] restructure : make telescope optional --- lua/mapping/telescope.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/mapping/telescope.lua b/lua/mapping/telescope.lua index c0f885d..59ced8c 100644 --- a/lua/mapping/telescope.lua +++ b/lua/mapping/telescope.lua @@ -1,7 +1,7 @@ -- Using lua functions -local map=vim.api.nvim_set_keymap -local options={noremap=true,silent=true} -map('n','ff',[[lua require('telescope.builtin').find_files()]] ,options) -map('n','fg',[[lua require('telescope.builtin').live_grep()]] ,options) -map('n','fb',[[lua require('telescope.builtin').buffers()]] ,options) -map('n','fh',[[lua require('telescope.builtin').help_tags()]],options) +require('utils') +local opt={silent=true} +map('n','ff',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').find_files()]] ,opt) +map('n','fg',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').live_grep()]] ,opt) +map('n','fb',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').buffers()]] ,opt) +map('n','fh',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]],opt) From 17f4d01bb8ba0aef9c153a1ff99503fd11a1a801 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 01:16:10 +0000 Subject: [PATCH 206/419] refactor and make trouble optional .ie lazy load --- lua/mapping/trouble.lua | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lua/mapping/trouble.lua b/lua/mapping/trouble.lua index 7f08732..0aa7742 100644 --- a/lua/mapping/trouble.lua +++ b/lua/mapping/trouble.lua @@ -1,7 +1,8 @@ -local opt = {silent = true, noremap = true} -vim.api.nvim_set_keymap("n", "tt", "TroubleToggle",opt) -vim.api.nvim_set_keymap("n", "tw", "TroubleToggle lsp_workspace_diagnostics",opt) -vim.api.nvim_set_keymap("n", "td", "TroubleToggle lsp_document_diagnostics",opt) -vim.api.nvim_set_keymap("n", "tl", "TroubleToggle loclist",opt) -vim.api.nvim_set_keymap("n", "tq", "TroubleToggle quickfix",opt) -vim.api.nvim_set_keymap("n", "tr", "TroubleToggle lsp_references",opt) +require('utils') +local opt = {silent = true} +map("n", "tt", "packadd trouble.nvim|TroubleToggle",opt) +map("n", "tw", "packadd trouble.nvim|TroubleToggle lsp_workspace_diagnostics",opt) +map("n", "td", "packadd trouble.nvim|TroubleToggle lsp_document_diagnostics",opt) +map("n", "tl", "packadd trouble.nvim|TroubleToggle loclist",opt) +map("n", "tq", "packadd trouble.nvim|TroubleToggle quickfix",opt) +map("n", "tr", "packadd trouble.nvim|TroubleToggle lsp_references",opt) From 110dba7823774ed256035ff47afaae045fe57b24 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 06:29:17 +0000 Subject: [PATCH 207/419] refactor: Use equivalent functions in utils --- lua/mapping/compe.lua | 66 +++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/lua/mapping/compe.lua b/lua/mapping/compe.lua index a147143..31e0bcf 100644 --- a/lua/mapping/compe.lua +++ b/lua/mapping/compe.lua @@ -1,24 +1,4 @@ -local function map(mode, lhs, rhs, opts) -local options= {noremap=true,silent=true,expr=true} - if opts then options = vim.tbl_extend('force', options, opts) end - vim.api.nvim_set_keymap(mode, lhs, rhs, options) -end - ---local fn=vim.fn ---map('i','','compe#complete()') ---map('i','', 'compe#confirm()') --- Mappings for auto import -vim.cmd[[ -inoremap compe#complete() -inoremap compe#confirm('') -inoremap compe#close('') -inoremap compe#scroll({ 'delta': +4 }) -inoremap compe#scroll({ 'delta': -4 }) -]] - -local t = function(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) -end +require('utils') local check_back_space = function() local col = vim.fn.col('.') - 1 @@ -33,28 +13,28 @@ end --- move to prev/next item in completion menuone --- jump to prev/next snippet's placeholder _G.tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif require'luasnip'.expand_or_jumpable() then - return t "luasnip-expand-or-jump" - elseif check_back_space() then - return t "" - else - return vim.fn['compe#complete']() - end + if vim.fn.pumvisible() == 1 then + return t "" + elseif require'luasnip'.expand_or_jumpable() then + return t "luasnip-expand-or-jump" + elseif check_back_space() then + return t "" + else + return vim.fn['compe#complete']() + end end _G.s_tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif require'luasnip'.jumpable(-1) then - return t "luasnip-jump-prev" - else - -- If is not working in your terminal, change it to - return t "" - end + if vim.fn.pumvisible() == 1 then + return t "" + elseif require'luasnip'.jumpable(-1) then + return t "luasnip-jump-prev" + else + -- If is not working in your terminal, change it to + return t "" + end end - -vim.api.nvim_set_keymap("i", "", "v:lua.tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("s", "", "v:lua.tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("i", "", "v:lua.s_tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("s", "", "v:lua.s_tab_complete()", {expr = true}) +local opt = {noremap = false ,expr = true} +map("i", "", "v:lua.tab_complete()", opt) +map("s", "", "v:lua.tab_complete()", opt) +map("i", "", "v:lua.s_tab_complete()", opt) +map("s", "", "v:lua.s_tab_complete()", opt) From 22f2eb03a6af757bdc9293c9804571ddb4a94235 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 07:17:14 +0000 Subject: [PATCH 208/419] cleanup: Remove unneeded functionality --- lua/mapping/autopairs.lua | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/lua/mapping/autopairs.lua b/lua/mapping/autopairs.lua index 8c789c8..3510e66 100644 --- a/lua/mapping/autopairs.lua +++ b/lua/mapping/autopairs.lua @@ -1,21 +1,4 @@ -local remap = vim.api.nvim_set_keymap -local npairs = require('nvim-autopairs') - --- skip it, if you use another global object -_G.MUtils= {} - -vim.g.completion_confirm_key = "" -MUtils.completion_confirm=function() - if vim.fn.pumvisible() ~= 0 then - if vim.fn.complete_info()["selected"] ~= -1 then - return vim.fn["compe#confirm"](npairs.esc("")) - else - return npairs.esc("") - end - else - return npairs.autopairs_cr() - end -end - - -remap('i' , '','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true}) +require("nvim-autopairs.completion.compe").setup({ + map_cr = true, -- map on insert mode + map_complete = true -- it will auto insert `(` after select function or method item +}) From 60d1c8b008eac50c57d79042a5e69db702ccde14 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 07:26:04 +0000 Subject: [PATCH 209/419] feat(lazy_load): Lazy load tree only when needed --- lua/mapping/tree.lua | 78 +++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua index 39d21d8..3a1015a 100644 --- a/lua/mapping/tree.lua +++ b/lua/mapping/tree.lua @@ -1,42 +1,44 @@ require('utils') -map('n','n',':NvimTreeToggle') -map('n','r',':NvimTreeRefresh') ---map('n','tf',':NvimTreeFindFile',option) - --- NvimTreeOpen and NvimTreeClose are also available if you need them - -local tree_cb = require'nvim-tree.config'.nvim_tree_callback +_G.tree_config = function() + local tree_cb = require'nvim-tree.config'.nvim_tree_callback vim.g.nvim_tree_bindings = { - { key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit") }, - { key = {"<2-RightMouse>", ""}, cb = tree_cb("cd") }, - { key = "", cb = tree_cb("vsplit") }, - { key = "", cb = tree_cb("split") }, - { key = "", cb = tree_cb("tabnew") }, - { key = "<", cb = tree_cb("prev_sibling") }, - { key = ">", cb = tree_cb("next_sibling") }, - { key = "P", cb = tree_cb("parent_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("preview") }, - { key = "K", cb = tree_cb("first_sibling") }, - { key = "J", cb = tree_cb("last_sibling") }, - { key = "I", cb = tree_cb("toggle_ignored") }, - { key = "H", cb = tree_cb("toggle_dotfiles") }, - { key = "R", cb = tree_cb("refresh") }, - { key = "a", cb = tree_cb("create") }, - { key = "d", cb = tree_cb("remove") }, - { key = "r", cb = tree_cb("rename") }, - { key = "", cb = tree_cb("full_rename") }, - { key = "x", cb = tree_cb("cut") }, - { key = "c", cb = tree_cb("copy") }, - { key = "p", cb = tree_cb("paste") }, - { key = "y", cb = tree_cb("copy_name") }, - { key = "Y", cb = tree_cb("copy_path") }, - { key = "gy", cb = tree_cb("copy_absolute_path") }, - { key = "[c", cb = tree_cb("prev_git_item") }, - { key = "]c", cb = tree_cb("next_git_item") }, - { key = "-", cb = tree_cb("dir_up") }, - { key = "q", cb = tree_cb("close") }, - { key = "g?", cb = tree_cb("toggle_help") }, + {key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit")}, + {key = {"<2-RightMouse>", ""}, cb = tree_cb("cd")}, + {key = "", cb = tree_cb("vsplit")}, + {key = "", cb = tree_cb("split")}, + {key = "", cb = tree_cb("tabnew")}, + {key = "<", cb = tree_cb("prev_sibling")}, + {key = ">", cb = tree_cb("next_sibling")}, + {key = "P", cb = tree_cb("parent_node")}, + {key = "", cb = tree_cb("close_node")}, + {key = "", cb = tree_cb("close_node")}, + {key = "", cb = tree_cb("preview")}, + {key = "K", cb = tree_cb("first_sibling")}, + {key = "J", cb = tree_cb("last_sibling")}, + {key = "I", cb = tree_cb("toggle_ignored")}, + {key = "H", cb = tree_cb("toggle_dotfiles")}, + {key = "R", cb = tree_cb("refresh")}, + {key = "a", cb = tree_cb("create")}, + {key = "d", cb = tree_cb("remove")}, + {key = "rn", cb = tree_cb("rename")}, + {key = "", cb = tree_cb("full_rename")}, + {key = "x", cb = tree_cb("cut")}, {key = "c", cb = tree_cb("copy")}, + {key = "p", cb = tree_cb("paste")}, + {key = "y", cb = tree_cb("copy_name")}, + {key = "Y", cb = tree_cb("copy_path")}, + {key = "gy", cb = tree_cb("copy_absolute_path")}, + {key = "[c", cb = tree_cb("prev_git_item")}, + {key = "]c", cb = tree_cb("next_git_item")}, + {key = "-", cb = tree_cb("dir_up")}, {key = "q", cb = tree_cb("close")}, + {key = "g?", cb = tree_cb("toggle_help")} } +end + +map('n', 'n', + '[[packadd nvim-tree.lua|call v:lua.tree_config()|NvimTreeToggle]]') + +-- map('n', 'r', ':NvimTreeRefresh') +-- map('n','tf',':NvimTreeFindFile',option) + +-- NvimTreeOpen and NvimTreeClose are also available if you need them From 67b671301b9f9a8886ccf9b60304338a4d3c2721 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 07:29:01 +0000 Subject: [PATCH 210/419] feat(lazy_load): load vista on demand --- lua/mapping/vista.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/mapping/vista.lua b/lua/mapping/vista.lua index 7e55b5f..950017e 100644 --- a/lua/mapping/vista.lua +++ b/lua/mapping/vista.lua @@ -1 +1,2 @@ -vim.api.nvim_set_keymap('n','vt','Vista!! ',{silent=true}) +require('utils') +map('n','vt','packadd vista.vim|Vista!!',{silent=true}) From 9cb824570171bccddc8719d49a5d8792023f014f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 07:30:59 +0000 Subject: [PATCH 211/419] make kommentary,tree,telescope and trouble optional --- lua/plugins.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index a6abf68..c5be52e 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -13,7 +13,7 @@ require 'paq-nvim' { {'savq/paq-nvim'}; -- === Editor Plugins === -- --A commenter for different Language -{'b3nj5m1n/kommentary'}; +{'b3nj5m1n/kommentary',opt=true}; -- === Themes and Colour Scheme === {'navarasu/onedark.nvim'}; @@ -35,9 +35,9 @@ require 'paq-nvim' { -- === Fuzzy Finder === -- a highly extendable fuzzy finder over lists -- for Find, Filter, Preview, Pick -{'nvim-lua/popup.nvim'}; +{'nvim-lua/popup.nvim',opt=true}; {'nvim-lua/plenary.nvim'}; -{'nvim-telescope/telescope.nvim'}; +{'nvim-telescope/telescope.nvim',opt=true}; -- === Syntax Plugins === --Nvim Treesitter configurations and abstraction layer @@ -52,7 +52,7 @@ require 'paq-nvim' { --Vim Wiki -{'vimwiki/vimwiki',opt=true}; +{'vimwiki/vimwiki',branch="dev",opt=true}; -- === Language Specific Plugins === @@ -69,7 +69,7 @@ require 'paq-nvim' { -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing -{'folke/trouble.nvim'}; +{'folke/trouble.nvim',opt=true}; --displays a popup with possible key bindings --of the command you started typing @@ -95,7 +95,7 @@ require 'paq-nvim' { -- === UI === -- -- A Neovim File explorer -{'kyazdani42/nvim-tree.lua'}; +{'kyazdani42/nvim-tree.lua',opt=true}; -- == Icons == -- From c20444ab84487333e5d1e50590b0dea68b38d520 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 08:43:13 +0000 Subject: [PATCH 212/419] restructure : move lazy plugins config into their respective files in lazy --- lua/plugrc/tree.lua | 81 ------------------------------------------ lua/plugrc/trouble.lua | 46 ------------------------ lua/plugrc/vista.lua | 4 --- 3 files changed, 131 deletions(-) delete mode 100644 lua/plugrc/tree.lua delete mode 100644 lua/plugrc/trouble.lua delete mode 100644 lua/plugrc/vista.lua diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua deleted file mode 100644 index 1bf1ffd..0000000 --- a/lua/plugrc/tree.lua +++ /dev/null @@ -1,81 +0,0 @@ -local g=vim.g - ---g.nvim_tree_side = 'right' --left by default ---g.nvim_tree_width = 40 --30 by default -g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} --empty by default -g.nvim_tree_gitignore = 1 --0 by default -g.nvim_tree_auto_open = 0 --0 by default, opens the tree when typing `vim $DIR` or `vim` -g.nvim_tree_auto_close = 1 --0 by default, closes the tree when it's the last window -g.nvim_tree_auto_ignore_ft = { } --empty by default, don't auto open tree on specific filetypes. -g.nvim_tree_quit_on_open = 0 --0 by default, closes the tree when you open a file ---g.nvim_tree_follow = 1 --0 by default, this option allows the cursor to be updated when entering a buffer -g.nvim_tree_indent_markers = 1 --0 by default, this option shows indent markers when folders are open ---g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` -g.nvim_tree_git_hl = 1 --0 by default, will enable file highlight for git attributes (can be used without the icons). -g.nvim_tree_highlight_opened_files = 1 --0 by default, will enable folder and file icon highlight for opened files/directories. ---g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options ---g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open ---g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file ---g.nvim_tree_disable_netrw = 0 --1 by default, disables netrw ---g.nvim_tree_hijack_netrw = 0 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) ---g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names ---g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree ---g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics ---g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. -g.nvim_tree_window_picker_exclude = { - filetype= { - 'packer', - 'qf' - }, - buftype= { - 'terminal' - } - } --- Dictionary of buffer option names mapped to a list of option values that --- indicates to the window picker that the buffer's window should not be --- selectable. ---[[ - [g.nvim_tree_special_files = [ 'README.md'] -- List of filenames that gets highlighted with NvimTreeSpecialFile - [g.nvim_tree_show_icons = { - [ \ 'git': 1, - [ \ 'folders': 1, - [ \ 'files': 1, - [ \ } - ]] ---If 0, do not show the icons for one of 'git' 'folder' and 'files' ---1 by default, notice that if 'files' is 1, it will only display ---if nvim-web-devicons is installed and on your runtimepath - --- default will show icon by default if no icon is provided --- default shows no icon by default ---[[ - [g.nvim_tree_icons = { - [ \ 'default': '', - [ \ 'symlink': '', - [ \ 'git': { - [ \ 'unstaged': --✗--, - [ \ 'staged': --✓--, - [ \ 'unmerged': ----, - [ \ 'renamed': --➜--, - [ \ 'untracked': --★--, - [ \ 'deleted': ----, - [ \ 'ignored': --◌-- - [ \ }, - [ \ 'folder': { - [ \ 'default': ----, - [ \ 'open': ----, - [ \ 'empty': ----, - [ \ 'empty_open': ----, - [ \ 'symlink': ----, - [ \ 'symlink_open': ----, - [ \ }, - [ \ 'lsp': { - [ \ 'hint': ----, - [ \ 'info': ----, - [ \ 'warning': ----, - [ \ 'error': ----, - [ \ } - [ \ } - ]] --- a list of groups can be found at `:help nvim_tree_highlight` ---highlight NvimTreeFolderIcon guibg=blue diff --git a/lua/plugrc/trouble.lua b/lua/plugrc/trouble.lua deleted file mode 100644 index 09d47d7..0000000 --- a/lua/plugrc/trouble.lua +++ /dev/null @@ -1,46 +0,0 @@ -require("trouble").setup -{ - position = "bottom", -- position of the list can be: bottom, top, left, right - height = 10, -- height of the trouble list when position is top or bottom - width = 50, -- width of the list when position is left or right - icons = true, -- use devicons for filenames - mode = "lsp_document_diagnostics", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" - fold_open = "", -- icon used for open folds - fold_closed = "", -- icon used for closed folds - action_keys = { -- key mappings for actions in the trouble list - -- map to {} to remove a mapping, for example: - -- close = {}, - close = "q", -- close the list - cancel = "", -- cancel the preview and get back to your last window / buffer / cursor - refresh = "r", -- manually refresh - jump = {"", ""}, -- jump to the diagnostic or open / close folds - open_split = { "" }, -- open buffer in new split - open_vsplit = { "" }, -- open buffer in new vsplit - open_tab = { "" }, -- open buffer in new tab - jump_close = {"o"}, -- jump to the diagnostic and close the list - toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode - toggle_preview = "P", -- toggle auto_preview - hover = "K", -- opens a small poup with the full multiline message - preview = "p", -- preview the diagnostic location - close_folds = {"zM", "zm"}, -- close all folds - open_folds = {"zR", "zr"}, -- open all folds - toggle_fold = {"zA", "za"}, -- toggle fold of current file - previous = "k", -- preview item - next = "j" -- next item - }, - indent_lines = true, -- add an indent guide below the fold icons - auto_open = false, -- automatically open the list when you have diagnostics - auto_close = true, -- automatically close the list when you have no diagnostics - auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window - auto_fold = false, -- automatically fold a file trouble list at creation - signs = { - -- icons / text used for a diagnostic - error = "", - warning = "", - hint = "", - information = "", - other = "﫠" - }, - use_lsp_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client -} - diff --git a/lua/plugrc/vista.lua b/lua/plugrc/vista.lua deleted file mode 100644 index c77312c..0000000 --- a/lua/plugrc/vista.lua +++ /dev/null @@ -1,4 +0,0 @@ -local g=vim.g - -g.vista_sidebar_width=40 -g.vista_echo_cursor_strategy='floating_win' From 168a1695cf8adf1f6eacc6496e6a5b46f2efc643 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 09:14:34 +0000 Subject: [PATCH 213/419] remove loading of lazy plugins in mappings --- lua/mapping/init.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 6d0c348..29903f9 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -5,7 +5,3 @@ require('mapping/terminal') require('mapping/compe') require('mapping/lspconfig') require('mapping/autopairs') -require('mapping/tree') -require('mapping/telescope') -require('mapping/trouble') -require('mapping/vista') From 1dd08375f16f588c04d5016e5f9fa4bbf1063914 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 09:15:22 +0000 Subject: [PATCH 214/419] restructure : move lazy plugins into lazy dir --- lua/mapping/telescope.lua | 7 ------- lua/mapping/tree.lua | 44 --------------------------------------- lua/mapping/trouble.lua | 8 ------- lua/mapping/vista.lua | 2 -- 4 files changed, 61 deletions(-) delete mode 100644 lua/mapping/telescope.lua delete mode 100644 lua/mapping/tree.lua delete mode 100644 lua/mapping/trouble.lua delete mode 100644 lua/mapping/vista.lua diff --git a/lua/mapping/telescope.lua b/lua/mapping/telescope.lua deleted file mode 100644 index 59ced8c..0000000 --- a/lua/mapping/telescope.lua +++ /dev/null @@ -1,7 +0,0 @@ --- Using lua functions -require('utils') -local opt={silent=true} -map('n','ff',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').find_files()]] ,opt) -map('n','fg',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').live_grep()]] ,opt) -map('n','fb',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').buffers()]] ,opt) -map('n','fh',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]],opt) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua deleted file mode 100644 index 3a1015a..0000000 --- a/lua/mapping/tree.lua +++ /dev/null @@ -1,44 +0,0 @@ -require('utils') - -_G.tree_config = function() - local tree_cb = require'nvim-tree.config'.nvim_tree_callback - vim.g.nvim_tree_bindings = { - {key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit")}, - {key = {"<2-RightMouse>", ""}, cb = tree_cb("cd")}, - {key = "", cb = tree_cb("vsplit")}, - {key = "", cb = tree_cb("split")}, - {key = "", cb = tree_cb("tabnew")}, - {key = "<", cb = tree_cb("prev_sibling")}, - {key = ">", cb = tree_cb("next_sibling")}, - {key = "P", cb = tree_cb("parent_node")}, - {key = "", cb = tree_cb("close_node")}, - {key = "", cb = tree_cb("close_node")}, - {key = "", cb = tree_cb("preview")}, - {key = "K", cb = tree_cb("first_sibling")}, - {key = "J", cb = tree_cb("last_sibling")}, - {key = "I", cb = tree_cb("toggle_ignored")}, - {key = "H", cb = tree_cb("toggle_dotfiles")}, - {key = "R", cb = tree_cb("refresh")}, - {key = "a", cb = tree_cb("create")}, - {key = "d", cb = tree_cb("remove")}, - {key = "rn", cb = tree_cb("rename")}, - {key = "", cb = tree_cb("full_rename")}, - {key = "x", cb = tree_cb("cut")}, {key = "c", cb = tree_cb("copy")}, - {key = "p", cb = tree_cb("paste")}, - {key = "y", cb = tree_cb("copy_name")}, - {key = "Y", cb = tree_cb("copy_path")}, - {key = "gy", cb = tree_cb("copy_absolute_path")}, - {key = "[c", cb = tree_cb("prev_git_item")}, - {key = "]c", cb = tree_cb("next_git_item")}, - {key = "-", cb = tree_cb("dir_up")}, {key = "q", cb = tree_cb("close")}, - {key = "g?", cb = tree_cb("toggle_help")} - } -end - -map('n', 'n', - '[[packadd nvim-tree.lua|call v:lua.tree_config()|NvimTreeToggle]]') - --- map('n', 'r', ':NvimTreeRefresh') --- map('n','tf',':NvimTreeFindFile',option) - --- NvimTreeOpen and NvimTreeClose are also available if you need them diff --git a/lua/mapping/trouble.lua b/lua/mapping/trouble.lua deleted file mode 100644 index 0aa7742..0000000 --- a/lua/mapping/trouble.lua +++ /dev/null @@ -1,8 +0,0 @@ -require('utils') -local opt = {silent = true} -map("n", "tt", "packadd trouble.nvim|TroubleToggle",opt) -map("n", "tw", "packadd trouble.nvim|TroubleToggle lsp_workspace_diagnostics",opt) -map("n", "td", "packadd trouble.nvim|TroubleToggle lsp_document_diagnostics",opt) -map("n", "tl", "packadd trouble.nvim|TroubleToggle loclist",opt) -map("n", "tq", "packadd trouble.nvim|TroubleToggle quickfix",opt) -map("n", "tr", "packadd trouble.nvim|TroubleToggle lsp_references",opt) diff --git a/lua/mapping/vista.lua b/lua/mapping/vista.lua deleted file mode 100644 index 950017e..0000000 --- a/lua/mapping/vista.lua +++ /dev/null @@ -1,2 +0,0 @@ -require('utils') -map('n','vt','packadd vista.vim|Vista!!',{silent=true}) From 0790f9ca8311b103c30f1144d73078b4aa6968bf Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 09:16:07 +0000 Subject: [PATCH 215/419] init(lazy) : initialize lazy plugins in lua.init --- init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.lua b/init.lua index 292cf3f..821a5e1 100755 --- a/init.lua +++ b/init.lua @@ -16,6 +16,11 @@ require('ui') require('plugins') require('plugrc') +-- =================================================================== +-- === LAZY PLUGINS CONFIGURATIONS === +-- =================================================================== +require('lazy') + -- =================================================================== -- === MAPPINGS ONFIGURATIONS === -- =================================================================== From 5f2fa1c373cb9495fd113279de2548a519689959 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 09:17:07 +0000 Subject: [PATCH 216/419] remove loading of lazy plugins config in plugrc --- lua/plugrc/init.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index c2c0841..325a941 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -2,12 +2,8 @@ --== PLUGINS INIT == --========================================================== -- -require('plugrc/vista') -require('plugrc/tree') require('plugrc/lspconfig') require('plugrc/gitsigns') require('plugrc/compe') -require('nvim-autopairs').setup() -require('telescope').setup() -require('plugrc/trouble') +require('plugrc/autopairs') require('plugrc/whichkey') From 28e15755cff5b419a838d6885f040fa2909946a5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 09:18:13 +0000 Subject: [PATCH 217/419] feat(autopair) : Add fast wrap feature for autopairs plugin --- lua/plugrc/autopairs.lua | 1 + 1 file changed, 1 insertion(+) create mode 100644 lua/plugrc/autopairs.lua diff --git a/lua/plugrc/autopairs.lua b/lua/plugrc/autopairs.lua new file mode 100644 index 0000000..42901e7 --- /dev/null +++ b/lua/plugrc/autopairs.lua @@ -0,0 +1 @@ +require('nvim-autopairs').setup({fast_wrap = {}}) From db395345461cb6559d16cf7eda07467dbbb9e827 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 09:19:46 +0000 Subject: [PATCH 218/419] refactor(functionality): organize and structure loading of lazy plugins --- lua/lazy/glow.lua | 5 ++ lua/lazy/init.lua | 7 +++ lua/lazy/kommentary.lua | 6 ++ lua/lazy/telescope.lua | 7 +++ lua/lazy/tree.lua | 125 ++++++++++++++++++++++++++++++++++++++++ lua/lazy/trouble.lua | 63 ++++++++++++++++++++ lua/lazy/vimwiki.lua | 4 ++ lua/lazy/vista.lua | 7 +++ 8 files changed, 224 insertions(+) create mode 100644 lua/lazy/glow.lua create mode 100644 lua/lazy/init.lua create mode 100644 lua/lazy/kommentary.lua create mode 100644 lua/lazy/telescope.lua create mode 100644 lua/lazy/tree.lua create mode 100644 lua/lazy/trouble.lua create mode 100644 lua/lazy/vimwiki.lua create mode 100644 lua/lazy/vista.lua diff --git a/lua/lazy/glow.lua b/lua/lazy/glow.lua new file mode 100644 index 0000000..05f5d2e --- /dev/null +++ b/lua/lazy/glow.lua @@ -0,0 +1,5 @@ +vim.cmd[[ +autocmd! FileType markdown packadd glow.nvim +"command! Glow :packadd glow.nvim +"command! -nargs=* Ack :packadd ack.vim | Ack " +]] diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua new file mode 100644 index 0000000..8cf15b0 --- /dev/null +++ b/lua/lazy/init.lua @@ -0,0 +1,7 @@ +require('lazy/tree') +require('lazy/telescope') +require('lazy/trouble') +require('lazy/vista') +require('lazy/kommentary') +require('lazy/vimwiki') +require('lazy/glow') diff --git a/lua/lazy/kommentary.lua b/lua/lazy/kommentary.lua new file mode 100644 index 0000000..ee20425 --- /dev/null +++ b/lua/lazy/kommentary.lua @@ -0,0 +1,6 @@ +require('utils') +vim.g.kommentary_create_default_mappings = false +local opt = {noremap=false} +map("n", "gcc", "packadd kommentary|kommentary_line_default", opt) +map("n", "gc", "packadd kommentary|kommentary_motion_default", opt) +map("x", "gc", "packadd kommentary|kommentary_visual_default", opt) diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua new file mode 100644 index 0000000..59ced8c --- /dev/null +++ b/lua/lazy/telescope.lua @@ -0,0 +1,7 @@ +-- Using lua functions +require('utils') +local opt={silent=true} +map('n','ff',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').find_files()]] ,opt) +map('n','fg',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').live_grep()]] ,opt) +map('n','fb',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').buffers()]] ,opt) +map('n','fh',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]],opt) diff --git a/lua/lazy/tree.lua b/lua/lazy/tree.lua new file mode 100644 index 0000000..ff444cc --- /dev/null +++ b/lua/lazy/tree.lua @@ -0,0 +1,125 @@ +require('utils') + +local g=vim.g + +--g.nvim_tree_side = 'right' --left by default +--g.nvim_tree_width = 40 --30 by default +g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} --empty by default +g.nvim_tree_gitignore = 1 --0 by default +g.nvim_tree_auto_open = 0 --0 by default, opens the tree when typing `vim $DIR` or `vim` +g.nvim_tree_auto_close = 1 --0 by default, closes the tree when it's the last window +g.nvim_tree_auto_ignore_ft = { } --empty by default, don't auto open tree on specific filetypes. +g.nvim_tree_quit_on_open = 0 --0 by default, closes the tree when you open a file +--g.nvim_tree_follow = 1 --0 by default, this option allows the cursor to be updated when entering a buffer +g.nvim_tree_indent_markers = 1 --0 by default, this option shows indent markers when folders are open +--g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` +g.nvim_tree_git_hl = 1 --0 by default, will enable file highlight for git attributes (can be used without the icons). +g.nvim_tree_highlight_opened_files = 1 --0 by default, will enable folder and file icon highlight for opened files/directories. +--g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options +--g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open +--g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file +--g.nvim_tree_disable_netrw = 0 --1 by default, disables netrw +--g.nvim_tree_hijack_netrw = 0 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) +--g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names +--g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree +--g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics +--g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. +g.nvim_tree_window_picker_exclude = { + filetype= { + 'packer', + 'qf' + }, + buftype= { + 'terminal' + } + } +-- Dictionary of buffer option names mapped to a list of option values that +-- indicates to the window picker that the buffer's window should not be +-- selectable. +--[[ + [g.nvim_tree_special_files = [ 'README.md'] -- List of filenames that gets highlighted with NvimTreeSpecialFile + [g.nvim_tree_show_icons = { + [ \ 'git': 1, + [ \ 'folders': 1, + [ \ 'files': 1, + [ \ } + ]] +--If 0, do not show the icons for one of 'git' 'folder' and 'files' +--1 by default, notice that if 'files' is 1, it will only display +--if nvim-web-devicons is installed and on your runtimepath + +-- default will show icon by default if no icon is provided +-- default shows no icon by default +--[[ + [g.nvim_tree_icons = { + [ \ 'default': '', + [ \ 'symlink': '', + [ \ 'git': { + [ \ 'unstaged': --✗--, + [ \ 'staged': --✓--, + [ \ 'unmerged': ----, + [ \ 'renamed': --➜--, + [ \ 'untracked': --★--, + [ \ 'deleted': ----, + [ \ 'ignored': --◌-- + [ \ }, + [ \ 'folder': { + [ \ 'default': ----, + [ \ 'open': ----, + [ \ 'empty': ----, + [ \ 'empty_open': ----, + [ \ 'symlink': ----, + [ \ 'symlink_open': ----, + [ \ }, + [ \ 'lsp': { + [ \ 'hint': ----, + [ \ 'info': ----, + [ \ 'warning': ----, + [ \ 'error': ----, + [ \ } + [ \ } + ]] +-- a list of groups can be found at `:help nvim_tree_highlight` +--highlight NvimTreeFolderIcon guibg=blue +_G.tree_config = function() + local tree_cb = require'nvim-tree.config'.nvim_tree_callback + vim.g.nvim_tree_bindings = { + {key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit")}, + {key = {"<2-RightMouse>", ""}, cb = tree_cb("cd")}, + {key = "", cb = tree_cb("vsplit")}, + {key = "", cb = tree_cb("split")}, + {key = "", cb = tree_cb("tabnew")}, + {key = "<", cb = tree_cb("prev_sibling")}, + {key = ">", cb = tree_cb("next_sibling")}, + {key = "P", cb = tree_cb("parent_node")}, + {key = "", cb = tree_cb("close_node")}, + {key = "", cb = tree_cb("close_node")}, + {key = "", cb = tree_cb("preview")}, + {key = "K", cb = tree_cb("first_sibling")}, + {key = "J", cb = tree_cb("last_sibling")}, + {key = "I", cb = tree_cb("toggle_ignored")}, + {key = "H", cb = tree_cb("toggle_dotfiles")}, + {key = "R", cb = tree_cb("refresh")}, + {key = "a", cb = tree_cb("create")}, + {key = "d", cb = tree_cb("remove")}, + {key = "rn", cb = tree_cb("rename")}, + {key = "", cb = tree_cb("full_rename")}, + {key = "x", cb = tree_cb("cut")}, {key = "c", cb = tree_cb("copy")}, + {key = "p", cb = tree_cb("paste")}, + {key = "y", cb = tree_cb("copy_name")}, + {key = "Y", cb = tree_cb("copy_path")}, + {key = "gy", cb = tree_cb("copy_absolute_path")}, + {key = "[c", cb = tree_cb("prev_git_item")}, + {key = "]c", cb = tree_cb("next_git_item")}, + {key = "-", cb = tree_cb("dir_up")}, {key = "q", cb = tree_cb("close")}, + {key = "g?", cb = tree_cb("toggle_help")} + } +end + +map('n', 'n', + '[[packadd nvim-tree.lua|call v:lua.tree_config()|NvimTreeToggle]]') + +-- map('n', 'r', ':NvimTreeRefresh') +-- map('n','tf',':NvimTreeFindFile',option) + +-- NvimTreeOpen and NvimTreeClose are also available if you need them diff --git a/lua/lazy/trouble.lua b/lua/lazy/trouble.lua new file mode 100644 index 0000000..fc181e5 --- /dev/null +++ b/lua/lazy/trouble.lua @@ -0,0 +1,63 @@ +require('utils') +local opt = {silent = true} + +trouble_config = { + position = "bottom", -- position of the list can be: bottom, top, left, right + height = 10, -- height of the trouble list when position is top or bottom + width = 50, -- width of the list when position is left or right + icons = true, -- use devicons for filenames + mode = "lsp_document_diagnostics", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" + fold_open = "", -- icon used for open folds + fold_closed = "", -- icon used for closed folds + action_keys = { -- key mappings for actions in the trouble list + -- map to {} to remove a mapping, for example: + -- close = {}, + close = "q", -- close the list + cancel = "", -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = {"", ""}, -- jump to the diagnostic or open / close folds + open_split = {""}, -- open buffer in new split + open_vsplit = {""}, -- open buffer in new vsplit + open_tab = {""}, -- open buffer in new tab + jump_close = {"o"}, -- jump to the diagnostic and close the list + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "K", -- opens a small poup with the full multiline message + preview = "p", -- preview the diagnostic location + close_folds = {"zM", "zm"}, -- close all folds + open_folds = {"zR", "zr"}, -- open all folds + toggle_fold = {"zA", "za"}, -- toggle fold of current file + previous = "k", -- preview item + next = "j" -- next item + }, + indent_lines = true, -- add an indent guide below the fold icons + auto_open = false, -- automatically open the list when you have diagnostics + auto_close = true, -- automatically close the list when you have no diagnostics + auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window + auto_fold = false, -- automatically fold a file trouble list at creation + signs = { + -- icons / text used for a diagnostic + error = "", + warning = "", + hint = "", + information = "", + other = "﫠" + }, + use_lsp_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client +} + +map("n", "tt", + "[[packadd trouble.nvim|lua require('trouble').setup(trouble_config)|TroubleToggle]]", + opt) +map("n", "tw", + "packadd trouble.nvim|TroubleToggle lsp_workspace_diagnostics", + opt) +map("n", "td", + "packadd trouble.nvim|TroubleToggle lsp_document_diagnostics", + opt) +map("n", "tl", + "packadd trouble.nvim|TroubleToggle loclist", opt) +map("n", "tq", + "packadd trouble.nvim|TroubleToggle quickfix", opt) +map("n", "tr", + "packadd trouble.nvim|TroubleToggle lsp_references", opt) diff --git a/lua/lazy/vimwiki.lua b/lua/lazy/vimwiki.lua new file mode 100644 index 0000000..acf9262 --- /dev/null +++ b/lua/lazy/vimwiki.lua @@ -0,0 +1,4 @@ +require('utils') +local opt = {noremap = false} + +map('n','ww','[[packadd vimwiki|VimwikiIndex]]',opt) diff --git a/lua/lazy/vista.lua b/lua/lazy/vista.lua new file mode 100644 index 0000000..4012be6 --- /dev/null +++ b/lua/lazy/vista.lua @@ -0,0 +1,7 @@ +require('utils') + +local g=vim.g + +g.vista_sidebar_width=40 +g.vista_echo_cursor_strategy='floating_win' +map('n','vt','packadd vista.vim|Vista!!',{silent=true}) From a6dffd9d7710027d35ad4212621e0b288819c292 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 18:48:29 +0000 Subject: [PATCH 219/419] change icons for gitsigns and enable numhl --- lua/plugrc/gitsigns.lua | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 7f6c92e..8d3c7f4 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -10,24 +10,48 @@ local GitStatus = { Ignored = '☒', Unknown = "?" } +local nvim_tree_icons = { + default = '', + symlink = '', + git = { + unstaged = "✗", + staged = "✓", + unmerged = "", + renamed = "➜", + untracked = "★", + deleted = "", + ignored = "◌" + }, + folder = { + arrow_open = "", + arrow_closed = "", + default = "", + open = "", + empty = "", + empty_open = "", + symlink = "", + symlink_open = "" + }, + lsp = {hint = "", info = "", warning = "", error = ""} +} require('gitsigns').setup { signs = { add = { hl = 'GitSignsAdd', - text = "✚", + text = GitStatus.Clean, numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, change = { hl = 'GitSignsChange', - text = "✹", + text = GitStatus.Modified, numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, delete = { hl = 'GitSignsDelete', - text = "✖", + text = GitStatus.Dirty, numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, @@ -44,7 +68,7 @@ require('gitsigns').setup { linehl = 'GitSignsChangeLn' } }, - numhl = false, + numhl = true, linehl = false, keymaps = { -- Default keymap options From 92da2d3146bc8605dd52904e7e9e8ddbc0b922e3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 18:50:38 +0000 Subject: [PATCH 220/419] feat : enable tree follow and disable indent marker --- lua/lazy/tree.lua | 65 ++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/lua/lazy/tree.lua b/lua/lazy/tree.lua index ff444cc..026f801 100644 --- a/lua/lazy/tree.lua +++ b/lua/lazy/tree.lua @@ -1,38 +1,33 @@ require('utils') -local g=vim.g +local g = vim.g ---g.nvim_tree_side = 'right' --left by default ---g.nvim_tree_width = 40 --30 by default -g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} --empty by default -g.nvim_tree_gitignore = 1 --0 by default -g.nvim_tree_auto_open = 0 --0 by default, opens the tree when typing `vim $DIR` or `vim` -g.nvim_tree_auto_close = 1 --0 by default, closes the tree when it's the last window -g.nvim_tree_auto_ignore_ft = { } --empty by default, don't auto open tree on specific filetypes. -g.nvim_tree_quit_on_open = 0 --0 by default, closes the tree when you open a file ---g.nvim_tree_follow = 1 --0 by default, this option allows the cursor to be updated when entering a buffer -g.nvim_tree_indent_markers = 1 --0 by default, this option shows indent markers when folders are open ---g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` -g.nvim_tree_git_hl = 1 --0 by default, will enable file highlight for git attributes (can be used without the icons). -g.nvim_tree_highlight_opened_files = 1 --0 by default, will enable folder and file icon highlight for opened files/directories. ---g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options ---g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open ---g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file ---g.nvim_tree_disable_netrw = 0 --1 by default, disables netrw ---g.nvim_tree_hijack_netrw = 0 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) ---g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names ---g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree ---g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics ---g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. +-- g.nvim_tree_side = 'right' --left by default +-- g.nvim_tree_width = 40 --30 by default +g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} -- empty by default +g.nvim_tree_gitignore = 1 -- 0 by default +g.nvim_tree_auto_open = 0 -- 0 by default, opens the tree when typing `vim $DIR` or `vim` +g.nvim_tree_auto_close = 1 -- 0 by default, closes the tree when it's the last window +g.nvim_tree_auto_ignore_ft = {} -- empty by default, don't auto open tree on specific filetypes. +g.nvim_tree_quit_on_open = 0 -- 0 by default, closes the tree when you open a file +g.nvim_tree_follow = 1 -- 0 by default, this option allows the cursor to be updated when entering a buffer +g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers when folders are open +-- g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` +g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons). +g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. +-- g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options +-- g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open +-- g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file +-- g.nvim_tree_disable_netrw = 0 --1 by default, disables netrw +-- g.nvim_tree_hijack_netrw = 0 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) +-- g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names +-- g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree +-- g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics +-- g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. g.nvim_tree_window_picker_exclude = { - filetype= { - 'packer', - 'qf' - }, - buftype= { - 'terminal' - } - } + filetype = {'packer', 'qf'}, + buftype = {'terminal'} +} -- Dictionary of buffer option names mapped to a list of option values that -- indicates to the window picker that the buffer's window should not be -- selectable. @@ -44,9 +39,9 @@ g.nvim_tree_window_picker_exclude = { [ \ 'files': 1, [ \ } ]] ---If 0, do not show the icons for one of 'git' 'folder' and 'files' ---1 by default, notice that if 'files' is 1, it will only display ---if nvim-web-devicons is installed and on your runtimepath +-- If 0, do not show the icons for one of 'git' 'folder' and 'files' +-- 1 by default, notice that if 'files' is 1, it will only display +-- if nvim-web-devicons is installed and on your runtimepath -- default will show icon by default if no icon is provided -- default shows no icon by default @@ -80,7 +75,7 @@ g.nvim_tree_window_picker_exclude = { [ \ } ]] -- a list of groups can be found at `:help nvim_tree_highlight` ---highlight NvimTreeFolderIcon guibg=blue +-- highlight NvimTreeFolderIcon guibg=blue _G.tree_config = function() local tree_cb = require'nvim-tree.config'.nvim_tree_callback vim.g.nvim_tree_bindings = { From 87df5043e1c5b3130e457fceb7aa8fa07feec248 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 21 Jul 2021 19:16:33 +0000 Subject: [PATCH 221/419] disable less used completion sources --- lua/plugrc/compe.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index d9cb0d9..fffe426 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -15,14 +15,13 @@ require'compe'.setup { source = { path = true; buffer = true; - calc = true; + calc = false; luasnip = true; - nvim_lsp = true; - nvim_lua = true; - vsnip = false; ultisnips = false; spell = false; - tags = true; + nvim_lua = true; + tags = false; + g=7; treesitter = false; }; } From 96e88ae699f9924a7c5c01d9392246d64ecbedf8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 22 Jul 2021 01:04:51 +0000 Subject: [PATCH 222/419] ui: Use different glyphs for show git hunks --- lua/plugrc/gitsigns.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 8d3c7f4..257363f 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -10,6 +10,7 @@ local GitStatus = { Ignored = '☒', Unknown = "?" } + local nvim_tree_icons = { default = '', symlink = '', @@ -35,23 +36,23 @@ local nvim_tree_icons = { lsp = {hint = "", info = "", warning = "", error = ""} } -require('gitsigns').setup { +require('gitsigns').setup({ signs = { add = { hl = 'GitSignsAdd', - text = GitStatus.Clean, + text = "✔︎", numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, change = { hl = 'GitSignsChange', - text = GitStatus.Modified, + text = "✹", numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, delete = { hl = 'GitSignsDelete', - text = GitStatus.Dirty, + text = "✗", numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, @@ -107,4 +108,4 @@ require('gitsigns').setup { word_diff = false, use_decoration_api = true, use_internal_diff = true -- If luajit is present -} +}) From e43d608cfbdc632e8a3ea6d9169329222e6bc11d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 22 Jul 2021 01:19:39 +0000 Subject: [PATCH 223/419] Glow is lazy loaded by default for md so making it a start package --- lua/plugins.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index c5be52e..2bbccee 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -48,7 +48,7 @@ require 'paq-nvim' { -- === Preview Plugin === --A markdown previewer prebuild binary -{'npxbr/glow.nvim',branch="main",run = ":GlowInstall",opt=true}; +{'npxbr/glow.nvim',branch="main",run = ":GlowInstall"}; --Vim Wiki From 0be4df18f38bb198e1ba9587a26da2a6decad588 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 22 Jul 2021 01:22:49 +0000 Subject: [PATCH 224/419] mapping : Add mapping for invocing glow in md --- lua/lazy/glow.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/lazy/glow.lua b/lua/lazy/glow.lua index 05f5d2e..69dceb7 100644 --- a/lua/lazy/glow.lua +++ b/lua/lazy/glow.lua @@ -1,5 +1,7 @@ +require('utils') +map('n','mp','Glow') vim.cmd[[ -autocmd! FileType markdown packadd glow.nvim -"command! Glow :packadd glow.nvim +"autocmd! FileType markdown packadd glow.nvim +"command! Glow :packadd glow.nvim |:Glow "command! -nargs=* Ack :packadd ack.vim | Ack " ]] From 8b4eaad03f58a3475eeff2f8807c80b4b7db4a3a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 22 Jul 2021 19:55:09 +0000 Subject: [PATCH 225/419] option : enable lazyredraw editor option --- lua/editor.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/editor.lua b/lua/editor.lua index 836da01..62857d1 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -53,6 +53,9 @@ else end end +--Don't redraw screen when executing macros,registers or untyped commands +o.lazyredraw = true + --Incremental live completion o.inccommand = "nosplit" From 8c5bc2dded4efb2e0dc501911ed7cc75dadadb54 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 22 Jul 2021 19:57:01 +0000 Subject: [PATCH 226/419] restructure: convert ftdetect to lua --- ftdetect/ftdetect.vim => lua/ftdetect/ftdetect.lua | 2 ++ lua/ftdetect/init.lua | 1 + 2 files changed, 3 insertions(+) rename ftdetect/ftdetect.vim => lua/ftdetect/ftdetect.lua (97%) create mode 100644 lua/ftdetect/init.lua diff --git a/ftdetect/ftdetect.vim b/lua/ftdetect/ftdetect.lua similarity index 97% rename from ftdetect/ftdetect.vim rename to lua/ftdetect/ftdetect.lua index dc4a8f9..21ebf6b 100644 --- a/ftdetect/ftdetect.vim +++ b/lua/ftdetect/ftdetect.lua @@ -1,3 +1,4 @@ +vim.cmd [[ augroup detectfiletypes autocmd! BufRead,BufNewFile *.mxx,*.mpp,*.txx,*.tpp setfiletype cpp augroup END @@ -17,3 +18,4 @@ augroup END augroup zigfile autocmd! BufRead,BufNewFile *.zig set filetype=zig augroup END +]] diff --git a/lua/ftdetect/init.lua b/lua/ftdetect/init.lua new file mode 100644 index 0000000..efab15a --- /dev/null +++ b/lua/ftdetect/init.lua @@ -0,0 +1 @@ +require('ftdetect/ftdetect') From cbc7f0cdedf71705464ef1de1f83e1bdada0cfe3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 22 Jul 2021 19:58:03 +0000 Subject: [PATCH 227/419] feat : Add a ftplugin for vimwiki and require in init --- init.lua | 10 +++++----- lua/ftplugin/init.lua | 1 + lua/ftplugin/vimwiki.lua | 5 +++++ 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 lua/ftplugin/init.lua create mode 100644 lua/ftplugin/vimwiki.lua diff --git a/init.lua b/init.lua index 821a5e1..d120daa 100755 --- a/init.lua +++ b/init.lua @@ -1,4 +1,9 @@ -- The system wide config file is found in /usr/share/nvim/sysinit.vim +-- =================================================================== +-- === FILETYPE CONFIGURATIONS === +-- =================================================================== +require('ftdetect') +require('ftplugin') -- =================================================================== -- === EDITOR CONFIGURATIONS === @@ -26,11 +31,6 @@ require('lazy') -- =================================================================== require('mapping') --- =================================================================== --- === FILETYPE CONFIGURATIONS === --- =================================================================== -vim.cmd[[source $XDG_CONFIG_HOME/nvim/ftdetect/ftdetect.vim]] - -- =================================================================== -- === TERMINAL CONFIGURATIONS === -- =================================================================== diff --git a/lua/ftplugin/init.lua b/lua/ftplugin/init.lua new file mode 100644 index 0000000..b43ad1d --- /dev/null +++ b/lua/ftplugin/init.lua @@ -0,0 +1 @@ +require('ftplugin/vimwiki') diff --git a/lua/ftplugin/vimwiki.lua b/lua/ftplugin/vimwiki.lua new file mode 100644 index 0000000..fea2f30 --- /dev/null +++ b/lua/ftplugin/vimwiki.lua @@ -0,0 +1,5 @@ +-- Check docs :h vimwiki-list +vim.cmd[[ +autocmd FileType vimwiki inoremap :VimwikiReturn 3 3 +autocmd FileType vimwiki inoremap :VimwikiReturn 2 2 +]] From 1c54580a6f108defc609f2fa090cf0ed7adbced3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Jul 2021 00:05:40 +0000 Subject: [PATCH 228/419] remove friendly snippets --- lua/plugins.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 2bbccee..1fdc52f 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -84,10 +84,6 @@ require 'paq-nvim' { -- === Code Snippets Plugins === {"L3MON4D3/LuaSnip"}; ---Snippets collection for a set of different ---programming languages for faster development. -{"rafamadriz/friendly-snippets"}; - -- === Tag Bar Plugin === --View and search LSP symbols, tags in Vim/NeoVim.-- From d96ac33c50cad0d33a6857a3075ebce70dd7c07b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Jul 2021 00:06:47 +0000 Subject: [PATCH 229/419] Add emoji completion source for compe --- lua/plugrc/compe.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index fffe426..a712622 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -21,8 +21,10 @@ require'compe'.setup { spell = false; nvim_lua = true; tags = false; - g=7; treesitter = false; + nvim_lsp = true; + vsnip = false; + emoji = true; }; } vim.cmd[[highlight link CompeDocumentation NormalFloat]] From 97145e88201679d9c7f050bbacf0bd45aeaa03c9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Jul 2021 23:26:50 +0000 Subject: [PATCH 230/419] Limit filetypes for tailwindcss Add sources of diagnostics to hover diagnostics --- lua/plugrc/lspconfig/init.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index d4d5443..eb41b6d 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -4,7 +4,7 @@ local on_attach = function(client, buffer) local builtin_lsp = require('plugrc/lspconfig/config') builtin_lsp.completion_kinds() builtin_lsp.sign_column_diagnostic_symbols() - builtin_lsp.disable_virtual_text() + builtin_lsp.display_diagnostics_sources() require'lsp_signature'.on_attach(signature_cfg) require('lspsaga').init_lsp_saga(saga_cfg) @@ -105,6 +105,10 @@ local function setup_servers() config.filetypes = efm_settings.filetypes end + if server == "tailwindcss" then + config.filetypes = {"html", "css", "vue", "scss"} + end + require'lspconfig'[server].setup(config); end From dd1398fb085e250742c4e08bbcf2eabe19b175d8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Jul 2021 23:29:40 +0000 Subject: [PATCH 231/419] Add code for showing source of diagnostics NOTE:because this code also disables virtual text the inialt code isn't called anymore --- lua/plugrc/lspconfig/config.lua | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/config.lua index 6bf718a..0a94a3c 100644 --- a/lua/plugrc/lspconfig/config.lua +++ b/lua/plugrc/lspconfig/config.lua @@ -31,7 +31,7 @@ function M.completion_kinds() end function M.sign_column_diagnostic_symbols() ---    --  --   ﯧ  --   ﯦ + --    --  --   ﯧ  --   ﯦ local signs = { Error = " ", Warning = " ", @@ -48,10 +48,38 @@ function M.disable_virtual_text() vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false, + update_in_insert = false, signs = true, - update_in_insert = true, underline = true }) end +function M.display_diagnostics_sources() + vim.lsp.handlers["textDocument/publishDiagnostics"] = + function(_, _, params, client_id, _) + local config = { -- your config + virtual_text = false, + update_in_insert = false, + signs = true, + underline = true + } + local uri = params.uri + local bufnr = vim.uri_to_bufnr(uri) + + if not bufnr then return end + + local diagnostics = params.diagnostics + + for i, v in ipairs(diagnostics) do + diagnostics[i].message = + string.format("%s: %s", v.source, v.message) + end + + vim.lsp.diagnostic.save(diagnostics, bufnr, client_id) + + if not vim.api.nvim_buf_is_loaded(bufnr) then return end + + vim.lsp.diagnostic.display(diagnostics, bufnr, client_id, config) + end +end return M From c748690bb5cb224403f723d001eb5abf213634fa Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 23 Jul 2021 23:32:07 +0000 Subject: [PATCH 232/419] Add eslint for ts and js and prettier for css,json,scss,markdown,yaml --- lua/plugrc/lspconfig/settings.lua | 48 +++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index a546c94..ada8dff 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -36,27 +36,65 @@ linters.cppcheck = { } } +linters.eslint = { + lintCommand = 'eslint_d -f visualstudio --stdin --stdin-filename ${INPUT}', + lintStdin = true, + lintFormats = {"%f(%l,%c): %rror %m"}, + lintIgnoreExitCode = true +} + local formatters = {} formatters.lua_format = {formatCommand = "lua-format -i", formatStdin = true} +formatters.prettier = { + css = { + formatCommand = "prettier ${--tab-width:tabWidth} ${--single-quote:singleQuote} --parser css", + formatStdin = true + }, + json = { + formatCommand = "prettier ${--tab-width:tabWidth} --parser json", + formatStdin = true + }, + scss = { + formatCommand = "prettier --parser scss --stdin-filepath ${INPUT}", + formatStdin = true + }, + markdown = { + formatCommand = "prettier --parser markdown --stdin-filepath ${INPUT}", + formatStdin = true + }, + yaml = { + formatCommand = "prettier --parser yaml --stdin-filepath ${INPUT}", + formatStdin = true + } +} + settings.efm_settings = { - log_level = 0, - log_file = '/tmp/efm.log', init_options = { documentFormatting = true, codeAction = true, hover = true, - documentSymbol = true, + documentSymbol = false, completion = false }, - filetypes = {"lua", "cpp", "c"}, + filetypes = { + "lua", "cpp", "c", "json", "css", "yaml", "markdown", "scss", + "javascript", "typescript" + }, settings = { rootMarkers = {".git/"}, languages = { lua = {formatters.lua_format}, cpp = {linters.cppcheck.cpp}, - c = {linters.cppcheck.c} + c = {linters.cppcheck.c}, + css = {formatters.prettier.css}, + scss = {formatters.prettier.scss}, + json = {formatters.prettier.json, linters.eslint}, + yaml = {formatters.prettier.yaml}, + markdown = {formatters.prettier.markdown}, + javascript = {linters.eslint}, + typescript = {linters.eslint} } } } From 9fc96f38bbe044748d3d9a237eec3e631bda1f87 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Jul 2021 03:21:56 +0000 Subject: [PATCH 233/419] Disable efm formatting capabilities when filetype is cpp Also enable signatureHelp.contextSupport for experimentation to see if it's relevant --- lua/plugrc/lspconfig/init.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index eb41b6d..d5d2be4 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -17,8 +17,12 @@ local on_attach = function(client, buffer) local opts = {noremap = true, silent = true} + if client.name == "efm" and vim.fn.getbufvar(buffer, '&filetype') == 'cpp' then + client.resolved_capabilities.document_formatting = false + end -- Set some keybinds conditional on server capabilities if client.resolved_capabilities.document_formatting then + print(vim.inspect(client)) set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) end @@ -51,15 +55,11 @@ local on_attach = function(client, buffer) end -local settings = require('plugrc.lspconfig.settings') -local lua_settings = settings.lua_settings -local efm_settings = settings.efm_settings -local clangd_setting = settings.clangd_setting - -- 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 + capabilities.textDocument.signatureHelp.contextSupport = true return { -- enable snippet support capabilities = capabilities, @@ -88,6 +88,11 @@ local function setup_servers() servers = local_lsp_servers end + local settings = require('plugrc.lspconfig.settings') + local lua_settings = settings.lua_settings + local efm_settings = settings.efm_settings + local clangd_setting = settings.clangd_setting + for _, server in pairs(servers) do local config = make_config() From 052dbdcc2345444dbd90c565170f35c02314e276 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Jul 2021 03:23:27 +0000 Subject: [PATCH 234/419] Enable all efm init options for experimentation --- lua/plugrc/lspconfig/settings.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index ada8dff..92f9b94 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -49,11 +49,11 @@ formatters.lua_format = {formatCommand = "lua-format -i", formatStdin = true} formatters.prettier = { css = { - formatCommand = "prettier ${--tab-width:tabWidth} ${--single-quote:singleQuote} --parser css", + formatCommand = "prettier --parser css --stdin-filepath ${INPUT}", formatStdin = true }, json = { - formatCommand = "prettier ${--tab-width:tabWidth} --parser json", + formatCommand = "prettier --parser json --stdin-filepath ${INPUT}", formatStdin = true }, scss = { @@ -75,8 +75,8 @@ settings.efm_settings = { documentFormatting = true, codeAction = true, hover = true, - documentSymbol = false, - completion = false + documentSymbol = true, + completion = true }, filetypes = { "lua", "cpp", "c", "json", "css", "yaml", "markdown", "scss", From 5c9b450a993795ce60c9119ca186f48ed5088692 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Jul 2021 03:41:21 +0000 Subject: [PATCH 235/419] Change netrw default style to tree and disable it banner --- lua/editor.lua | 90 ++++++++++++++++++----------------- lua/plugrc/lspconfig/init.lua | 1 - 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 62857d1..51f1287 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,7 +1,7 @@ -local o=vim.o -local g=vim.g -local cmd=vim.cmd -local fn=vim.fn +local o = vim.o +local g = vim.g +local cmd = vim.cmd +local fn = vim.fn -- Remap leader key to , -- With a map leader it's possible to do extra key combinations -- like w saves the current file @@ -9,67 +9,71 @@ local fn=vim.fn g.mapleader = ',' -- == Python provider configurations == -- -g.python3_host_prog='/usr/bin/python3' +g.python3_host_prog = '/usr/bin/python3' ---enable loading the plugin files for specific file types -cmd[[filetype plugin indent on]] +-- enable loading the plugin files for specific file types +cmd [[filetype plugin indent on]] ---Switch on syntax highlighting. +-- Switch on syntax highlighting. o.syntax = 'on' ---set assembly language file to use nasm +-- set assembly language file to use nasm g.asmsyntax = 'asm' ---Set clipboard to the + registers only ---if you want to use the * also add ,unnamed -if fn.has('clipboard') == 1 then - vim.opt.clipboard:append('unnamed,unnamedplus') -end +-- Set clipboard to the + registers only +-- if you want to use the * also add ,unnamed +if fn.has('clipboard') == 1 then vim.opt.clipboard:append('unnamed,unnamedplus') end ---Restore cursor to file position in previous editing session ---This autocommand jumps to the last known position in a file ---just after opening it, if the '-- mark is set: > -cmd[[ +-- Restore cursor to file position in previous editing session +-- This autocommand jumps to the last known position in a file +-- just after opening it, if the '-- mark is set: > +cmd [[ augroup restore_cursor autocmd! autocmd BufReadPost * call setpos(".", getpos("'\"")) augroup END ]] ---Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if ---available. This will store the multi-level undo information in a file. The result is ---that when you change a file, exit Vim, and then edit the file again, you can undo ---the changes made previously. -if fn.has('vms')==1 then +-- Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if +-- available. This will store the multi-level undo information in a file. The result is +-- that when you change a file, exit Vim, and then edit the file again, you can undo +-- the changes made previously. +if fn.has('vms') == 1 then o.backup = false else --- create a backup of the file before editing + -- create a backup of the file before editing o.backup = true if fn.has('persistent_undo') == 1 then --- enable undofile , which helps you undo a lot and redo also a lot + -- enable undofile , which helps you undo a lot and redo also a lot o.undofile = true o.undolevels = 30000 o.undoreload = 30000 end end ---Don't redraw screen when executing macros,registers or untyped commands +-- Don't redraw screen when executing macros,registers or untyped commands o.lazyredraw = true ---Incremental live completion +-- enable tree style view +g.netrw_liststyle = 3 + +-- Disable top banner can be switched with I +g.netrw_banner = 0 + +-- Incremental live completion o.inccommand = "nosplit" ---for vim's swap ; undo and backup organization ---Location for backup of files before editing -- +-- for vim's swap ; undo and backup organization +-- Location for backup of files before editing -- o.backupdir = '/tmp/' ---The location of swap files ,ie buffers that have not been save ie in memory +-- The location of swap files ,ie buffers that have not been save ie in memory o.directory = '/tmp/' ---Location for storing undo tree of the edited file-- +-- Location for storing undo tree of the edited file-- o.undodir = '/tmp/' ---The extension to be used for vim backup files +-- The extension to be used for vim backup files o.backupext = '.vimbak' -- You will have bad experience for diagnostic messages when it's default 4000. @@ -91,9 +95,9 @@ o.expandtab = true o.completeopt = 'menuone,noselect' -- This option allows you to switch between multiple buffers -o.hidden = true --without saving a changed buffer +o.hidden = true -- without saving a changed buffer ---Automatically enable mouse usage +-- Automatically enable mouse usage o.mouse = 'a' -- Show line numbers @@ -108,22 +112,22 @@ o.textwidth = 79 -- Highlight matching brace o.showmatch = true ---text complete with CTRL-N or CTRL-P +-- text complete with CTRL-N or CTRL-P o.complete = 'kspell' -- Enable spell checking for espanol y ingles-- o.spelllang = 'es_mx,en_us' ---Use visual bell (no beeping) +-- Use visual bell (no beeping) o.visualbell = true ---Always case-insensitie +-- Always case-insensitie o.ignorecase = true -- Enable smart-case search o.smartcase = true ---case insensitive auto completion +-- case insensitive auto completion o.wildignorecase = true -- Number of auto-indent spaces @@ -141,13 +145,13 @@ o.confirm = true -- Show row and column ruler information o.ruler = true ---Command line height +-- Command line height o.cmdheight = 2 ---Auto-write all file changes +-- Auto-write all file changes o.autowriteall = true ---Set the history size to maximum. by default it is 20 +-- Set the history size to maximum. by default it is 20 o.history = 10000 -- Display unprintable characters f12 - switches @@ -161,5 +165,5 @@ o.foldmethod = 'indent' o.foldlevel = 99 ---Remove Trailing whitespaces in all files -cmd[[autocmd BufWritePre * %s/\s\+$//e]] +-- Remove Trailing whitespaces in all files +cmd [[autocmd BufWritePre * %s/\s\+$//e]] diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index d5d2be4..bb0dc7f 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -22,7 +22,6 @@ local on_attach = function(client, buffer) end -- Set some keybinds conditional on server capabilities if client.resolved_capabilities.document_formatting then - print(vim.inspect(client)) set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) end From dcdf012a3c4d4ea29bb0e9aaef0372281eae35a6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 24 Jul 2021 14:19:59 +0000 Subject: [PATCH 236/419] Disable document formatting for js and ts using efm since it is taken care of by ts server --- lua/plugrc/lspconfig/init.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index bb0dc7f..cd30c5a 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -17,8 +17,11 @@ local on_attach = function(client, buffer) local opts = {noremap = true, silent = true} - if client.name == "efm" and vim.fn.getbufvar(buffer, '&filetype') == 'cpp' then - client.resolved_capabilities.document_formatting = false + if client.name == "efm" then + if vim.fn.getbufvar(buffer, '&filetype') == 'cpp' or 'javascript' or + 'typescript' then + client.resolved_capabilities.document_formatting = false + end end -- Set some keybinds conditional on server capabilities if client.resolved_capabilities.document_formatting then From d79f27ba484e0b0dae259c44da2ecfe128d22af4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 25 Jul 2021 15:43:02 +0000 Subject: [PATCH 237/419] Disable formatting of html and vue with the html ls Use prettier instead --- lua/plugrc/lspconfig/init.lua | 29 +++++++++++++++++----- lua/plugrc/lspconfig/settings.lua | 41 +++++++++++-------------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index cd30c5a..ffdb615 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,7 +1,24 @@ +local disable_conflicting_formatters = function(client, buffer) + local buffer_filetype = vim.fn.getbufvar(buffer, '&filetype') + + local efm_disabled_files = buffer_filetype == 'cpp' or buffer_filetype == + 'javascript' or buffer_filetype == + 'typescript' + + if client.name == "efm" and efm_disabled_files then + client.resolved_capabilities.document_formatting = false + end + + if client.name == "html" then + client.resolved_capabilities.document_formatting = false + end +end + local on_attach = function(client, buffer) local signature_cfg = require('plugrc/lspconfig/signature') local saga_cfg = require('plugrc/lspconfig/saga') local builtin_lsp = require('plugrc/lspconfig/config') + builtin_lsp.completion_kinds() builtin_lsp.sign_column_diagnostic_symbols() builtin_lsp.display_diagnostics_sources() @@ -17,17 +34,14 @@ local on_attach = function(client, buffer) local opts = {noremap = true, silent = true} - if client.name == "efm" then - if vim.fn.getbufvar(buffer, '&filetype') == 'cpp' or 'javascript' or - 'typescript' then - client.resolved_capabilities.document_formatting = false - end - end + disable_conflicting_formatters(client, buffer) + -- Set some keybinds conditional on server capabilities if client.resolved_capabilities.document_formatting then set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) end + if client.resolved_capabilities.document_range_formatting then set_keymap("v", "lf", "lua vim.lsp.buf.range_formatting()", opts) @@ -60,8 +74,10 @@ end -- 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 capabilities.textDocument.signatureHelp.contextSupport = true + return { -- enable snippet support capabilities = capabilities, @@ -126,5 +142,6 @@ 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/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 92f9b94..3a736b7 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -28,6 +28,7 @@ linters.cppcheck = { lintFormats = {'%f:%l:%c: %m'}, lintIgnoreExitCode = true }, + c = { lintCommand = 'cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c ${INPUT}', lintStdin = true, @@ -48,26 +49,8 @@ local formatters = {} formatters.lua_format = {formatCommand = "lua-format -i", formatStdin = true} formatters.prettier = { - css = { - formatCommand = "prettier --parser css --stdin-filepath ${INPUT}", - formatStdin = true - }, - json = { - formatCommand = "prettier --parser json --stdin-filepath ${INPUT}", - formatStdin = true - }, - scss = { - formatCommand = "prettier --parser scss --stdin-filepath ${INPUT}", - formatStdin = true - }, - markdown = { - formatCommand = "prettier --parser markdown --stdin-filepath ${INPUT}", - formatStdin = true - }, - yaml = { - formatCommand = "prettier --parser yaml --stdin-filepath ${INPUT}", + formatCommand = "prettier --stdin-filepath ${INPUT}", formatStdin = true - } } settings.efm_settings = { @@ -78,23 +61,27 @@ settings.efm_settings = { documentSymbol = true, completion = true }, + filetypes = { - "lua", "cpp", "c", "json", "css", "yaml", "markdown", "scss", - "javascript", "typescript" + "lua", "cpp", "c", "css", "scss", "json","yaml", "markdown", + "javascript", "typescript","html","vue" }, + settings = { rootMarkers = {".git/"}, languages = { lua = {formatters.lua_format}, cpp = {linters.cppcheck.cpp}, c = {linters.cppcheck.c}, - css = {formatters.prettier.css}, - scss = {formatters.prettier.scss}, - json = {formatters.prettier.json, linters.eslint}, - yaml = {formatters.prettier.yaml}, - markdown = {formatters.prettier.markdown}, + css = {formatters.prettier}, + scss = {formatters.prettier}, + json = {formatters.prettier}, + yaml = {formatters.prettier}, + markdown = {formatters.prettier}, javascript = {linters.eslint}, - typescript = {linters.eslint} + typescript = {linters.eslint}, + html = {formatters.prettier}, + vue = {formatters.prettier} } } } From 4849a9fa0bae63d9dd5185c065b241444f6136d7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Jul 2021 12:08:05 +0000 Subject: [PATCH 238/419] Make tree a startup dependency since it will be needed opening dir at startup --- lua/lazy/tree.lua | 120 ---------------------------------------------- 1 file changed, 120 deletions(-) delete mode 100644 lua/lazy/tree.lua diff --git a/lua/lazy/tree.lua b/lua/lazy/tree.lua deleted file mode 100644 index 026f801..0000000 --- a/lua/lazy/tree.lua +++ /dev/null @@ -1,120 +0,0 @@ -require('utils') - -local g = vim.g - --- g.nvim_tree_side = 'right' --left by default --- g.nvim_tree_width = 40 --30 by default -g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} -- empty by default -g.nvim_tree_gitignore = 1 -- 0 by default -g.nvim_tree_auto_open = 0 -- 0 by default, opens the tree when typing `vim $DIR` or `vim` -g.nvim_tree_auto_close = 1 -- 0 by default, closes the tree when it's the last window -g.nvim_tree_auto_ignore_ft = {} -- empty by default, don't auto open tree on specific filetypes. -g.nvim_tree_quit_on_open = 0 -- 0 by default, closes the tree when you open a file -g.nvim_tree_follow = 1 -- 0 by default, this option allows the cursor to be updated when entering a buffer -g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers when folders are open --- g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` -g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons). -g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. --- g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options --- g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open --- g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file --- g.nvim_tree_disable_netrw = 0 --1 by default, disables netrw --- g.nvim_tree_hijack_netrw = 0 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) --- g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names --- g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree --- g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics --- g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. -g.nvim_tree_window_picker_exclude = { - filetype = {'packer', 'qf'}, - buftype = {'terminal'} -} --- Dictionary of buffer option names mapped to a list of option values that --- indicates to the window picker that the buffer's window should not be --- selectable. ---[[ - [g.nvim_tree_special_files = [ 'README.md'] -- List of filenames that gets highlighted with NvimTreeSpecialFile - [g.nvim_tree_show_icons = { - [ \ 'git': 1, - [ \ 'folders': 1, - [ \ 'files': 1, - [ \ } - ]] --- If 0, do not show the icons for one of 'git' 'folder' and 'files' --- 1 by default, notice that if 'files' is 1, it will only display --- if nvim-web-devicons is installed and on your runtimepath - --- default will show icon by default if no icon is provided --- default shows no icon by default ---[[ - [g.nvim_tree_icons = { - [ \ 'default': '', - [ \ 'symlink': '', - [ \ 'git': { - [ \ 'unstaged': --✗--, - [ \ 'staged': --✓--, - [ \ 'unmerged': ----, - [ \ 'renamed': --➜--, - [ \ 'untracked': --★--, - [ \ 'deleted': ----, - [ \ 'ignored': --◌-- - [ \ }, - [ \ 'folder': { - [ \ 'default': ----, - [ \ 'open': ----, - [ \ 'empty': ----, - [ \ 'empty_open': ----, - [ \ 'symlink': ----, - [ \ 'symlink_open': ----, - [ \ }, - [ \ 'lsp': { - [ \ 'hint': ----, - [ \ 'info': ----, - [ \ 'warning': ----, - [ \ 'error': ----, - [ \ } - [ \ } - ]] --- a list of groups can be found at `:help nvim_tree_highlight` --- highlight NvimTreeFolderIcon guibg=blue -_G.tree_config = function() - local tree_cb = require'nvim-tree.config'.nvim_tree_callback - vim.g.nvim_tree_bindings = { - {key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit")}, - {key = {"<2-RightMouse>", ""}, cb = tree_cb("cd")}, - {key = "", cb = tree_cb("vsplit")}, - {key = "", cb = tree_cb("split")}, - {key = "", cb = tree_cb("tabnew")}, - {key = "<", cb = tree_cb("prev_sibling")}, - {key = ">", cb = tree_cb("next_sibling")}, - {key = "P", cb = tree_cb("parent_node")}, - {key = "", cb = tree_cb("close_node")}, - {key = "", cb = tree_cb("close_node")}, - {key = "", cb = tree_cb("preview")}, - {key = "K", cb = tree_cb("first_sibling")}, - {key = "J", cb = tree_cb("last_sibling")}, - {key = "I", cb = tree_cb("toggle_ignored")}, - {key = "H", cb = tree_cb("toggle_dotfiles")}, - {key = "R", cb = tree_cb("refresh")}, - {key = "a", cb = tree_cb("create")}, - {key = "d", cb = tree_cb("remove")}, - {key = "rn", cb = tree_cb("rename")}, - {key = "", cb = tree_cb("full_rename")}, - {key = "x", cb = tree_cb("cut")}, {key = "c", cb = tree_cb("copy")}, - {key = "p", cb = tree_cb("paste")}, - {key = "y", cb = tree_cb("copy_name")}, - {key = "Y", cb = tree_cb("copy_path")}, - {key = "gy", cb = tree_cb("copy_absolute_path")}, - {key = "[c", cb = tree_cb("prev_git_item")}, - {key = "]c", cb = tree_cb("next_git_item")}, - {key = "-", cb = tree_cb("dir_up")}, {key = "q", cb = tree_cb("close")}, - {key = "g?", cb = tree_cb("toggle_help")} - } -end - -map('n', 'n', - '[[packadd nvim-tree.lua|call v:lua.tree_config()|NvimTreeToggle]]') - --- map('n', 'r', ':NvimTreeRefresh') --- map('n','tf',':NvimTreeFindFile',option) - --- NvimTreeOpen and NvimTreeClose are also available if you need them From d77ca7503440ce5c57e2e72c8772dc3acfd0c355 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Jul 2021 12:10:22 +0000 Subject: [PATCH 239/419] Separate tree into rc and mappings and load in init files --- lua/lazy/init.lua | 1 - lua/mapping/init.lua | 1 + lua/mapping/tree.lua | 39 +++++++++++++++++++++++ lua/plugins.lua | 2 +- lua/plugrc/init.lua | 1 + lua/plugrc/tree.lua | 76 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 lua/mapping/tree.lua create mode 100644 lua/plugrc/tree.lua diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 8cf15b0..f0c5fd9 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,4 +1,3 @@ -require('lazy/tree') require('lazy/telescope') require('lazy/trouble') require('lazy/vista') diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 29903f9..268c18a 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -5,3 +5,4 @@ require('mapping/terminal') require('mapping/compe') require('mapping/lspconfig') require('mapping/autopairs') +require('mapping/tree') diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua new file mode 100644 index 0000000..837962b --- /dev/null +++ b/lua/mapping/tree.lua @@ -0,0 +1,39 @@ +require('utils') + +local tree_cb = require'nvim-tree.config'.nvim_tree_callback +vim.g.nvim_tree_bindings = { + {key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit")}, + {key = {"<2-RightMouse>", ""}, cb = tree_cb("cd")}, + {key = "", cb = tree_cb("vsplit")}, + {key = "", cb = tree_cb("split")}, + {key = "", cb = tree_cb("tabnew")}, + {key = "<", cb = tree_cb("prev_sibling")}, + {key = ">", cb = tree_cb("next_sibling")}, + {key = "P", cb = tree_cb("parent_node")}, + {key = "", cb = tree_cb("close_node")}, + {key = "", cb = tree_cb("close_node")}, + {key = "", cb = tree_cb("preview")}, + {key = "K", cb = tree_cb("first_sibling")}, + {key = "J", cb = tree_cb("last_sibling")}, + {key = "I", cb = tree_cb("toggle_ignored")}, + {key = "H", cb = tree_cb("toggle_dotfiles")}, + {key = "R", cb = tree_cb("refresh")}, {key = "a", cb = tree_cb("create")}, + {key = "d", cb = tree_cb("remove")}, {key = "rn", cb = tree_cb("rename")}, + {key = "", cb = tree_cb("full_rename")}, + {key = "x", cb = tree_cb("cut")}, {key = "c", cb = tree_cb("copy")}, + {key = "p", cb = tree_cb("paste")}, {key = "y", cb = tree_cb("copy_name")}, + {key = "Y", cb = tree_cb("copy_path")}, + {key = "gy", cb = tree_cb("copy_absolute_path")}, + {key = "[c", cb = tree_cb("prev_git_item")}, + {key = "]c", cb = tree_cb("next_git_item")}, + {key = "-", cb = tree_cb("dir_up")}, {key = "q", cb = tree_cb("close")}, + {key = "g?", cb = tree_cb("toggle_help")} +} + +map('n', 'n', 'NvimTreeToggle') + +-- map('n', 'r', ':NvimTreeRefresh') +-- map('n','tf',':NvimTreeFindFile',option) + +-- NvimTreeOpen and NvimTreeClose are also available if you need them + diff --git a/lua/plugins.lua b/lua/plugins.lua index 1fdc52f..2407597 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -91,7 +91,7 @@ require 'paq-nvim' { -- === UI === -- -- A Neovim File explorer -{'kyazdani42/nvim-tree.lua',opt=true}; +{'kyazdani42/nvim-tree.lua'}; -- == Icons == -- diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 325a941..1bd28c3 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -7,3 +7,4 @@ require('plugrc/gitsigns') require('plugrc/compe') require('plugrc/autopairs') require('plugrc/whichkey') +require('plugrc/tree') diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua new file mode 100644 index 0000000..3093713 --- /dev/null +++ b/lua/plugrc/tree.lua @@ -0,0 +1,76 @@ +local g = vim.g + +-- g.nvim_tree_side = 'right' --left by default +-- g.nvim_tree_width = 40 --30 by default +g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} -- empty by default +g.nvim_tree_gitignore = 1 -- 0 by default +g.nvim_tree_auto_open = 1 -- 0 by default, opens the tree when typing `vim $DIR` or `vim` +g.nvim_tree_auto_close = 1 -- 0 by default, closes the tree when it's the last window +g.nvim_tree_auto_ignore_ft = {} -- empty by default, don't auto open tree on specific filetypes. +g.nvim_tree_quit_on_open = 1 -- 0 by default, closes the tree when you open a file +--g.nvim_tree_follow = 1 -- 0 by default, this option allows the cursor to be updated when entering a buffer +g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers when folders are open +-- g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` +g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons). +g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. +-- g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options +-- g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open +-- g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file +g.nvim_tree_disable_netrw = 1 --1 by default, disables netrw +g.nvim_tree_hijack_netrw = 1 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) +-- g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names +-- g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree +-- g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics +-- g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. +g.nvim_tree_window_picker_exclude = { + filetype = {'packer', 'qf'}, + buftype = {'terminal'} +} +-- Dictionary of buffer option names mapped to a list of option values that +-- indicates to the window picker that the buffer's window should not be +-- selectable. +--[[ + [g.nvim_tree_special_files = [ 'README.md'] -- List of filenames that gets highlighted with NvimTreeSpecialFile + [g.nvim_tree_show_icons = { + [ \ 'git': 1, + [ \ 'folders': 1, + [ \ 'files': 1, + [ \ } + ]] +-- If 0, do not show the icons for one of 'git' 'folder' and 'files' +-- 1 by default, notice that if 'files' is 1, it will only display +-- if nvim-web-devicons is installed and on your runtimepath + +-- default will show icon by default if no icon is provided +-- default shows no icon by default +--[[ + [g.nvim_tree_icons = { + [ \ 'default': '', + [ \ 'symlink': '', + [ \ 'git': { + [ \ 'unstaged': --✗--, + [ \ 'staged': --✓--, + [ \ 'unmerged': ----, + [ \ 'renamed': --➜--, + [ \ 'untracked': --★--, + [ \ 'deleted': ----, + [ \ 'ignored': --◌-- + [ \ }, + [ \ 'folder': { + [ \ 'default': ----, + [ \ 'open': ----, + [ \ 'empty': ----, + [ \ 'empty_open': ----, + [ \ 'symlink': ----, + [ \ 'symlink_open': ----, + [ \ }, + [ \ 'lsp': { + [ \ 'hint': ----, + [ \ 'info': ----, + [ \ 'warning': ----, + [ \ 'error': ----, + [ \ } + [ \ } + ]] +-- a list of groups can be found at `:help nvim_tree_highlight` +-- highlight NvimTreeFolderIcon guibg=blue From da02e98301ef978ac4654975b433af378ad3200e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 30 Jul 2021 04:22:47 +0000 Subject: [PATCH 240/419] Add detection of nix files and treesitter syntax highlighting --- lua/ftdetect/ftdetect.lua | 4 ++++ lua/plugrc/treesitter.lua | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/ftdetect/ftdetect.lua b/lua/ftdetect/ftdetect.lua index 21ebf6b..fd43b6d 100644 --- a/lua/ftdetect/ftdetect.lua +++ b/lua/ftdetect/ftdetect.lua @@ -18,4 +18,8 @@ augroup END augroup zigfile autocmd! BufRead,BufNewFile *.zig set filetype=zig augroup END + +augroup nixfile + autocmd! BufRead,BufNewFile *.nix set filetype=nix +augroup END ]] diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 1435c62..8319f15 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -1,5 +1,5 @@ require'nvim-treesitter.configs'.setup { - ensure_installed = {'cpp','zig','comment','json','haskell','lua','vue','typescript','scss','html'}, + ensure_installed = {'cpp','zig','nix','comment','json','haskell','lua','vue','typescript','scss','html'}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing highlight = { From bba1c10ca3bf9fce8c2ef520f9f74b0e2946c3ca Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 7 Aug 2021 17:41:35 +0000 Subject: [PATCH 241/419] Remove deprecated api --- lua/plugrc/gitsigns.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 257363f..bf13715 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -106,6 +106,5 @@ require('gitsigns').setup({ update_debounce = 100, status_formatter = nil, -- Use default word_diff = false, - use_decoration_api = true, use_internal_diff = true -- If luajit is present }) From 65362cfd43a00a464c92434f312481608b9664e7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 7 Aug 2021 17:43:04 +0000 Subject: [PATCH 242/419] Use html's default formatter for formatting html and vue instead of prettier --- lua/plugrc/lspconfig/init.lua | 4 ---- lua/plugrc/lspconfig/settings.lua | 4 +--- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index ffdb615..730f09b 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -8,10 +8,6 @@ local disable_conflicting_formatters = function(client, buffer) if client.name == "efm" and efm_disabled_files then client.resolved_capabilities.document_formatting = false end - - if client.name == "html" then - client.resolved_capabilities.document_formatting = false - end end local on_attach = function(client, buffer) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 3a736b7..8394923 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -64,7 +64,7 @@ settings.efm_settings = { filetypes = { "lua", "cpp", "c", "css", "scss", "json","yaml", "markdown", - "javascript", "typescript","html","vue" + "javascript", "typescript" }, settings = { @@ -80,8 +80,6 @@ settings.efm_settings = { markdown = {formatters.prettier}, javascript = {linters.eslint}, typescript = {linters.eslint}, - html = {formatters.prettier}, - vue = {formatters.prettier} } } } From 5bb6bc9347f166d4a8b5e7eabd651ccaebebc47d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 22 Aug 2021 19:40:55 +0000 Subject: [PATCH 243/419] Fix minor issue with clipboard opt causing only unnamedplus to be used And refactor to use lua style tables for list options and table maps for key value pairs --- lua/editor.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 51f1287..b00ec67 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,7 +1,7 @@ -local o = vim.o -local g = vim.g -local cmd = vim.cmd -local fn = vim.fn +local o = vim.opt -- editor options +local g = vim.g -- Global editor variables +local cmd = vim.cmd -- exectue vimscript in lua +local fn = vim.fn -- invoke vim-functions in lua -- Remap leader key to , -- With a map leader it's possible to do extra key combinations -- like w saves the current file @@ -22,7 +22,9 @@ g.asmsyntax = 'asm' -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed -if fn.has('clipboard') == 1 then vim.opt.clipboard:append('unnamed,unnamedplus') end +if fn.has('clipboard') == 1 then + vim.opt.clipboard:append({'unnamed', 'unnamedplus'}) +end -- Restore cursor to file position in previous editing session -- This autocommand jumps to the last known position in a file @@ -92,7 +94,7 @@ o.swapfile = false o.expandtab = true -- Don't let autocomplete affect usual typing habits -o.completeopt = 'menuone,noselect' +o.completeopt = {'menuone', 'noselect'} -- This option allows you to switch between multiple buffers o.hidden = true -- without saving a changed buffer @@ -116,7 +118,7 @@ o.showmatch = true o.complete = 'kspell' -- Enable spell checking for espanol y ingles-- -o.spelllang = 'es_mx,en_us' +o.spelllang = {'es_mx', 'en_us'} -- Use visual bell (no beeping) o.visualbell = true @@ -158,7 +160,7 @@ o.history = 10000 o.list = true -- Unprintable chars mapping -o.listchars = [[tab:••,trail:•,extends:»,precedes:«]] +o.listchars = {tab = '••', trail = '•', extends = '»', precedes = '«'} -- Enable folding o.foldmethod = 'indent' From 41dd1bc8208f09fa0a340c871c98ea95146ace78 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 25 Aug 2021 02:52:38 +0000 Subject: [PATCH 244/419] Revert 5bb6bc9 and use a lua string with comma separated list like doc says --- lua/editor.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index b00ec67..5fa96ad 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -22,9 +22,7 @@ g.asmsyntax = 'asm' -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed -if fn.has('clipboard') == 1 then - vim.opt.clipboard:append({'unnamed', 'unnamedplus'}) -end +if fn.has('clipboard') == 1 then vim.opt.clipboard:append('unnamed,unnamedplus') end -- Restore cursor to file position in previous editing session -- This autocommand jumps to the last known position in a file @@ -94,7 +92,7 @@ o.swapfile = false o.expandtab = true -- Don't let autocomplete affect usual typing habits -o.completeopt = {'menuone', 'noselect'} +o.completeopt = 'menuone,noselect' -- This option allows you to switch between multiple buffers o.hidden = true -- without saving a changed buffer @@ -118,7 +116,7 @@ o.showmatch = true o.complete = 'kspell' -- Enable spell checking for espanol y ingles-- -o.spelllang = {'es_mx', 'en_us'} +o.spelllang = 'es_us,en_us' -- Use visual bell (no beeping) o.visualbell = true From eef6dc0140a654523a2d0e02a50b62aee1fab61f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 29 Aug 2021 14:37:42 +0000 Subject: [PATCH 245/419] For now use only unnamed clipboard which is the primary selection --- lua/editor.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/editor.lua b/lua/editor.lua index 5fa96ad..7429c87 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -22,7 +22,7 @@ g.asmsyntax = 'asm' -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed -if fn.has('clipboard') == 1 then vim.opt.clipboard:append('unnamed,unnamedplus') end +if fn.has('clipboard') == 1 then vim.opt.clipboard:append('unnamed') end -- Restore cursor to file position in previous editing session -- This autocommand jumps to the last known position in a file From 1c914b9597d031b4e85d622c5a6fcf99378f332d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 14 Sep 2021 15:54:49 +0000 Subject: [PATCH 246/419] Enable line wrap explicitely wrap on is suppose to be the default behavior but currently Isn't wrapping so I am enabling it explicitly --- lua/editor.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/editor.lua b/lua/editor.lua index 7429c87..d8d2b27 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -106,6 +106,9 @@ o.number = true -- Wrap-broken line prefix o.showbreak = [[>>>\ \ \]] +-- enable line wrap +o.wrap = true + -- Line wrap (number of cols) o.textwidth = 79 From a76ce04a643d67726d39ba452ae04768103cc323 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 15 Sep 2021 19:29:46 +0000 Subject: [PATCH 247/419] Remove dependency on lspinstall --- lua/plugins.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 2407597..07a9e26 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -60,8 +60,6 @@ require 'paq-nvim' { -- == LSP Client === --Nvim LSP client {'neovim/nvim-lspconfig'}; --- Install lsp's -{'kabouzeid/nvim-lspinstall'}; --A light-weight lsp plugin {'glepnir/lspsaga.nvim'}; --Show function signature when you type From 4ae2061ba84b64a8f4437de4cc9a1eb5920b2718 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 15 Sep 2021 19:30:03 +0000 Subject: [PATCH 248/419] Add stylua config --- .stylua.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .stylua.toml diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..a9a9c91 --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,2 @@ +column_width = 80 +indent_type = "Spaces" From 6d1e596c13312cb6ccf03b74f27699de98d3047d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 15 Sep 2021 19:32:19 +0000 Subject: [PATCH 249/419] Add ccls configuration and improve lua configuration Use stylua for lua formating --- lua/plugrc/lspconfig/settings.lua | 135 ++++++++++++++++++++---------- 1 file changed, 89 insertions(+), 46 deletions(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 8394923..e6b3396 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -1,56 +1,69 @@ local settings = {} -- Configure lua language server for neovim development +local runtime_path = vim.split(package.path, ";") +table.insert(runtime_path, "lua/?.lua") +table.insert(runtime_path, "lua/?/init.lua") + settings.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'} + cmd = { + "lua-language-server", + "-E", + "/usr/share/lua-language-server/main.lua", + }, + settings = { + Lua = { + runtime = { + -- LuaJIT in the case of Neovim + version = "LuaJIT", + -- Setup your lua path + path = runtime_path, + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { "vim" }, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + }, }, - workspace = { - -- Make the server aware of Neovim runtime files - library = vim.api.nvim_get_runtime_file('', true) - } - } + }, } local linters = {} linters.cppcheck = { cpp = { - lintCommand = 'cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c++ ${INPUT}', + lintCommand = "cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c++ ${INPUT}", lintStdin = true, - lintFormats = {'%f:%l:%c: %m'}, - lintIgnoreExitCode = true + lintFormats = { "%f:%l:%c: %m" }, + lintIgnoreExitCode = true, }, c = { - lintCommand = 'cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c ${INPUT}', + lintCommand = "cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c ${INPUT}", lintStdin = true, - lintFormats = {'%f:%l:%c: %m'}, - lintIgnoreExitCode = true - } + lintFormats = { "%f:%l:%c: %m" }, + lintIgnoreExitCode = true, + }, } linters.eslint = { - lintCommand = 'eslint_d -f visualstudio --stdin --stdin-filename ${INPUT}', + lintCommand = "eslint_d -f visualstudio --stdin --stdin-filename ${INPUT}", lintStdin = true, - lintFormats = {"%f(%l,%c): %rror %m"}, - lintIgnoreExitCode = true + lintFormats = { "%f(%l,%c): %rror %m" }, + lintIgnoreExitCode = true, } local formatters = {} -formatters.lua_format = {formatCommand = "lua-format -i", formatStdin = true} +formatters.lua_format = { formatCommand = "lua-format -i", formatStdin = true } +formatters.stylua = { formatCommand = "stylua -", formatStdin = true } formatters.prettier = { - formatCommand = "prettier --stdin-filepath ${INPUT}", - formatStdin = true + formatCommand = "prettier --stdin-filepath ${INPUT}", + formatStdin = true, } settings.efm_settings = { @@ -59,37 +72,67 @@ settings.efm_settings = { codeAction = true, hover = true, documentSymbol = true, - completion = true + completion = true, }, filetypes = { - "lua", "cpp", "c", "css", "scss", "json","yaml", "markdown", - "javascript", "typescript" + "lua", + "cpp", + "c", + "css", + "scss", + "json", + "yaml", + "markdown", + "javascript", + "typescript", }, settings = { - rootMarkers = {".git/"}, + rootMarkers = { ".git/" }, languages = { - lua = {formatters.lua_format}, - cpp = {linters.cppcheck.cpp}, - c = {linters.cppcheck.c}, - css = {formatters.prettier}, - scss = {formatters.prettier}, - json = {formatters.prettier}, - yaml = {formatters.prettier}, - markdown = {formatters.prettier}, - javascript = {linters.eslint}, - typescript = {linters.eslint}, - } - } + lua = { formatters.stylua }, + cpp = { linters.cppcheck.cpp }, + c = { linters.cppcheck.c }, + css = { formatters.prettier }, + scss = { formatters.prettier }, + json = { formatters.prettier }, + yaml = { formatters.prettier }, + markdown = { formatters.prettier }, + javascript = { linters.eslint }, + typescript = { linters.eslint }, + }, + }, } settings.clangd_setting = { cmd = { - "clangd", "--query-driver=/usr/bin/g++", "--clang-tidy", "-j=5", - "--malloc-trim" + "clangd", + "--query-driver=/usr/bin/g++", + "--clang-tidy", + "-j=5", + "--malloc-trim", + }, + filetypes = { "c", "cpp" }, -- we don't want objective-c and objective-cpp! +} + +settings.ccls_settings = { + { + filetypes = { "c", "cpp" }, + init_options = { + compilationDatabaseDirectory = vim.loop.cwd, + index = { + threads = 0, + }, + cache = { + directory = ".ccls-cache", + }, + clang = { + excludeArgs = { "-frounding-math" }, + extraArgs = {}, + }, + }, }, - filetypes = {"c", "cpp"} -- we don't want objective-c and objective-cpp! } return settings From af9299a95e9160781f4adb29f5efba2076fbf8cb Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 15 Sep 2021 19:36:11 +0000 Subject: [PATCH 250/419] Add all lsp servers locally and configure sumneko_lua and ccls and for the other use the default --- lua/plugrc/lspconfig/init.lua | 125 ++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 59 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 730f09b..6a3d0b6 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,9 +1,9 @@ local disable_conflicting_formatters = function(client, buffer) - local buffer_filetype = vim.fn.getbufvar(buffer, '&filetype') + local buffer_filetype = vim.fn.getbufvar(buffer, "&filetype") - local efm_disabled_files = buffer_filetype == 'cpp' or buffer_filetype == - 'javascript' or buffer_filetype == - 'typescript' + local efm_disabled_files = buffer_filetype == "cpp" + or buffer_filetype == "javascript" + or buffer_filetype == "typescript" if client.name == "efm" and efm_disabled_files then client.resolved_capabilities.document_formatting = false @@ -11,42 +11,54 @@ local disable_conflicting_formatters = function(client, buffer) end local on_attach = function(client, buffer) - local signature_cfg = require('plugrc/lspconfig/signature') - local saga_cfg = require('plugrc/lspconfig/saga') - local builtin_lsp = require('plugrc/lspconfig/config') + local signature_cfg = require("plugrc/lspconfig/signature") + local saga_cfg = require("plugrc/lspconfig/saga") + local builtin_lsp = require("plugrc/lspconfig/config") builtin_lsp.completion_kinds() builtin_lsp.sign_column_diagnostic_symbols() builtin_lsp.display_diagnostics_sources() - require'lsp_signature'.on_attach(signature_cfg) - require('lspsaga').init_lsp_saga(saga_cfg) + require("lsp_signature").on_attach(signature_cfg) + require("lspsaga").init_lsp_saga(saga_cfg) - local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) end + local function set_keymap(...) + vim.api.nvim_buf_set_keymap(buffer, ...) + end - local function set_option(...) vim.api.nvim_buf_set_option(buffer, ...) end + local function set_option(...) + vim.api.nvim_buf_set_option(buffer, ...) + end - set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + set_option("omnifunc", "v:lua.vim.lsp.omnifunc") - local opts = {noremap = true, silent = true} + local opts = { noremap = true, silent = true } disable_conflicting_formatters(client, buffer) -- Set some keybinds conditional on server capabilities if client.resolved_capabilities.document_formatting then - set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", - opts) + set_keymap( + "n", + "lf", + "lua vim.lsp.buf.formatting()", + opts + ) end if client.resolved_capabilities.document_range_formatting then - set_keymap("v", "lf", - "lua vim.lsp.buf.range_formatting()", opts) + set_keymap( + "v", + "lf", + "lua vim.lsp.buf.range_formatting()", + opts + ) end -- Set autocommands conditional on server_capabilities if client.resolved_capabilities.document_highlight then -- lsp highlight element under cursor - vim.cmd [[ + vim.cmd([[ highlight link LspReferenceText WildMenu highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp @@ -56,15 +68,18 @@ local on_attach = function(client, buffer) autocmd CursorHoldI lua vim.lsp.buf.document_highlight() autocmd CursorMoved lua vim.lsp.buf.clear_references() augroup END - ]] + ]]) end -- client.resolved_capabilities.type_definition =false if client.resolved_capabilities.type_definition then - set_keymap('n', 'dt', - 'lua vim.lsp.buf.type_definition()', opts) + set_keymap( + "n", + "dt", + "lua vim.lsp.buf.type_definition()", + opts + ) end - end -- config that activates keymaps and enables snippet support @@ -80,64 +95,56 @@ local function make_config() -- map buffer local keybindings when the language server attaches on_attach = on_attach, - rootdir = vim.loop.cwd + -- rootdir = vim.loop.cwd } end -local local_lsp_servers = {'clangd', 'hls', 'zls', 'efm'} - -- lsp-install local function setup_servers() - require'lspinstall'.setup() - - -- get all installed servers - -- html ,css,lua,tailwindcss,vue,typescript - local servers = require'lspinstall'.installed_servers() - -- ... and add manually installed servers - if servers then - for _, local_server in pairs(local_lsp_servers) do - table.insert(servers, local_server) - end - else - servers = local_lsp_servers - end + local lsp_servers = { + "sumneko_lua", + "ccls", + "cssls", + "html", + "jsonls", + "tailwindcss", + "tsserver", + "volar", + "zls", + "efm", + } - local settings = require('plugrc.lspconfig.settings') - local lua_settings = settings.lua_settings - local efm_settings = settings.efm_settings - local clangd_setting = settings.clangd_setting + local settings = require("plugrc.lspconfig.settings") - for _, server in pairs(servers) do + for _, server in pairs(lsp_servers) do local config = make_config() -- language specific config - if server == "clangd" then - config.cmd = clangd_setting.cmd - config.filetypes = clangd_setting.filetypes + if server == "ccls" then + local ccls = settings.ccls_settings + config.init_options = ccls.init_options + config.filetypes = ccls.filetypes end - if server == "lua" then config.settings = lua_settings; end + if server == "sumneko_lua" then + local lua_settings = settings.lua_settings + config.cmd = lua_settings.cmd + config.settings = lua_settings.settings + end if server == "efm" then - config.init_options = efm_settings.init_options; - config.settings = efm_settings.settings; + local efm_settings = settings.efm_settings + config.init_options = efm_settings.init_options + config.settings = efm_settings.settings config.filetypes = efm_settings.filetypes end if server == "tailwindcss" then - config.filetypes = {"html", "css", "vue", "scss"} + config.filetypes = { "html", "css", "vue", "scss" } end - require'lspconfig'[server].setup(config); + 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 From b638a44bfbd039c4e259d7a753786f99f7473b5e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 15 Sep 2021 19:38:15 +0000 Subject: [PATCH 251/419] Format config with stylua --- lua/plugrc/lspconfig/config.lua | 37 +++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/config.lua index 0a94a3c..3298d82 100644 --- a/lua/plugrc/lspconfig/config.lua +++ b/lua/plugrc/lspconfig/config.lua @@ -22,12 +22,14 @@ M.icons = { Text = " ", Unit = " ", Value = " ", - Variable = "﬚ " + Variable = "﬚ ", } function M.completion_kinds() local kinds = vim.lsp.protocol.CompletionItemKind - for i, kind in ipairs(kinds) do kinds[i] = M.icons[kind] or kind end + for i, kind in ipairs(kinds) do + kinds[i] = M.icons[kind] or kind + end end function M.sign_column_diagnostic_symbols() @@ -36,22 +38,24 @@ function M.sign_column_diagnostic_symbols() Error = " ", Warning = " ", Hint = " ", - Information = " " + Information = " ", } for type, icon in pairs(signs) do local hl = "LspDiagnosticsSign" .. type - vim.fn.sign_define(hl, {text = icon, texthl = hl, numhl = ""}) + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) end end function M.disable_virtual_text() - vim.lsp.handlers["textDocument/publishDiagnostics"] = - vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { + vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, + { virtual_text = false, update_in_insert = false, signs = true, - underline = true - }) + underline = true, + } + ) end function M.display_diagnostics_sources() vim.lsp.handlers["textDocument/publishDiagnostics"] = @@ -60,23 +64,30 @@ function M.display_diagnostics_sources() virtual_text = false, update_in_insert = false, signs = true, - underline = true + underline = true, } local uri = params.uri local bufnr = vim.uri_to_bufnr(uri) - if not bufnr then return end + if not bufnr then + return + end local diagnostics = params.diagnostics for i, v in ipairs(diagnostics) do - diagnostics[i].message = - string.format("%s: %s", v.source, v.message) + diagnostics[i].message = string.format( + "%s: %s", + v.source, + v.message + ) end vim.lsp.diagnostic.save(diagnostics, bufnr, client_id) - if not vim.api.nvim_buf_is_loaded(bufnr) then return end + if not vim.api.nvim_buf_is_loaded(bufnr) then + return + end vim.lsp.diagnostic.display(diagnostics, bufnr, client_id, config) end From c54bc070291ae5d1111aeb6c3b83417768365ca3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 3 Oct 2021 02:59:52 +0000 Subject: [PATCH 252/419] Use the new setup interface to configure tree Remove redundant global vars that are now set in the setup function Add some new global vars that have been included in recent release --- lua/mapping/tree.lua | 125 ++++++++++++++++++++++++++++++++----------- lua/plugrc/tree.lua | 15 ++---- 2 files changed, 100 insertions(+), 40 deletions(-) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua index 837962b..7d2b269 100644 --- a/lua/mapping/tree.lua +++ b/lua/mapping/tree.lua @@ -1,39 +1,104 @@ require('utils') local tree_cb = require'nvim-tree.config'.nvim_tree_callback -vim.g.nvim_tree_bindings = { - {key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit")}, - {key = {"<2-RightMouse>", ""}, cb = tree_cb("cd")}, - {key = "", cb = tree_cb("vsplit")}, - {key = "", cb = tree_cb("split")}, - {key = "", cb = tree_cb("tabnew")}, - {key = "<", cb = tree_cb("prev_sibling")}, - {key = ">", cb = tree_cb("next_sibling")}, - {key = "P", cb = tree_cb("parent_node")}, - {key = "", cb = tree_cb("close_node")}, - {key = "", cb = tree_cb("close_node")}, - {key = "", cb = tree_cb("preview")}, - {key = "K", cb = tree_cb("first_sibling")}, - {key = "J", cb = tree_cb("last_sibling")}, - {key = "I", cb = tree_cb("toggle_ignored")}, - {key = "H", cb = tree_cb("toggle_dotfiles")}, - {key = "R", cb = tree_cb("refresh")}, {key = "a", cb = tree_cb("create")}, - {key = "d", cb = tree_cb("remove")}, {key = "rn", cb = tree_cb("rename")}, - {key = "", cb = tree_cb("full_rename")}, - {key = "x", cb = tree_cb("cut")}, {key = "c", cb = tree_cb("copy")}, - {key = "p", cb = tree_cb("paste")}, {key = "y", cb = tree_cb("copy_name")}, - {key = "Y", cb = tree_cb("copy_path")}, - {key = "gy", cb = tree_cb("copy_absolute_path")}, - {key = "[c", cb = tree_cb("prev_git_item")}, - {key = "]c", cb = tree_cb("next_git_item")}, - {key = "-", cb = tree_cb("dir_up")}, {key = "q", cb = tree_cb("close")}, - {key = "g?", cb = tree_cb("toggle_help")} -} - map('n', 'n', 'NvimTreeToggle') - -- map('n', 'r', ':NvimTreeRefresh') -- map('n','tf',':NvimTreeFindFile',option) -- NvimTreeOpen and NvimTreeClose are also available if you need them +-- following options are the default +require'nvim-tree'.setup { + -- disables netrw completely + disable_netrw = true, + -- hijack netrw window on startup + hijack_netrw = true, + -- open the tree when running this setup function + open_on_setup = false, + -- will not open on setup if the filetype is in this list + ignore_ft_on_setup = {}, + -- closes neovim automatically when the tree is the last **WINDOW** in the view + auto_close = true, + -- opens the tree when changing/opening a new tab if the tree wasn't previously opened + open_on_tab = false, + -- hijacks new directory buffers when they are opened. + update_to_buf_dir = { + -- enable the feature + enable = true, + -- allow to open the tree if it was previously closed + auto_open = true, + }, + -- hijack the cursor in the tree to put it at the start of the filename + hijack_cursor = false, + -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) + update_cwd = false, + -- show lsp diagnostics in the signcolumn + lsp_diagnostics = false, + -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file + update_focused_file = { + -- enables the feature + enable = false, + -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory + -- only relevant when `update_focused_file.enable` is true + update_cwd = false, + -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory + -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true + ignore_list = {} + }, + -- configuration options for the system open command (`s` in the tree by default) + system_open = { + -- the command to run this, leaving nil should work in most cases + cmd = nil, + -- the command arguments as a list + args = {} + }, + view = { + -- width of the window, can be either a number (columns) or a string in `%` + width = 30, + -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' + side = 'left', + -- if true the tree will resize itself after opening a file + auto_resize = false, + mappings = { + -- custom only false will merge the list with the default mappings + -- if true, it will only use your list to set the mappings + custom_only = false, + -- list of mappings to set on the tree manually + list = { + { key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit") }, + { key = {"<2-RightMouse>", ""}, cb = tree_cb("cd") }, + { key = "", cb = tree_cb("vsplit") }, + { key = "", cb = tree_cb("split") }, + { key = "", cb = tree_cb("tabnew") }, + { key = "<", cb = tree_cb("prev_sibling") }, + { key = ">", cb = tree_cb("next_sibling") }, + { key = "P", cb = tree_cb("parent_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("preview") }, + { key = "K", cb = tree_cb("first_sibling") }, + { key = "J", cb = tree_cb("last_sibling") }, + { key = "I", cb = tree_cb("toggle_ignored") }, + { key = "H", cb = tree_cb("toggle_dotfiles") }, + { key = "R", cb = tree_cb("refresh") }, + { key = "a", cb = tree_cb("create") }, + { key = "d", cb = tree_cb("remove") }, + { key = "r", cb = tree_cb("rename") }, + { key = "", cb = tree_cb("full_rename") }, + { key = "x", cb = tree_cb("cut") }, + { key = "c", cb = tree_cb("copy") }, + { key = "p", cb = tree_cb("paste") }, + { key = "y", cb = tree_cb("copy_name") }, + { key = "Y", cb = tree_cb("copy_path") }, + { key = "gy", cb = tree_cb("copy_absolute_path") }, + { key = "[c", cb = tree_cb("prev_git_item") }, + { key = "]c", cb = tree_cb("next_git_item") }, + { key = "-", cb = tree_cb("dir_up") }, + { key = "s", cb = tree_cb("system_open") }, + { key = "q", cb = tree_cb("close") }, + { key = "g?", cb = tree_cb("toggle_help") }, + + } + } + } +} diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index 3093713..20f771c 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,12 +1,7 @@ local g = vim.g --- g.nvim_tree_side = 'right' --left by default --- g.nvim_tree_width = 40 --30 by default g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} -- empty by default g.nvim_tree_gitignore = 1 -- 0 by default -g.nvim_tree_auto_open = 1 -- 0 by default, opens the tree when typing `vim $DIR` or `vim` -g.nvim_tree_auto_close = 1 -- 0 by default, closes the tree when it's the last window -g.nvim_tree_auto_ignore_ft = {} -- empty by default, don't auto open tree on specific filetypes. g.nvim_tree_quit_on_open = 1 -- 0 by default, closes the tree when you open a file --g.nvim_tree_follow = 1 -- 0 by default, this option allows the cursor to be updated when entering a buffer g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers when folders are open @@ -14,14 +9,14 @@ g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons). g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. -- g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options --- g.nvim_tree_tab_open = 1 --0 by default, will open the tree when entering a new tab and the tree was previously open --- g.nvim_tree_width_allow_resize = 1 --0 by default, will not resize the tree when opening a file -g.nvim_tree_disable_netrw = 1 --1 by default, disables netrw -g.nvim_tree_hijack_netrw = 1 --1 by default, prevents netrw from automatically opening when opening directories (but lets you keep its other utilities) -- g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names -- g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree --- g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics -- g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. +-- let g:nvim_tree_symlink_arrow = ' >> ' " defaults to ' ➛ '. used as a separator between symlinks' source and target. +--g.nvim_tree_respect_buf_cwd = 1 --0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. +--g.nvim_tree_create_in_closed_folder = 0 --1 by default, When creating files, sets the path of a file when cursor is on a closed folder to the parent folder when 0, and inside the folder when 1. +--g.nvim_tree_refresh_wait = 500 --1000 by default, control how often the tree can be refreshed, 1000 means the tree can be refresh once per 1000ms. +-- g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics g.nvim_tree_window_picker_exclude = { filetype = {'packer', 'qf'}, buftype = {'terminal'} From 5ea84fbf51c8a32c02c5ef7c8c2b213284b77917 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 3 Oct 2021 03:00:50 +0000 Subject: [PATCH 253/419] Remove deprecated options and follow instructions on how to use new alternatives --- lua/plugrc/bufferline.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/plugrc/bufferline.lua b/lua/plugrc/bufferline.lua index 826bb4d..7d8e939 100644 --- a/lua/plugrc/bufferline.lua +++ b/lua/plugrc/bufferline.lua @@ -1,8 +1,8 @@ require('bufferline').setup { options = { - numbers = "buffer_id", --| "ordinal" | "none" | "both", - number_style = "none", -- | "superscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2 - mappings = false, --| true , + numbers = function(opts) + return string.format('%s|%s', opts.id, opts.raise(opts.ordinal)) + end, max_name_length = 18, max_prefix_length = 15, -- prefix used when a buffer is de-duplicated tab_size = 18, From f916231144f5e0300d2a3100875d4ca876021ba9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 13:10:03 +0000 Subject: [PATCH 254/419] Enable update_cwd on directory change for file --- lua/mapping/tree.lua | 194 +++++++++++++++++++++---------------------- 1 file changed, 96 insertions(+), 98 deletions(-) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua index 7d2b269..096eb31 100644 --- a/lua/mapping/tree.lua +++ b/lua/mapping/tree.lua @@ -1,104 +1,102 @@ -require('utils') +require("utils") -local tree_cb = require'nvim-tree.config'.nvim_tree_callback -map('n', 'n', 'NvimTreeToggle') +local tree_cb = require("nvim-tree.config").nvim_tree_callback +map("n", "n", "NvimTreeToggle") -- map('n', 'r', ':NvimTreeRefresh') -- map('n','tf',':NvimTreeFindFile',option) -- NvimTreeOpen and NvimTreeClose are also available if you need them -- following options are the default -require'nvim-tree'.setup { - -- disables netrw completely - disable_netrw = true, - -- hijack netrw window on startup - hijack_netrw = true, - -- open the tree when running this setup function - open_on_setup = false, - -- will not open on setup if the filetype is in this list - ignore_ft_on_setup = {}, - -- closes neovim automatically when the tree is the last **WINDOW** in the view - auto_close = true, - -- opens the tree when changing/opening a new tab if the tree wasn't previously opened - open_on_tab = false, - -- hijacks new directory buffers when they are opened. - update_to_buf_dir = { - -- enable the feature - enable = true, - -- allow to open the tree if it was previously closed - auto_open = true, - }, - -- hijack the cursor in the tree to put it at the start of the filename - hijack_cursor = false, - -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) - update_cwd = false, - -- show lsp diagnostics in the signcolumn - lsp_diagnostics = false, - -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file - update_focused_file = { - -- enables the feature - enable = false, - -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory - -- only relevant when `update_focused_file.enable` is true - update_cwd = false, - -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory - -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true - ignore_list = {} - }, - -- configuration options for the system open command (`s` in the tree by default) - system_open = { - -- the command to run this, leaving nil should work in most cases - cmd = nil, - -- the command arguments as a list - args = {} - }, - - view = { - -- width of the window, can be either a number (columns) or a string in `%` - width = 30, - -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' - side = 'left', - -- if true the tree will resize itself after opening a file - auto_resize = false, - mappings = { - -- custom only false will merge the list with the default mappings - -- if true, it will only use your list to set the mappings - custom_only = false, - -- list of mappings to set on the tree manually - list = { - { key = {"", "o", "<2-LeftMouse>"}, cb = tree_cb("edit") }, - { key = {"<2-RightMouse>", ""}, cb = tree_cb("cd") }, - { key = "", cb = tree_cb("vsplit") }, - { key = "", cb = tree_cb("split") }, - { key = "", cb = tree_cb("tabnew") }, - { key = "<", cb = tree_cb("prev_sibling") }, - { key = ">", cb = tree_cb("next_sibling") }, - { key = "P", cb = tree_cb("parent_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("preview") }, - { key = "K", cb = tree_cb("first_sibling") }, - { key = "J", cb = tree_cb("last_sibling") }, - { key = "I", cb = tree_cb("toggle_ignored") }, - { key = "H", cb = tree_cb("toggle_dotfiles") }, - { key = "R", cb = tree_cb("refresh") }, - { key = "a", cb = tree_cb("create") }, - { key = "d", cb = tree_cb("remove") }, - { key = "r", cb = tree_cb("rename") }, - { key = "", cb = tree_cb("full_rename") }, - { key = "x", cb = tree_cb("cut") }, - { key = "c", cb = tree_cb("copy") }, - { key = "p", cb = tree_cb("paste") }, - { key = "y", cb = tree_cb("copy_name") }, - { key = "Y", cb = tree_cb("copy_path") }, - { key = "gy", cb = tree_cb("copy_absolute_path") }, - { key = "[c", cb = tree_cb("prev_git_item") }, - { key = "]c", cb = tree_cb("next_git_item") }, - { key = "-", cb = tree_cb("dir_up") }, - { key = "s", cb = tree_cb("system_open") }, - { key = "q", cb = tree_cb("close") }, - { key = "g?", cb = tree_cb("toggle_help") }, - - } - } - } -} +require("nvim-tree").setup({ + -- disables netrw completely + disable_netrw = true, + -- hijack netrw window on startup + hijack_netrw = true, + -- open the tree when running this setup function + open_on_setup = false, + -- will not open on setup if the filetype is in this list + ignore_ft_on_setup = {}, + -- closes neovim automatically when the tree is the last **WINDOW** in the view + auto_close = true, + -- opens the tree when changing/opening a new tab if the tree wasn't previously opened + open_on_tab = false, + -- hijacks new directory buffers when they are opened. + update_to_buf_dir = { + -- enable the feature + enable = true, + -- allow to open the tree if it was previously closed + auto_open = true, + }, + -- hijack the cursor in the tree to put it at the start of the filename + hijack_cursor = false, + -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) + update_cwd = true, + -- show lsp diagnostics in the signcolumn + lsp_diagnostics = false, + -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file + update_focused_file = { + -- enables the feature + enable = false, + -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory + -- only relevant when `update_focused_file.enable` is true + update_cwd = false, + -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory + -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true + ignore_list = {}, + }, + -- configuration options for the system open command (`s` in the tree by default) + system_open = { + -- the command to run this, leaving nil should work in most cases + cmd = nil, + -- the command arguments as a list + args = {}, + }, + view = { + -- width of the window, can be either a number (columns) or a string in `%` + width = 30, + -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' + side = "left", + -- if true the tree will resize itself after opening a file + auto_resize = false, + mappings = { + -- custom only false will merge the list with the default mappings + -- if true, it will only use your list to set the mappings + custom_only = false, + -- list of mappings to set on the tree manually + list = { + { key = { "", "o", "<2-LeftMouse>" }, cb = tree_cb("edit") }, + { key = { "<2-RightMouse>", "" }, cb = tree_cb("cd") }, + { key = "", cb = tree_cb("vsplit") }, + { key = "", cb = tree_cb("split") }, + { key = "", cb = tree_cb("tabnew") }, + { key = "<", cb = tree_cb("prev_sibling") }, + { key = ">", cb = tree_cb("next_sibling") }, + { key = "P", cb = tree_cb("parent_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("preview") }, + { key = "K", cb = tree_cb("first_sibling") }, + { key = "J", cb = tree_cb("last_sibling") }, + { key = "I", cb = tree_cb("toggle_ignored") }, + { key = "H", cb = tree_cb("toggle_dotfiles") }, + { key = "R", cb = tree_cb("refresh") }, + { key = "a", cb = tree_cb("create") }, + { key = "d", cb = tree_cb("remove") }, + { key = "r", cb = tree_cb("rename") }, + { key = "", cb = tree_cb("full_rename") }, + { key = "x", cb = tree_cb("cut") }, + { key = "c", cb = tree_cb("copy") }, + { key = "p", cb = tree_cb("paste") }, + { key = "y", cb = tree_cb("copy_name") }, + { key = "Y", cb = tree_cb("copy_path") }, + { key = "gy", cb = tree_cb("copy_absolute_path") }, + { key = "[c", cb = tree_cb("prev_git_item") }, + { key = "]c", cb = tree_cb("next_git_item") }, + { key = "-", cb = tree_cb("dir_up") }, + { key = "s", cb = tree_cb("system_open") }, + { key = "q", cb = tree_cb("close") }, + { key = "g?", cb = tree_cb("toggle_help") }, + }, + }, + }, +}) From 6c1024320ec3c59c3d9bbb0a6e9b0652d707cac0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 13:10:52 +0000 Subject: [PATCH 255/419] Remove vim-pandoc-syntax and the updated lspsaga repo --- lua/plugins.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 07a9e26..0caee4e 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -43,14 +43,10 @@ require 'paq-nvim' { --Nvim Treesitter configurations and abstraction layer {'nvim-treesitter/nvim-treesitter', run=':TSUpdate'}; ---Pandoc Markdown Syntax Highlighting-- -{'vim-pandoc/vim-pandoc-syntax',opt=true}; - -- === Preview Plugin === --A markdown previewer prebuild binary {'npxbr/glow.nvim',branch="main",run = ":GlowInstall"}; - --Vim Wiki {'vimwiki/vimwiki',branch="dev",opt=true}; @@ -61,7 +57,7 @@ require 'paq-nvim' { --Nvim LSP client {'neovim/nvim-lspconfig'}; --A light-weight lsp plugin -{'glepnir/lspsaga.nvim'}; +{'tami5/lspsaga.nvim'}; --Show function signature when you type {'ray-x/lsp_signature.nvim'}; -- A pretty diagnostics, references, telescope From 03a89a7b6ff7fc1b063beaa4fcab4ca1e3569d79 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 13:12:26 +0000 Subject: [PATCH 256/419] Enable respect buffer cwd --- lua/plugrc/tree.lua | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index 20f771c..f4b7767 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -8,15 +8,14 @@ g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers -- g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons). g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. --- g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options --- g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names --- g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree --- g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. --- let g:nvim_tree_symlink_arrow = ' >> ' " defaults to ' ➛ '. used as a separator between symlinks' source and target. ---g.nvim_tree_respect_buf_cwd = 1 --0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. +--g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options +--g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names +--g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree +--g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. +--g.nvim_tree_symlink_arrow = ' >> ' " defaults to ' ➛ '. used as a separator between symlinks' source and target. +g.nvim_tree_respect_buf_cwd = 1 --0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. --g.nvim_tree_create_in_closed_folder = 0 --1 by default, When creating files, sets the path of a file when cursor is on a closed folder to the parent folder when 0, and inside the folder when 1. --g.nvim_tree_refresh_wait = 500 --1000 by default, control how often the tree can be refreshed, 1000 means the tree can be refresh once per 1000ms. --- g.nvim_tree_lsp_diagnostics = 1 --0 by default, will show lsp diagnostics in the signcolumn. See :help nvim_tree_lsp_diagnostics g.nvim_tree_window_picker_exclude = { filetype = {'packer', 'qf'}, buftype = {'terminal'} From 3e7bbb9e08bdc0b301937b9ad2dea328ebc24e9c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 13:32:51 +0000 Subject: [PATCH 257/419] Update to the new nvim-cmp auto completion plugin from nvim-compe --- lua/plugins.lua | 130 ++++++++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 66 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 0caee4e..3d588c3 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -8,90 +8,88 @@ --/home/$USER/.local/share/nvim/plugged ---Avoid using standard Vim directory names like 'plugin' -require 'paq-nvim' { +require("paq-nvim")({ -{'savq/paq-nvim'}; --- === Editor Plugins === -- ---A commenter for different Language -{'b3nj5m1n/kommentary',opt=true}; + { "savq/paq-nvim" }, + -- === Editor Plugins === -- + --A commenter for different Language + { "b3nj5m1n/kommentary", opt = true }, --- === Themes and Colour Scheme === -{'navarasu/onedark.nvim'}; + -- === Themes and Colour Scheme === + { "navarasu/onedark.nvim" }, --- === Git Plugin === + -- === Git Plugin === ---A vim plugin which shows git diff in the gutter (sign column). -{'lewis6991/gitsigns.nvim'}; + --A vim plugin which shows git diff in the gutter (sign column). + { "lewis6991/gitsigns.nvim" }, --- === Status Line === + -- === Status Line === ---Status bar plugin --- A blazing fast and easy to configure neovim statusline -{'hoob3rt/lualine.nvim'}; --- Tabline --- A snazzy buffer line (with minimal tab integration) for Neovim -{'akinsho/nvim-bufferline.lua'}; + --Status bar plugin + -- A blazing fast and easy to configure neovim statusline + { "hoob3rt/lualine.nvim" }, + -- Tabline + -- A snazzy buffer line (with minimal tab integration) for Neovim + { "akinsho/nvim-bufferline.lua" }, --- === Fuzzy Finder === --- a highly extendable fuzzy finder over lists --- for Find, Filter, Preview, Pick -{'nvim-lua/popup.nvim',opt=true}; -{'nvim-lua/plenary.nvim'}; -{'nvim-telescope/telescope.nvim',opt=true}; + -- === Fuzzy Finder === + -- a highly extendable fuzzy finder over lists + -- for Find, Filter, Preview, Pick + { "nvim-lua/popup.nvim", opt = true }, + { "nvim-lua/plenary.nvim" }, + { "nvim-telescope/telescope.nvim", opt = true }, --- === Syntax Plugins === ---Nvim Treesitter configurations and abstraction layer -{'nvim-treesitter/nvim-treesitter', run=':TSUpdate'}; + -- === Syntax Plugins === + --Nvim Treesitter configurations and abstraction layer + { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }, --- === Preview Plugin === ---A markdown previewer prebuild binary -{'npxbr/glow.nvim',branch="main",run = ":GlowInstall"}; + -- === Preview Plugin === + --A markdown previewer prebuild binary + { "npxbr/glow.nvim", branch = "main", run = ":GlowInstall" }, ---Vim Wiki -{'vimwiki/vimwiki',branch="dev",opt=true}; + --Vim Wiki + { "vimwiki/vimwiki", branch = "dev", opt = true }, --- === Language Specific Plugins === + -- === Language Specific Plugins === + -- == LSP Client === + --Nvim LSP client + { "neovim/nvim-lspconfig" }, + --A light-weight lsp plugin + { "tami5/lspsaga.nvim" }, + --Show function signature when you type + { "ray-x/lsp_signature.nvim" }, + -- A pretty diagnostics, references, telescope + -- results, quickfix and location + -- list to help you solve all the trouble your code is causing + { "folke/trouble.nvim", opt = true }, --- == LSP Client === ---Nvim LSP client -{'neovim/nvim-lspconfig'}; ---A light-weight lsp plugin -{'tami5/lspsaga.nvim'}; ---Show function signature when you type -{'ray-x/lsp_signature.nvim'}; --- A pretty diagnostics, references, telescope --- results, quickfix and location --- list to help you solve all the trouble your code is causing -{'folke/trouble.nvim',opt=true}; + --displays a popup with possible key bindings + --of the command you started typing + { "folke/which-key.nvim" }, ---displays a popup with possible key bindings ---of the command you started typing -{"folke/which-key.nvim"}; + -- == Auto Completions Engine == + "hrsh7th/nvim-cmp", -- Autocompletion plugin + "hrsh7th/cmp-nvim-lsp", -- LSP source for nvim-cmp --- == Auto Completions Engine == -{'hrsh7th/nvim-compe'}; + -- Auto pairs + { "windwp/nvim-autopairs" }, --- Auto pairs -{'windwp/nvim-autopairs'}; + -- === Code Snippets Plugins === + { "L3MON4D3/LuaSnip" }, --- === Code Snippets Plugins === -{"L3MON4D3/LuaSnip"}; + -- === Tag Bar Plugin === --- === Tag Bar Plugin === + --View and search LSP symbols, tags in Vim/NeoVim.-- + { "liuchengxu/vista.vim", opt = true }, ---View and search LSP symbols, tags in Vim/NeoVim.-- -{'liuchengxu/vista.vim',opt=true}; + -- === UI === -- + -- A Neovim File explorer + { "kyazdani42/nvim-tree.lua" }, --- === UI === -- --- A Neovim File explorer -{'kyazdani42/nvim-tree.lua'}; + -- == Icons == -- --- == Icons == -- - --- Glyphs and Icons for neovim ---Plug 'ryanoasis/vim-devicons' -{'kyazdani42/nvim-web-devicons'}; - --- Initialize plugin system -} + -- Glyphs and Icons for neovim + --Plug 'ryanoasis/vim-devicons' + { "kyazdani42/nvim-web-devicons" }, +}) From 2440bbd367dc1f0d8a229ac87d85b6542d23b94c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 15:56:33 +0000 Subject: [PATCH 258/419] configure nvim-cmp --- lua/plugrc/compe.lua | 102 +++++++++++++++++++++++++++++++------------ 1 file changed, 73 insertions(+), 29 deletions(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index a712622..07dfe94 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -1,30 +1,74 @@ -require'compe'.setup { - enabled = true; - autocomplete = true; - debug = false; - min_length = 1; - preselect = 'enable'; - throttle_time = 80; - source_timeout = 200; - incomplete_delay = 400; - max_abbr_width = 100; - max_kind_width = 100; - max_menu_width = 100; - documentation = true; +-- Setup nvim-cmp. +local cmp = require("cmp") +local luasnip = require("luasnip") - source = { - path = true; - buffer = true; - calc = false; - luasnip = true; - ultisnips = false; - spell = false; - nvim_lua = true; - tags = false; - treesitter = false; - nvim_lsp = true; - vsnip = false; - emoji = true; - }; -} -vim.cmd[[highlight link CompeDocumentation NormalFloat]] +local has_words_before = function() + if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then + return false + end + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 + and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1] + :sub(col, col) + :match("%s") + == nil +end + +local t = function(key) + vim.fn.feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), "n") +end + +cmp.setup({ + snippet = { + expand = function(args) + -- For `luasnip` user. + require("luasnip").lsp_expand(args.body) + end, + }, + mapping = { + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.close(), + [""] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping(function(fallback) + if vim.fn.pumvisible() == 1 then + t "" + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() -- The fallback function sends a already mapped key. In this case, it's probably ``. + end + end, { + "i", + "s", + }), + + [""] = cmp.mapping(function(fallback) + if vim.fn.pumvisible() == 1 then + t "" + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { + "i", + "s", + }), + }, + sources = { + { name = "nvim_lsp" }, + { name = "buffer" }, + { name = "luasnip" }, + { name = "path" }, + { name = "nvim_lua" }, + { name = "emoji" }, + { name = "spell" }, + }, +}) +--vim.cmd[[highlight link CompeDocumentation NormalFloat]] From eb3bd4f719b78109e6d0ee37a7227b3ecfb36d92 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 16:07:29 +0000 Subject: [PATCH 259/419] Remove mapping/compe since all the bindings are now taken care of in the setup method of it successor nvim-cmp --- lua/mapping/compe.lua | 40 ---------------------------------------- lua/mapping/init.lua | 1 - 2 files changed, 41 deletions(-) delete mode 100644 lua/mapping/compe.lua diff --git a/lua/mapping/compe.lua b/lua/mapping/compe.lua deleted file mode 100644 index 31e0bcf..0000000 --- a/lua/mapping/compe.lua +++ /dev/null @@ -1,40 +0,0 @@ -require('utils') - -local check_back_space = function() - local col = vim.fn.col('.') - 1 - if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then - return true - else - return false - end -end - --- Use (s-)tab to: ---- move to prev/next item in completion menuone ---- jump to prev/next snippet's placeholder -_G.tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif require'luasnip'.expand_or_jumpable() then - return t "luasnip-expand-or-jump" - elseif check_back_space() then - return t "" - else - return vim.fn['compe#complete']() - end -end -_G.s_tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif require'luasnip'.jumpable(-1) then - return t "luasnip-jump-prev" - else - -- If is not working in your terminal, change it to - return t "" - end -end -local opt = {noremap = false ,expr = true} -map("i", "", "v:lua.tab_complete()", opt) -map("s", "", "v:lua.tab_complete()", opt) -map("i", "", "v:lua.s_tab_complete()", opt) -map("s", "", "v:lua.s_tab_complete()", opt) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 268c18a..b7839c3 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -2,7 +2,6 @@ require('mapping/spellcheck') require('mapping/tab_buffer') require('mapping/highlighting') require('mapping/terminal') -require('mapping/compe') require('mapping/lspconfig') require('mapping/autopairs') require('mapping/tree') From d858eb4b1f94293526f42f9948e1e06bf6894458 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 16:08:07 +0000 Subject: [PATCH 260/419] Reconfigure autopairs for nvim-cmp --- lua/mapping/autopairs.lua | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lua/mapping/autopairs.lua b/lua/mapping/autopairs.lua index 3510e66..705980e 100644 --- a/lua/mapping/autopairs.lua +++ b/lua/mapping/autopairs.lua @@ -1,4 +1,11 @@ -require("nvim-autopairs.completion.compe").setup({ - map_cr = true, -- map on insert mode - map_complete = true -- it will auto insert `(` after select function or method item +-- you need setup cmp first put this after cmp.setup() +require("nvim-autopairs.completion.cmp").setup({ + map_cr = true, -- map on insert mode + map_complete = true, -- it will auto insert `(` (map_char) after select function or method item + auto_select = true, -- automatically select the first item + insert = false, -- use insert confirm behavior instead of replace + map_char = { -- modifies the function or method delimiter by filetypes + all = '(', + tex = '{' + } }) From 41e753848b8da2be6d31828bc3f70ec30d4c847a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 20:16:43 +0000 Subject: [PATCH 261/419] Use the default mappings for some time --- lua/mapping/lspconfig.lua | 105 +++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 47 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 17ba788..d52a0c6 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -24,51 +24,62 @@ set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) +vim.cmd [[autocmd CursorHold * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false})]] -- lsp provider to find the cursor word definition and reference -vim.cmd [[ - nnoremap gdr lua require'lspsaga.provider'.lsp_finder() -]] - --- code action -vim.cmd [[ -nnoremap ca lua require('lspsaga.codeaction').code_action() -vnoremap ca :lua require('lspsaga.codeaction').range_code_action() -]] - --- show hover doc -vim.cmd [[ -nnoremap K lua require('lspsaga.hover').render_hover_doc() -]] - --- scroll down hover doc or scroll in definition preview -vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] - --- scroll up hover doc -vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] - --- show signature help -vim.cmd [[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] - --- rename -vim.cmd [[nnoremap rn lua require('lspsaga.rename').rename()]] - --- preview definition -vim.cmd [[nnoremap pd lua require'lspsaga.provider'.preview_definition()]] - --- jump diagnostic -vim.cmd [[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] -vim.cmd [[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] - --- only show diagnostic if cursor is over the area -vim.cmd [[nnoremap scd lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] - --- show line diagnostic -vim.cmd [[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] - -vim.cmd [[autocmd CursorHold * lua require'lspsaga.diagnostic'.show_line_diagnostics()]] - --- float terminal also you can pass the cli command in open_float_terminal function -vim.cmd [[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] - --- or open_float_terminal('lazygit') -vim.cmd [[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] +--vim.cmd [[ +-- nnoremap gdr lua require'lspsaga.provider'.lsp_finder() +--]] +-- +---- code action +--vim.cmd [[ +--nnoremap ca lua require('lspsaga.codeaction').code_action() +--vnoremap ca :lua require('lspsaga.codeaction').range_code_action() +--]] +-- +---- show hover doc +--vim.cmd [[ +--nnoremap K lua require('lspsaga.hover').render_hover_doc() +--]] +-- +---- scroll down hover doc or scroll in definition preview +--vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] +-- +---- scroll up hover doc +--vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] +-- +---- show signature help +--vim.cmd [[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] +-- +---- rename +--vim.cmd [[nnoremap rn lua require('lspsaga.rename').rename()]] +-- +---- preview definition +--vim.cmd [[nnoremap pd lua require'lspsaga.provider'.preview_definition()]] +-- +---- jump diagnostic +--vim.cmd [[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] +--vim.cmd [[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] +-- +---- only show diagnostic if cursor is over the area +--vim.cmd [[nnoremap scd lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] +-- +---- show line diagnostic +--vim.cmd [[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] +-- +--vim.cmd [[autocmd CursorHold * lua require'lspsaga.diagnostic'.show_line_diagnostics()]] +-- +---- float terminal also you can pass the cli command in open_float_terminal function +--vim.cmd [[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] +-- +---- or open_float_terminal('lazygit') +--vim.cmd [[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] From b772247fef2f721c7f2c498922ec9062fdd4eb82 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 20:17:27 +0000 Subject: [PATCH 262/419] Update gitsigns configuration to the latest --- lua/plugrc/gitsigns.lua | 124 ++++++++++++++++++++++++---------------- 1 file changed, 74 insertions(+), 50 deletions(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index bf13715..2b4bbff 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -7,13 +7,13 @@ local GitStatus = { Deleted = "✖", Dirty = "✗", Clean = "✔︎", - Ignored = '☒', - Unknown = "?" + Ignored = "☒", + Unknown = "?", } local nvim_tree_icons = { - default = '', - symlink = '', + default = "", + symlink = "", git = { unstaged = "✗", staged = "✓", @@ -21,7 +21,7 @@ local nvim_tree_icons = { renamed = "➜", untracked = "★", deleted = "", - ignored = "◌" + ignored = "◌", }, folder = { arrow_open = "", @@ -31,80 +31,104 @@ local nvim_tree_icons = { empty = "", empty_open = "", symlink = "", - symlink_open = "" + symlink_open = "", }, - lsp = {hint = "", info = "", warning = "", error = ""} + lsp = { hint = "", info = "", warning = "", error = "" }, } -require('gitsigns').setup({ +require("gitsigns").setup({ signs = { add = { - hl = 'GitSignsAdd', + hl = "GitSignsAdd", text = "✔︎", - numhl = 'GitSignsAddNr', - linehl = 'GitSignsAddLn' + numhl = "GitSignsAddNr", + linehl = "GitSignsAddLn", }, change = { - hl = 'GitSignsChange', + hl = "GitSignsChange", text = "✹", - numhl = 'GitSignsChangeNr', - linehl = 'GitSignsChangeLn' + numhl = "GitSignsChangeNr", + linehl = "GitSignsChangeLn", }, delete = { - hl = 'GitSignsDelete', + hl = "GitSignsDelete", text = "✗", - numhl = 'GitSignsDeleteNr', - linehl = 'GitSignsDeleteLn' + numhl = "GitSignsDeleteNr", + linehl = "GitSignsDeleteLn", }, topdelete = { - hl = 'GitSignsDelete', - text = '‾', - numhl = 'GitSignsDeleteNr', - linehl = 'GitSignsDeleteLn' + hl = "GitSignsDelete", + text = "‾", + numhl = "GitSignsDeleteNr", + linehl = "GitSignsDeleteLn", }, changedelete = { - hl = 'GitSignsChange', - text = '~', - numhl = 'GitSignsChangeNr', - linehl = 'GitSignsChangeLn' - } + hl = "GitSignsChange", + text = "~", + numhl = "GitSignsChangeNr", + linehl = "GitSignsChangeLn", + }, }, - numhl = true, - linehl = false, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = true, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` keymaps = { -- Default keymap options noremap = true, buffer = true, - - ['n ]c'] = { + ["n ]c"] = { expr = true, - "&diff ? ']c' : 'lua require\"gitsigns.actions\".next_hunk()'" + "&diff ? ']c' : 'lua require\"gitsigns.actions\".next_hunk()'", }, - ['n [c'] = { + ["n [c"] = { expr = true, - "&diff ? '[c' : 'lua require\"gitsigns.actions\".prev_hunk()'" + "&diff ? '[c' : 'lua require\"gitsigns.actions\".prev_hunk()'", }, - - ['n hs'] = 'lua require"gitsigns".stage_hunk()', - ['v hs'] = 'lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})', - ['n hu'] = 'lua require"gitsigns".undo_stage_hunk()', - ['n hr'] = 'lua require"gitsigns".reset_hunk()', - ['v hr'] = 'lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})', - ['n hR'] = 'lua require"gitsigns".reset_buffer()', - ['n hp'] = 'lua require"gitsigns".preview_hunk()', - ['n hb'] = 'lua require"gitsigns".blame_line(true)', - + ["n hs"] = 'lua require"gitsigns".stage_hunk()', + ["v hs"] = 'lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})', + ["n hu"] = 'lua require"gitsigns".undo_stage_hunk()', + ["n hr"] = 'lua require"gitsigns".reset_hunk()', + ["v hr"] = 'lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})', + ["n hR"] = 'lua require"gitsigns".reset_buffer()', + ["n hp"] = 'lua require"gitsigns".preview_hunk()', + ["n hb"] = 'lua require"gitsigns".blame_line(true)', + ["n hS"] = 'lua require"gitsigns".stage_buffer()', + ["n hU"] = 'lua require"gitsigns".reset_buffer_index()', -- Text objects - ['o ih'] = ':lua require"gitsigns.actions".select_hunk()', - ['x ih'] = ':lua require"gitsigns.actions".select_hunk()' + ["o ih"] = ':lua require"gitsigns.actions".select_hunk()', + ["x ih"] = ':lua require"gitsigns.actions".select_hunk()', + }, + watch_gitdir = { + interval = 1000, + follow_files = true, }, - watch_index = {interval = 1000, follow_files = true}, - current_line_blame = false, current_line_blame_delay = 1000, - current_line_blame_position = 'eol', + attach_to_untracked = true, + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + current_line_blame_opts = { + virt_text = true, + virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' + delay = 1000, + }, + current_line_blame_formatter_opts = { + relative_time = false, + }, + max_file_length = 40000, + preview_config = { + -- Options passed to nvim_open_win + border = "single", + style = "minimal", + relative = "cursor", + row = 0, + col = 1, + }, + yadm = { + enable = false, + }, + current_line_blame_position = "eol", sign_priority = 6, update_debounce = 100, status_formatter = nil, -- Use default - word_diff = false, - use_internal_diff = true -- If luajit is present + use_internal_diff = true, -- If luajit is present }) From f1fd58dda5757076b71feb3d97ebe8b114cf4ad3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 20:18:41 +0000 Subject: [PATCH 263/419] Use ccls's default for compilationDatabaseDirectory --- lua/plugrc/lspconfig/settings.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index e6b3396..fde5698 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -120,7 +120,6 @@ settings.ccls_settings = { { filetypes = { "c", "cpp" }, init_options = { - compilationDatabaseDirectory = vim.loop.cwd, index = { threads = 0, }, From abe2f4f7b38cb89c709df3d16df4932ce5c95a68 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 20:22:17 +0000 Subject: [PATCH 264/419] Comment out lspsaga configurations and display_diagnostics_sources --- lua/plugrc/lspconfig/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 6a3d0b6..94466b6 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -11,16 +11,18 @@ local disable_conflicting_formatters = function(client, buffer) end local on_attach = function(client, buffer) - local signature_cfg = require("plugrc/lspconfig/signature") - local saga_cfg = require("plugrc/lspconfig/saga") local builtin_lsp = require("plugrc/lspconfig/config") builtin_lsp.completion_kinds() builtin_lsp.sign_column_diagnostic_symbols() - builtin_lsp.display_diagnostics_sources() + builtin_lsp.disable_virtual_text() + --builtin_lsp.display_diagnostics_sources() + + --local saga_cfg = require("plugrc/lspconfig/saga") + --require("lspsaga").init_lsp_saga(saga_cfg) + local signature_cfg = require("plugrc/lspconfig/signature") require("lsp_signature").on_attach(signature_cfg) - require("lspsaga").init_lsp_saga(saga_cfg) local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) @@ -85,6 +87,8 @@ end -- config that activates keymaps and enables snippet support local function make_config() local capabilities = vim.lsp.protocol.make_client_capabilities() + -- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. + capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true capabilities.textDocument.signatureHelp.contextSupport = true From 0b710d090524983793e0d245c48a350c55611dde Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 4 Oct 2021 20:23:33 +0000 Subject: [PATCH 265/419] Add nvim-cmp with the sources i need --- lua/plugins.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 3d588c3..dcb04c8 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -69,14 +69,21 @@ require("paq-nvim")({ { "folke/which-key.nvim" }, -- == Auto Completions Engine == - "hrsh7th/nvim-cmp", -- Autocompletion plugin - "hrsh7th/cmp-nvim-lsp", -- LSP source for nvim-cmp + { "hrsh7th/nvim-cmp" }, -- Autocompletion plugin + -- Completion Sources -- + "hrsh7th/cmp-nvim-lsp", -- nvim-cmp source for neovim builtin LSP client + "hrsh7th/cmp-path", --nvim-cmp source for path + "hrsh7th/cmp-buffer", --nvim-cmp source for buffer words + "hrsh7th/cmp-nvim-lua", --nvim-cmp source for nvim lua + "hrsh7th/cmp-emoji", --nvim-cmp source for emoji + "f3fora/cmp-spell", --spell source for nvim-cmp based on vim's spellsuggest -- Auto pairs { "windwp/nvim-autopairs" }, -- === Code Snippets Plugins === { "L3MON4D3/LuaSnip" }, + "saadparwaiz1/cmp_luasnip", --luasnip completion source for nvim-cmp -- === Tag Bar Plugin === From 80360af03ea3245927571697fc7c3929be2d0dd7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 13:27:38 +0000 Subject: [PATCH 266/419] Replace vista with symbols-outline --- lua/lazy/init.lua | 2 +- lua/lazy/symbols.lua | 52 ++++++++++++++++++++++++++++++++++++++++++++ lua/lazy/vista.lua | 7 ------ lua/plugins.lua | 4 ++-- 4 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 lua/lazy/symbols.lua delete mode 100644 lua/lazy/vista.lua diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index f0c5fd9..f7c5817 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,6 +1,6 @@ require('lazy/telescope') require('lazy/trouble') -require('lazy/vista') require('lazy/kommentary') require('lazy/vimwiki') require('lazy/glow') +require('lazy/symbols') diff --git a/lua/lazy/symbols.lua b/lua/lazy/symbols.lua new file mode 100644 index 0000000..2cc4057 --- /dev/null +++ b/lua/lazy/symbols.lua @@ -0,0 +1,52 @@ +vim.g.symbols_outline = { + highlight_hovered_item = true, + show_guides = true, + auto_preview = true, + position = "right", + width = 25, + show_numbers = false, + show_relative_numbers = false, + show_symbol_details = true, + preview_bg_highlight = "Pmenu", + keymaps = { -- These keymaps can be a string or a table for multiple keys + close = { "", "q" }, + goto_location = "", + focus_location = "o", + hover_symbol = "", + toggle_preview = "K", + rename_symbol = "r", + code_actions = "a", + }, + lsp_blacklist = {}, + symbol_blacklist = {}, + symbols = { + File = { icon = "", hl = "TSURI" }, + Module = { icon = "", hl = "TSNamespace" }, + Namespace = { icon = "", hl = "TSNamespace" }, + Package = { icon = "", hl = "TSNamespace" }, + Class = { icon = "𝓒", hl = "TSType" }, + Method = { icon = "ƒ", hl = "TSMethod" }, + Property = { icon = "", hl = "TSMethod" }, + Field = { icon = "", hl = "TSField" }, + Constructor = { icon = "", hl = "TSConstructor" }, + Enum = { icon = "ℰ", hl = "TSType" }, + Interface = { icon = "ﰮ", hl = "TSType" }, + Function = { icon = "", hl = "TSFunction" }, + Variable = { icon = "", hl = "TSConstant" }, + Constant = { icon = "", hl = "TSConstant" }, + String = { icon = "𝓐", hl = "TSString" }, + Number = { icon = "#", hl = "TSNumber" }, + Boolean = { icon = "⊨", hl = "TSBoolean" }, + Array = { icon = "", hl = "TSConstant" }, + Object = { icon = "⦿", hl = "TSType" }, + Key = { icon = "🔐", hl = "TSType" }, + Null = { icon = "NULL", hl = "TSType" }, + EnumMember = { icon = "", hl = "TSField" }, + Struct = { icon = "𝓢", hl = "TSType" }, + Event = { icon = "🗲", hl = "TSType" }, + Operator = { icon = "+", hl = "TSOperator" }, + TypeParameter = { icon = "𝙏", hl = "TSParameter" }, + }, +} +require("utils") +map( "n", "so", "packadd symbols-outline.nvim|SymbolsOutline", { silent = true }) diff --git a/lua/lazy/vista.lua b/lua/lazy/vista.lua deleted file mode 100644 index 4012be6..0000000 --- a/lua/lazy/vista.lua +++ /dev/null @@ -1,7 +0,0 @@ -require('utils') - -local g=vim.g - -g.vista_sidebar_width=40 -g.vista_echo_cursor_strategy='floating_win' -map('n','vt','packadd vista.vim|Vista!!',{silent=true}) diff --git a/lua/plugins.lua b/lua/plugins.lua index dcb04c8..ce1d956 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -85,10 +85,10 @@ require("paq-nvim")({ { "L3MON4D3/LuaSnip" }, "saadparwaiz1/cmp_luasnip", --luasnip completion source for nvim-cmp - -- === Tag Bar Plugin === + -- === LSP symbols === --View and search LSP symbols, tags in Vim/NeoVim.-- - { "liuchengxu/vista.vim", opt = true }, + { "simrat39/symbols-outline.nvim", opt = true }, -- === UI === -- -- A Neovim File explorer From 806b67f1a9ba80ddedca5e957eb5a9b464cdd1d6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 16:57:48 +0000 Subject: [PATCH 267/419] Replace vimwiki with neorg --- lua/lazy/vimwiki.lua | 4 --- lua/plugins.lua | 67 ++++++++++++++++++++------------------------ 2 files changed, 30 insertions(+), 41 deletions(-) delete mode 100644 lua/lazy/vimwiki.lua diff --git a/lua/lazy/vimwiki.lua b/lua/lazy/vimwiki.lua deleted file mode 100644 index acf9262..0000000 --- a/lua/lazy/vimwiki.lua +++ /dev/null @@ -1,4 +0,0 @@ -require('utils') -local opt = {noremap = false} - -map('n','ww','[[packadd vimwiki|VimwikiIndex]]',opt) diff --git a/lua/plugins.lua b/lua/plugins.lua index ce1d956..d87df62 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -1,31 +1,29 @@ -- ============================================================================ -- -- === PLUGINS === -- -- ============================================================================ -- ---PLUG INS FOR NEOVIM ---Specify a directory for plugins +-- PLUG INS FOR NEOVIM +-- Specify a directory for plugins ---For Neovim: ~/.local/share/nvim/plugged ---To make config resuable system wide use absolute path instead eg. ---/home/$USER/.local/share/nvim/plugged +-- To make config resuable system wide use absolute path instead eg. +-- /home/$USER/.local/share/nvim/plugged ---Avoid using standard Vim directory names like 'plugin' - require("paq-nvim")({ { "savq/paq-nvim" }, + -- === Editor Plugins === -- - --A commenter for different Language + -- A commenter for different Language { "b3nj5m1n/kommentary", opt = true }, -- === Themes and Colour Scheme === { "navarasu/onedark.nvim" }, -- === Git Plugin === - - --A vim plugin which shows git diff in the gutter (sign column). + -- A vim plugin which shows git diff in the gutter (sign column). { "lewis6991/gitsigns.nvim" }, -- === Status Line === - - --Status bar plugin + -- Status bar plugin -- A blazing fast and easy to configure neovim statusline { "hoob3rt/lualine.nvim" }, -- Tabline @@ -34,60 +32,56 @@ require("paq-nvim")({ -- === Fuzzy Finder === -- a highly extendable fuzzy finder over lists - -- for Find, Filter, Preview, Pick - { "nvim-lua/popup.nvim", opt = true }, - { "nvim-lua/plenary.nvim" }, + { "nvim-lua/popup.nvim", opt = true }, -- for Find, Filter, Preview, Pick + { "nvim-lua/plenary.nvim" }, -- reusable lua funtions { "nvim-telescope/telescope.nvim", opt = true }, -- === Syntax Plugins === - --Nvim Treesitter configurations and abstraction layer + -- Nvim Treesitter configurations and abstraction layer { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }, -- === Preview Plugin === - --A markdown previewer prebuild binary + -- A markdown previewer prebuild binary { "npxbr/glow.nvim", branch = "main", run = ":GlowInstall" }, - --Vim Wiki - { "vimwiki/vimwiki", branch = "dev", opt = true }, + -- === Note Taking Plugin === + { "vhyrro/neorg", branch = "unstable" }, -- neovim note taking tool -- === Language Specific Plugins === - -- == LSP Client === - --Nvim LSP client - { "neovim/nvim-lspconfig" }, - --A light-weight lsp plugin - { "tami5/lspsaga.nvim" }, - --Show function signature when you type + -- Nvim LSP client + { "neovim/nvim-lspconfig" }, -- A light-weight lsp plugin + { "tami5/lspsaga.nvim" }, -- Show function signature when you type { "ray-x/lsp_signature.nvim" }, -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing { "folke/trouble.nvim", opt = true }, - --displays a popup with possible key bindings - --of the command you started typing + -- displays a popup with possible key bindings + -- of the command you started typing { "folke/which-key.nvim" }, -- == Auto Completions Engine == - { "hrsh7th/nvim-cmp" }, -- Autocompletion plugin + { "hrsh7th/nvim-cmp" }, + -- Autocompletion plugin -- Completion Sources -- "hrsh7th/cmp-nvim-lsp", -- nvim-cmp source for neovim builtin LSP client - "hrsh7th/cmp-path", --nvim-cmp source for path - "hrsh7th/cmp-buffer", --nvim-cmp source for buffer words - "hrsh7th/cmp-nvim-lua", --nvim-cmp source for nvim lua - "hrsh7th/cmp-emoji", --nvim-cmp source for emoji - "f3fora/cmp-spell", --spell source for nvim-cmp based on vim's spellsuggest + "hrsh7th/cmp-path", -- nvim-cmp source for path + "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words + "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua + "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji + "f3fora/cmp-spell", -- spell source for nvim-cmp based on vim's spellsuggest -- Auto pairs { "windwp/nvim-autopairs" }, -- === Code Snippets Plugins === - { "L3MON4D3/LuaSnip" }, - "saadparwaiz1/cmp_luasnip", --luasnip completion source for nvim-cmp + { "L3MON4D3/LuaSnip" }, -- snippets provider for lua + "saadparwaiz1/cmp_luasnip", -- luasnip completion source for nvim-cmp -- === LSP symbols === - - --View and search LSP symbols, tags in Vim/NeoVim.-- + -- View and search LSP symbols, tags in Vim/NeoVim.-- { "simrat39/symbols-outline.nvim", opt = true }, -- === UI === -- @@ -95,8 +89,7 @@ require("paq-nvim")({ { "kyazdani42/nvim-tree.lua" }, -- == Icons == -- - -- Glyphs and Icons for neovim - --Plug 'ryanoasis/vim-devicons' + -- Plug 'ryanoasis/vim-devicons' { "kyazdani42/nvim-web-devicons" }, }) From ef327cb39e4f6c07872210196847ca657a251714 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 16:58:46 +0000 Subject: [PATCH 268/419] Add configuration for neorg --- lua/plugrc/neorg.lua | 115 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 lua/plugrc/neorg.lua diff --git a/lua/plugrc/neorg.lua b/lua/plugrc/neorg.lua new file mode 100644 index 0000000..b2423d8 --- /dev/null +++ b/lua/plugrc/neorg.lua @@ -0,0 +1,115 @@ +require("neorg").setup({ + load = { + ["core.defaults"] = {}, -- Tells neorg to load the module called core.defaults with no extra data + ["core.norg.concealer"] = {}, -- Since this module isn't part of core.defaults, we can include it ourselves, like so + ["core.norg.completion"] = { + config = { + engine = "nvim-cmp", -- We current support nvim-compe and nvim-cmp only + }, + }, + ["core.norg.dirman"] = { + config = { -- Load a custom configuration + -- Define your workspaces here! + workspaces = { + -- You can give it any name and any directory, get creative! + notes = "~/neorg", + }, + -- Automatically detect whenever we have entered a subdirectory of a workspace + autodetect = true, + -- Automatically change the directory to the root of the workspace every time + autochdir = true, + }, + }, + }, + hook = function() + -- The code that we will showcase below goes here + -- This sets the leader for all Neorg keybinds. It is separate from the regular , + -- And allows you to shove every Neorg keybind under one "umbrella". + local neorg_leader = "o" -- You may also want to set this to o for "organization" + + -- Require the user callbacks module, which allows us to tap into the core of Neorg + local neorg_callbacks = require("neorg.callbacks") + + -- Listen for the enable_keybinds event, which signals a "ready" state meaning we can bind keys. + -- This hook will be called several times, e.g. whenever the Neorg Mode changes or an event that + -- needs to reevaluate all the bound keys is invoked + neorg_callbacks.on_event( + "core.keybinds.events.enable_keybinds", + function(_, keybinds) + -- Map all the below keybinds only when the "norg" mode is active + keybinds.map_event_to_mode("norg", { + n = { -- Bind keys in normal mode + -- Keys for managing TODO items and setting their states + { "gtd", "core.norg.qol.todo_items.todo.task_done" }, + { "gtu", "core.norg.qol.todo_items.todo.task_undone" }, + { "gtp", "core.norg.qol.todo_items.todo.task_pending" }, + { + "", + "core.norg.qol.todo_items.todo.task_cycle", + }, + }, + }, { + silent = true, + noremap = true, + }) + end + ) + end, + logger = { + -- Should print the output to neovim while running + use_console = true, + -- Should highlighting be used in console (using echohl) + highlights = true, + -- Should write to a file + use_file = true, + -- Any messages above this level will be logged. + level = "warn", + -- Level configuration + modes = { + { name = "trace", hl = "Comment" }, + { name = "debug", hl = "Comment" }, + { name = "info", hl = "None" }, + { name = "warn", hl = "WarningMsg" }, + { name = "error", hl = "ErrorMsg" }, + { name = "fatal", hl = "ErrorMsg" }, + }, + -- Can limit the number of decimals displayed for floats + float_precision = 0.01, + }, + icons = { + todo = { + enabled = true, -- Conceal TODO items + + done = { + enabled = true, -- Conceal whenever an item is marked as done + icon = "", + }, + pending = { + enabled = true, -- Conceal whenever an item is marked as pending + icon = "", + }, + undone = { + enabled = true, -- Conceal whenever an item is marked as undone + icon = "×", + }, + }, + quote = { + enabled = true, -- Conceal quotes + icon = "∣", + }, + heading = { + enabled = true, -- Enable beautified headings + + -- Define icons for all the different heading levels + level_1 = { + enabled = true, + icon = "◉", + }, + + level_2 = { + enabled = true, + icon = "○", + }, + }, + }, +}) From 5ab155149c7bb5b99a06fe43fe10c7061d16f11b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 17:00:38 +0000 Subject: [PATCH 269/419] Add neorg as a completion source --- lua/plugrc/compe.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 07dfe94..6b1f254 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -35,7 +35,7 @@ cmp.setup({ [""] = cmp.mapping.confirm({ select = true }), [""] = cmp.mapping(function(fallback) if vim.fn.pumvisible() == 1 then - t "" + t("") elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() elseif has_words_before() then @@ -50,7 +50,7 @@ cmp.setup({ [""] = cmp.mapping(function(fallback) if vim.fn.pumvisible() == 1 then - t "" + t("") elseif luasnip.jumpable(-1) then luasnip.jump(-1) else @@ -69,6 +69,7 @@ cmp.setup({ { name = "nvim_lua" }, { name = "emoji" }, { name = "spell" }, + { name = "neorg" }, }, }) --vim.cmd[[highlight link CompeDocumentation NormalFloat]] From 967ad8b14f5c8a8b9efef24bc7517fb8dba42ce6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 17:01:25 +0000 Subject: [PATCH 270/419] Add initialization for neorg --- lua/plugrc/init.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 1bd28c3..ce180b6 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -2,9 +2,10 @@ --== PLUGINS INIT == --========================================================== -- -require('plugrc/lspconfig') -require('plugrc/gitsigns') -require('plugrc/compe') -require('plugrc/autopairs') -require('plugrc/whichkey') -require('plugrc/tree') +require('plugrc.lspconfig') +require('plugrc.gitsigns') +require('plugrc.compe') +require('plugrc.autopairs') +require('plugrc.whichkey') +require('plugrc.tree') +require('plugrc.neorg') From 603cf259e0441d72dd246c1beb3649714bf425b0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 17:02:31 +0000 Subject: [PATCH 271/419] Add treesitter configuration for norg --- lua/plugrc/treesitter.lua | 53 ++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 8319f15..22c7d6a 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -1,16 +1,39 @@ -require'nvim-treesitter.configs'.setup { - ensure_installed = {'cpp','zig','nix','comment','json','haskell','lua','vue','typescript','scss','html'}, - -- one of "all", "maintained" (parsers with maintainers), or a list of languages - ignore_install = {}, -- List of parsers to ignore installing - highlight = { - enable = true, -- false will disable the whole extension - disable = {}, -- list of language that will be disabled - }, - incremental_selection = { - enable = true - }, - indent = { - enable = true - }, - autopairs={enable = true} +local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() + +parser_configs.norg = { + install_info = { + url = "https://github.com/nvim-neorg/tree-sitter-norg", + files = { "src/parser.c", "src/scanner.cc" }, + branch = "main", + }, } + +require("nvim-treesitter.configs").setup({ + ensure_installed = { + "cpp", + "zig", + "nix", + "comment", + "json", + "haskell", + "lua", + "vue", + "typescript", + "scss", + "html", + "norg" + }, + -- one of "all", "maintained" (parsers with maintainers), or a list of languages + ignore_install = {}, -- List of parsers to ignore installing + highlight = { + enable = true, -- false will disable the whole extension + disable = {}, -- list of language that will be disabled + }, + incremental_selection = { + enable = true, + }, + indent = { + enable = true, + }, + autopairs = { enable = true }, +}) From eca313a404f84b7a624936ca645442902cb10fa0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 5 Oct 2021 17:06:04 +0000 Subject: [PATCH 272/419] Remove vimwiki from lazy initialization --- lua/lazy/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index f7c5817..70a627d 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,6 +1,5 @@ require('lazy/telescope') require('lazy/trouble') require('lazy/kommentary') -require('lazy/vimwiki') require('lazy/glow') require('lazy/symbols') From a79cfac1192548a113cf4aee8437fd4834033b5e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 7 Oct 2021 03:36:03 +0000 Subject: [PATCH 273/419] Replace efm with null-ls and remove efm configurations Use default configurations for the various formater and linter till there is a need to change it Replace ccls with clangd and enable format on save --- lua/plugrc/lspconfig/init.lua | 51 +++++++------ lua/plugrc/lspconfig/settings.lua | 121 ++++++++---------------------- 2 files changed, 60 insertions(+), 112 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 94466b6..6cccbe2 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,21 +1,22 @@ local disable_conflicting_formatters = function(client, buffer) local buffer_filetype = vim.fn.getbufvar(buffer, "&filetype") - local efm_disabled_files = buffer_filetype == "cpp" + local disabled_files = buffer_filetype == "cpp" or buffer_filetype == "javascript" or buffer_filetype == "typescript" - if client.name == "efm" and efm_disabled_files then + if client.name == "null-ls" and disabled_files then client.resolved_capabilities.document_formatting = false + client.resolved_capabilities.document_range_formatting = false end end local on_attach = function(client, buffer) local builtin_lsp = require("plugrc/lspconfig/config") - builtin_lsp.completion_kinds() - builtin_lsp.sign_column_diagnostic_symbols() - builtin_lsp.disable_virtual_text() + --builtin_lsp.completion_kinds() + --builtin_lsp.sign_column_diagnostic_symbols() + --builtin_lsp.disable_virtual_text() --builtin_lsp.display_diagnostics_sources() --local saga_cfg = require("plugrc/lspconfig/saga") @@ -46,6 +47,9 @@ local on_attach = function(client, buffer) "lua vim.lsp.buf.formatting()", opts ) + vim.cmd( + "autocmd BufWritePre lua vim.lsp.buf.formatting_sync()" + ) end if client.resolved_capabilities.document_range_formatting then @@ -107,7 +111,7 @@ end local function setup_servers() local lsp_servers = { "sumneko_lua", - "ccls", + "clangd", "cssls", "html", "jsonls", @@ -115,19 +119,30 @@ local function setup_servers() "tsserver", "volar", "zls", - "efm", + "null-ls", + } + + local null_ls = require("null-ls") + local sources = { + null_ls.builtins.formatting.eslint, + null_ls.builtins.diagnostics.eslint.with({ + diagnostics_format = "[#{c}] #{m} (#{s})", + }), + null_ls.builtins.formatting.prettier, + null_ls.builtins.formatting.stylua, } - local settings = require("plugrc.lspconfig.settings") + null_ls.config({ sources = sources }) for _, server in pairs(lsp_servers) do local config = make_config() + local settings = require("plugrc.lspconfig.settings") -- language specific config - if server == "ccls" then - local ccls = settings.ccls_settings - config.init_options = ccls.init_options - config.filetypes = ccls.filetypes + if server == "clangd" then + local clangd_settings = settings.clangd_setting + config.cmd = clangd_settings.cmd + config.filetypes = clangd_settings.filetypes end if server == "sumneko_lua" then @@ -135,18 +150,6 @@ local function setup_servers() config.cmd = lua_settings.cmd config.settings = lua_settings.settings end - - if server == "efm" then - local efm_settings = settings.efm_settings - config.init_options = efm_settings.init_options - config.settings = efm_settings.settings - config.filetypes = efm_settings.filetypes - end - - if server == "tailwindcss" then - config.filetypes = { "html", "css", "vue", "scss" } - end - require("lspconfig")[server].setup(config) end end diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index fde5698..93f2fa5 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -31,79 +31,42 @@ settings.lua_settings = { }, } -local linters = {} +local null_ls = require("null-ls") +local helpers = require("null-ls.helpers") -linters.cppcheck = { - cpp = { - lintCommand = "cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c++ ${INPUT}", - lintStdin = true, - lintFormats = { "%f:%l:%c: %m" }, - lintIgnoreExitCode = true, - }, - - c = { - lintCommand = "cppcheck --enable=warning,style,performance,portability,information,missingInclude --inconclusive -j 4 --template=gcc --language=c ${INPUT}", - lintStdin = true, - lintFormats = { "%f:%l:%c: %m" }, - lintIgnoreExitCode = true, - }, -} - -linters.eslint = { - lintCommand = "eslint_d -f visualstudio --stdin --stdin-filename ${INPUT}", - lintStdin = true, - lintFormats = { "%f(%l,%c): %rror %m" }, - lintIgnoreExitCode = true, -} - -local formatters = {} - -formatters.lua_format = { formatCommand = "lua-format -i", formatStdin = true } -formatters.stylua = { formatCommand = "stylua -", formatStdin = true } - -formatters.prettier = { - formatCommand = "prettier --stdin-filepath ${INPUT}", - formatStdin = true, -} - -settings.efm_settings = { - init_options = { - documentFormatting = true, - codeAction = true, - hover = true, - documentSymbol = true, - completion = true, - }, - - filetypes = { - "lua", - "cpp", - "c", - "css", - "scss", - "json", - "yaml", - "markdown", - "javascript", - "typescript", - }, - - settings = { - rootMarkers = { ".git/" }, - languages = { - lua = { formatters.stylua }, - cpp = { linters.cppcheck.cpp }, - c = { linters.cppcheck.c }, - css = { formatters.prettier }, - scss = { formatters.prettier }, - json = { formatters.prettier }, - yaml = { formatters.prettier }, - markdown = { formatters.prettier }, - javascript = { linters.eslint }, - typescript = { linters.eslint }, +settings.cppcheck = { + method = null_ls.methods.DIAGNOSTICS, + filetypes = { "cpp", "c" }, + -- null_ls.generator creates an async source + -- that spawns the command with the given arguments and options + generator = null_ls.generator({ + command = "cppcheck", + args = { + "--enable=warning,style,performance,portability,information,missingInclude", + "--inconclusive", + "-j 4", + "--template=gcc", + "$FILENAME", }, - }, + to_stdin = true, + from_stderr = true, + -- choose an output format (raw, json, or line) + format = "line", + -- use helpers to parse the output from string matchers, + -- or parse it manually with a function + on_output = helpers.diagnostics.from_pattern( + [[(%d+):(%d+): (%w+): (.*)]], -- (%[(%w+)%])? + { "row", "col", "severity", "message" }, -- "code" + { + severities = { + note = helpers.diagnostics.severities["information"], + }, + } + ), + }), } +--info = h.diagnostics.severities["information"], +null_ls.register({ name = "cppcheck", sources = { settings.cppcheck } }) settings.clangd_setting = { cmd = { @@ -116,22 +79,4 @@ settings.clangd_setting = { filetypes = { "c", "cpp" }, -- we don't want objective-c and objective-cpp! } -settings.ccls_settings = { - { - filetypes = { "c", "cpp" }, - init_options = { - index = { - threads = 0, - }, - cache = { - directory = ".ccls-cache", - }, - clang = { - excludeArgs = { "-frounding-math" }, - extraArgs = {}, - }, - }, - }, -} - return settings From 5925fe580772d624551c49ab479d11cf62617c5d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 7 Oct 2021 03:36:36 +0000 Subject: [PATCH 274/419] Add null-ls to plugins --- lua/plugins.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/plugins.lua b/lua/plugins.lua index d87df62..0637f7e 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -58,6 +58,10 @@ require("paq-nvim")({ -- list to help you solve all the trouble your code is causing { "folke/trouble.nvim", opt = true }, + --Use Neovim as a language server to inject LSP diagnostics, code actions, + --and more via Lua + {"jose-elias-alvarez/null-ls.nvim"}, + -- displays a popup with possible key bindings -- of the command you started typing { "folke/which-key.nvim" }, From 87606a98258300f2181f7c775e0e3b8010f26e7a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 7 Oct 2021 04:22:23 +0000 Subject: [PATCH 275/419] Specify the default diagnostics_format to use the source and message --- lua/plugrc/lspconfig/init.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 6cccbe2..c14b0ce 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -125,14 +125,15 @@ local function setup_servers() local null_ls = require("null-ls") local sources = { null_ls.builtins.formatting.eslint, - null_ls.builtins.diagnostics.eslint.with({ - diagnostics_format = "[#{c}] #{m} (#{s})", - }), + null_ls.builtins.diagnostics.eslint, null_ls.builtins.formatting.prettier, null_ls.builtins.formatting.stylua, } - null_ls.config({ sources = sources }) + null_ls.config({ + diagnostics_format = "(#{s}) #{m}", + sources = sources, + }) for _, server in pairs(lsp_servers) do local config = make_config() From 82516636d1da7c9aeae6941983ccb2ed6ca4774f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Oct 2021 04:12:58 +0000 Subject: [PATCH 276/419] Add bashls language server for shell scripting --- lua/plugrc/lspconfig/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index c14b0ce..88e2ccb 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -120,6 +120,7 @@ local function setup_servers() "volar", "zls", "null-ls", + "bashls", } local null_ls = require("null-ls") From 5601a01978369537632d686462daf0c7c1b68617 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Oct 2021 04:15:41 +0000 Subject: [PATCH 277/419] Remove format on save autocmd --- lua/plugrc/lspconfig/init.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 88e2ccb..e34a984 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -47,9 +47,6 @@ local on_attach = function(client, buffer) "lua vim.lsp.buf.formatting()", opts ) - vim.cmd( - "autocmd BufWritePre lua vim.lsp.buf.formatting_sync()" - ) end if client.resolved_capabilities.document_range_formatting then From a5972e6e08b26ac6ef8714b6938c72f9a705b33e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Oct 2021 04:17:17 +0000 Subject: [PATCH 278/419] Add more useful builtins for null-ls Add cppcheck for c++ static analysis Add shellcheck for sh/bash analysis Add gitsigns for code-actions of gitsigns --- lua/plugrc/lspconfig/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index e34a984..0d7b549 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -126,6 +126,9 @@ local function setup_servers() null_ls.builtins.diagnostics.eslint, null_ls.builtins.formatting.prettier, null_ls.builtins.formatting.stylua, + null_ls.builtins.code_actions.gitsigns, + null_ls.builtins.diagnostics.shellcheck, + null_ls.builtins.diagnostics.cppcheck, } null_ls.config({ From d0efcc13cd493eb1623b8758c8b668bae7da9f27 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Oct 2021 04:31:48 +0000 Subject: [PATCH 279/419] Remove cppcheck from settings since it has been integrated into null-ls --- lua/plugrc/lspconfig/settings.lua | 37 ------------------------------- 1 file changed, 37 deletions(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 93f2fa5..890f2d3 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -31,43 +31,6 @@ settings.lua_settings = { }, } -local null_ls = require("null-ls") -local helpers = require("null-ls.helpers") - -settings.cppcheck = { - method = null_ls.methods.DIAGNOSTICS, - filetypes = { "cpp", "c" }, - -- null_ls.generator creates an async source - -- that spawns the command with the given arguments and options - generator = null_ls.generator({ - command = "cppcheck", - args = { - "--enable=warning,style,performance,portability,information,missingInclude", - "--inconclusive", - "-j 4", - "--template=gcc", - "$FILENAME", - }, - to_stdin = true, - from_stderr = true, - -- choose an output format (raw, json, or line) - format = "line", - -- use helpers to parse the output from string matchers, - -- or parse it manually with a function - on_output = helpers.diagnostics.from_pattern( - [[(%d+):(%d+): (%w+): (.*)]], -- (%[(%w+)%])? - { "row", "col", "severity", "message" }, -- "code" - { - severities = { - note = helpers.diagnostics.severities["information"], - }, - } - ), - }), -} ---info = h.diagnostics.severities["information"], -null_ls.register({ name = "cppcheck", sources = { settings.cppcheck } }) - settings.clangd_setting = { cmd = { "clangd", From 08f6deb2d96ee1a0beeaae6b34b347a41fd6f89a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Oct 2021 04:36:04 +0000 Subject: [PATCH 280/419] Add extra_args to cppcheck null-ls builtin Add the inconclusive extra option --- lua/plugrc/lspconfig/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 0d7b549..f94a7e3 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -128,7 +128,9 @@ local function setup_servers() null_ls.builtins.formatting.stylua, null_ls.builtins.code_actions.gitsigns, null_ls.builtins.diagnostics.shellcheck, - null_ls.builtins.diagnostics.cppcheck, + null_ls.builtins.diagnostics.cppcheck.with({ + extra_args = { "--inconclusive" }, + }), } null_ls.config({ From 24cfb6f9bdbff0324322d325d3655e184f5b7d7c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 22 Oct 2021 18:57:29 +0000 Subject: [PATCH 281/419] Remove eslint and prettier from null-ls sources --- lua/plugrc/lspconfig/init.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index f94a7e3..51f4a61 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -122,9 +122,6 @@ local function setup_servers() local null_ls = require("null-ls") local sources = { - null_ls.builtins.formatting.eslint, - null_ls.builtins.diagnostics.eslint, - null_ls.builtins.formatting.prettier, null_ls.builtins.formatting.stylua, null_ls.builtins.code_actions.gitsigns, null_ls.builtins.diagnostics.shellcheck, From a83e82760f06e07c28d66c83e1484e2b26c5a333 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 22 Oct 2021 19:12:41 +0000 Subject: [PATCH 282/419] Refactor tree setup into plugrc and leave only vim mappings in mapping --- lua/mapping/tree.lua | 97 ---------------------------- lua/plugrc/tree.lua | 146 ++++++++++++++++++++++++++++--------------- 2 files changed, 94 insertions(+), 149 deletions(-) diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua index 096eb31..53456fa 100644 --- a/lua/mapping/tree.lua +++ b/lua/mapping/tree.lua @@ -1,102 +1,5 @@ require("utils") -local tree_cb = require("nvim-tree.config").nvim_tree_callback map("n", "n", "NvimTreeToggle") -- map('n', 'r', ':NvimTreeRefresh') -- map('n','tf',':NvimTreeFindFile',option) - --- NvimTreeOpen and NvimTreeClose are also available if you need them --- following options are the default -require("nvim-tree").setup({ - -- disables netrw completely - disable_netrw = true, - -- hijack netrw window on startup - hijack_netrw = true, - -- open the tree when running this setup function - open_on_setup = false, - -- will not open on setup if the filetype is in this list - ignore_ft_on_setup = {}, - -- closes neovim automatically when the tree is the last **WINDOW** in the view - auto_close = true, - -- opens the tree when changing/opening a new tab if the tree wasn't previously opened - open_on_tab = false, - -- hijacks new directory buffers when they are opened. - update_to_buf_dir = { - -- enable the feature - enable = true, - -- allow to open the tree if it was previously closed - auto_open = true, - }, - -- hijack the cursor in the tree to put it at the start of the filename - hijack_cursor = false, - -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) - update_cwd = true, - -- show lsp diagnostics in the signcolumn - lsp_diagnostics = false, - -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file - update_focused_file = { - -- enables the feature - enable = false, - -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory - -- only relevant when `update_focused_file.enable` is true - update_cwd = false, - -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory - -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true - ignore_list = {}, - }, - -- configuration options for the system open command (`s` in the tree by default) - system_open = { - -- the command to run this, leaving nil should work in most cases - cmd = nil, - -- the command arguments as a list - args = {}, - }, - view = { - -- width of the window, can be either a number (columns) or a string in `%` - width = 30, - -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' - side = "left", - -- if true the tree will resize itself after opening a file - auto_resize = false, - mappings = { - -- custom only false will merge the list with the default mappings - -- if true, it will only use your list to set the mappings - custom_only = false, - -- list of mappings to set on the tree manually - list = { - { key = { "", "o", "<2-LeftMouse>" }, cb = tree_cb("edit") }, - { key = { "<2-RightMouse>", "" }, cb = tree_cb("cd") }, - { key = "", cb = tree_cb("vsplit") }, - { key = "", cb = tree_cb("split") }, - { key = "", cb = tree_cb("tabnew") }, - { key = "<", cb = tree_cb("prev_sibling") }, - { key = ">", cb = tree_cb("next_sibling") }, - { key = "P", cb = tree_cb("parent_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("preview") }, - { key = "K", cb = tree_cb("first_sibling") }, - { key = "J", cb = tree_cb("last_sibling") }, - { key = "I", cb = tree_cb("toggle_ignored") }, - { key = "H", cb = tree_cb("toggle_dotfiles") }, - { key = "R", cb = tree_cb("refresh") }, - { key = "a", cb = tree_cb("create") }, - { key = "d", cb = tree_cb("remove") }, - { key = "r", cb = tree_cb("rename") }, - { key = "", cb = tree_cb("full_rename") }, - { key = "x", cb = tree_cb("cut") }, - { key = "c", cb = tree_cb("copy") }, - { key = "p", cb = tree_cb("paste") }, - { key = "y", cb = tree_cb("copy_name") }, - { key = "Y", cb = tree_cb("copy_path") }, - { key = "gy", cb = tree_cb("copy_absolute_path") }, - { key = "[c", cb = tree_cb("prev_git_item") }, - { key = "]c", cb = tree_cb("next_git_item") }, - { key = "-", cb = tree_cb("dir_up") }, - { key = "s", cb = tree_cb("system_open") }, - { key = "q", cb = tree_cb("close") }, - { key = "g?", cb = tree_cb("toggle_help") }, - }, - }, - }, -}) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index f4b7767..ef38cbd 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,6 +1,6 @@ local g = vim.g -g.nvim_tree_ignore = {'.git', 'node_modules', '.cache'} -- empty by default +g.nvim_tree_ignore = { ".git", "node_modules", ".cache" } -- empty by default g.nvim_tree_gitignore = 1 -- 0 by default g.nvim_tree_quit_on_open = 1 -- 0 by default, closes the tree when you open a file --g.nvim_tree_follow = 1 -- 0 by default, this option allows the cursor to be updated when entering a buffer @@ -16,55 +16,97 @@ g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and f g.nvim_tree_respect_buf_cwd = 1 --0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. --g.nvim_tree_create_in_closed_folder = 0 --1 by default, When creating files, sets the path of a file when cursor is on a closed folder to the parent folder when 0, and inside the folder when 1. --g.nvim_tree_refresh_wait = 500 --1000 by default, control how often the tree can be refreshed, 1000 means the tree can be refresh once per 1000ms. -g.nvim_tree_window_picker_exclude = { - filetype = {'packer', 'qf'}, - buftype = {'terminal'} -} --- Dictionary of buffer option names mapped to a list of option values that --- indicates to the window picker that the buffer's window should not be --- selectable. ---[[ - [g.nvim_tree_special_files = [ 'README.md'] -- List of filenames that gets highlighted with NvimTreeSpecialFile - [g.nvim_tree_show_icons = { - [ \ 'git': 1, - [ \ 'folders': 1, - [ \ 'files': 1, - [ \ } - ]] --- If 0, do not show the icons for one of 'git' 'folder' and 'files' --- 1 by default, notice that if 'files' is 1, it will only display --- if nvim-web-devicons is installed and on your runtimepath --- default will show icon by default if no icon is provided --- default shows no icon by default ---[[ - [g.nvim_tree_icons = { - [ \ 'default': '', - [ \ 'symlink': '', - [ \ 'git': { - [ \ 'unstaged': --✗--, - [ \ 'staged': --✓--, - [ \ 'unmerged': ----, - [ \ 'renamed': --➜--, - [ \ 'untracked': --★--, - [ \ 'deleted': ----, - [ \ 'ignored': --◌-- - [ \ }, - [ \ 'folder': { - [ \ 'default': ----, - [ \ 'open': ----, - [ \ 'empty': ----, - [ \ 'empty_open': ----, - [ \ 'symlink': ----, - [ \ 'symlink_open': ----, - [ \ }, - [ \ 'lsp': { - [ \ 'hint': ----, - [ \ 'info': ----, - [ \ 'warning': ----, - [ \ 'error': ----, - [ \ } - [ \ } - ]] --- a list of groups can be found at `:help nvim_tree_highlight` --- highlight NvimTreeFolderIcon guibg=blue +local tree_cb = require("nvim-tree.config").nvim_tree_callback + +require("nvim-tree").setup({ + -- disables netrw completely + disable_netrw = true, + -- hijack netrw window on startup + hijack_netrw = true, + -- open the tree when running this setup function + open_on_setup = false, + -- will not open on setup if the filetype is in this list + ignore_ft_on_setup = {}, + -- closes neovim automatically when the tree is the last **WINDOW** in the view + auto_close = true, + -- opens the tree when changing/opening a new tab if the tree wasn't previously opened + open_on_tab = false, + -- hijacks new directory buffers when they are opened. + update_to_buf_dir = { + -- enable the feature + enable = true, + -- allow to open the tree if it was previously closed + auto_open = true, + }, + -- hijack the cursor in the tree to put it at the start of the filename + hijack_cursor = false, + -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) + update_cwd = true, + -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file + update_focused_file = { + -- enables the feature + enable = false, + -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory + -- only relevant when `update_focused_file.enable` is true + update_cwd = false, + -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory + -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true + ignore_list = {}, + }, + -- configuration options for the system open command (`s` in the tree by default) + system_open = { + -- the command to run this, leaving nil should work in most cases + cmd = nil, + -- the command arguments as a list + args = {}, + }, + view = { + -- width of the window, can be either a number (columns) or a string in `%` + width = 30, + -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' + side = "left", + -- if true the tree will resize itself after opening a file + auto_resize = false, + mappings = { + -- custom only false will merge the list with the default mappings + -- if true, it will only use your list to set the mappings + custom_only = false, + -- list of mappings to set on the tree manually + list = { + { key = { "", "o", "<2-LeftMouse>" }, cb = tree_cb("edit") }, + { key = { "<2-RightMouse>", "" }, cb = tree_cb("cd") }, + { key = "", cb = tree_cb("vsplit") }, + { key = "", cb = tree_cb("split") }, + { key = "", cb = tree_cb("tabnew") }, + { key = "<", cb = tree_cb("prev_sibling") }, + { key = ">", cb = tree_cb("next_sibling") }, + { key = "P", cb = tree_cb("parent_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("close_node") }, + { key = "", cb = tree_cb("preview") }, + { key = "K", cb = tree_cb("first_sibling") }, + { key = "J", cb = tree_cb("last_sibling") }, + { key = "I", cb = tree_cb("toggle_ignored") }, + { key = "H", cb = tree_cb("toggle_dotfiles") }, + { key = "R", cb = tree_cb("refresh") }, + { key = "a", cb = tree_cb("create") }, + { key = "d", cb = tree_cb("remove") }, + { key = "r", cb = tree_cb("rename") }, + { key = "", cb = tree_cb("full_rename") }, + { key = "x", cb = tree_cb("cut") }, + { key = "c", cb = tree_cb("copy") }, + { key = "p", cb = tree_cb("paste") }, + { key = "y", cb = tree_cb("copy_name") }, + { key = "Y", cb = tree_cb("copy_path") }, + { key = "gy", cb = tree_cb("copy_absolute_path") }, + { key = "[c", cb = tree_cb("prev_git_item") }, + { key = "]c", cb = tree_cb("next_git_item") }, + { key = "-", cb = tree_cb("dir_up") }, + { key = "s", cb = tree_cb("system_open") }, + { key = "q", cb = tree_cb("close") }, + { key = "g?", cb = tree_cb("toggle_help") }, + }, + }, + }, +}) From 817cf45e8ce635121aa8fad2be8df129425e864b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 22 Oct 2021 19:15:17 +0000 Subject: [PATCH 283/419] Use the default gitsigns setup --- lua/plugrc/gitsigns.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 2b4bbff..1ed83a9 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -1,4 +1,4 @@ -local GitStatus = { +--[[ local GitStatus = { Modified = "✹", Staged = "✚", Untracked = "✭", @@ -131,4 +131,5 @@ require("gitsigns").setup({ update_debounce = 100, status_formatter = nil, -- Use default use_internal_diff = true, -- If luajit is present -}) +}) ]] +require("gitsigns").setup() From 0ed88a2f646a1c5773958dacffa14c002c7981e1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 22 Oct 2021 19:17:52 +0000 Subject: [PATCH 284/419] Remove function for displaying sources --- lua/plugrc/lspconfig/config.lua | 37 +-------------------------------- 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/config.lua index 3298d82..2262fb3 100644 --- a/lua/plugrc/lspconfig/config.lua +++ b/lua/plugrc/lspconfig/config.lua @@ -51,46 +51,11 @@ function M.disable_virtual_text() vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false, - update_in_insert = false, + update_in_insert = true, signs = true, underline = true, } ) end -function M.display_diagnostics_sources() - vim.lsp.handlers["textDocument/publishDiagnostics"] = - function(_, _, params, client_id, _) - local config = { -- your config - virtual_text = false, - update_in_insert = false, - signs = true, - underline = true, - } - local uri = params.uri - local bufnr = vim.uri_to_bufnr(uri) - - if not bufnr then - return - end - - local diagnostics = params.diagnostics - - for i, v in ipairs(diagnostics) do - diagnostics[i].message = string.format( - "%s: %s", - v.source, - v.message - ) - end - - vim.lsp.diagnostic.save(diagnostics, bufnr, client_id) - - if not vim.api.nvim_buf_is_loaded(bufnr) then - return - end - - vim.lsp.diagnostic.display(diagnostics, bufnr, client_id, config) - end -end return M From 8b421fb4c23d6498d8749e7655b6b911274ca845 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 22:58:13 +0000 Subject: [PATCH 285/419] Remove autopairs mapping since the are taken care of in cmp mapping --- lua/mapping/autopairs.lua | 11 ----------- lua/mapping/init.lua | 1 - 2 files changed, 12 deletions(-) delete mode 100644 lua/mapping/autopairs.lua diff --git a/lua/mapping/autopairs.lua b/lua/mapping/autopairs.lua deleted file mode 100644 index 705980e..0000000 --- a/lua/mapping/autopairs.lua +++ /dev/null @@ -1,11 +0,0 @@ --- you need setup cmp first put this after cmp.setup() -require("nvim-autopairs.completion.cmp").setup({ - map_cr = true, -- map on insert mode - map_complete = true, -- it will auto insert `(` (map_char) after select function or method item - auto_select = true, -- automatically select the first item - insert = false, -- use insert confirm behavior instead of replace - map_char = { -- modifies the function or method delimiter by filetypes - all = '(', - tex = '{' - } -}) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index b7839c3..fc5ae8f 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -3,5 +3,4 @@ require('mapping/tab_buffer') require('mapping/highlighting') require('mapping/terminal') require('mapping/lspconfig') -require('mapping/autopairs') require('mapping/tree') From a4e5030d9ed060fe66c6d4b4d8ec09bf74307dbd Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:00:20 +0000 Subject: [PATCH 286/419] Improve lsp mappings for type_defination and line diagnostics --- lua/mapping/lspconfig.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index d52a0c6..d933048 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -26,10 +26,10 @@ set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + set_keymap('n', 't', 'lua vim.lsp.buf.type_definition()', opts) set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + set_keymap('n', 'd', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) From 4f14ad5edaa1b100c1f511ed13625d532e8c5e77 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:37:55 +0000 Subject: [PATCH 287/419] use space as leader for most lsp actions --- lua/mapping/lspconfig.lua | 82 +++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 29 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index d933048..4fc94f3 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -1,40 +1,64 @@ -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer -local function set_keymap(...) vim.api.nvim_set_keymap(...) end -local function set_option(...) vim.api.nvim_set_option(...) end +local function set_keymap(...) + vim.api.nvim_set_keymap(...) +end +local function set_option(...) + vim.api.nvim_set_option(...) +end -- Enable completion triggered by -set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') +set_option("omnifunc", "v:lua.vim.lsp.omnifunc") -- Mappings. -local opts = {noremap = true, silent = true} +local opts = { noremap = true, silent = true } -- See `:help vim.lsp.*` for documentation on any of the below functions -set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) -set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) -set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) -set_keymap('n', 'aw', 'lua vim.lsp.buf.add_workspace_folder()', - opts) -set_keymap('n', 'rw', - 'lua vim.lsp.buf.remove_workspace_folder()', opts) -set_keymap('n', 'lw', - 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', - opts) -set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) -set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', - opts) - - set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - set_keymap('n', 't', 'lua vim.lsp.buf.type_definition()', opts) - set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - set_keymap('n', 'd', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) - set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) -vim.cmd [[autocmd CursorHold * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false})]] +set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) +set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) +set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) +set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) +set_keymap( + "n", + "aw", + "lua vim.lsp.buf.add_workspace_folder()", + opts +) +set_keymap( + "n", + "rw", + "lua vim.lsp.buf.remove_workspace_folder()", + opts +) +set_keymap( + "n", + "lw", + "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", + opts +) +set_keymap("n", "td", "lua vim.lsp.buf.type_definition()", opts) +set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) +set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) +set_keymap( + "n", + "ld", + "lua vim.lsp.diagnostic.show_line_diagnostics()", + opts +) +set_keymap( + "n", + "sl", + "lua vim.lsp.diagnostic.set_loclist()", + opts +) +set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) +set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) +set_keymap("n", "sh", "lua vim.lsp.buf.signature_help()", opts) +set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) +set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) +vim.cmd( + [[autocmd CursorHold * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false})]] +) -- lsp provider to find the cursor word definition and reference --vim.cmd [[ -- nnoremap gdr lua require'lspsaga.provider'.lsp_finder() From ec72204a94b695b7a881d93bef2d5df4c7eae261 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:39:51 +0000 Subject: [PATCH 288/419] Move redundant server capability mappings to lsp mappings Remove document highlighting since it is usually nagging --- lua/plugrc/lspconfig/init.lua | 39 +++-------------------------------- 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 51f4a61..41c3a9e 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -40,15 +40,6 @@ local on_attach = function(client, buffer) disable_conflicting_formatters(client, buffer) -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - set_keymap( - "n", - "lf", - "lua vim.lsp.buf.formatting()", - opts - ) - end - if client.resolved_capabilities.document_range_formatting then set_keymap( "v", @@ -57,32 +48,6 @@ local on_attach = function(client, buffer) opts ) end - - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - -- lsp highlight element under cursor - vim.cmd([[ - highlight link LspReferenceText WildMenu - highlight LspReferenceRead gui=italic guifg=#232326 guibg=#c49060 "Uses IncSearch hi-grp - highlight LspReferenceWrite gui=bold guifg=#232326 guibg=#e2c792 "Uses Search hi-grp - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorHoldI lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]]) - end - - -- client.resolved_capabilities.type_definition =false - if client.resolved_capabilities.type_definition then - set_keymap( - "n", - "dt", - "lua vim.lsp.buf.type_definition()", - opts - ) - end end -- config that activates keymaps and enables snippet support @@ -126,7 +91,9 @@ local function setup_servers() null_ls.builtins.code_actions.gitsigns, null_ls.builtins.diagnostics.shellcheck, null_ls.builtins.diagnostics.cppcheck.with({ - extra_args = { "--inconclusive" }, + extra_args = { + "--inconclusive", + }, }), } From c69f0cd919a8557952246cc66653bc68186939df Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:44:17 +0000 Subject: [PATCH 289/419] Remove unused code --- lua/mapping/lspconfig.lua | 48 ----------------------------------- lua/plugrc/lspconfig/init.lua | 10 -------- 2 files changed, 58 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 4fc94f3..47a06d0 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -59,51 +59,3 @@ set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) vim.cmd( [[autocmd CursorHold * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false})]] ) --- lsp provider to find the cursor word definition and reference ---vim.cmd [[ --- nnoremap gdr lua require'lspsaga.provider'.lsp_finder() ---]] --- ----- code action ---vim.cmd [[ ---nnoremap ca lua require('lspsaga.codeaction').code_action() ---vnoremap ca :lua require('lspsaga.codeaction').range_code_action() ---]] --- ----- show hover doc ---vim.cmd [[ ---nnoremap K lua require('lspsaga.hover').render_hover_doc() ---]] --- ----- scroll down hover doc or scroll in definition preview ---vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)]] --- ----- scroll up hover doc ---vim.cmd [[nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)]] --- ----- show signature help ---vim.cmd [[nnoremap gs lua require('lspsaga.signaturehelp').signature_help()]] --- ----- rename ---vim.cmd [[nnoremap rn lua require('lspsaga.rename').rename()]] --- ----- preview definition ---vim.cmd [[nnoremap pd lua require'lspsaga.provider'.preview_definition()]] --- ----- jump diagnostic ---vim.cmd [[nnoremap [d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_prev()]] ---vim.cmd [[nnoremap ]d lua require'lspsaga.diagnostic'.lsp_jump_diagnostic_next()]] --- ----- only show diagnostic if cursor is over the area ---vim.cmd [[nnoremap scd lua require'lspsaga.diagnostic'.show_cursor_diagnostics()]] --- ----- show line diagnostic ---vim.cmd [[nnoremap sld lua require'lspsaga.diagnostic'.show_line_diagnostics()]] --- ---vim.cmd [[autocmd CursorHold * lua require'lspsaga.diagnostic'.show_line_diagnostics()]] --- ----- float terminal also you can pass the cli command in open_float_terminal function ---vim.cmd [[nnoremap lua require('lspsaga.floaterm').open_float_terminal() ]] --- ----- or open_float_terminal('lazygit') ---vim.cmd [[tnoremap :lua require('lspsaga.floaterm').close_float_terminal()]] diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 41c3a9e..52c2ef8 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -12,16 +12,6 @@ local disable_conflicting_formatters = function(client, buffer) end local on_attach = function(client, buffer) - local builtin_lsp = require("plugrc/lspconfig/config") - - --builtin_lsp.completion_kinds() - --builtin_lsp.sign_column_diagnostic_symbols() - --builtin_lsp.disable_virtual_text() - --builtin_lsp.display_diagnostics_sources() - - --local saga_cfg = require("plugrc/lspconfig/saga") - --require("lspsaga").init_lsp_saga(saga_cfg) - local signature_cfg = require("plugrc/lspconfig/signature") require("lsp_signature").on_attach(signature_cfg) From bf5e0929dd5263c9729a2c2e573f4180677f9d32 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:46:48 +0000 Subject: [PATCH 290/419] Remove unused global options and add filters option to setup Enable open_on_setup and update_focused_file --- lua/plugrc/tree.lua | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index ef38cbd..900718e 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,21 +1,9 @@ local g = vim.g -g.nvim_tree_ignore = { ".git", "node_modules", ".cache" } -- empty by default g.nvim_tree_gitignore = 1 -- 0 by default g.nvim_tree_quit_on_open = 1 -- 0 by default, closes the tree when you open a file ---g.nvim_tree_follow = 1 -- 0 by default, this option allows the cursor to be updated when entering a buffer -g.nvim_tree_indent_markers = 0 -- 0 by default, this option shows indent markers when folders are open --- g.nvim_tree_hide_dotfiles = 1 --0 by default, this option hides files and folders starting with a dot `.` -g.nvim_tree_git_hl = 1 -- 0 by default, will enable file highlight for git attributes (can be used without the icons). g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. ---g.nvim_tree_root_folder_modifier = ':~' --This is the default. See :help filename-modifiers for more options ---g.nvim_tree_add_trailing = 1 --0 by default, append a trailing slash to folder names ---g.nvim_tree_group_empty = 1 -- 0 by default, compact folders that only contain a single folder into one node in the file tree --g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. ---g.nvim_tree_symlink_arrow = ' >> ' " defaults to ' ➛ '. used as a separator between symlinks' source and target. -g.nvim_tree_respect_buf_cwd = 1 --0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. ---g.nvim_tree_create_in_closed_folder = 0 --1 by default, When creating files, sets the path of a file when cursor is on a closed folder to the parent folder when 0, and inside the folder when 1. ---g.nvim_tree_refresh_wait = 500 --1000 by default, control how often the tree can be refreshed, 1000 means the tree can be refresh once per 1000ms. local tree_cb = require("nvim-tree.config").nvim_tree_callback @@ -24,13 +12,14 @@ require("nvim-tree").setup({ disable_netrw = true, -- hijack netrw window on startup hijack_netrw = true, - -- open the tree when running this setup function - open_on_setup = false, + -- open tree when running this setup function and the + -- current buffer is a directory, is empty or is unnamed. + open_on_setup = true, -- will not open on setup if the filetype is in this list - ignore_ft_on_setup = {}, + ignore_ft_on_setup = { ".git", "node_modules", ".cache" }, -- closes neovim automatically when the tree is the last **WINDOW** in the view auto_close = true, - -- opens the tree when changing/opening a new tab if the tree wasn't previously opened + -- opens the tree when changing/opening a new tab if the tree was previously opened open_on_tab = false, -- hijacks new directory buffers when they are opened. update_to_buf_dir = { @@ -46,10 +35,10 @@ require("nvim-tree").setup({ -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file update_focused_file = { -- enables the feature - enable = false, + enable = true, -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory -- only relevant when `update_focused_file.enable` is true - update_cwd = false, + update_cwd = true, -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true ignore_list = {}, @@ -63,7 +52,7 @@ require("nvim-tree").setup({ }, view = { -- width of the window, can be either a number (columns) or a string in `%` - width = 30, + width = 39, -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' side = "left", -- if true the tree will resize itself after opening a file @@ -74,7 +63,10 @@ require("nvim-tree").setup({ custom_only = false, -- list of mappings to set on the tree manually list = { - { key = { "", "o", "<2-LeftMouse>" }, cb = tree_cb("edit") }, + { + key = { "", "o", "<2-LeftMouse>" }, + cb = tree_cb("edit"), + }, { key = { "<2-RightMouse>", "" }, cb = tree_cb("cd") }, { key = "", cb = tree_cb("vsplit") }, { key = "", cb = tree_cb("split") }, @@ -109,4 +101,8 @@ require("nvim-tree").setup({ }, }, }, + filters = { + dotfiles = false, + custom = {}, + }, }) From 8b90dadc61d6b0aefd7d030a78f1fb9a98071470 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:48:27 +0000 Subject: [PATCH 291/419] Rename disable_virtual_text to customise_diagnostics --- lua/plugrc/lspconfig/config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/config.lua index 2262fb3..fcb23f5 100644 --- a/lua/plugrc/lspconfig/config.lua +++ b/lua/plugrc/lspconfig/config.lua @@ -46,7 +46,7 @@ function M.sign_column_diagnostic_symbols() end end -function M.disable_virtual_text() +function M.customise_diagnostics() vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { From adc5bc1983506afe57ae6e86945b17d0bfb6d4f1 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 1 Nov 2021 23:54:40 +0000 Subject: [PATCH 292/419] Add and enable vscode theme --- lua/plugins.lua | 3 ++- lua/ui.lua | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 0637f7e..57bff5b 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -17,6 +17,7 @@ require("paq-nvim")({ -- === Themes and Colour Scheme === { "navarasu/onedark.nvim" }, + { "Mofiqul/vscode.nvim" }, -- === Git Plugin === -- A vim plugin which shows git diff in the gutter (sign column). @@ -60,7 +61,7 @@ require("paq-nvim")({ --Use Neovim as a language server to inject LSP diagnostics, code actions, --and more via Lua - {"jose-elias-alvarez/null-ls.nvim"}, + { "jose-elias-alvarez/null-ls.nvim" }, -- displays a popup with possible key bindings -- of the command you started typing diff --git a/lua/ui.lua b/lua/ui.lua index 057a7b1..8a40b39 100644 --- a/lua/ui.lua +++ b/lua/ui.lua @@ -2,10 +2,13 @@ vim.o.termguicolors = true -- Onedark colorscheme -vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer +--vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer -require('onedark').setup() +--require('onedark').setup() +-- For dark theme +vim.g.vscode_style = "dark" +vim.cmd[[colorscheme vscode]] -- status line require('plugrc/lualine') From b5155457ecf8f5d1673ca1a7c4164593eba76da4 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 2 Nov 2021 12:08:43 +0000 Subject: [PATCH 293/419] Disable select on confirm and set default comfirmBehavior to Replace --- lua/plugrc/compe.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 6b1f254..4aa3e23 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -32,7 +32,7 @@ cmp.setup({ [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.close(), - [""] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping.confirm({ select = false ,behavior = cmp.ConfirmBehavior.Replace }), [""] = cmp.mapping(function(fallback) if vim.fn.pumvisible() == 1 then t("") From cc1acf931a321102d78fc63f7042b90cf4267d23 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 14 Nov 2021 23:56:24 +0000 Subject: [PATCH 294/419] Add glsl filetype detection --- lua/ftdetect/ftdetect.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lua/ftdetect/ftdetect.lua b/lua/ftdetect/ftdetect.lua index fd43b6d..2e7215a 100644 --- a/lua/ftdetect/ftdetect.lua +++ b/lua/ftdetect/ftdetect.lua @@ -1,4 +1,4 @@ -vim.cmd [[ +vim.cmd([[ augroup detectfiletypes autocmd! BufRead,BufNewFile *.mxx,*.mpp,*.txx,*.tpp setfiletype cpp augroup END @@ -22,4 +22,8 @@ augroup END augroup nixfile autocmd! BufRead,BufNewFile *.nix set filetype=nix augroup END -]] + +augroup glsl + autocmd! BufNewFile,BufRead *.vert,*.tesc,*.tese,*.geom,*.frag,*.comp,*.glsl set ft=glsl +augroup END +]]) From eaab3b8aa9e995b26804bd77356110b17c986d66 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 14 Nov 2021 23:57:34 +0000 Subject: [PATCH 295/419] Add glsl treesitter syntax highlighting Replace json with json5 --- lua/plugrc/treesitter.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 22c7d6a..7eeacf5 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -14,14 +14,15 @@ require("nvim-treesitter.configs").setup({ "zig", "nix", "comment", - "json", + "json5", "haskell", "lua", "vue", "typescript", "scss", "html", - "norg" + "norg", + "glsl" }, -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing From cfee7bc8c4fac75b2baedc83821f3a5359146a77 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 22 Nov 2021 20:10:39 +0000 Subject: [PATCH 296/419] Remove null_ls codeaction for gitsigns --- lua/plugrc/lspconfig/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 52c2ef8..0833ad3 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -78,7 +78,6 @@ local function setup_servers() local null_ls = require("null-ls") local sources = { null_ls.builtins.formatting.stylua, - null_ls.builtins.code_actions.gitsigns, null_ls.builtins.diagnostics.shellcheck, null_ls.builtins.diagnostics.cppcheck.with({ extra_args = { From 0366581816c6cbd589b6b386381c9717d9d9ba52 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 24 Nov 2021 04:46:51 +0000 Subject: [PATCH 297/419] Replace b3nj5m1n/kommentary with numToStr/Comment.nvim --- lua/lazy/init.lua | 1 - lua/lazy/kommentary.lua | 6 ------ lua/plugins.lua | 2 +- lua/plugrc/init.lua | 15 ++++++++------- 4 files changed, 9 insertions(+), 15 deletions(-) delete mode 100644 lua/lazy/kommentary.lua diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 70a627d..1333956 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,5 +1,4 @@ require('lazy/telescope') require('lazy/trouble') -require('lazy/kommentary') require('lazy/glow') require('lazy/symbols') diff --git a/lua/lazy/kommentary.lua b/lua/lazy/kommentary.lua deleted file mode 100644 index ee20425..0000000 --- a/lua/lazy/kommentary.lua +++ /dev/null @@ -1,6 +0,0 @@ -require('utils') -vim.g.kommentary_create_default_mappings = false -local opt = {noremap=false} -map("n", "gcc", "packadd kommentary|kommentary_line_default", opt) -map("n", "gc", "packadd kommentary|kommentary_motion_default", opt) -map("x", "gc", "packadd kommentary|kommentary_visual_default", opt) diff --git a/lua/plugins.lua b/lua/plugins.lua index 57bff5b..4d4e05a 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -13,7 +13,7 @@ require("paq-nvim")({ -- === Editor Plugins === -- -- A commenter for different Language - { "b3nj5m1n/kommentary", opt = true }, + { "numToStr/Comment.nvim" }, -- === Themes and Colour Scheme === { "navarasu/onedark.nvim" }, diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index ce180b6..aa1778c 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -2,10 +2,11 @@ --== PLUGINS INIT == --========================================================== -- -require('plugrc.lspconfig') -require('plugrc.gitsigns') -require('plugrc.compe') -require('plugrc.autopairs') -require('plugrc.whichkey') -require('plugrc.tree') -require('plugrc.neorg') +require("plugrc.lspconfig") +require("plugrc.gitsigns") +require("plugrc.compe") +require("plugrc.autopairs") +require("plugrc.whichkey") +require("plugrc.tree") +require("plugrc.neorg") +require("Comment").setup() From dfecb667d0f67b9a69c77c4e739f53a7f5c5c21d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 24 Nov 2021 04:47:46 +0000 Subject: [PATCH 298/419] Reorder loading of files --- init.lua | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/init.lua b/init.lua index d120daa..eb9cf09 100755 --- a/init.lua +++ b/init.lua @@ -2,36 +2,36 @@ -- =================================================================== -- === FILETYPE CONFIGURATIONS === -- =================================================================== -require('ftdetect') -require('ftplugin') +require("ftdetect") +require("ftplugin") -- =================================================================== -- === EDITOR CONFIGURATIONS === -- =================================================================== -require('editor') +require("editor") -- =================================================================== --- === UI CONFIGURATIONS === +-- === MAPPINGS ONFIGURATIONS === -- =================================================================== -require('ui') +require("mapping") -- =================================================================== --- === PLUGINS CONFIGURATIONS === +-- === TERMINAL CONFIGURATIONS === -- =================================================================== -require('plugins') -require('plugrc') +require("terminal") -- =================================================================== --- === LAZY PLUGINS CONFIGURATIONS === +-- === UI CONFIGURATIONS === -- =================================================================== -require('lazy') +require("ui") -- =================================================================== --- === MAPPINGS ONFIGURATIONS === +-- === PLUGINS CONFIGURATIONS === -- =================================================================== -require('mapping') +require("plugins") +require("plugrc") -- =================================================================== --- === TERMINAL CONFIGURATIONS === +-- === LAZY PLUGINS CONFIGURATIONS === -- =================================================================== -require('terminal') +require("lazy") From ff8acb8006e867b94bc6461056dc2f587cc73f63 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 24 Nov 2021 05:06:16 +0000 Subject: [PATCH 299/419] Add mapping for :BufferLinePick --- lua/mapping/tab_buffer.lua | 64 ++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index 618a957..a4b5c99 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -1,46 +1,50 @@ -require('utils') +require("utils") -- === Moving around, tabs, windows and buffers === -- -- To use `ALT+{h,j,k,l}` to navigate windows from any mode: > -map('t', '', [[h]]) -map('t', '', [[j]]) -map('t', '', [[k]]) -map('t', '', [[l]]) -map('i', '', [[h]]) -map('i', '', [[j]]) -map('i', '', [[k]]) -map('i', '', [[l]]) -map('n', '', 'h') -map('n', '', 'j') -map('n', '', 'k') -map('n', '', 'l') +map("t", "", [[h]]) +map("t", "", [[j]]) +map("t", "", [[k]]) +map("t", "", [[l]]) +map("i", "", [[h]]) +map("i", "", [[j]]) +map("i", "", [[k]]) +map("i", "", [[l]]) +map("n", "", "h") +map("n", "", "j") +map("n", "", "k") +map("n", "", "l") -- Close the current buffer -local opt = {noremap = false} -map('', 'bd', ':bdelete', opt) +local opt = { noremap = false } +map("", "bd", ":bdelete", opt) -- Close all the buffers -map('', 'ba', ':bufdo bd', opt) +map("", "ba", ":bufdo bd", opt) -map('', 'bn', ':bnext', opt) -map('', 'bp', ':bprevious', opt) -map('', 'bf', ':bfirst', opt) -map('', 'bl', ':blast', opt) +map("", "bn", ":bnext", opt) +map("", "bp", ":bprevious", opt) +map("", "bf", ":bfirst", opt) +map("", "bl", ":blast", opt) +map("n", "blp", ":BufferLinePick", { + noremap = true, + silent = true, +}) -- Useful mappings for managing tabs -map('', 'tnw', ':tabnew', opt) -map('', 'to', ':tabonly', opt) -map('', 'tc', ':tabclose', opt) -map('', 'tm', ':tabmove', opt) -map('', 'tn', ':tabnext', opt) -map('', 'tp', ':tabprevious', opt) -map('', 'tf', ':tabfirst', opt) +map("", "tnw", ":tabnew", opt) +map("", "to", ":tabonly", opt) +map("", "tc", ":tabclose", opt) +map("", "tm", ":tabmove", opt) +map("", "tn", ":tabnext", opt) +map("", "tp", ":tabprevious", opt) +map("", "tf", ":tabfirst", opt) -- pass a positive or negative argument to the command to move by that step-- -map('', 't', ':tabnext', opt) +map("", "t", ":tabnext", opt) -- Opens a new tab with the current buffer's path -- Super useful when editing files in the same directory -map('', 'te', ':tabedit =expand("%:p:h")', opt) +map("", "te", ':tabedit =expand("%:p:h")', opt) -- Switch CWD to the directory of the open buffer -map('', 'cd', ':cd %:p:h:pwd', opt) +map("", "cd", ":cd %:p:h:pwd", opt) From 7608cd1d1b75fd12fa5532c36628bdef65b6a1ff Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 06:00:24 +0000 Subject: [PATCH 300/419] Use bubble status line and remove unused config info --- lua/plugrc/lualine.lua | 82 +++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 54 deletions(-) diff --git a/lua/plugrc/lualine.lua b/lua/plugrc/lualine.lua index 060de98..ee4446e 100644 --- a/lua/plugrc/lualine.lua +++ b/lua/plugrc/lualine.lua @@ -1,57 +1,31 @@ local function total_num_lines() - return vim.fn.expand(vim.fn.line('$')) + return vim.fn.expand(vim.fn.line("$")) end -require'lualine'.setup { - options = { - icons_enabled = true, - theme = 'gruvbox', - component_separators = {'', ''}, - section_separators = {'', ''}, - disabled_filetypes = {}, - padding = 1, -- adds padding to the left and right of components - left_padding = 1, -- adds padding to the left of components - right_padding =1, -- adds padding to the right of components - upper = false, -- displays components in uppercase - lower = false, -- displays components in lowercase - format = nil -- format function, formats component's output - }, - sections = { - lualine_a = {'mode'}, - lualine_b = {'branch','diff'}, - lualine_c = { - { - 'filename', - file_status = true, -- displays file status (readonly status, modified status) - path = 1 -- 0 = just filename, 1 = relative path, 2 = absolute path - } - }, - lualine_x = {'encoding', 'fileformat', 'filetype'}, - lualine_y = {}, --'progress' is the default - lualine_z = { - {'location', - left_padding = 0, -- adds padding to the left of components - right_padding =0, -- adds padding to the right of components - icon = nil, -- displays icon in front of the component - separator = ':', -- overwrites component_separators for component - condition = nil, -- condition function, component is loaded when function returns true - -- custom color for component in format - -- color = {fg = '#rrggbb', bg= '#rrggbb', gui='style'} - -- or highlight group - -- color = "WarningMsg" - color = nil - }, - total_num_lines - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {'filename'}, - lualine_x = {'location'}, - lualine_y = {}, - lualine_z = {} - }, - tabline = {}, - extensions = {} -} - } +require("lualine").setup({ + options = { + theme = "auto", + component_separators = "|", + section_separators = { left = "", right = "" }, + }, + sections = { + lualine_a = { + { "mode", separator = { left = "" }, right_padding = 2 }, + }, + lualine_b = { + "branch", + "diff", + { + "filename", + file_status = true, -- displays file status (readonly status, modified status) + path = 1, -- 0 = just filename, 1 = relative path, 2 = absolute path + }, + }, + lualine_c = {}, + lualine_x = {}, + lualine_y = { "filetype", total_num_lines }, + lualine_z = { + { "location", separator = { right = "" }, left_padding = 2 }, + }, + }, +}) From 64a9afc5250581499f297e0034ec1821f603ad80 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 06:11:10 +0000 Subject: [PATCH 301/419] Remove ftdetect and ftplugin since I don't need it anymore --- init.lua | 6 ------ lua/ftdetect/ftdetect.lua | 29 ----------------------------- lua/ftdetect/init.lua | 1 - lua/ftplugin/init.lua | 1 - lua/ftplugin/vimwiki.lua | 5 ----- 5 files changed, 42 deletions(-) delete mode 100644 lua/ftdetect/ftdetect.lua delete mode 100644 lua/ftdetect/init.lua delete mode 100644 lua/ftplugin/init.lua delete mode 100644 lua/ftplugin/vimwiki.lua diff --git a/init.lua b/init.lua index eb9cf09..7abd0a5 100755 --- a/init.lua +++ b/init.lua @@ -1,10 +1,4 @@ -- The system wide config file is found in /usr/share/nvim/sysinit.vim --- =================================================================== --- === FILETYPE CONFIGURATIONS === --- =================================================================== -require("ftdetect") -require("ftplugin") - -- =================================================================== -- === EDITOR CONFIGURATIONS === -- =================================================================== diff --git a/lua/ftdetect/ftdetect.lua b/lua/ftdetect/ftdetect.lua deleted file mode 100644 index 2e7215a..0000000 --- a/lua/ftdetect/ftdetect.lua +++ /dev/null @@ -1,29 +0,0 @@ -vim.cmd([[ -augroup detectfiletypes - autocmd! BufRead,BufNewFile *.mxx,*.mpp,*.txx,*.tpp setfiletype cpp -augroup END - -augroup pandoc_syntax - au! BufNewFile,BufFilePre,BufRead *.pdc set filetype=markdown.pandoc -augroup END - -augroup build2_syntax - au! BufNewFile,BufFilePre,BufRead buildfile set filetype=make -augroup END - -augroup asmfiletypes - autocmd! BufRead,BufNewFile *.s,*.asm set filetype=asm -augroup END - -augroup zigfile - autocmd! BufRead,BufNewFile *.zig set filetype=zig -augroup END - -augroup nixfile - autocmd! BufRead,BufNewFile *.nix set filetype=nix -augroup END - -augroup glsl - autocmd! BufNewFile,BufRead *.vert,*.tesc,*.tese,*.geom,*.frag,*.comp,*.glsl set ft=glsl -augroup END -]]) diff --git a/lua/ftdetect/init.lua b/lua/ftdetect/init.lua deleted file mode 100644 index efab15a..0000000 --- a/lua/ftdetect/init.lua +++ /dev/null @@ -1 +0,0 @@ -require('ftdetect/ftdetect') diff --git a/lua/ftplugin/init.lua b/lua/ftplugin/init.lua deleted file mode 100644 index b43ad1d..0000000 --- a/lua/ftplugin/init.lua +++ /dev/null @@ -1 +0,0 @@ -require('ftplugin/vimwiki') diff --git a/lua/ftplugin/vimwiki.lua b/lua/ftplugin/vimwiki.lua deleted file mode 100644 index fea2f30..0000000 --- a/lua/ftplugin/vimwiki.lua +++ /dev/null @@ -1,5 +0,0 @@ --- Check docs :h vimwiki-list -vim.cmd[[ -autocmd FileType vimwiki inoremap :VimwikiReturn 3 3 -autocmd FileType vimwiki inoremap :VimwikiReturn 2 2 -]] From a0927fb60e07b4b35d6d6ef690c81738f351cd41 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:14:37 +0000 Subject: [PATCH 302/419] Update README for lua branch --- README.md | 240 ++++++++++++++++++++++-------------------------------- 1 file changed, 96 insertions(+), 144 deletions(-) diff --git a/README.md b/README.md index 762f94d..5d66831 100644 --- a/README.md +++ b/README.md @@ -1,205 +1,157 @@ # Awesome Neovim Configuration -This is to make setting up of vim 8 && neovim 0.4 and above easy and a breeze. -Moving on I will use vim and neovim interchangably because they are very similar -under the hood. +This is to make setting up of neovim >= 0.5 a breeze. +# NOTE : for vim >= 8 checkout [vim 8 branch]() ## Awesome NeoVim with C++ Supports the following - -- clang , gcc compilers -- clang-tidy linter -- clang-format formater -- clangd lsp server with coc.nvim lsp client -- cppcheck and clang-check static anlysis -- All build systems build2 , cmake , meason ++ -- autocompletion,documentation and all other features supported by clangd and - coc.nvim +- zig, c , c++ compilers +- linters and static analysis through null-ls +- formatters using neovim builtin lsp +- lsp server with nvim-lspconfig lsp client +- Any build system +- Treesitter syntax highlighting +- autocompletion,documentation and all other features supported by any lsp + server you configure ![Awesome-NeoVim with C++](https://github.com/Ultra-Code/awesome-neovim/blob/master/assets/AwesomeNeovimForC%2B%2B.png) -## Awesome Neovim for Ts with Vue - -Supports the following and more .... - -- Node v12+ -- eslint linter -- pretteir formatter -- Tsserver with coc.nvim -- autocompletion,documentation and all other features supported by tsserver and - coc.nvim - -![Awesome NeoVim with Ts and Vue](https://github.com/Ultra-Code/nvim/blob/master/assets/AwesomeAndConfigurableNeoVim.png) - >__NOTE__ the languages supported out of the box are ->c++,c,cmake,python3,js,html5+,css3+,ts,vue,haskell,markdown,json +> zig , c++ , c , lua , js , ts , html5+ , css3+ , vue , markdown , json , glsl , nix >__But__ support for other languages can easily be add by using it required -[lsp's](https://github.com/neoclide/coc.nvim/wiki/Language-servers) ->and [coc-extentions](https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions) +[lsp server configuration](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md) +and installing the server and other accompaning tools for development like linters , static analysers, formatter ## Requirement -Installation of plugins in neovim or vim requires `python 3` support -.You can check if your neovim has python support by running -`:echo has("python3")` +Unlike the [vim branch]() with neovim >= 0.5 most plugings written in lua and don't depend on python or node +But if you decide to use a plugin that rely's on any of these you would have to install them but I recommend +you find their lua equivalent. Chances are that it will be faster (due to luajit) and more well +intergrated with neovim >= 0.5 __Neovim__ -Neovim does not come out of the box with python 3 support - ->Additional Setup is required for python 3 - -First install [pynvim](https://github.com/neovim/pynvim) - -```bash -python3 -m pip install pynvim +Neovim does come out of the box with luajit and treesitter support + +## Repo structure +```text + 📂 ~/.config/nvim + ├── 📂 lua + │ └── 📂 lazy + │ │ ├──  glow.lua + │ │ ├──  init.lua + │ │ ├──  symbols.lua + │ │ ├──  telescope.lua + │ │ └──  trouble.lua + │ └── 📂 mapping + │ │ ├──  highlighting.lua + │ │ ├──  init.lua + │ │ ├──  lspconfig.lua + │ │ ├──  spellcheck.lua + │ │ ├──  tab_buffer.lua + │ │ ├──  terminal.lua + │ │ └──  tree.lua + │ └── 📂 plugrc + │ │ └── 📂 lspconfig + │ │ ├──  autopairs.lua + │ │ ├──  bufferline.lua + │ │ ├──  compe.lua + │ │ ├──  gitsigns.lua + │ │ ├──  init.lua + │ │ ├──  lualine.lua + │ │ ├──  neorg.lua + │ │ ├──  tree.lua + │ │ ├──  treesitter.lua + │ │ └──  whichkey.lua + │ ├──  editor.lua + │ ├──  plugins.lua + │ ├──  terminal.lua + │ ├──  ui.lua + │ └──  utils.lua + ├── README.md + ├── LICENSE + └──  init.lua ``` +All lazy loading plugins are in `lua/lazy` while all key mappings are in +`lua/mapping`. Configuration for plugins are in `lua/plugrc`. +`lua/editor` contains editor configuration. +`lua/plugins` contains the list of all plugins +`lua/terminal` contains configuration for neovim builtin terminal +`lua/ui` contains tabline , statusline and treesitter configuration +`lua/utils` contain some resuable functions -And add the following configuration in your `$XDG_CONFIG_HOME/nvim/editor.vim` or -`$HOME/.config/nvim/editor.vim` +To use this awesome configuration clone this repo into `$XDG_CONFIG_HOME/nvim` or `$HOME/.config/nvim` -```bash -let g:python3_host_prog=/path/to/python3/executable/on/your/system -``` +__Paq is a Neovim package manager written in Lua.__ as quoted by their site +[Paq](https://github.com/savq/paq-nvim) -__Vim Plug is A minimalist Vim plugin manager__ as quoted by their site -[Vim-Plug](https://github.com/junegunn/vim-plug) - -### Installation of Vim-Plug - -#### _NOTE_ - -_Now the is automatic Vim-Plug installation for all neovim and vim users -You can automate the process by putting the following commands in your Vim configuration -file as suggested [here][auto]. and open nvim and watch some beautiful magic happen. -___This is a one time activity so after vim-plug has been istalled you can -remove these commands from your config. -The $MYVIMRC is an environment variable that should point to your init.vim file -for neovim users and .vimrc file for vim users___ ._ - -__Note for neovim users__ -_On linux the path for the plugin is `$XDG_DATA_HOME/nvim/site/autoload/plug.vim` -if the evironment variable `$XDG_DATA_HOME` is defined __else__ use the default -`'~/.local/share/nvim/site/autoload/plug.vim` for this to work_ - -__Thanks to @junegunn/vim-plug and all colaborators.__ - -[auto]: https://github.com/junegunn/vim-plug/wiki/tips#automatic-installation +### Installation of Paq ### Neovim #### Unix ```zsh -curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ - https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +git clone --depth=1 https://github.com/savq/paq-nvim.git \ + "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/pack/paqs/start/paq-nvim ``` ##### Windows (PowerShell) ```powershell -md ~\AppData\Local\nvim\autoload -$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' -(New-Object Net.WebClient).DownloadFile( - $uri, - $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( - "~\AppData\Local\nvim\autoload\plug.vim" - ) -) +git clone https://github.com/savq/paq-nvim.git "$env:LOCALAPPDATA\nvim-data\site\pack\paqs\start\paq-nvim" ``` -### Vim - -#### Unix +#### _NOTE_ -```bash -curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ - https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim -``` +_There is automatic Paq installation for all neovim. +You can automate the process by putting the following commands in your neovim lua configuration +file as suggested [here][auto]. and open nvim and watch some beautiful magic happen. +___This is a one time activity so after Paq has been istalled you can +remove these commands from your config.___ ._ -##### Windows (PowerShell) +__Thanks to @savq/paq-nvim and all colaborators.__ -```powershell -md ~\vimfiles\autoload -$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' -(New-Object Net.WebClient).DownloadFile( - $uri, - $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( - "~\vimfiles\autoload\plug.vim" - ) -) -``` +[auto]: https://github.com/savq/paq-nvim#bootstrapping -### Install Plugins Using Vim-Plug +### Install Plugins Using Paq -move to `$XDG_CONFIG_HOME/nvim` or `~/.config/nvim/` and open the plugins.vim file +move to `$XDG_CONFIG_HOME/nvim` or `~/.config/nvim/` and open the plugins.lua file and run this commands -```bash -:source % # To cause init.vim to update itself +```zsh +:luafile % # To cause lua to update cache of the file -:PlugInstall #To install plugins +:PaqInstall #Install all packages listed in your configuration -:PlugUpdate #To update plugins +:PaqUpdate #Update all packages already on your system -:PlugUpgrade #To upgrade to the latest version of Vim-Plug +:PaqClean #Comment or remove the plugin you want to remove from plugins.lua + #then :luafile % and run PaqClean to remove that commented/removed plugin -:PlugClean # Comment the plugin you want to remove with '"' then :source % - # and run PlugClean to remove that commented plugin +:PaqSync #Execute the three operations listed above ``` For modern c/c++ developemt -```bash -sudo aptitude install gcc ccls cppcheck +```zsh +Debian Linux - sudo aptitude install clang clang-tidy clang-format clangd cppcheck +Arch Linux - sudo pacman -S clang lldb cppcheck #Note: When using another build system like build2 you will need to dry run #your build system and pipe the output to compiledb to generate compile_commands.json # eg. $ b -vn clean update |& compiledb -sudo aptitude install clangd clang-format clang-tidy clang # don't forget to -#generate a compile_commands.json file using cmake with 'cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -#in your project directory OR -``` - -And Assumming you plan to get involved in web developemt then you should -insllall the following plugins - -```bash -:CocInstall coc-vetur coc-highlight -:CocInstall coc-json coc-tsserver coc-html coc-css coc-markdownlint -``` - -there are a lot of other extentions you can install for the coc.nvim language -server client [Coc.nvim](https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions) - -`Note to change the plugins that are automatically installed by coc.nvim edit -the plugrc.d/coc.vim's global_extension variable with your desired plugins` - -```vim -let g:coc_global_extensions=[] -``` - -for python - -```bash -:CocInstall coc-python -pip3 install flake8 yapf # For linting and formatting +#For cmake generate a compile_commands.json file using cmake with 'cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +#in your project directory ``` for help using the various plugins and extensions -```bash +```zsh :help local-addtions ``` to view the help pages and instruction manual on the various extensions -In addtion to these plugins ,some plugins like Vista have external dependencies -which have to be installed in other to use them. - -```bash -sudo aptitude install universal-ctags # enable vista to generate source code tags -``` - ->>Big ShoutOuts to the Creators of Vim && Neovim. ->Another to all the creators of the various vim and neovim extensions. +>>Big ShoutOuts to the Creators of Neovim. +>Another to all the creators of the various neovim extensions. >And Last but not the least __God Bless The Vim && Neovim Community for this >hyperextensible and hackable text editor__ From 4459625f6fefebebe20a2a5cd7f281449c305e71 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:15:16 +0000 Subject: [PATCH 303/419] Update glow.nvim repo since the user was renamed --- lua/plugins.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 4d4e05a..f230ca5 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -43,7 +43,7 @@ require("paq-nvim")({ -- === Preview Plugin === -- A markdown previewer prebuild binary - { "npxbr/glow.nvim", branch = "main", run = ":GlowInstall" }, + { "ellisonleao/glow.nvim" }, -- === Note Taking Plugin === { "vhyrro/neorg", branch = "unstable" }, -- neovim note taking tool From ec5f12b8d23f8e4e891a3df649be7ba9afac1de5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:20:57 +0000 Subject: [PATCH 304/419] Update ui to use onedark theme --- lua/ui.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lua/ui.lua b/lua/ui.lua index 8a40b39..d62246a 100644 --- a/lua/ui.lua +++ b/lua/ui.lua @@ -2,18 +2,18 @@ vim.o.termguicolors = true -- Onedark colorscheme ---vim.g.onedark_style = 'deep' --darker,default,cool ,deep,warm,warmer +vim.g.onedark_style = "deep" --darker,default,cool ,deep,warm,warmer ---require('onedark').setup() +require("onedark").setup() -- For dark theme -vim.g.vscode_style = "dark" - -vim.cmd[[colorscheme vscode]] +--vim.g.vscode_style = "dark" +-- +--vim.cmd[[colorscheme vscode]] -- status line -require('plugrc/lualine') +require("plugrc/lualine") -- buffer line require("plugrc/bufferline") -- Treesitter syntax highlighting -require('plugrc/treesitter') +require("plugrc/treesitter") From 4263defecd2929c4b3b7dd95598811510627ced5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:28:19 +0000 Subject: [PATCH 305/419] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d66831..3a8cd56 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Awesome Neovim Configuration This is to make setting up of neovim >= 0.5 a breeze. -# NOTE : for vim >= 8 checkout [vim 8 branch]() +### NOTE : for vim >= 8 checkout [vim branch](https://github.com/Ultra-Code/awesome-neovim/tree/vim) ## Awesome NeoVim with C++ From 56870840df377c9f2842d07556190add73e57a36 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:35:22 +0000 Subject: [PATCH 306/419] Add assets for new setup with lua --- assets/AwesomeAndConfigurableNeoVim.png | Bin 402858 -> 0 bytes assets/AwesomeNeovimForC++.png | Bin 301940 -> 0 bytes assets/AwesomeNeovimWithC++.png | Bin 0 -> 385167 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/AwesomeAndConfigurableNeoVim.png delete mode 100644 assets/AwesomeNeovimForC++.png create mode 100644 assets/AwesomeNeovimWithC++.png diff --git a/assets/AwesomeAndConfigurableNeoVim.png b/assets/AwesomeAndConfigurableNeoVim.png deleted file mode 100644 index 87b59f20742715c1e01d87d1f8ecdef7e23ddabc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402858 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

    nQ^`C{*a%H_=qtf; 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

  • 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

    Q435X+5tZ8Hl@~CuCqFH@t|lc5 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 @mTc*{z8D&5E?8Haqe& zX#^@Aj%qhGR3~@5$a+NCH1YOBMsg{FSf*GDHtp}mIpR=-zb*#|R2g1@^j@dg{Ipa7 zeOg0&m=J|7og@W#@dy7~L|K z?Wi{aI9785+Cu|soQ$-Oi>*&2(D{0NV7wq7Vy7f5nqIJqn@5Jo*~{hofAICHynDw` z6J^+4bV)_eDZdMUQztXG%p^Y)N}~ zjVe&gN$E>Ch-V|8H0;a8)zpg>X)6tV_wYipZ&i&cZGMiw2UpjN(XL!04nC!NzU7<6 zs60IM;MbJN@!lJaFPaYZN_|7KmNtrgnz&rcB*vD_5P5!h=vJ!1rkU1;+)9a@R3yS13_06pBOttb%^J6(qz=To2lnEytSrq0^b3 zBaBwiX9m?mDn%V3)ZnJro{LcUS#quEf||@)2{pFfmQyYCXEUglfZoOoO9*4?24%4! z=@C=snA#=NXmSN`+iRMVwC<9f3B-YbLbYe;kQ`{|#pCN48dTRHB` z)rL%+8gI#xuxuW5RWzFF_unUrdr-s4eMyZ3#$s+r)%DHrMboF&VISOC+A^7MPIY>L z_#0wk_?ic_+0Uu?25lEEb|x^S zPPz4lWDtfm*L#&sg8O*+o9Mqr7AEf4<|5jRI2k`NmwXija=BmH`r&By=L|Yo@`Dj4 zOEA#=zsEmF;@FH7)rgG_?0#2|%*3I`8nWi^7jsc`Who&ZLGw76lQG^2SV59 z!i=)KX34-GEpNn%-DA1F!7CSemietBPW6*Mc&{`G{C0v>!z!QMUH~L|?_@c(b^N`a zK_qQ7Vy%X|87z$FWldtRq$HaAS+dz>wLS?N(=|q?HJP037v!1vx$df%r^_dTKvZQD zjy>|kj$qc~fS>sCyxGP;sOh@3p#|&6qA#3nejElgbyeg_TP8_qzWzSHSfJsW%&(d4 zp1TNEJyoz;?=rUYd(CLyV9g!w?kDi$BdH6cJBLv^!}4k`FT)UMr6nmwm^t0*Gpzq6 z96+Oy!B%f_^bF-+GzYJC2Uxr9SucKh5TVN(_9dh#oq9- zm)jQzZqK~D2!DB*9qwzcyN~)I9#F+N(I%~|o&u6~DhLr{ovyw>W{K#D_rt0Y)u zW+_LBb9EuwwSXu}(rlWpbcpvIjxJ-LyTm$pJxYyM4j-xh7A`J)D1GXVwfct|+;WA= z>BAD!lki#7FN$-s$K$Vk7Xndi=@%mGv9+vFWo)W%r^I?4*>6R3nUg>AM2rC8e)zAD zqB34>uTho*5Cu5y5CCIt99ZTzd6xG0y7me+5y-AoY}rup0Jm@LR`|n~T6t1tHn@DK zLJ5x>n&QYo&8V^B-Kk$*=H~uF*HX3|agXGYvf|}VAro_sMycBN2m|S4A-qWuKpC)! zP*U~)VXR+D40=Bx79;E1al|S~nVBMQauP*HLO54Xk!zcOdy)a;Tl-8%haFLW4G>Ns zEFAi%AGe~PYa&NVnH4z`D%!NO28%DMCMA-mjZg<>P=;PZc9n$Jo>fe_9~O2jiC29G zHCf>7N}?JA9LQ@P_np|`O@GpY!tgBtLIDL;;E%u+k231Rwo z!jjSr3;Ljc!S%L;Q}a@jATqb5rXlaclIedkwfRc}uc`fTCiA?+V~83fy%6gDcpREy z;?m}@4h44|Nir8=Y!VIeHKadO8#`oz_*Wi94~$2yq<*Z35v6`EW*!V5Hw4?y(lu#D zy4ZvnQ5SC5DU|$JK|E~)iQApydr}NQT>YwyeIuTGCz^%?QN@i#%d2jW0d0j-wDeLK;N7Les6Hj$l*2cnZ=@SzfOK3;#udqaq zxG{A?H@Wha+kXm~ZWz_ut68}K>PN4lpCBb&*iDsMw^>WUUQBg`F$uOL5@9CZGOKke zM)dM2RI}#8dm8?uTayLy=bCO&X`@J0WcE}Fr$d=jQR!ji`3XcmtuDLfY==MI4Wce9 zR7`hq(`#0fJ0h$;DPnvUBE|+3m3;Y(ilses8-UJHj)?>w;U!$;mNc~%Ai%^ccO7Sq z#-GAZG-e@3=`2gXKNv}WUO`!}`|U@dj)O5yK-8KPZQfK|%-!92QNHKU=s$B}_K~H) zaTcoG*5=n?EZKFcHFeZZL1|yIU{jvD_H;xAs@;%tmVhd9P&06VQ0}Ydf;N zyqQAgO;sS(x!bAxarvOI8+otlEk~|NasEsTO|8qAA3|xo`qp`?VIoKni=h_A6URt; zx^bC83;{-|lA}yN zc6L~nD558z{~fPR1FTcEi&(hQ36Fkg@{lGIV9+9nM+D2sOQgz+UvU-@3^#_Dmm+~r zB{OdGPDp;ZEAp*Us-&komGa`_35CI%_gIxl0s8a74nBQNjlpUy&peN7AI6chn?}aY z4?^G;}j~^Z_lxVY%Ysjfy=nlUHsozfH?gSeYC#$DPd=03cEdS z^>rV<6v`&+sA-m+uVAv9g5R_Zqoe~Ha;|EmcTyS3C6j>^o87+Ik-4fIYjOx8pr&Q| zu=#{|P@<5o4BusUpj8O~~ zDRqf)D+G4XUXzwMj=sJW6czigo0*_$B5-h&!3=V1O;C=h5?TYFqJ+46AUwWhmRP*Z za-0t)P)f2yI;%6f!S~?sm?snS_)z|Q3JDF!p*(rusrta>+a~o%TD_xp0f-=Lk^WT= zEs!Rcndxm=5rm`aHh(GFkfQt{j+>@w#6xq=~fAc(FvjJR!L zDlUT$SyW-?Ms(g&Q1YOMcx;`@HGhV8uP3W!HWzsAzT=H>CFev$+x)HO?C16 zn?Wgc9DM2`{W(3sGtQj%TkGYAm~!9J81R&E+j@p-xF*Nl+@b6HBxT0bG?SNIU9IKU z=v0ih^{eoK;-<4em%HU7Tv=lI+?1<&FU#N8yzM|aXTKhgeQDI8U>kOms8)v0SSP#+ zpo1zfnwy^RKTBFcG~J8bjX`VW`4ry;RpE<-QV64=S|wNv88$3D|L*QjnUi5C=3n1_ zfkk)Sr_;^s9kDaOU6H*?ZYfvo8_c@DzuMm%3l9VrXS zQB&KZ4rki>vj<-XO#zD{a?nvR{WmrSP8e-fMLtcpvz_wzE76m-#nyBdT_>%c80EeZ zQ!UY_7B1&9tJU>(tD<<>&l=w(sC6I^EPs{+bCUsZ%GDvIe+pVyvV4ABJcZ*LhWg%j z<7h}I$&G_R{i*XieW%R%i{R2DT*26-+xErnv*N4%6O?deyk!U!s_&fl!;o_%mi9Db zn@3@|1R-G^zJ@IjU?L@^)+5khIXja1Aq^U}L=Yz*TnW0={93*-@J^l2 zZOprbku*1w9XTak^ln+!X@UF5e~!1VCb6eUsB;SGdTKr9JNHsUU(~YN7#7Vpi_4*+ zI1u#t`Y0qzq-^BoX0r)DaA`dC1zTB;daeFQLs)_PBn-DVyCvVJnLEA$hcI>faC;6U!Nn7wSTdM^ht(L78q<&) zj`dyz!XiVMcC6mrrQhtm2ZFEeZymu$v&ku~PPC`Ip3ff7KXKgegd6trYb(0CwvMlB zs|qJ4i7R>UaUmCyoHkN#eav5-N}@qq4Bp3_>sZO%TnUO8m-Q99q^&jdKBq!x&nxh& zEmh%r(_YfEpW*8YoXI(RJ;<}6Zf_z}evlYS%9@V`o36G~gV0TXia;Y??)e^&`^Gze zRMh$CsZD^$3ugSclSHfYD4KNhijshhmJs`SHvJ!Lc{0|^FOn=pGVt%WVNL(8_X$A= zPFKGQLamq*`TKu}(8TXN9OIEsMA}mff5IHqc8l_CDy2jvE7KSA zR- zWr(NuIqU*sN?+ZVo04zVoynhFhpFhjpj26lrFKt*J7-fUW#g5g@NdTVx>C1u>>YHq zmA`O(bJo;DcJGi)4fjyx@C~GP68`LolKp2-^W5*$@C}^kO1lshrHF7QL&LJauvL)X zbmU%QF*^|wn}bRvnY{Zm!S3zhTH|59qZl|8D@ms}%8}WWC?R8P_KKOdeYq`4&fo3O zy_CBZloEH`djdtppIWqa5S2&9+$$>F;&>Qo(2fZb?_aPc!u`iVP|WG;0a3LECeR^Y-Ps}wAI4DdeUmDiuV~F+5&ozZ;%OpXD2}g9UD6or2P)QgXlO|a94O} zw0-WG>PX-p(YV-4dA_^8@)2-V!|=I#XTLflU1DuI*aD5nXo(L`CzR7~-_3~Tz-%8j zI_|5|*{5OD!Bzug#`L(@(bfsqJzil1Jl`PfdA>JqRXC|5cDfOo`2|GjyIpvMEBHTG z`q;a348*}@JoP|7M7P%b`NlD6^~Ki?R_+Djk@UVbGd+S{y^u$opjFn^nwmW_QLP^n zD1OK_ALrpWMRV#=K!QWrc`cvu*fZ|a#v0HvBF+DNhV^(CRm&>tW#1O!eGmuUx`B>$ zaRgY3TsT-8NzIIYdC8bwY5P@ztf(4Of5?EY$7x6(ii5wPs>%`dGmM-$^hPljV2L&y zf$h3gL=W{MV#pjEPWRD}YQhKh4H!24Wta<&{|7f0L9^%eFT}@?my0#jv!)<|eq9JG z2=L7%x(LhU7qEz&Mh`ijjH6E_t1Vfj!oN5vltAm3|mGgRpOB>y+hJEtJlHh!6VnxJ~&HIn!xQVYJI>^3# z0BdsGl$Q{Zz-})aiEcA=u#Q&Xq%RpX+Jc`r&^hPmbu*O8Evb@3BzL8p;lr4L87*Da z7Sm=C7b4)-0cbKRA6EmF3aIy(pA$t74cGXA>@Uz8`d}7RZmFC-dCu-H-`#Tg%)=H9E+7lF5-Q#nS>8Ia} zWJiAZ{t9ZX2x0%KXs#F~C9ZC(CGm2Ir+0Kvu2IUhgFqo*94+X|dR=-pPV4PJlG&6W zn%bG_I9{cz#>c+CRv+^E993=PN_8yWoPgTXBW>A3czs9clwwBvwXM@MwAG{cxo0Pr1M`5|^ZalAPV$u6+&E%bM~?@Rxz z^|j?h#d2`JB6m8q%h`dWoNnS;TH&&@XQwDfq{w5~&Ja$i&48eW1GQ6dZ7G`}?>q5S zP!+Mu>p(a2wwIm-5D|g zRA!CAWRZ|53(pid>B)2TTOHyDU&DE8KEm!ai8nh{nE%ttM;4zQ^9ww?Cs}xmo!gLoO`6()t7m*jb)qSdK zCz{<*7cV=rBgMy*)b_Q8q*)W!=Tz4Ws6(=TCAu%?h7=5iJ3}3C=>y$GRlO|H4Ma$_K zm0bW+$~hj-)(Z3SckJTEa`)Zz8RwjkdnqJ4dd+?yGpK=>`e4VhxS`g>m?@2rZE6)2 z(7>4ZFucwk@6re8L$OR?L=AME8j(b!E^`c-Vz{9)0URkl@f_iH`ZW{(ivr8vB4c0^ zN3FfaZXf6EmWRS^bts}fZ&1OH$5cv=7dDFu&T1ucKGQm0SxrGoTB50rmC4ek&7X83rA_s{I&6Q~z#WaA8soY(@g=P;EV^ve^n@Fs z8R2x#Q!xsM1p<4))JJlnU(ljd9jn^{WMUJ@8#kB%tIShvN>S-n-)kGAjhu1xDZNO zRu}NMU2AwUXZ~8y5>aOxnp4*^fdjbK6}ZD*%w&df`8NJ7^jw+KZCQFYkA|hSsHEYC zOn6~=i}mT)MhXm~vg@k&+kh&&9ayP(lDFE4P(GQexJh9_g=R0Vmh)GFQA$>C=&d9g z-CR`m2?eL*a|Wi1H47u1B>9Zppi>@({gtwjL;=e4;krh+n=7KF7M01aB&8ow#lG7z z;$09Fl5gh%htWYeb~5G%#KFJ4->nXPsRNEtpU2JBzW zlqv#_@pcziE*wtJw%S{Ixk6CS3TYmIs^h)kbT)MAjyy(OE_n&&r8|QK7_8NudXwYf ze4Mzm#c*TH8O4-t`mbvfRTXnGP8VZ17=^9^otAJ;65@y$mfA1t{88*gMy<9!T7^?H z9Z8@kR~uPMvs_w|Vj+2M1;-w?c*dj^M>#S{YaKEM%Y|Apst~oOPgY|RTnQeK9Fe+% zaBKT(yra~1a-(KysZf;*BPsK*ZD!}~UB__ou~JNlRl}@z{CX)&AI>)}8F2OxoMr#O zEwXj>$QNoCxg`HdOFe+c=KQuKp6x(ddDmDPu}c?M)~IPiRzEvBye^d_R;!Z)LpX|M z+y{=c&-{rdMmj-hYXs#lOR7U?q}Rb@|Ap!I`tHc;ZY~Z9$CFNAL*%!kR(;Kpmier5 zyXakxpI)~!C})}pLK4NcJU=OPTs821#(fMT@4{k{U5&?7m^#>voLBF#b&IIm&}lh- z%u5}`nvrW0kQ+F020O`o+c*J7=%C2$d8}ypWf^pBP~?FfwS;jq52z+9gN;j(O)ehJ>e0PE-n=bdxPgi2N;!$K;{CI)W@OMg z^VMyvNj(prmfeW*?T!#=i8d6~Uz_mlKBIW~ATBH>O7-HpW5ZdK=WR{9Ak+D}aG+cOdZ!Ta96^GIO&^ z4CINug{nAAy*7xX;kDH4{B6=D(ic)wdfaq{?x;`Fk2`9C7@N$_9zGO3{S_HvM!&N_zVcbQ50j%5$=Pe1hY&*R*kK3IMK19&wM{}t3P zWG6o@RVl3TxEUX(m$jFt%LkkoVa>n9d}{S=e`7_Js$pGcIHG!CNOgVU0_#290Os`1 z-sD+i z`ALC1gjWO7z+8dU4T8{of5OH*j4y_EfBwO$e-VO60IIxnn07dm==udGi6tsw2>24n zz3kTqwyn}>3t#+RSRNgAFVL6zp3d0QPdeycGm&RhE>~z5w}fcr4xPA`#BUJbke_zq zJ!qgd4Bf%%ex)b%@5KHw|Mf4wfeN6VhW4m`?Q~SA!%}U z;qRO0g{93IwFH4*#6Mexj_S)A+QB(O;q>SR{oSj>Tq2zp9LL&7(z=1PXA4T__*jO9`z0vp!!%&= z7E=y4^Qqh1W3@A$r=u=pU+Kt_ISKsG%Tc}P8BqXPe(Ds(GnlH|@p5C#YvP$gXRr~y z_j%*F?rQ9p!w9C*+kaxDXOHH)TZ{twBbN@*q{75-gq^+x8?_P>B7a>8mP~snmW>L7 zD9y?C<7tl%VMI8wcw9`vrw+##czeX3bK~XNtTleG8p|M08(?9+B~6Skc~cT5vtC zb?j&POKkn9o=$qm{@>yI-ntSQ!4EHDCOEuxME0nGodJv?E-CphYos)iL>9aGg-Fg# zrbd(goQ4(nsKFoWZ!Z3yo;nb5kvOLg_G>m9(*A5=xSbxEcSOmbaSo3vfP}@xJds?x zn#0VgyPsZP?q_{h9Sy#62-JMNO#z*rBmcf$Rk~`($StY)rWHoq>_bwF#Z>4&% z+u0&da)iAy=OrhfZGKL@0if&7(D^W!*yl2TH4^1#6b^KH-tbMJ^&1N@sFUUIK0}3J zKQ~%|cF$G92)M|WO)m8)kR^?%5layG&kgS2IWvfKx%3s+&$}#f6spOxq4VPvo=PduN432eAfix!?qAb?OjGRe`C6rVa$!y zf=Wg{qoI=ce-QmL2Jy#dxko=!rk(TD43GkMmdBHFI_Y))p+N;LO_Rrha6+xhcRpO5 zvpN3Wr~~aarKQ#3P=M@h%IHT+ZQH(JiErqtvWSd z3l8PcYA|COen!;4JZqE@Ry#0*@T%BuCjKfRL+Agd2GJ`}aWKGx<$RpNV&s|0mAh?O zwxvl*JgCy(@Np%|-71WD+B4s|5iFEF%3Lt^TEY|ODK+$#P{+p`6Jxiz$FVw}cvqg) zrU~-XpMk^g$_;tF%m^lzGo5K!zV1twz{(vR^lY;4aw2_GDg9Hde2Y5^D z2vg=qCplJzu5mqb>4EebfU{2oAyNI;zrcP#0);HAnsa@r$s9?#lGZ@`OzWL7G9F~Z z|0Nu4TSod6aIwK6p;IKn+vm-*?6+G|mtf~jtoBZN-v63&C4yw@(rQlc$x7o3 zqQ3Ls-9Iols2*gb;(n)Rvm0eAv5AAVJ6|nJ`R{k}t}*if|bHM%n`B zWpk2+FqkE4T27%}HZPi6?yc;9Y6+<{UFw=2!zWaT%2j08x#M24w%ln2LEaQ)MGhNF zNO5!Zq7ji|R=JOVhCt8!9ZhJx`xDnp8$!|~8SF{Tkz$G~K;f(6=yt;Z`O2+!O?uo@z6wT1IE_Mq4*X% z`5PUfj}6h+o@*z@K=OjF0Isx?`!V+y+0|IK|dT)=t zc=Fi4X%gZW zQt~nOCii!WdP~c|n&f^|wfi}HP#14=@;y6NP)+qSs_ZJB_-I(2ZiXz25-!Qk75C!Y z+{k?^R5gO@cLX}a^xVs}V|nEoCr@Ja=tUzq*9)#!=lk(oAa4mgLxBrGRT3uz2I2Koio)vBiQH{>k1zUg!OE=arP^&W-ki z0YpcoUWiyrqd8lzTU2yIRna z@HBq->xCou>9vO2BOO~BCtlUGmMrp8BqhZ94+;~kw$#QF?3^$vH#w@4-S2-0FB0xv z6*TN*{z@xaEUu}osfu_8*J^Gu!UXxW%}kF$o(u7MLA^@FG;O;UvNS--j_uKW3r>Bo zFP%$%NJZWz6(={mN`{g3Q#} zqloh>4+Ip==>F9YNAiiEAscRPS8jk%nvnx==5Kl0pHc8N*`wq3YlMgctkqRXg==c^fJ~AG?NKrn z#XT5D`-l4<*_}DXcbu$D2gD!P0H2WkiO=rK%$MaA3$8_$IGA)HohVdHgP88kU*fBQ z^5BK^$;X2NCSDWmAsv5`QsBW4mwH8mgI?FI&v4{=OvT>XMZU%i-UgNV`3GNiR)1jK z>YNmoeGPjUKFmlZ-iQM%M zxz0OzfKWq<5MeRSf4uE%cN3qNoBg$7(szi;Q5B3iu`2dw@b=?My*XPRk;~UjMi|CIc@Z%vLoI>F$_KCI5JK#l!~G7+AGRW};{#s-*NOCtZ(<yQ4ufR3=EKS8Ir8;$*~x$_xT$H$p_%#K(N4&8+eM%f3*cnz+`R0d-UZ~IQ_T-$VL zlTQ6g(aemrKiLQAq6-?gkSp!&^J&<78{!U}7ATx8*Bg@DpH;Lx$0L27ofd}J>z(e* z?YD^N>AUBhewsJjvs|bg)EdoHqgV@cF=YCHG6fznD;qK?e=YX~V{u%sU|Dl<=7rv} zU*24&J)T{sdA{5RS07NyX(((1t=l{XfR-bgx@G*00r=+B=9MJ{yLkhMBtgi+FeH6- zstIhC>iPu9H?6CGln(zU2g)}P=2n}-pziYSwNCr6!AtP#P36Lt-v@sFa9x`ecnsV;=(TLIffnBq@MQyf8L zTp^VpwSki9cx2Oqbk*?;2wKXbO?wtro>#`otUojaSN&Ye|BJ4-jEZAz+Jzwy2u^S( z1b25!(BK-}-QC^Y-CaV^!QI^*2KPY*4{nFO_w$^0ukXCypP5;`x@XGO5ps z?&{!KN8n+^$BH(F^wwP40{g4}8+(N!jMRA3=$TER=QCmZh;fBleC*RYVGxDytU|YX zo%S#PJ_0L3A^eAVEoEWZB^#a9-Pdo@sb8R%Tc|dJX%Du`8$y?HJ|1q}eq{Hm%=2?x ziM>iG!#T7)sD2E+SMr5m^qU!LN*M>Ss^jjtLYtx7Ug>!={$lIQNf$M)35CU5GlaZv zUd5xfweNRxF(s4}`3CHGZZ3&nuX3v83H%c?Z{oPj6o!V}aW}(ejN2!=f5lgk?YVq^ zf$U-EXCLOzs5_RBoNQ#X!tGE>q-T_e%r}6L>1}4kws|43$jDe+VT5pcW1nO`UT~b{ zRgnYLez8mM6awi91@hWwImlKLT`VE|GdQPWNRT-nR#+KdKr>Wy*Lm`WY_bV46mDwMjE@>SVH6qt+iQ2`C=Pxhe&uKY&cIxE!R9M6&d0^ zC$@7Y6c%lii9gez`QM2as;fuLkPV@&$3n9=sFIKtFi+RYCJygvMvP=hnBv~SNwt6FSeJK$boSB~4Mq-(uS>{%*;KrcsjxW)6vtUE zrpC`d<2CtQi{6Suj;Y`g-NWDMIB+aXb^cgC9HMJcYkY}gv;y~$g{z)-#D+5F3_TtT zUQKp#je=thTXxJ(z6C69|4^`uACbCyPM~~bqp8awe%ljUtoZfyq^0uD@2`v1qhijT zeX5-gi02{ST2wBk-zq~I4JQUPT&{^@&tSk>O6?I1nCNZjCu?JYD5oE#xOJ=3#fv>T zQTW=An$0gt%PIB8oY4%&l8g=3t-MU|%d1E8kAVD!uDJ;R=od8U;1O0rCjxAq#Xe9s zfiKkgMWhOHrh*AA&O~H7;CqghElAGdzNK#L=8N3T{Y7`PDFmgXwhzxpKC(bpQ#?I| z-k*z!jEA*^+_9_}dnGYi%9KuRuO7nQ{@(IrcD}6Cfk)+m6r4PahOrfV3#ZAVY%8l7L1~=)Ns5JU)v)R-~f9f0K5fkN6^FX@ot45r$RSvvq9vw&#WGX5=Lbh&n$$K}as2`5XMJ~%xo zyecb7=ITtM?C&<;;XeM(7KkJiMZA_4EK~aw&lU5*BsWvEs4?Z80(qe0fXr@zA3cdd zCla2$SLj-){*&(a=m%T=P~L!{sYQL)of>Ytm4%{nCH$733wuB>Hn0^@4w{AuAu90? z4tOgVlWFmFH9PKMM$4v)F#roQ^6lNO)YMKQIkyo$Ovrm@Q2$!BcRF+B%#nzYj|FL; z?@7&j{iT}a@{gZU(7;{pyb@|dvcv@B`?@smBL|acFN(gZFWetN_pz3O{FSfq%wHs3 z3t>A7P)#Es3sW7Xf0`80uTRUIo6Rz=Nx7z)Y*b(*AjOc6msrsvvznJzr*6cT6*X)I zmipdX$Yloj#Rsvf%ls05@;E#V+`0EiPz%?nqV{>sHd86NlbZp?^>nctUCi}|I@1s6THLfCZ$F9WdA%tOJDpxmRjleom*X?7;(^7`I zvO4Y`zt6%?4|cIsk@;nn5u-jk;!2G}wb!aywKcjOTs#X&L!Ye`Xb7jr-`z|CAs{N6V^w_S5fvL`=DhIN_5uHz%oCV2%TV{RVJQ*@q9)YjJ1%6 zmc*`|zXo^cyt|1-5<3jbyQY9wnq;B~2Wl z=_TgtjK{A>!z_;q)F&M(3G?tKz~Prcd0NIcS>v_}cr;udafOICs-mSO4yXK9oG;J8 z+X8>A%=Z$W>tLkR!r{3_OVQb+2^36#$myJ#8*-7A_@IW1MJI_)0507;C;u%)O+!UV zDAT_hBUe>`wL>Zlv|grXenjS+QQQ39%@#kQd_)Pm@JeEWs0s73*la_=(J zOkbbD^CFCXu@&>)4c? z(!&JA;xD8QPlA-zsFEN@tM@6W=fC4wr5{UgJJ6D3RH3SbYdHa4wz>YY%shJK+gF^} z!tv@7Bc90{oako0z1Z8ni`p&(5_HAVPK;OM5>`zqvgNK;=L&8UI@(>;SxAoqkj-J< z{&1b#Eq_85<5F=rW|?D9)v_KSeQm7g2pzKHYD8W*u~ z3c8#)#)e8w6X@@n@{jxzjG&d8BKDj$ZbfTWV;j)MR>*jEfWMGH5 znxGzPR0bK%n0ZKm6P`K7aw3&$5Z5eL-dEmm#WsmfcmO~2HBm;g;9Iv_*ONPH&!Ms^<~g@gB|2j8;iZOyIOpD2>cr&w(*NgapCuC|}#5)(gja-rnCufArS11gHi+}H+J5j*E28k!^DY?nb z*_EQK5p_dWkTvsEJ3fgswK!7p2eK=`cSvW2a{MRH<3PFIuW;*XPDm_x95}=nT5}`D ztzIc?>0jD|M3>(kd-K{9)!vna-q=A*0EVHkrN&0w-3X2ujEmGG_1tgc5% zGltwRyNbkyYqRfkER-q&=x!}V)YP6Wc8!QPPr>BAP75V$UeE0nY+JAxd+S3y zcNP?$o#|u6>_45dS#!MFb}^Ng%EK1qnL*u3kpvh3XkE@5rlm25+?4^)BEaekbPh-W zUsYP|%Zk3{Lx9KN%B%(WL;f7&yGB*uGaQqM6?~74-gjo0(oj7>-|;hk6qBnKu-{t@ zX47kCU}l68RxF7-BpGD-Z0NIB5-I_jM-25W5r}0iY!)}E$QTjbS7I*IUoqg2R7{{E z?=RngxK@V298tI`Akiqy+lfLt4oek}0q=h{j#m+{1<8I$(rDMv+$3Hmf#*<7u*zy zUqiySL(+*|Fw~-vYMsp(rZw3etGCk!xqlkUp`Zisl2b;OE5cI{S>`aHp%6E%2zuvM zei-gHzh$(^?nE$=p!LX3ly>#w$9e~f3u?au{5?!(HR0Po^e2}YhsbPlyAnFaOzd+Y zLk1*MAc=BQSK_}k=u4Tzy!2NNu<79}$9S4PHky20;S5vN9A^Bn+abVXjO+NR3p=Wv zK&vqOr%UbcF{K$JtgMtXLNsQ`-0F$ z)H^5GH|8kzt|>v5ri6E!0mN-)Y>=3SrwbG9S4)*%9fL+oC!$(+>+ommX_GlUxL`dV zKi_GQ7A+%gF#*$}x~(eB=2QG~s@jC+8^a>SdIuuMcQArdthpNHF6V{K$qZ4IrpzM5 z+B{JWqke(qDk|mj#ExQUOL=$MOq03yGZF{BM53zgxRiMHpoU7X*3htJ%vY>b+_a9D zX2Wmwfh!c~Lpuv=4P@x0^ywc{v!@;_cAFNG45h{+R|^3tF_u!?WmV}@qLB`vOZo-x zuEgc^OT9~`T7+a;F3aq9&Cg9f``6EVRpd$Uep_1X24r+YMUp$|&95kf15ge)Vy0iZ z+k(I6PL}UQV%k9lb!z!aV37Df_<*@SRX3l#;$q4Xsp}W_Jq2S{y^y0%feY!QYk*}3 z_{eN{R)St{Ns7dJd8KwgP8EjTnVtD?(7Z`lV@+}|8|BAshzXOp!J6nRW!NgaFxmIL zPXk+ijnK@^o9tx0gM9>&ZAU9fd5Kr-8wzrK<^ptpU<18h!2CmuNWdt|kCU znPuoCd#{QwRaGK~(TKLy?xd?yK*e;ys>+}N*$Jkz>ETXhEUOy%?DzrEBU!~=@RYeT z&u%$sOe7;5iHMd}@OZlJw_4=slkhkN4Vl4V&6Pj1_Vwtww{tVc`35%B?6d?VsqqrC%{6G+VW5i(^`h^0O_ItvL!FV9DPt9rI{2g7ZXO` z4$Y1~4JE80D#GoBUR$a^*Gk4n`xg^W1m_n7wFWDqy0`lDKFYLX?@^YL&_`?S@h%5} zlQY>80Er)aSCIO`h@0;Ea7ZDm+R&U!V=k#CPrB=b*W!Azw4rcZk$N4~RLqXg!KW8{ zO20rhYjdL!`s9kvRmq;uf-zSPH1N``xq>21aH!&%mqvOrC^8N2J+zr(5zZwG0Mue0 z&I0M^Rlk|-=(UB6J0Wq54)Cc=1soZ5Wz#t>!OIdIo<;4qv#YqG6S~7InJkyk(oVKe zyqm{lMZ0B`-^bWvBx&>(YNZd$cfUPRHw%dmP))J9?Y9{Cbdm=jpcArQPJh>EWJj;a z8ORW9QgB)h?WoU+V7X{_ikqY&vud-H84W1T;uU8tZS=q0z*$`TN<)hoAIRT#bBGI` zS`k;RLs?XIJTpb&c{DH+YdS)V>7gD1d^QnmL%!`}r@dcPrMEhc$a9WrUD7oXcBJ%m z%lBXHbR&9us6OKJ)%&#cJfM|9Z1UuLx)ldEJ%--3IvMTT7Qp*@bh73@=xc{xU4H}s zokg*;?=R2x%rSC0uAY)wpWbcLWsdE$AF;i>lGv=_gIr=mao=IR?@#WR4;^byoKp87 zTi+N*SClwrSCUi}5#aS<8#o5Ce@2BbH7}E}y}megRS=K?`^Fv(I{B(hmp)Jd7duzO zbk}>MrELR&Ws-{bYhHcL=>$`Ytx-mtczkutzXUZU8T+DJ^_uIDGu#=x-6Ke3{B1}{ zE+EA+>mAfP8pEM`+0nf|v1B!W=@Ztvi7Zj_N^SoO)(b*4;PcGLy=G+-u565V8{-m7 z!#C+e;H{vvpW8?EwL`JfbSHV^-kiJ+{H%2Z)H)6Wbd+TZhabI?$u8~}De3vIWzo^B zddC4gG=JevkJ^H$G>I$8i1QTU9K&9kwbS3*^uWNX}OTI=afX_NpS-x_ra z?%EuR$GzoZJKVmpBeJYx9f?N1xatN(Gu5dXhiP}BV(eX3S_I0FpjXNqw`wk<%8yUb zZyy^$$&br&$fvN`(9navij5&&CQx>tiU#v>Z4O=sQedVZjpK3dJM0*g`sADu5o~Z` zExY?LMa`uT?Blv*tXQy})NTPKMg(b2+5^zQ)f@k3e1z)q& zV4-fZ@9Qb1YeNZ->3)x0Q8Cn^BK(=taSalthfMF4^SVe|Z+}%m&+QaQ9c)6D7d#TT zl(Xe`)hKv&j*mQnX9*8}X*7iQ6C2 z{*ATYGFV6lP`Mb%@=AeFu=Nw?X-7PK7xHj3Y}@wb-kqte0aKgH>*e!X1wpgPyr`15 z$|X1TN;-sruehSfLV>*{L}&@6=Dbo? z$bK;~Z6D7>f_5tapK*&oHEd<`teAO2oNg+}9HiRCAklpnKv4rC)Ts?s>uk*Wy)a;A z%NWhrKC;N^A%436ZS8sr8h+~x*gZBL&(xd<_z2I+C9>I>4R(8^>XQ>mlhCACuWlc> z9bcf+U`qX{0>y5VIp~cj%Nm0e3Anx-diZ{Jvj%X$)UC&-BGliFR|QTJ6d$#`ZA%?X zz8)Wc^g5=&&(Gn=c^z={ItR`)vU#5i3`F~ShgqubC9+MAO4%aW?RPOip;Kf@$#6HO z5qLi?tyNa-m8*{LDygbpIJ;hqR_E?K$u&%RRb(dM4mk`6&o%8!oZU~6bh-#5EorBV z6g5Sg5_{*Izs|_8wvJB1O*g}I`3$ABc4G$y zW?RzLq&elf7Qc?@{$qq?VKKLBjrp~baSdf(QTIoCXdzLsZ{+Jk<9|7}^Tnpl`66qYS92#ff=a zLg`Cq2s5W(mCOQhi8@a>a+dRuulHsGjg*t@9aR{bG%;q((gJg^UONDpRk)kfr~Ad7 zpEwUzFK^wJ4P?C-U)73DOvgU^=vD8{aeEU~5Sp7Nc%i;KnPoDs9mH7qtcp%uEjJj0+7}*~$7`r5L(V z6|6X~-k}?$nU;q1KI?T#H>FRP{>4^F+IA#OIx5nw+{2l%d;^Zr2jgR5v6zJh+;^LR zI4i?2;i;}cLtAIZ0Q}+LZ^a82g}EF3!B51XfOBv^ua96nKvWuSY8mbPzHm0>a_;TU zT!nbO`{$-tCKj;a@9r`TDszfFJE^(Bu)M*<|*tYlZ`qbso%kti^7-i@+h1V|_b*Ro% zzP%sgU()skMuTb041-mah91MpgCl|1s=mx*3vUd5pL2Y^t-4TWJ;A-|WUq;biMhn9HydE1S_`Mr0 z^NR8;O7l-d=G9D{fnWEavzvYviu#o(0RrovJHPR&gTMOL+*rN&S5zl7);Slxdz0!B6{ijxk2jS+MB6g~` zDJ9WEJn4TxmA~$W3yR<tD!o3P-MvPC!VgLCu9>ee)GK_{$2R7YWnlsEKOA5>Vt}) zaw^@9?;LN7n=f_;+?i~zbc+_u(ztpLRMqYs9P7%!`fAM8AS}a~wec;;<{;o>;`Nuj zP~_{Yu67x@UQLX5n{Gf-?tv>slMs&RG_#04kgoj=_*}ePm-c9ex|z$+*EuXtWfG54@2i;t#&N^p%9C zQu*;g?O$)!eg()1dp{d@o7=e&uXk2=S>Tv%)uSR^G8B+Sc)N-^Q5XM8kb2@2%U5=zs0nZCgaLvNnkCHz}ZvS=2+ zG^zC2HWkkbFc4*FP4`VL-6(vP+!+WwazZAb!)pLIi&Nz4EKU_M`GLk92{K57{*FENgkjEj-^Y!;%)s0sMb`~z82PI%)eO#Frkwdj?{C_DaW7NE~ z2xHBRf{`DQ1HTOq(GpJZZ4qSw=_177IVXSbZDbiK_6G88%)8L}2&^QLCu`Eu+-K1S z8$^D^LjbfjWuLRP#I85+$@o^7V_Ip+{{SA!2*gNk@HIKO$%L$X`H1st(z)}sTX9&5 zCoFVvalWZhnlOSsn$oLsAfaWK&}(XZ#K*?ivRv;&suVU1-)$*o=To=3I9bv5@|2hB zLQYO>!(O=9H$!h~No?-oOBGG|)Yg{yAg07vY0sd#2B&Mh4-RnX)Yvir^nJm(x|B3! z-8?5CX!&eyWO2@tc)sWor>ZzJjs}?s|POs0vIMTi99Mp9O zy3jMG2-FsDDF-laD{)ee_Cwdy>Y?_{54~D9n2o2ogV{-fAi^GwjxOZ9CK9A2(b6^` z^pU87^YyMc&n`4!46!AmlN4eQ;jil?8iOufoM(3Ruga~Xp~EUif1;qH=_k>Abd^S*0ly{P57uV41&8>d zxUj&xsn(ytlFX|=hgZ6wmYfR%; z0hHCL`?K zRQWX_lCm8Yg~4#$KR;qVTTgxAeX*1I{#n)K&$ZcMVEO=#1O#msuoweGW;jCvvwrG? z95hYsu8g&MSY?~fc-5l?LDCN!{I$3_iqA6YbyBA{aZ{GTa3I2K?fmSE(;6itX=I&B zQv4ag!);}j=+j2!e5-H*v}}nF$b~zwho$hhz)L9zWfmpehF@f0+0=%QGdWSC+X_SFrIFCJ<*=eqjNqv zR&cvNX!B~if{7bp0j6OBk2_sUxCvIOqjGpZevHz^FFHT&*E#l1C$J0(uQMRF@H=R%u(w#eZzSi|7kxpn~ z5X|0_ht1tw9mYau^0+sd@Uj`1GL{``F6&K3m)d0L+(Onj*j^aLBbppD@cwNeg(x4P zai`E(C{?B&*Vj|!(J9V7c3`?yYaS!zCOr^8rk+Y)>SpE6)-xD5PjoSnmvE0r=|^wg z{60~p-NwTSrsX3!#xIvgIu{IP>6RDOPs~V`DwvVKYr8e4wqv&Jb!SJ<`t=>R>dSWr z`=;|?V?X!IHD|g$eO<1jEmPO}z71B)XpI?G9)QC<=+3mg1}D(AoE5OssiN|;^(!$h z&fV$z9tQr)yzB(Zq*Kkkt4FJ#7I$k(PUE!ZSvIV~*j#PiVL!%bU$2RQ9D8P|u8>}P z*Yo2Gh%O5v98ZRGMVNbIN7_&mJUI^V9Is`1l&pSC@z;I?ZQm%2P-LHVQT4C^YsF=-c48YSaOw9)d$ie>H zZB`j>HccT?Pf@^*Cxa-@y0(-=nmO74+|^;e>{uUtRZ50X3HcZ~3k~~pbmtjWB3k zw%epyF3x0ST0}8f<2ON*C@TTaDWtWyhR~;Tw*Zi*QHJ%u6mI_!D>G5q1x$q#Z$VL! ze+;e@EWKM`%5F|}rUfFUKf0X0Sq)iBbBEauuSpUvpQIcTC3FK1$8OyRrP%ZOk<5wE zdw&{GO0VQ%GU8MmH`Dw?Y|Q*Meph=?BqCt zGlRF7j(QZCG(!WUEoG+p{>G(D2!xM*ixiZ@=&?-U18iTW%4E2bznkZLuPBap^(23w z{kIPuD264Hr)80b%`#^GT{zH_hQ$4?9BP_Xz(kK(-)fr2Tpb}-Bx_K%3|hoCM2D6hQ1I@NPl-U#_O$GVS1NY z5QgPgFBh6-?wE1H9dgP%bkc&AW8?0M>%`TAs) zH0e1#hJKa`gRg?~zQo%8#J7S^H{;isLS=OSu%@Ft9C&TbCupV^pFT;)Z@)NRP@&kF z43|4{wx1m*QOg=gJBRt|Lo5!FCgJ;m04GA<9`o{Ba$+EJ*hf#dn)NY=2=x)!0)K`K z$iB0pQM|o@cM{dmri$5g-^n)LqKRn&KH=6rHK!~Yu$g}QyRH69oO0olAWMlFnB1v>1{v89biibnyPiE{z&?6hKX3PbYC%LQ9{+(^!rK?h4cmGIN2{d zCbx!mW|}N6uabEVPX*^*P=&HSl&e%4%$3NX>x_+zNc>pm=jVqj6VIZc2`5jj*v%kc z(5m|#c9GXRPeZ&dy~reN z;af4sm6|l(cWWtTkz9YJ)43hF2KS3=Dta6woogDz1G>(;-pVQIt^ z1dx*gA3)XHCEVYSH@(Ac-*)`SeE%&IrKv|o!nvVcYIu6X(5g`73k46N* zZe!m&%9RP$_3~H}PYPq&Q3(`hJ10+UNbeHfKg<-XJB1)+TP4!K%(o-k`?mMHzO&i) z&+Y6#;b)2a2akJ)a{{Aqq)d=%D6|bTB5?3BKlDvQcThhAdct{KN_ZbWf3Yt@LHcW@ zvN@7pOA9ha6SQUtBh2!0CkKTI%<;*1RE8zRjtG8_T@U|YVG4wDVkbP%8|!XnDZJsP z)^3bwNryacvf2Kn8ZbhvMiX6~+u^4ffTZQs9sMMHEqcDyE7%s?#kbU(Pp^63SEb@b zoYC0@OB$Q(>;3WivGJlyu-ee9b)UIb?FxHI5q*79>3u>`6ms1=`Tk?F=48Uy6a{Ts zOjBd#fgcPa3qyN?oK`$9hiJIV`N5Izra!2ViGT{$y01MuFVn$ep6boH>gG*)@}Q{D z)(N_@V$;ami_0ghoO**KYnqY zjJDg8rx4_}V0xWjw3sO>dT4fcM>!K_$N^{aF;^L=%m{HLmA(@j4g6JXmKS>c=jPvn z6h_wC-l?F6CRHm-vW8lqqjN&28R1a(2i=VlXRRGCG3HRX4e_<}qMdXs_|ytRg^j(_ z%1chG?d(3C`uL#&XDKQ^pP3$~x~GNpX2E`DiN9ZbLU6^gFlUQD8sw{GLy6lq=y4Zx3pRLp%FebDm6E?6c{{5t1r_*8L_o@H?oNPUtHBOA53c#;fjB# zy9k_AQ-{Q0#aO|`^R)#4RkekFKd>=AkBp_S5X!aFPh!vxq*m)IBoB5}rks%=m85P= zADyL1Y<7BsPdVh>jp@>IV_bddC$#bA*0Dj2vq71yIMV}0sm28so?@NX7`Vm2WoP2E zk_)zx&20}853Q^#>)(N34|~!!osq)Q3xQWT3CIEX|B+R$Q*b)evvF~-uC-%y=DwVg z^2*p|HO|)aADno9y3RjV6u6O|%@1Y_u{UM*>}HSN>wL3k0|ChyYg#GU{`*{WPQOw^ zCQk2%vR6;+I0F+WZ{!3H>{@qy-Wzhn59Y^1*DP)g7yM#^s-#SbbYExl42U|zlz0!H z$$akv3H|}CERl-`M$D$ZZ>(?dd5Nd3_a(3+jL?qsZQGC(DN@ln>mxPRzN|yJ75FtI zx|gRYC~EwW)O-Q7G18|it6=KI-qgIA*%G*_z}d4Hh!psV4#hitF3nm@L^IFOdx3PB zhZ3V;|M_#zSJ|iR7nx)VhCVUh=om_ejOC{v76uclj3&2N>P5CIGH=o>-QgSlv8!07 zVe!%`olvcJwKrvie{uk_>25CIZYVX&*)&eU#VkSAZ`1oW zMe=yaQAF5giZV5vJ=D-s8J_tg@&&qSD|2Kq3dpG%u7Wb!($}2+yk_iYN_YbWC zG(r;XZcN#e`9>Or9F1qgdvjxt>h-LV9lNrZPwm;y!w6KAuBLmnR#!5G#IX4`$Q?D& zF>WOz0%d7^M=?+7h%N;BHHP=Pqw4)Tn3!rW)?mw9*-w?Cuq#|1zg*qYE4b;X=qMLA zhq^=g{GJuy%Hc_5IsXF{f|mK-;=i{;4m)$z(0-z(oFogr{lm=k7>q}lH&sq;&n=-C zMdpV|U2Lk5P=L$lk#^e*62iR1PaiEB-)n0i+)GZnPIuzn_6yBj;Jo<7$n#uW`d*Ml zx7+zlhsA~XfrPl)iS63Y6Ezmb@^36okpu70Rr%_mB^e@3pEGw;VakNS%jOmMT-lMG z>B?Rw1yyvhKpy!ZR1`0D=Q>@rdl>8Ba94oWNnpLh;fi*b3aTAO(|2`c-84HczA^Jw3^P$Ue35ERD>ADKsEo+GLL%9+SHsr!91a zqtQy$8EQDGAaJ{vXk^QnTMUesm`JTQl(^95u#q$bE-dVkeLQk^#kb{O3Y&s1^diq~ z_k=tu6#SuGem~w-`Qe-AiQD!j2hy8fT^rZQ$^u>4NbkYP!B$9z2xWEKQ3~xwW5rRD zc6}E482pGdXV|T$*=lWIrL7Ap&cjbLbvsDTbq@U1;YUvX2CL^+l~$Acas_V3bk`gB zgNZ4M33ELdFQ@a>p+!@anao3G5%TyZ5ALx^T5`%cNibO>_HqpnlLw2O=TVqvd2*3h zaDWJN(DnmO@`G-xKPGO2m6zV?1rM`>n#<+_-5=}y@Z8h)fkX64tmzn49~z? z4i(O9;t*0C?gJ5r`ICllXIwGaZvD<)1FRJN^x^en)BOIsRi6X~#U`S4w)DK3q3%;&9SmJKgl-W3&H%$|RL;r8k-lkmm;Y zb}?PSLh*Yv`DCl#e>DZG$Q|~t&L0$5jPP9@7Pu@ydi0W3pFnEdo))ui;Xh^3H>L4; zBFYUR5&>@^*_k0L=y3XD)*CD7)adb8O?)6qpfQBV5^B`}Y0L$H_`p?zzIf=F{7(S4 zn7g#x9OSqDCAyI!GXEna)I~o<9C(V&-yF{=%p6OCjeIn;EKDI9+_PxC7VKdnf~a=| z-q7mJdCfSMMY%}cWm?;#+m@yST z1BpB`z67f*1TD)_h2cwbi%14Omm2=pvWkHB0!m4|sf*rR7$(gOv!mRhHFxr&j>REA zI2>~fRnxosT;heYnO<-zSY*tHh!Jo$}c$C-uA3|fBr5P9y@C}$OtrRa<>BI6h%MQRks)!y}0eJ=x970+FbUzFJyW4 zL1^j-2$|XjUHGM5C{J|3CM(NMJotFr5)bIA$Ua>C)Z&_-nwxS)x*PhDU(+x5UYxO* zkzBF1AfrmDoYNMkZrfPfr7PD(zq4`{uD{2)ecZ*D2?hvcO;C0^-d^MyPC=+#+9Fsb zY1QNOt%`YT6Ja8l0CrNCUIdp##IsIJJubnapIhHXKl|RE@$yui z2>f|*&86-}JVu1+i2w3EKrc{@OrZqcctp`is*!YcDdCiFQ?1GYZB_DYLX+XLV~SB{ z>4wKW+<>>m#Y)^ILaR(Zx*$VT5?u5R?MwIub6O7~%p3@O2Ma&*X;NPA^Uaf)IlZ09 zlz?Zh;{n0e9j~YDUnp5v6G5_(XHGI`auV(emwJ>C&vCq`XZSgmT-*`&Hx~zt#HN?Y>*&VG^uvl-OU)`8O z!h=D_99J)B*sgmtI&eHKO#w^&e<8VCkI!fUzjWV zkpIL)-PjzlW0~+M(Eu|aJulkG#+obZ2sQ~iuqIoMj%@IX^)K~o>pJ@>^xn{xQ(ZLK zZ!MLYQ0^mgvY%XayC#6T-e{ogB!G6b9MT0#6Ax7Le7{71q8PyN3)xQk1|kOu?L=v_H=Uy2*Sa+*S7Ge&C5x zq+7=r35iVROftC1-Ye_MTn=4cZP}hWGnhc4wLj%&^Cn{OXs;ic&hf6VSo_{rg5Pq| zN*~nLW(M?*TapWAnd;yk;<`MntB3j1a$8Y3@Un-h17XZ`bv)LdvL=i{p3m?9hzMDt)1f9;M{yU>DaSR zXGOaKo7GNLaOpp804Kpd8?JAaUe|RtG0+KQp&Iw^%@*!USF-R-md=sw=6Ly?1ni@b z|4T?A2~vZnkqu85eQWPZzv`kJq2%#G6HKL;#`3Hh zW+|?MOKam4Z)Q`%{!_Fso3loNFt0B@Fqo_?Qp;=USYzZdnc-8TeXAhP`N3~6a;=p* z7udq(gWA5lj)vd&guP`5Q(hhb_JX{s`cOy+YL_5Ka}enRbibQ7AIC%e&xk@peZ}IB z7(fgh7s)!mphVZDd55Vz%45XfS|GKGoyCYPY-GJ@0xo{3`xV*rrM>Lnwo0E^RY1Jc ziedA8VfD*LT`fz5!gZP3b!Gw6sSC^8d|%9EqQcr9G{NJ z;l_pe3Ks_l+q8=0WVfhKrWustPsK`8%3aT-QPL(pf0|J?sg#XP^_7Y^vm@i9`^u(I z`=X=;r1OP!#Gd8T6}o2gcJDP?CFU1uuWt9bz*tG6gVsOwnq;I=>XbpTxF$|iFiZ5N zyM(*-&W~`254hH+-CZJ?X&f!SCTGGsq=+cyi*!>x=5`E6ZvMN)!u;T;w$14dXC%u; zy3&Hyn3LCPMXfHk0PL6;(?-v~7R6t|x}IZITbk23Pdz@rr#!mSFKtfo+QxGP@R8+P z5bS`F4nHn@7$Lnkebv{S*it*RZ|7HfV&i6pceUh>A%OZyH}NWQ%{LDfh$xC*_M4&C zts%EyM7~H5xdZVK+3%)&3yR#oGy!4toUgS0i_AdJKr~S(Xew&zyu#Yj8R8vka z-A)FjA=w7yU$Jm@_l%-?qe8jx0=lgr43)?NNn}e(MuXh=kyly4cz&Za z1!s!|xYcPvI%nJcBk~^l;l&ZmCKzqg{ZLR&AF;}r0;)@)=4|@ZmBrlqD6$4E!RKkK zjG{K~A3xHFx#phlP)N3oszD~{_Y|{*>-ce3ERq z#A!`@N2MKJkN6qYJt?HjqPdeH6!a{RBufRS)x^19dl8;%1_CPcGTLm{yNNg5!%E+# zfJZmVbA|HoNu?nTO%p(o`?YS6vMQyvKg=;c?eNBugt{=b*stuWBYoSW1=a;ue$ZyR zalrf@l}N)k{`8xZ-ppDBmnCAmA#2g)1FvC3lj*&BvZI$N5VsjnsP7iP%%@GrT*j&< zTKMf2zSM*9N+RVWeLV`hg+suJiy>r&V`&S8J(&D;H!4_}3ofVFLM{WOZ;;kQG!b!Z0AE4E_fws$4Tdr&D0u97 zT>_L52U!?~;&b40=1RC5A4&w0u)X^2J^bxIl&1a$Q=1QrH~^NcWHL$=r%^pF3lf}$ zar__gmT|XMnye@9y@Qp_5xbRHX;eMF=A=vTE4^s4G5n@5_^Oeesp0;6Ty%Q-eXe{% z>QT#~+B4b!PAZQ}J}F{DZVnEg6=B}?;Doa3Px)!!Xa#0>)CZbT$1iIVZ-)&4zGBR8 zl){L2{Y-^^vY+w5MHA=UHWFx&gVo{EO{fL|?}p|ol|(TR&nc;Ao$+#QM##aMIRI)G zluohjg#jc-veM8EW)%PwR3ugId>9{j!#4K-ymVXgtUbq`1 z3}>ef&}<%dh7;wfPdBo&7{W*IlJ9>m1-gum-52C)t@YD899VnPaM#^`YEwT||1F&o zV|QOx%7vJBbwu@g?zNwSWOYBHt}{X<#}zLxneFDE`{ua%AYMWldc=pRe^Y`-18<-_ z4-CsbG+>JV&M%c>ohuzMA(2K~e30Ct*TwLSI~8zdZR521-9=zAiZe+FpCRLQPk=+m z3wBZ}7RBxvo0q%l|M2yeVR3EQ+9(N@;1*nh1b2r*0t5^0?(P=c5;VBGdvJHxLaTzi z7Oue^F4^6CcTS)4-T7-hR29!!b4?qsj6pw#cx=n zP$V!jeTC~ts?dN6c+`bKU}jApLMggCWe~|edwzw?h)~-_kWnTF=DDSsRm`eqc!XO# zFZ^-}6s9r^fL6*<@4+r`BHqV+nIacQ{cfScSUCPCYdgZKfaUKF^t|n z)_?x~A3$AOs4ybqo_5Zn&wV#jR=^JHSAWrRdIkYGYit>38DGjNNwr0vtc(m+m1dc7 zuW{R=a7Q4X(#IkNIZfX}Im%$FI8Ypu!4Hi*IL5q!5Ee#_Lt#Aia%|=}3Z*yz1yAS; zp`?^9Gn0-tOJ9L7Oo(QAK<*X+!%Yc7%y`dAOvzb~`I7=-&=bR5Y?YrU{9Us6%@Yb! z_Z~1)+EAB-{4s^n7uk_^rq)D+Bhs7%h)S5}>IGU>7XSWA2!k=po$zE)N8dTSe3UhvIMp+&!q zXxlS+ap4rw@nb?`n+|HK@FUi#Ze$LDcG)x-l0Ru=SSMYQ4F>%6`^RRnPyR{r9qx z_B{s*6C2^(9D)cIeEN=trYt7cE0fV@09VFbF>w)3*$^!?BrZ^c8;QU?-RdOpQSS^K_Py+ zlASsN^(fcRYU)}l;rjJr`u+;&i)*tc=|z>pTtji;H{Z(Brz1?bodeMI{QUMkUhswq z)99yK=zt6EM}C1s4&_=0D{SZ|ZWlGY50O|MN{?}q)-b!rXG$F^oOom2>FDRnHFoU2diZM?t5}* zNo5GHt#>w>Uf-vvI;We0SB8aApzZe&jb-Z%a;B5xDP)};@jWSWp2j~bMH@NxO}L?~ z8kTzijxDEDL~ev@J$t#tr?A`G&`cS)h^dqUXopvK(KOvb#@N@6qYn!TZe0XH>dZj_8wvH_EPW{ zh{W0S3MQ9lI7JO!-N}v|Ah4I8$N%~2Y-H!y3j2;qY=-+psn5>h#n@>Lc;{luJHoil}4!2zfSp zr}nafO~LP1HfcZ4Caix)VP$ta_B1HGTu!N*yEc?BaFCvCqBIune=FK;&pW7LtfzbC zB=Ya!9gu7cCfM12Ez<-X_|-Pv>2R#~N{*<8F@1BAB{INJUbQFb0QqV_x{i~FV`&T| zfnTjev~`+EDp1uDA3S5dL8|X%{e2mozkS9|jAc$V(0u@BJ@4I?SLOIXoDt;+!nuY| zwbBPB+6-<*N|u5CjTc!fV|)ak+AG=M9wFimmeuB0SjFfbcRlelGqsm@uY+EP>@D?~ zOPw4FeZIn=<>MS3_kr66;XF}NzSSq~>sN^5p$+rTeR0}o6K5(5ertFotckfNFhE)# zdY6hpYek<=mUofCD`Mqpd`4M{cf!|0>cnwb|3O(<>*x6UM~3n`mxAW5Hg#6Bd#zh6 z4zHZivHM}HoH_2+*2NoBJM#goWhlv~S_r+&j7i(9(r3(QB(WRd)B9J*PcbM0Hj@t~ zqUa|~N}r4%4=uI+mG>BGH^~e3rln!&v}$a36U3P+TJv5;9Hq9b-|xM@2s9@_GkKVS zl{0bk50vAlxwu0}_Ke^A#9Zc2mr)BwfKrl6O`$l>CMA6 zUYC=2*8{cei84`hteQ$c`7VDov%ewXcS=XpH8-$FNt&v{?orW}AS$!ZWGi)s&zJG8 zdRwA{Sxr;reS`jT;-8WWo{y;y zm>p>b;vqwPADM%FJQFq8#@qw!X85XV7FFEOo$I%xu zxx1d!{162sTdH87<@m;qf0?E>s4Doz1uFj(2OmEku1*ThGs;|CdLKST49#d+YFu(6 zzWfmMaLl3W$?qD1j8u(**tO$`SGf$tvguq< zMLbL1L3WD=Zi6brK%~GP<5@Q*0J*7VwNhti1}Y)RmOxV6VIMcx&1k8%0r#RAFL*Ml zn{i-M;@aY=s6H~7-}Z@_t|xPa@o7v4Y?kDO(0H*Su?OVC39~asYyJ7QC+E!&J>XQ{ z4TMxg^H7B9_yV=Qdq+%LimVs|yb<%Fzr58 zcJO{%$vw^eB5MUKW9E7WV(O4?9Hq6F9Q5%CQhuR5 z=brxBoRQX`m>TTU<%9iZn?t0=^t0G2D819fxD36f-TTC;X5c=F`z9h{;_X#qC);Cf z_-}j5=}Zne-??1W>5oSpFZ*+3uR8tYEJ231YgQ@kK0F8I4p&D4!ci2NjCk{4I~Llo zfwac+u6=5o`>gd!-!G2cn@oevf6MtcFj$BVFYa&RWYBvknd8BoNHT2+N}R(*Ba}W3 zxM=ueTW0WQNp814&b79Rw>t=-tK@fR4TC=nRjhZpKf7RWC`P~7d|oim_?G~!^VYYs zcU5~Y==(^QzKIcX;JOlDhpTpBe5bLoVCPoyE8_bz9QQ*%*nfKLjYBbY3vcL+7%;&W zs0~LKO8b(A?4woONBTbBI@ezjF?8+hnQo;or0VZ3u27&H6TC;U@^vX#bSRH|qz8$E zkpF%XI}XZLO@>A&Ye};6P z7ECKFM0O4|5_<>jv~MTaCj9%0fBjC|GaO511lk%rn_Ng1I8fNd%s#G<(rMw!oUB=5 z!_%DC*U!o}SQ!Mwjp_I9$MPiQ(6Snex^%i)LyMtvv;A!+aX3}x%rv>2Qh67bRUjcI zhPP|JC4GWBv?r{JP@<-!rzI@Z@C^@{dCEOC@wn>~US7Z@AeFk2UcQrOaC|3{^~Q8G zZ6B9P*CPe!N9R5(1Gw3y3Tiqy2tFNRg8uXAs*P*TfH!U;er)A|504uDDeK0iqH%FJ z8{G`La9Ya`6It7RO~XUIFF-5aaz8-tB+p1pdv?SAJY~UBl`7ccI-(lj{$#mA-K#pd zqsqAR&F>}Eq;Sfs4v!lc!6>~Jo6wZ9vYR~kW|N}_m>`s_?fJ@fX>d3^qOt>njH_NS zU8-D_dvXO`@~gz(RxmOR`)RvEi$c zCMXpDH46XpX6eyA4Zeb>HE#A^ad}Us=*fs)zR{bcl^JKPN{PsvK(jc3q(w_0-Z+CH+(WSi3-lu!bIp3#V*cm@??H`G%B|eMd)+#WymlNk|ut4bH|Jd-SEj^;`A%VvjH@7jKmU z4ZcPWeDA1U{Zl)NCM;boc5Bc7u z$~S!1%NW@?uF#sqcZ*03C{0)WlAlzWb+p}Au#(B$ImcWsN0cp?;a|a_)|+4WdunJC z66KyKv-v|-oX+Q{2HuEebJHQV`XxKA4XT=FWpzyzZ2uH7AsJ*WG8c6*Gw9Q40aPyGwTYT_;!5zd#z8Rwxpwsh1o`r4w5 zqPMIu)ENo(0)r|+;pg@?v9n;!luH)!U{v}_h(T0b`VH>$!aTt4QMJ|c!@Vj_9NX=Q za#zwpN0HRkpU25# zkQb%uRgUd6A9K5^y+b49?NuA#_o}RjuFk3Ts_Bj5TAtB#bklby%A$QS8wK1rtD$-q zSh@8jr;6S89F6Z?NSU09N6elkT?r8LP4uH9NB82Sa{dB_psYCLW(m}|o9kd^O)m5C z#rGGL^06-{rk}Z-Z(WgUCUT2dX?P-{dKtqu3<>EMR;K8zdPU@M-SUV}8Dt@GzPLfU7j z9DC%hnu$0nssG=E)-a+H`+*VMtjhGc+K1-39v>erd?OhXSgjqHFG>o6g2zXYVDCph zoD4lzvQ0=c_f#uFaY~7vNp1VjR}O;U$fBgJTJDmY>4-)1=IRje4s{vN^uzIhO`Y|k z*a&h2pFX@iJ)PDVs#TZ;Gw^1ti@B0AqwOUX#7Tk)n`gf!VxzKZ4I|62tS@fZWUsHD zN^e8)6AgfC(=t+2-)5fmspg}T8{tg6ioKj_%UfZ80!!8Nf(^p(Q*<9lR83oMs_Q(? z-GkxLP`;i;-LUTH4sDIawWm8{uDY5c(6#iu%1j*`Xl}Xi4z}cl9o=k-s+*jNxuN#y+hLQlm3O zZty3^OJ`#7Byhy5D}|$kGc!3Klo=e%D8gNnkTs|?L^{%H!-YHvw1r5`EscDb23FwQ zxvxGpo{fQ9crYYl2`$%wat$&9fqzIX1JKCG|IL8lmWmY@XJKdmi~q1^l-t>i%(Ygo z%Mt{PzZj3HJ>Nc8Ril|wcqpx-KNVWRFgJ0v#%nok&k$|k>7}D4H8=OK$azW|%^^1T zzx5Xph|K5NpOTI^9qAD8sVuXmXEY5XhN!Ke2_#p;RmHg`Z9~E@&-J2Qf0ew&)$M4i zjzLYpu5Ixhh#w#R*6;h0e?I)hiPHR%F{QJwpQt%hP3fy5J8I_EK}%|c6@ML4{VB5L z{F3_D#X=4CY{B*jzGIg~(j{;&6)%sap8?Yryo@`uYs-=7!ue-rf1iTxssXpdL7FH2 zitdfAFarGB=*6*A5KE+~JgP>2S&J27!sJdk<-)k|`A|rT%viSz%84a>SsAr$c8!;< z$kLPzO*gN7xX!9zp9BK4=3B2Tfz*o1Jo^)ao|HN&WXzYeip0lc@WpHIb#*>EXuLBi zLGA31BnxyeP@{cW886E!63X=U{PYQm?(@#g@~QxXH74s-rJ~0;p-X272+HBd0;>gj zBI`BZozD7`+;jJcSG@0C8mJ{2f^MfLZEh+fQ2y3z{ytFjZ58}Z$cGcmxxwdl0ELQ` z+;q;4-3vxNCLl)}hLn0P5vHMs5zWdAIO&%d{2R2FO`JSMs{|T&ibb&U?4Pr!s}3Ip za{BP%7FA_OBhz+Qdgt8w7lK59&<}NVP{Z9t2%+Da#mc5MySu=OKa1%p z;~}@_5XpOdppWiiKg7~{SKWn6Mb&8aq9%>#ZgA(<&gb8|p!1I}z(aH(6S)00rOeN{ z1ZP|$U->VVA%z3eqd6FpN(52RoH=Qof{Fy!wR(d{OI<*L4%P)0L`WDa756Vw%O{{1 z9uaEn)bvXj7#l^2en?Isi9p)tPIGviz;2^0rfc|p8)5^4(`3Kz7H`h_nWAHG>nC+~ zE+2eP#zmAa@<=|@|AN0++X?*sJkNbUPbD%_fgx87s*T;;{3eTsB+dYnm*{SFyN!=2 zxt5Zpg8y@0TUP#CFmOtp;m?@}~Y0y-l?yzvSya zhQG2a{Jl8E|8SO(<8;~?xahS99o9x+$?`Lj$;`$WD`gl3N0&U3YR?wL;kjk*HMEF52*SZro^drj_W1Q zL()2%Q&1heoZ)7=@%yx$P+L{)$iSrCnUbZvUC4#zI%B$V0i;@3VkYtg8~BSD3>YEl z9>3+hN$*|tb?#^b(d^zfII40bu1}$h zdA&s_IiN}Ql1dZ01EZi#KrXIt)MwgH?o)DOw(Rn;Xq&z&jPq> ziHB!pR5@K93#rIIoo*TX&rWFynm-?CZvKdQT+PB~cVU-)uhyj$T;}wW5C4B7Sprsf zhN2=4?@k=?zZwQke$+T~%Wg?rWcdpj8=|+f9tEDCV%Rd!=5yn%&36gUi@^is>Kx}ivl8FuUlj`(;IyE63p05yt)hlGV3c`b=wBhTExXe8=7!y;Ck zr)bOqoPEdNw==_OKNsoITt(dcYUcNPQSr)j!(={?9amA@$l2M?XttOR4^a`!R=Kl( zcF{$5H4`z*ic*rAb?WMBFAix@gl49u=a7$7#6MmUj^I2c;+0;^{(qyhoR8ykd$GR* zoDFGE;@5s5g-cdbMqk;ItdEOOq~#%Ba5o$p{?-DJK%zB8y=C4ea9}IODBQ_r@Qxhw5;F86ddh8dtKdOL{yqEiq$aSJn9Dc$oq?Pk&hvJ~PVMA5Jl+2CJFg{vr*{k5$EBmN z(k>C#HEgUYyBz*}5V>F96ahk&QEE7ZHu&qeG4D^njz3vgKWhzS%zQzqJA11$l9klz zu9qT2F95Ow0B#39UWC#g?O!*Ze}m*L?Ks9};O^krg?r9m%Q3a5WnSEEk?gHaa*pY# zVx2y*in4QpDgl6-7A6)?ts!(`qMFl~VT^qS$<*M5+t1gyr?3rPr%2idGu1vvqgWNe z?;1TmQdykvd|uQK9Z$OYRkkp^O;D=g94EANl6OATPUto+g;14Ic^8(?Y2B6 zU5>V4S!J`xd3C%DIN*o^)>1fowy%6B-bpQ}v1oCEzvi5FI%zVHrJrKwdk>ft9Qn#l8qkELj2*#cxAW}nZ`DuLy`-552t_~D96DzpS!2ch zzWS8zcToDqf#z@A<#Xdd5ccmau!1MFB9g3Q+@WBR6vU#gz|JDmFhluG{rj`|$r=H9 z2vXr!Y$?(IoebqWSC_HcNaQmJ7K$5Ds1>gyP)#Cy$^E&nXr2vw{$QdpW^^z5%^YszdpTUTOGpiyy z18Nn&-izM_>o32{Cx4!Y!sTxL{m)!yv}R2CrdABM)jl9%LNYQ$C_VJQ0$aX>2r~_S zXO;dZ@e7HxaH8f$G_^g&8 zKUb)2+06Xt0$u8QJKHGTZO?=lv0_t)>u4=43wNWUl4O8u=e#64{ph542Sn6<_|z|T zXc0C1`r^;qKE+N-5F7v!V5D0xY@UGeM+tR}>&+d{g!!8KNAye6^zL?Kt4h^%t0Ob& znfr#FKPT z(UzKAo?Q>!#w+@?Us&7Do_Q&1L@ zflwX}c@q+Zzd{h77USe-B4z*NEB89BG(I#)#`wUSa6cqlVN=;I+d_qum;2L+J)x%o zo=IuyAnUb56|*#%?dA!E1JllxO$N%-gfHW>R7XQt=-ar71UXVsO{@y0yg zUlg7mTQLlOOws_i(i$AN8|{q1EMogft_;2@W#y<}3FWVBL2@x~nr`|q1F@`sovqCq z5}%jiahQvV^gbBrp&_brV&l}_B3wWe8^nQP=Bu;7oABh;NK`gXD!59|sI$dN!rqTY zrtEj0F%Ni0PIus$m9hKN)D-XF7Sja~14q;p5{L?R?C--j?Ra@2OXGfzW*p#tPRm5d zReja7K8^wMoHx6Tp17pSTMhr^K4p}xY1^`KVw7XS5T>{4@anZTY%0@Rn->k}Jwgud zq=^!!!B<(v6tL<+8cvhW$_YtpyT{2t05-p!6A|bti0yV5`+WVKk69G+zIU9qzO$B* zk83dGY6mKsf6lJH0;7ntb&s3=Z`yaJeIXepx;{<4;2L#KxyDU4G?$6Ey3>Um;gwGJ z_{(4&!Yme;DH6i9R-unPH_AdRX*(zwpecfI4JLO_!`?ap=dVv+29zvhw*Bon#v9@Y zEuq7OIV-d!_e_Qj@oz`We+-cd*oW7y;K6fb5CT>PsP7+ zBH}U2CvyTY$(%&*7@hhFPyczZlbtvxr_Wl{?Y$s<&f_V``Oi*Q%&{hhKc^IFh3P+t zQl|C)52C~dp2VMDQqbr%3q}0VNbt!J(#AbE_PmeE%;)r_T$P@#7*bjCCj?U{JUM;<%PTnwwHLe{4GK{lZO+2QsirkANT)I1g=Pi#nnz3fR>#wjN&9 zw?L^a`F0OHcN(U#qTugf52g%4ak!(7aMK;t`2QQ$(P3uzH>_g?#o_*#>x=!zZr?L;debnDY-pHqgFW$NHwYni|VqEo5mfok=@nq0S$iy&8E@ z?>F!1M$}GGIf!X7eV%OeqmwY^ml~~+SLrfzz+1WP%j})@=@2m2TUtJ*DPOT-#RC71}(l& z;uRBE4QLy*IfKPzIen>yU-XTylvtra_zkuUCic&yhP5lqZySg<-dJhWUQxP~!H>Qn zKN9D5;7q<{M=us|Y5xhnKkiJh^O+fo`53z?k0|I^ec=RpXbMzK|ku+0zpT{?OFsvLmuzRgL^{M19y5T* z0TaE!X{|gtuQ)#4-y!p9@8|errzxed(-HlRoIFl{0%)2G;0Z%->jQ#a>!DRuvAEj?lfq2D1WIfs}0CO{*5TVK7I=U$QiLb zJgjxFyw2h4XaSB@1Ou`zxlBXMun z5LweVH=!Yns%=JyBUF|JT@_s^{^ZNv7RC^J+AsIaN_)^mXRI5+!|s6`r(IAw-vViC z6xwPsF|@v4_3B_M@i0vU^*a)(k<)!;rB{!q2%aI;}I z%&?z54r@DZx5Y`1x(l%w!IWg0|HvFxphZGXwB{lyPkv-!<8ghQEy(FDa=)@-nsgfH z5eZbx=Hn=9x3OIg+t$S?gD*EF0+h4y;nKn<0T7P_rDlaCBX~e*kfzTXufDMM*~=lZ zA?#x1bjvP0pd2PrRGWJp_x%ul!y*}@GtpIeslp8rN$38O-k}k8WjQ)j|Mjh_$CpKv6}t=^J0>?z2$sGi&D5q4)YKADu&lUW#Tul7~_GCX99Y zQKm3|kbJRu|7Vl3bN)XybZI2)|I*M|fW}q(L`-;+yBP(3E`X~8LR4jmbvwU-M;Xe@ zC>^Ii1u4sXDB~#fOMYfwly%1g*JY^%h*?SeOM*z?biSN2<3CXwJMh_rkB|T=&zzyL z-RP)n7PKY$uf+~T^p}_}F_l+|W5_Mpo4VmzFSiDW;GP98&OTrhy4GFi{$xZr5 zMkHE@rLrz5tWqgR>qS#^H3@L#^EcP0ALqz?F%*9e znvJoZOfJwEY^r@!#JYQ)FJ!6nbtbQ|j+?0@5k!I-&g6qv^NPOR=qIZG}8ohc$6TY=&Cj^8C;F9S9Z_B-n!BV%$al z`+z6@{3#6;(GhxCfeL-4D~6XX4gd_YcKV)Efo5H~Gk}VJaj#?!nx32|%s)-!Sh^ar z=H*q|oJ~?pR$nuxCUCEKosJUd&*x<%P-td9gC4Xf$HrGmP{3XCc`(yf9RKBr9sk!6 z+stv`Ej>zTNfL|Go~z;`%mUmS3z__T+~6tNeXGwu%BrJ7!zWz#k;<22hSH1>p7%ru zWhx9sO~yZ^%;AcdfhHCNJQS3E68zS+w0CKo4L5B;H`@CH#Lk%_Cu6jKM5oCh2da+> z`Lq^k#diK@%Dx253`%d07Y?^F0%=r}f{Il%_!iQo%uVs6{93u-zBjmWJFKkLZ`)tv zb=XuwNY!Xa*su`dbRg}A;V`#plNoM_YL00|@ptB5eUADrU#mb`xxa(KayV8f*wWua7e>Q-KhT*p_zPlh~=Cz-T}n_@e=*M zx4wGdm#WDVh#aTro3t)@foE3sQ&rh{>MX{zn|Z^J=IlvXM1y9^8~qzHf06!H{&;KE zOujKdM&+_|+$d+=AFTcf5gb@Sa;G;dr==eF@c-j%fg?3Otp}tivD0>C8NU60$foit_EL zcMBK@HOQmpUvof{bzk63SI+#hN%ZRB}88%ximNyQb}xJxOUfA^VA2fdDi={ zC5$E&O2f}L{9`$lP*Q!uC9#vRFRYL56to(}&o=s> zxC>5}KG(ZJ$O$U;xFKpyo6Fb6MJAg?924G~JIM5d)CyYb34XzsoXx_$&B~{CBqvY6 zvs}UU#kl5*AouVw09wtC^-GKoELi!hA<6MO(~ZzrWZI(J7ZXblP7oq-rD(&nPg{^H z(O@RXRUJXx?SY@Xthwi2=C4jM?pEncDKwGA_(tl{E=eeAGR1D&leq+}?#9iwSGF-$ z@+S}$xwxjNYW`eoKKH3%1(=ih20yUY16m7zY1e`2kzc{Og0*DEniA-i;ICtF@!`Nf zp$3_QyFMun2xKL3Xbq4)p~<|}q#OQeem-&eXD(aPKI^L1YC%fwCF#&0Yo<_H4XIEk}); zz>dshSX+y|+=%!s?b_H-=T}za9q+)tA~_^0d(|3McyvHrOiOB2m6kl5)3y-7vC!N7 zNOk(*)xnE=*`~0hB|ZH)tNlJQ>Y(MM?YY?%f!UvPm+1Y+uQ1)OL&tJIgvBz<*BFn8 zTAgSnUOTvKHBrwu@mErrKyDJocw0fd^Tu2UeWwGFAH-cSq!`1CZ7+ot4qq(7yX|t& zg{$`uucBc-Mic&gPZPR&t=HSUlX(t+UqjN}aRu{0X9Nu8l{7#Bzo6Q+`C#}W*dtYM z6D<~(ms3`rz&wp4pgJchG==00v_)W9IuB*K-_aO)bwD3Q-!+Y0L9+=On$FvXtP1Qe^!!szMWWwv1DC zKexl_%QroWxy*o%MKO3Bl0|@pOh#lnpZ;!}_*>zQzT^+)dYt~}lnU)8kcVX(rLs_y zv&|6gAhWg$DxJgS6Nr)4qcvYNIA-&A9!oI3~M^Xbh?wEx4k1}@^x$5F38cHErX$_66(WO(aniD z1Gq&^ycA+8$2&GQbTZs;8{tSxaD7OqnbOdnj-g$9Og+Y5i?d}^z6DD|_f%Ndu#qkZ z%C23&8_{;%7>6&E(AO-lMd=uZo5I~5q|NksU74KK#R&17wO0A5#BFL+-`=IAh3yFuJD-RhF?7Q1v5 zMp6mF-ph;X$YK*aHEiCc9k`#{Wvva$Bh+T654e^MI2U4sg>*SYW=cY}4(fFV72^B5 zNkKD$_pUgrY$vTA&OB`boId|p9shLPM(-$VL@pBn#i=w&#q(t;`&1x?|RM4igVh1ngAK_tjTr69PgbJ&H$=?v$~dNXH& z5pSP7BEsxQ2G`X`bBk^Lo*j+8*2{LeocRL}ZtU26o=(Y)tT|r+;sl>9IDE5s2I5@r zXz=K^A3e|Z_}hQbX!kIzGQH}$xVv2ein)uEC4rxs!gqGIw|yZbXCRmDg6TH!>IhS# zxPvCj6*1j5(?X4T2Ir}tct>Sb;9LFPZ<3*Gtx@8**dZd5h^tO+L&Gq1xG6Hs_;9s6;6Rf1wMnD%DwQ;di1y9e-1@dzUhs^K(9nnn zikXQHZq)NN-y&LPA%1|1V5tZUd2|-60)g!VpmiHXd^s<$Zy>Qz9krm(g zeSx9Cn9JI9vc)A+Fg1TIkzihZE66SSoBv}#%}B9cQk302V19zPPs*kUnv2<~U41#D zPR8wrH4PO|si)9Y&1r+ARWkB={O$n>McRuXwfKeUFGA9;fFXZLlQLYKU%`SS2QlR= z=jo@*%lmTdJX!&@qAcS>8L%M7!pze6x=9d0J)iGg-BM>Na^7Pdzi+Y;Jn(y)Xr>qj z`roa2Bb(fmaew^e;_qPgb*=DjO9ZVo1ZpE8|uj}8Pc7ka5+68pkd%beWUMZkP zxo}%pAXJz0g@kk$8@=k)h@&3dgmA ze;<^gBJ5odRt*v;#2AJO8w|uXR+*9CkX|RrgZ2kH3 zzJ?O7%)MK9_y(LRPHR;!so#jCd`oTdQb&wTBfEU66}mZKi0*mmvl$pEtdxZ>p-lIH za(Z6W&i-j94Y3i}*G1`OE@;QcA~a#|u<;RAfQdq^o7s_CFC*AsPFmoZUXGtX(8dk- z+4p#>&^bl9oNmCHKtL&P%MKEF(gCuc$bWB-dfi4vVrIf3ke4ex8ZBg_>Ql43P~!DPSO`BGCy4D6 zJI5_aT^k|Tpzs{INy@=}Hn`^oY^!2F=kmw>u!{{|6%?v{tNv==W%k!gMRapLE}=NQ zt;kdu)JBujo>2r(G?E@SDQ5!Y1!{I`OgtkbE>Y7hn{nkAjk|4CPm2V!Ko?2+k2xwy{Tls2;XeC!=6(Og~|W;rOgqSnKt8ZEx?N;h9a4# zi4CcX3?td|VI=bB(_^rOpwf7oH;JD?p%N5!PBk<3ZL;lbn@!dvW=d-J>#D+(6e&#r zTRLv~PE@p0e)2Kz&`O08A#G*O-ppm0_cIZ@_0ovZDvzu>$>l$<*^!@x9%;nc#b-L) zX|=*YAjV7~+6cm2bOYiieZ5ZD@l^U61*~PkZXJn}WUJ^`a;k>mb#&==0sMf!`oi%N>KwX&HqO^zd7UHU2f^sgpH|4=iVR_FM zmvzLnkyNWNnF0gYHXaS4>@6&CNu6lm%RF*DD=wsX>ZV6oloZg$Owp-Mm*w9J2b;_> z-quLvozRWF)lWtt43c5r1PT&SSg0u}s7f(%hOE6eutBFK+c8;VG}m_;p>@Q_t0Uf{ zXzFXgcKORGUemW;J2ZrO=xyV7hCyNr_?Gu0a^X1#9GQA!-o_zchFMzcKOy#P3`HlF{HFO-$&|Q<#U$c+7D}DJLp0#O|VqHXF_1snLc>`Sv9pNE(M;uyLH}s>B9s08o z799MtzWeRUt2ER)7z;T1_wPnG?!{}cm+VY&(`DhC!g`msFHgBHORh0PcezsnCMH4 zP;rCg5ia@$bf>_MSnPmMx%3Nzy}_4ID8o>T4cJ~kJ`@4>4)B30ZQn8?P+lJqg;OS? zhZ1ehiFkfrX$y%saielwu1ksG(&Bm8kc0!`Q2IxtTkh`@^+mZ(blzwYK=&ey-}lvC z9KRAzOj9*odT7Z03@lZyad(q0K96QdC(qZ4RcUbWsG^#`=ApCs3J2-SNj$5mL7^C^;71UtR zNn!;d~5Z%iA@2L@M(MmZXji(7?l+UO zU89;MUhyB@5^_5+1V0n7n=hc{&$BG5ij6T>c2G&o+?F_faSw-dJ?~depg!%K{?QiN>Oi`Rp(k$L9THELk{rQSR1@A)jc0AW zq2$vuj#P5o;h$zlOF_;mdF=!~y`ba20ZV=j`~FYk@kCgQ<&jKcl6H6>95TY)ZW+jC z9@gc-6g|3Dwc0iMQmx~4kf=dn1pj(27fKpicVz2sByQ8W(k9~|)FQWZ7pr>H_V9Ml zkxtuT>E?2|g3m?H+nEL3r`@a($)%|wu99tDvm)xt1&T+!x(_Kby9+1_!F(4f4leNn zL!8_DTJH*PKB08-CT`d-8LHU?Otz{U6)J#h#CE+NTL>r2N2(kEUjum3!qn|&&id~= zCem?U_Q@I;H6E+9kzWhwl$4m8DqOK#u0sueNX|%@4MlkSS;i_#91M$WxS6345K~@X zoMDZP`S=ws%GrMEkF!2Jfu)e=**TA{$eTT%ZFdh{zK{I?&YEgYoW|~@U|a0^w9obd zt-E~9ed5lJ0ZQ;9WgRq0erYSc!M3StcEfVdAyAw&aJsg=oj&BZ(*$l{-v#>?n3+$2 z;A^mc(Pemo|AObqR^nwO?8%)=dy=Q?HzI3Dh+PAy-D-_mXQTptHZ#JkB}+-1+zhiz z^#xhM<4iPFXgWYSo`;Rjy^axg+pbE}*7NJo6X=hbg@4Of{jTw!_x1fNz%12uYku^i z6&GN3X_xM)){A+cv13iLJfkppTs%KZkdj@gvmj%{XYew0g zYVD^H#45JM0d6I^JEJDWcqr@`DWg&Tu8m*v>h1fZ-4{^#L2tgGU^dv0c?ZwimE}|y z1`OlF7k|&{Zcs`;45PoH=c=_bFB$4dwS-L7T=@tH0*H;*`jhb7P7jOP6`Dd@G~;&D zGLRT<9z)q3_MN{pEj~AcNfgp`O z{z;969VGu9aK^p3L?C5j!X4NNn z%omW_FG#{QG#YxgPGt0;D`UBSSQoQVK}1d%j(x7KMhtIbpV;rF|A^$?AQ`+Wq+&tH z6@Ava=K{1)j}~gsX!nWk%t;m$%HT7D+o2*t@v>+P?5zVwHCargR1{JGtgQIp;s!JaF8 z+}m5ZxpPN#N$r0EC|d@O9U8}>QM`_yuU7$U9}N3$E{OcS8V1QW!5cA;{SW$c-Ftj? zJ_^xtGgKCUMDXOg6Ao0yO+*|WX57|xYiHRO7&Go+vlp{WYp-7HEOF{AjtHmiSRzA* z`#Pc0%YBG-^=>9B%f0+v7n$QDvy(=BF_fRp7iS&lA-%uv0v)~CiypPLi1PM`0o{~d zpFN2r5~Mp!dwzb~T<%Up8SpsI*T#hNtQh<{tgWB=6+PK3>IgWe^9~+G=ZO2Cf$(XQ zp)0$wHQLTa@8z$mi5OjEWOgR1(Rsd)sD$k=h4%hwgIi_;?rYFTeD?K_XsguUU;LwW z2Gy@>In|3qTdA8K56_rYSUdmm>C2^Ky*X^vKmY9aMT()5&et?28~Ty=fe|B6lXW3* zwKp0`!7)>x>$kS9V!c!~gop_cSqv)W+tpgj6C4=^9w$L`d&vbH9KvyuI%yD>fVtga0|`&3UmGuG=bGba<7;xj)T{Dr zzTbVne7^nvQTCQ$aV_1pFbM>g;O+!>cS3Lv?kk=cKReY4_r&X;Cy<5>dN;&JTrxh4OL%-QZUD;{7G(VH{xQf@5W~m#20Ko{oRUGx2u({4FHC@~&CFqJOuaDh2t9eVYYiK)h$+oP*IZG$2Y=XNs9X!o- zsn%FiTn5!wi2R$zaX(#UrXf`RiR<=GYC2fx-y`qb+T!=7OY35*!0#P$-Y9rQO-<>t z@$Ah;YBmM>$RW?`PpOR(r}Goq1JcqM!}7^_R}s?n)%gCfR2?<2hNX=a_sb>TCNc6( zkBpoXn=XsP?H6Ok|G^u z_VCe+fS9tg)hTPRU1f}XJSN|BaRxkk%tt3lSbJy_ZmN79-;{jeR)0srjsjUC{xPV;@o%o`8EQV{LP!S%O!juDpYz9dPTCnBu5Q3K z_9OyalfjKLaqhgh=SEf*S66M`B#hTd*l1U~c|rA{!_o_8%dN)7L9@wc0c^sZ7wGlV ze1^j@?ZLd?<{?jLE)K5~nJ|{BZb4x_BhQ&9$MMvbUFIiSk`4 zx)YL8U&Ks1!TwV)&$sM5Y#gnfbzv-6hcmypBL_;njEmx5g|Uom@m;{UvG}tDhd21V z$TdvaMQ;vmWvpA4l@0pSWkK5c#u$;IUKZceU)eBBW(_1Wv11>0aHs=O;Hc>spH91T z|AN%_#DAM6 z#keU|E8p;FJ#jR3%_P=72_eJY_T)%w^M~i(g*^a~2* z`uCli*yV0d9M)q`pX8He=?+Zpqxe$tL%4K>Rzs$Bg%-pC+6UiwSbO8CnGoxdyaMbn z)rk(0gA*GxuMGqbZiXIAi1O%Pii@)jIDTt_q6rUgS#v#L9mO69UP`F59X)dbvSfG0 znfLP4Pre_(=ab}}Ee?)X$WM&3r9*LFVri&q?+qFc!^a}C6Ga#UQa>9WnN-xrmxZuH z?2a5(8&d4Yt9l`>iNf5f$*JVE0Dv0GC|9DLr0o&HMtGC zG8%*va!?RaTUJa;{(%dklY>|+ymO3~l0mqc`sNY~>ihBygr2?N%;M8A9X*eXQtI6` zLyaD$bMiJ5?vmAECIdYD+`TP!j4)g~n>dcSoib=UFx8tdff2)IPDd9}=7)Y|>e;Aa zvaO5#@)vxATPgUr8JOVh1B(|sf0AOc#CNMUuik8>JV0F2;!lG7yd&d7rnQR>`B4mPk0cXiK8=LZ(V~227Ci1a%-W9~PFk^gAiM zW)LlN`L_u?v$5?Vve4rFZVG3Jyag;b_nufy@@>JdS;Ht?U)v%Q zp{HbFvln;?vG!B1=?r1x-tnx)JcfJnCiFzXd4A_{JdodEg1Ps15TU`fo`D*}58u$#})TrD=NQ*6MoVq#~&c#do}a{WCD);>_Kl^)vqsZW!h}Y_!O( zm)Ux_Bj7e71bF=B>ZwZ?*(63&x-R#`CuO=+X5}AsH$*)jfKdu(p7QU7Xk_FHzuvk| zg!vtq4Mz{}8u=)21n6c??!0Rs9gvmE2J)_A9i&`lMpZ~47+K22g8DzUiQ;E)^Rgq| zyAJj-Xe6~#GR`s7t8^0{Ilo;RWi@?ftDrS1g^$0P=G*T*lZJ@9&26OXidXT#W`0nx zUDgWa5gx03mcq-?K8H&a@)&A)!y$C)Qw8Vv8Fs13t+lBe_aC2&u07&h`_zc&p6x`^ zQXbBd=>_ghe&@=V_Z_11$(1YEWyJ5x9BIAeA|uiRJI4yFkG~1sfd>_d0J|CJx2Qdm za$6yKhtysmYlRF$Dw2Nn5omL5tzH9Rf9HsP1f*36ZG1?<*LW~k#vw=PhP0$LzHYty~^5rJpgI7&3bxHmKK%6_ns{{%=Q*cJqVgGtdTdR?r8Z&)xv zht-uZmPYYdxv{SMA0rnM;z7WA%(s;j^(+2Pur}57a0vM^|?Bs;O#Qrb1=KCARYB;7>->5`M*7z zvsbH2iI-;HqP0n0`OQjFA9+J;(Onxh^q0O8Q4xhd z?5d(u9gB0TyU6>0TQ%Rf^krA&?%J7LZIf%54rQ=Ivjt|J;ZWihFb!%3Q-Vm~5Uds* z>~{vPtX1Qg8np|5`vEi?yx8aMGlqmoQX z;lsUWS@zaFRW(cN8$ie*^%q~pezCidd|)VXo2Tx$G?XDL3B!nCp3D5@e%;#_g-lUi z?nw^6T=4S849^wwD%%ODp%OcRQ_JZ9FKgVya_j#o86)|p`-!gq?`f9Ya=X?ZnBB$i zuWafAu;XP+v#Y}_)4}g#YN}%a(deItLvC7Mv`E~Q6s}iwDJHafESW`!aywJh4-P@* z_0|7QpOP4yBsO&Z4Dis=6HgLE9X!Z4PrD%bQANdgLw&Ju6wLKfo=>|2h=@ z%E11-uDJ_1AZu8f$$^T`us3}Nce2l&vq_K6&?M}?Hu-%ve7Fnx;VjQ0jH_KM(#Mp? z;;J`B+eSqFZ@ba94Ha>#!>|77Pohom|KD_~06~Fo@~qIphpDxeoPUGpgEMvj&)*;i zz)Yp#N8;lT6K4+OBy^Gfbs9dd_Y{2HIUMoo**cbtV<9~<1{Ku48)2nJM-L zVyZz39*14#G`#EBjTNo6o*UdqIFyA_R%a2FzTeYFYJbG(kji&$C^+)1Ls$LT;^wZH zwfFf}vW~})V06xyJ)mUvsAhBw!DX|_Nm3E#@|Ri`;Vyvz$y!S!%Tni>pKHRom&;F7 zr8kD(D=qAtW2#2qPf<-7PF9b*KHQs#5$BJLlMS=7RzMkwIL1irq*p6sPK_Q11dujY zc;vVY=2;yciFif6c%k9o4K~_#fncu-TVZsEe|1LT8~sHyz~CEkSQ|S~H^2x|h8;@w zL>&KawedyZfgoJU0@Ew*pX6%_q@AvqX%nqb(Hu-UgPf zUyZ^p#1ddUJPgk?23Ud)zkgUnH8nBS-`5NO+b88nsA+oF(kNXHWp~z>yR9eNc6mX6 zQ2$^SbA#Sb*4&mDH31Jj>?5ttqw1$90f|3kV1a$k$J}YETP~(lg&~iRM}q8<18?h% zu$kJ&MmalEydhG6j!&_t75UE^u{pdGwMRNlwxj(uVAoSV;IFkg4d99!r1GL)I>yCh z%IVhQZApAu7!nOHiU+DWQ~7sV&`yLB$Hsz$($vlV^KP%c61Bva6fB7Ga5(IQNPh= zIk`J<+ah)`k{EwWN#K#!y>&Gi6dmhy9qET$3=(TTW9Znj{%dlM6xa46H#M@e3;DZ~ zK8Z&d!9;PeI}*OHCujRP7?k&BsBoEcfl*(b-<&xzQ}pGLnwxXN@v`(R#1{JQ_-yU> zk;U~oDDS$Cr`GC;Q1GSG6vp{KI2^ejoe2o7tYK<0vxG;tdB_4*b;gLC)^dqsNFt$` z>D}#1j>3>t>~@LdL6{piKd*ss_5}q?qnQ!*Hpbvk!>heKQ4_Pd`+`YNrAFrtwoF2Zv9Ny=q3}Gz16Y zePDrn-9PoGdu(i?N3)(h=(z`;;o6o(G=Zu0Q9>u<@OPvK8!wq02s4;ht)QYExN_D$YmBFlBQB*FW5hyo#g=ptLR2>MsSQKT+MsnVoYzjb zh@>AnFLqVgo@PlGuI^XCju;%}S@~5{`^#Ot9vb`TL_&j$CDHfe-lPRHsKTp4gPv_O z{B`%@`a<~(H#-U;4^|E$!Nn){QC{AJXVJr^rE@Hl!2z4T(A_5_dtJeuL=A81?ynCN zz~SON7ed?vWSN3B#vFzXPo9pP!Bd*pGpDjM+#AEB?y=4$p&Siyznd>3l`4n0cp~i- zn(7XxZrS;}iRZ+YCs&u+>a+R;;YQ1xybZmQ{iX!q7r=4EQ9;JemMN4s^AszoLdiENXt(QXx&8a7`9 zk#C|Olq76pbH(6c*q*pZY22fXSM>LF6#7Qdss60gu_wr#-0gb8em? zp7wmdPmpN67Ztf1g@*_`=~VI%bYs0%bIM?%XENq}8*U-nI@ z$sS~VZX+}2`YGruYwQ zM8oN-BjGmL-*@1<*|2h(KP~q%rKa*?`nxNcgI>N+ymWKXt)RJI^9ODp5HGW#N^PCj zse{iwBcSIld+QL-39doGTKrDg9fcN5udPdyW|lem3aj(#YW0K0J$&VrQ>0T23(k+J zl4|EBU0Ud+cGfxDId3;~Ri+H7D1BRK24qPJZR7u7S-13H2 zu#W<9YM#O451a2}>@}E_Hw_X~UU)V#l5eno*UQZG0u0SIXJGJh#huR&!d7g@2(P~a zqJUEVeIqvI+5sn$3x22eSr>Q*^GM-*bq)!aM?qa$n}<9nWoEy1c*=mx-oYSBKf?I< ze>_r$AKt&37PRzhjI1ahx)W()`Rwad@*6xZx-8C`SL0kFec-;aa(>o=AWUPGMgWvM$C(@8Wh+sY_UnYoP%$vb936Dt_IJx4$gp+%VI zr50K^BkOvxFTe%Z3Ms!D0LePyKg$Lm#azY1t==EDpu{=77^y>AAlO(GYM69!5*>BH>`rb%+(qH0ka%Vxn$XottTLd zSqbH8HI?uY)jp`%!+xM95=eH8b8_Y9ZqDEvESN?vn-xUVA37BsYEtNfUHuYbmt13K zYpW8-)|~39Y(STPZN8<2M_2elPJ&8RBhNFa7_3D$aMkKw>6szMw&bOV#`0c?|5<0q zw;CJC<@BaCsBG?c3$0c|+mlI5%%@`yY+!ZfrQ9=7wj7jU%Fzb~+zcS#w@e*Co;3r+a*?FUgT`ck@x_9>Dj+)@$_sldPVzIWL3q1<2{gt`XEhxk4n-?XjbO( zM~XWJF zP}PG^_!Z=7tK8ar@<+_EI@xC>8EiB#swJ6JK~$qkZK@2{`+Ya3-nV{ond%bkgF;vn zThAv7&FJ&MAh)wEZMa zW@(F%5r%@!mP{#Ac3%#Luxer>?HgpfGADmL=|E%Cw`pwE|eO!vH(maMQW;J?d3>=mE`}0N97gjWKpF<#S=nqce*b!%pNjx=|qj^w+;DKX9gkRBloq94cv5-YMB+c(w+>%qz8yzzyc%rtkB z?)LcXWp43m&a#5->OXsLE2QbavNY60?sn=$@(`|wA(t|uw~Yg64s5~{FFE7^B*#qY zodPH*7P%m37|PnTo}{E%Amvj$o3rAltFgLIra3DhWa6oZ?|uNJZ2J`;v4Bp7=YvGv zrKL9=wW9Suso0Dg|z&8Y#f^s*XJGJP=?>VaFW!(l;G$gE!?btdGdHJ(T z@8vk7>dgxrJI%mczP0+zFe={HH*)=XH!xU+HHSo_)pmy?a#=#urPY{& zGMbvFVd(H@vUI|MWIDremN7rPg$(+;Dn&_*z-{X8f*4zd9!G%DV76cv9SresDT@$mrJ@W!^r1hR^!#k>b5)#G$XTw3)q~&`AVncnqB$Z8&(pRB4rD& zQ9*&7(x=SBBd;qc?2Dz5p%uL~Sn*`a9DY2L-wLf*Yd0jqu5%qeD*lg3FhFYFN+_{h z4qL{_Z;p$^YxPKE5*L*5mlM6Ma26`2u0)8_;B#N(Rg+Uo(nH3;rb1*AQc7(@+1n=F zhmoe%=3qO)t4)K#-3R6czq-6rE?uw9^ya)Sgw=qk+g)^4=aJtZem(805_$P0Z1HKY zaz5EZOa8&I;gDSH{o@<1rvH!ZmS~MY;N`qoh>~UsD1DNd1Wmi*dS9j4=;Tvy$qv2n z7T25Lp9YxyiTyM`Y`l1I>`eVm^TxM^J|zp{vKVU?#P65|mO{&!6AGeaJ730rhFx9PPnru@~j8MB#-~FdAFqOKPxgeyqI>~)5atS zB_A&7MQ!4;SogPxl|gofS>4x&*R_tc$zB+V*3h+c>C5q}tuOVil_}{{+|{P#BC-~W z^>_N>-37lXET z3SPPL?>09WzV2x40<(s(xy*l;V@#Z-1@?;>|E5164N$a>_;|=_OthD>Q1ip+1qgmn zTQ~?N9wIn47R-~(Tq+K=91ceAxMzoE$=g7r7`@CZy;t`oWYQg@8*ve(7d7)txCPuf zwRpVX^vi_hd&c=~5H7bc=gX%@IsqlY+(8=%JMO~g^LRpb9CCRAM7|I23`YEDR-4k3 zlli(yvPWjpy>`Nln>yQru2s0HJI2kvR* z!4x2bhJ$@M69eB(@M}LGk>H_{V{QR9_8qpbMX#Vc_nn#rG>%UR+!Ar7+>MTCUY6|T zl?qSqm5hO*bEDOt7^}I*N(tbes@rPu`sejuK&cF)@Z^+__x*w6%@3k8ey*Q`!}0g6 zG@Ei3CRwFJrfZE|_Y*ViM>5rhs+jA(8|I*P>`>o|2{MB0gHoY&@R6B`vF<2Bm(cN! zYU&40{-lOD_p8RP_i~EyhV02;6vCwze}Ba0h@b6IJ&LnG10sNlSTDE%gL6afO&eO1 zSsqyfrPN1WVD;NhRz*a|N=tbo+m)vNIM`CV?9;W@WKBaqw_YC!2?++3yZih5 zsCgGV7nQ5Tc<13*gHvFq;A5_7$Yx!pbaIF8#X% zHBhxm>;T!&GU$T%5`)de_c2aXSl0~w8gMo8V&czw%A3qM!Gd@_`bcFreC@^W3#7+s zl}84U2RMmQHis!X$*uDCGOTz~quDM^q!UB0`P9VkYSx{}rDUG8Z@EbwpH}4=K8&TO zGlD7|o*yz7bs)g2bD3Uoh4rn;3QoV2Pli7O4bP;Wh8=yN5uv`m=C6=D8>>HXx)o!u zB_Xa+2Zu;j(>H~!U`N+m6^+dNsr1P%_l)znoYDEk|@-w&Z{ z2hw!_#*e?O;oON;AY2Fto(QSm8fB|dHN7Fywf5Op~FToTtP!I108!&I0K=h7TI7!8bobsF znvLDdsNbUN6tAV>Nt2%>r{d-A&S~6xm{0TcKLWh`bS$1In`PfalszdIgr>NeY%1R62I1-_=%6WoPYiosD6>DnWYE!gjlelIM?47LO<}8sB@FP4xj=<=+A1n;$*9yUAWi2W5#SbGvgvAM_J07r=A?xzTl1;>Gjmse>ZO~{?jXof;uR&VQ=-n+IUAZAW}6I! z;^~<6?SWi(9m$hS4=sJBIZJ*adr5bMW;klf>KUT8-{N0Jmpby(gNzd-zpay%d!wjp za~H(9!=_{Z`dQDq>A=ex8~W1a zrDSbr%(kKL*ER@SBkUO@h>Po*#(BB;Q*lCW(}B+6fRIZhUzBGBL4kQ#mhdBV}L z^9JJ{n0K8eZ+il1J!YyJK!x3Mw?4i~V%>wD_x0kZKXoB9!6wN4yptn;jW`7*rQ?j` z_MHAxHZkBk&zHkI)UgGIj~OE_2gaOuqb@7yv2zUKZ>jo{l)UVqV^P$x1Y#=MCe%KO z=?m-FCb{g�=TE75lqrT|?n4A(odhj`fozhX6`0VUwkO5KvO755k77N*z$5n?4n^ zU|4rCU?GNnD)>zM$4`*7@;BX#E=xH*X76xk1UO|YvyW5L5Zp%hu$X}g4{sL@n#}-V z0O5@#68P%YU05YS>Bu#wteAnzH0dJmbbpu*AHeU;R16F+uP=EYpf9m!u4~!@E#JgCY)U+vl#pNEtYdj2A+Mj`}_#Y-Hpw z5{?tOOn6DeUedI7!RIxM?+;b~mu>xRX@eByvFTqvuZ`q<2wq2EFK0_zPBSp8NIWfXozH z5M*d*vGcnE)?M?M&BLlGKpYMHka_ajTUGX`p5!>s)i3f8J@Z%5=qS|h2v-zI2Na1Hps|=C8k^+@=)-{ad~aH)7>`S*Ea9J^1b~lE5y8Q7^DJSW4!t ze4SLzKzxwTBo^Wv3V$l)%UwvMh-Y!P+efltNn=21HJSND4k9Ty!@moz2kK8@={T7RG%@zj@o3L_tpG!vj3|iJ9UT5C);6>*nHoO$NO0=JtIG=-kgBKkL3k3s%JB^_7Uap^cZB8J;fl1${)nGo!LJXi zQWhOO!=XW9=U@sT3;L-&60Cujdp(2nF=hCm&-YtXPWKTjNR2miQllsM!9tRz{lSq| z%4;Wk-q_O9epOMd4A!zmjw_@xWdY7ZnbOU7Sc#Q$*Ywvf#xt}=my5$|Jp4FQ#>#J9 zbn(+JO4s*WvYC_k{XX1brOu|nU-!?jb(rU# zvR5)oC{2PEU2udA)jyT9iQS#D2C$PDph^hxu1_6)-ySz75muv)pehs;5FRj;mz3UT zoU+hn@Q%pM}D-L^%@;|vn(wt#UT@F z?8w>`$(#?YjycJh)CBa=-z(S>6hf}@2+fRm8}=TUBIEM*S~fnZ+96>7gf*iWa5WTp zHckAE2DL^NQQ3YwB2MdAxDW9Ii$R?bn#!-~0z#&+|FWHwXvt;Y4LFw|N zh;Na;{spb-+aygxR0De69Rxd68!xkJf5zHL3`6b|dMAk4npm5H-5sf=e?IQ-Fk� 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

    >{&aGw*6luH#!@UZ) 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%0AkV!u# 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 w@;dt1Q#^No})j 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

    Uq~YSXW|EqE@?~@C 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�&C>DefXvj@`aryt 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

    v@m=rAhSuzsh7Y$0@VY4K>vPL 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 z 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

    @j9r0Mih6Kx`3jciQvmEd2PI*=_)R9CJ1M}mF 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 JSZe4L@lONo7a;%u diff --git a/assets/AwesomeNeovimWithC++.png b/assets/AwesomeNeovimWithC++.png new file mode 100644 index 0000000000000000000000000000000000000000..5c889364cb58b2f1b657736744e468b40f030b33 GIT binary patch literal 385167 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

    nQ^`C{*a%H_=qtf; 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

  • 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%0Doum}7_Lwfdh)?HwpvI@1s< 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

    =UJlPVYWTQ@XrEzDSV?EMLLQ-@E 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 bZ1IgSi2zgK?GYa~DO?aI} literal 0 HcmV?d00001 From 3bdec51945aabb18fae5a67a8a72f8ca37c8bc91 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:36:51 +0000 Subject: [PATCH 307/419] Update README.md with new picture --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a8cd56..081188f 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Supports the following - Treesitter syntax highlighting - autocompletion,documentation and all other features supported by any lsp server you configure -![Awesome-NeoVim with C++](https://github.com/Ultra-Code/awesome-neovim/blob/master/assets/AwesomeNeovimForC%2B%2B.png) +![Awesome-NeoVim with C++](https://github.com/Ultra-Code/awesome-neovim/blob/master/assets/AwesomeNeovimWithC%2B%2B.png) >__NOTE__ the languages supported out of the box are > zig , c++ , c , lua , js , ts , html5+ , css3+ , vue , markdown , json , glsl , nix From 046de40a4cdbc483058c238229c6aa601ac27d6a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:44:01 +0000 Subject: [PATCH 308/419] fix bad formatting of discription of the repo structure --- README.md | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 081188f..481569e 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Supports the following - Treesitter syntax highlighting - autocompletion,documentation and all other features supported by any lsp server you configure + ![Awesome-NeoVim with C++](https://github.com/Ultra-Code/awesome-neovim/blob/master/assets/AwesomeNeovimWithC%2B%2B.png) >__NOTE__ the languages supported out of the box are @@ -71,13 +72,22 @@ Neovim does come out of the box with luajit and treesitter support ├── LICENSE └──  init.lua ``` -All lazy loading plugins are in `lua/lazy` while all key mappings are in -`lua/mapping`. Configuration for plugins are in `lua/plugrc`. -`lua/editor` contains editor configuration. -`lua/plugins` contains the list of all plugins -`lua/terminal` contains configuration for neovim builtin terminal -`lua/ui` contains tabline , statusline and treesitter configuration -`lua/utils` contain some resuable functions + +`lua/lazy` directory contains file for lazy loading of plugins + +`lua/mapping` directory contains all key mappings + +`lua/plugrc` directory contains configuration for plugins + +`lua/editor` file contains neovim editor configuration. + +`lua/plugins` file contains the list of all plugins + +`lua/terminal` file contains configuration for neovim builtin terminal + +`lua/ui` file contains tabline , statusline and treesitter configuration + +`lua/utils` file contains some resuable functions To use this awesome configuration clone this repo into `$XDG_CONFIG_HOME/nvim` or `$HOME/.config/nvim` From ecbf3fb7a3c0b125672bb840cf8851736d5d23f7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 25 Nov 2021 22:46:05 +0000 Subject: [PATCH 309/419] Update README.md --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 481569e..3947fe0 100644 --- a/README.md +++ b/README.md @@ -91,12 +91,9 @@ Neovim does come out of the box with luajit and treesitter support To use this awesome configuration clone this repo into `$XDG_CONFIG_HOME/nvim` or `$HOME/.config/nvim` -__Paq is a Neovim package manager written in Lua.__ as quoted by their site -[Paq](https://github.com/savq/paq-nvim) +## Installation of Paq -### Installation of Paq - -### Neovim +__Paq is a Neovim package manager written in Lua.__ as quoted by their site [Paq](https://github.com/savq/paq-nvim) #### Unix From f6f3e673a6dbc2eb3876ce7ff99b804a2f2d9729 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 2 Dec 2021 16:19:29 +0000 Subject: [PATCH 310/419] Replace nvim_tree_gitignore with a git object in nvim-tree setup --- lua/plugrc/tree.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index 900718e..ce9120d 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,6 +1,5 @@ local g = vim.g -g.nvim_tree_gitignore = 1 -- 0 by default g.nvim_tree_quit_on_open = 1 -- 0 by default, closes the tree when you open a file g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. --g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. @@ -50,6 +49,10 @@ require("nvim-tree").setup({ -- the command arguments as a list args = {}, }, + git = { + enable = true, + ignore = true, + }, view = { -- width of the window, can be either a number (columns) or a string in `%` width = 39, @@ -102,6 +105,7 @@ require("nvim-tree").setup({ }, }, filters = { + --hide_dotfiles dotfiles = false, custom = {}, }, From 381cede5f69992409c1e701232930c4c1c1fe957 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 2 Dec 2021 16:29:07 +0000 Subject: [PATCH 311/419] Remove lspsaga plugin and configuration --- lua/plugins.lua | 11 ++++------- lua/plugrc/lspconfig/saga.lua | 19 ------------------- 2 files changed, 4 insertions(+), 26 deletions(-) delete mode 100644 lua/plugrc/lspconfig/saga.lua diff --git a/lua/plugins.lua b/lua/plugins.lua index f230ca5..5ad1c88 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -1,12 +1,9 @@ -- ============================================================================ -- -- === PLUGINS === -- -- ============================================================================ -- --- PLUG INS FOR NEOVIM +-- PLUGINS FOR NEOVIM -- Specify a directory for plugins ----For Neovim: ~/.local/share/nvim/plugged --- To make config resuable system wide use absolute path instead eg. --- /home/$USER/.local/share/nvim/plugged ----Avoid using standard Vim directory names like 'plugin' +---For Neovim: ~/.local/share/nvim/site/pack/ require("paq-nvim")({ { "savq/paq-nvim" }, @@ -51,8 +48,8 @@ require("paq-nvim")({ -- === Language Specific Plugins === -- == LSP Client === -- Nvim LSP client - { "neovim/nvim-lspconfig" }, -- A light-weight lsp plugin - { "tami5/lspsaga.nvim" }, -- Show function signature when you type + { "neovim/nvim-lspconfig" }, + -- Show function signature when you type { "ray-x/lsp_signature.nvim" }, -- A pretty diagnostics, references, telescope -- results, quickfix and location diff --git a/lua/plugrc/lspconfig/saga.lua b/lua/plugrc/lspconfig/saga.lua deleted file mode 100644 index a25b952..0000000 --- a/lua/plugrc/lspconfig/saga.lua +++ /dev/null @@ -1,19 +0,0 @@ -local saga_cfg = { - use_saga_diagnostic_sign = false, - finder_action_keys = { - open = 'o', - vsplit = 'v', - split = 's', - quit = 'q', - scroll_down = '', - scroll_up = '' -- quit can be a table - }, - code_action_keys = {quit = 'q', exec = ''}, - rename_action_keys = { - quit = 'q', - exec = '' -- quit can be a table - }, - -- "single" "double" "round" "plus" - border_style = "round" -} -return saga_cfg From 83ea2b869aff497ec4ccec35951032e640a744ec Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 2 Dec 2021 17:21:14 +0000 Subject: [PATCH 312/419] Use open_float from new diagnostic api for show diagnostics in floating window on CursorHold --- lua/mapping/lspconfig.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 47a06d0..9b17341 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -56,6 +56,4 @@ set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) set_keymap("n", "sh", "lua vim.lsp.buf.signature_help()", opts) set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) -vim.cmd( - [[autocmd CursorHold * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false})]] -) +vim.cmd([[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{})]]) From af634a1ae1fc9e54c2ba02040dde10997470f98a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 2 Dec 2021 17:23:31 +0000 Subject: [PATCH 313/419] Configure global behaviour of diagnostics in on_attach hook --- lua/plugrc/lspconfig/init.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 0833ad3..3dfec81 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -12,7 +12,15 @@ local disable_conflicting_formatters = function(client, buffer) end local on_attach = function(client, buffer) - local signature_cfg = require("plugrc/lspconfig/signature") + vim.diagnostic.config({ + virtual_text = false, + float = { scope = "line", severity_sort = true, source = "if_many" }, + signs = true, + underline = true, + update_in_insert = false, + severity_sort = true, + }) + local signature_cfg = require("plugrc.lspconfig.signature") require("lsp_signature").on_attach(signature_cfg) local function set_keymap(...) From f9f9eeb4d9fd86556e7a5c926494c0941fe47836 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 2 Dec 2021 17:26:10 +0000 Subject: [PATCH 314/419] Rename lspconfig.config to lspconfig.ui_customizations Remove redundant functionalities --- .../{config.lua => ui_customizations.lua} | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) rename lua/plugrc/lspconfig/{config.lua => ui_customizations.lua} (74%) diff --git a/lua/plugrc/lspconfig/config.lua b/lua/plugrc/lspconfig/ui_customizations.lua similarity index 74% rename from lua/plugrc/lspconfig/config.lua rename to lua/plugrc/lspconfig/ui_customizations.lua index fcb23f5..3ff83aa 100644 --- a/lua/plugrc/lspconfig/config.lua +++ b/lua/plugrc/lspconfig/ui_customizations.lua @@ -41,21 +41,9 @@ function M.sign_column_diagnostic_symbols() Information = " ", } for type, icon in pairs(signs) do - local hl = "LspDiagnosticsSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) + local hl = "DiagnosticsSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end end -function M.customise_diagnostics() - vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( - vim.lsp.diagnostic.on_publish_diagnostics, - { - virtual_text = false, - update_in_insert = true, - signs = true, - underline = true, - } - ) -end - return M From 9634dee89d59455da3e4763ff002f5ff7db5a53b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 2 Dec 2021 17:32:46 +0000 Subject: [PATCH 315/419] Update neovim version constrain to 0.6 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3947fe0..d88b016 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Awesome Neovim Configuration -This is to make setting up of neovim >= 0.5 a breeze. +This is to make setting up of neovim >= 0.6 a breeze. ### NOTE : for vim >= 8 checkout [vim branch](https://github.com/Ultra-Code/awesome-neovim/tree/vim) ## Awesome NeoVim with C++ @@ -25,10 +25,10 @@ and installing the server and other accompaning tools for development like linte ## Requirement -Unlike the [vim branch]() with neovim >= 0.5 most plugings written in lua and don't depend on python or node +Unlike the [vim branch]() with neovim >= 0.6 most plugings written in lua and don't depend on python or node But if you decide to use a plugin that rely's on any of these you would have to install them but I recommend you find their lua equivalent. Chances are that it will be faster (due to luajit) and more well -intergrated with neovim >= 0.5 +intergrated with neovim >= 0.6 __Neovim__ Neovim does come out of the box with luajit and treesitter support From d7f4599b36f7e973e6d32c19f98c959a3d63cf6d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 4 Dec 2021 00:52:46 +0000 Subject: [PATCH 316/419] Increase textwidth to 117 --- lua/editor.lua | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index d8d2b27..f0f2dcf 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -6,44 +6,46 @@ local fn = vim.fn -- invoke vim-functions in lua -- With a map leader it's possible to do extra key combinations -- like w saves the current file -g.mapleader = ',' +g.mapleader = "," -- == Python provider configurations == -- -g.python3_host_prog = '/usr/bin/python3' +g.python3_host_prog = "/usr/bin/python3" -- enable loading the plugin files for specific file types -cmd [[filetype plugin indent on]] +cmd([[filetype plugin indent on]]) -- Switch on syntax highlighting. -o.syntax = 'on' +o.syntax = "on" -- set assembly language file to use nasm -g.asmsyntax = 'asm' +g.asmsyntax = "asm" -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed -if fn.has('clipboard') == 1 then vim.opt.clipboard:append('unnamed') end +if fn.has("clipboard") == 1 then + vim.opt.clipboard:append("unnamed") +end -- Restore cursor to file position in previous editing session -- This autocommand jumps to the last known position in a file -- just after opening it, if the '-- mark is set: > -cmd [[ +cmd([[ augroup restore_cursor autocmd! autocmd BufReadPost * call setpos(".", getpos("'\"")) augroup END -]] +]]) -- Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if -- available. This will store the multi-level undo information in a file. The result is -- that when you change a file, exit Vim, and then edit the file again, you can undo -- the changes made previously. -if fn.has('vms') == 1 then +if fn.has("vms") == 1 then o.backup = false else -- create a backup of the file before editing o.backup = true - if fn.has('persistent_undo') == 1 then + if fn.has("persistent_undo") == 1 then -- enable undofile , which helps you undo a lot and redo also a lot o.undofile = true o.undolevels = 30000 @@ -65,25 +67,25 @@ o.inccommand = "nosplit" -- for vim's swap ; undo and backup organization -- Location for backup of files before editing -- -o.backupdir = '/tmp/' +o.backupdir = "/tmp/" -- The location of swap files ,ie buffers that have not been save ie in memory -o.directory = '/tmp/' +o.directory = "/tmp/" -- Location for storing undo tree of the edited file-- -o.undodir = '/tmp/' +o.undodir = "/tmp/" -- The extension to be used for vim backup files -o.backupext = '.vimbak' +o.backupext = ".vimbak" -- You will have bad experience for diagnostic messages when it's default 4000. o.updatetime = 100 -- don't give |ins-completion-menu| messages. -o.shortmess = 'c' +o.shortmess = "c" -- always merge signcolumn and number column into one -o.signcolumn = 'yes' +o.signcolumn = "yes" -- enable saving unsaved/unwritten files in a *.swp file o.swapfile = false @@ -92,13 +94,13 @@ o.swapfile = false o.expandtab = true -- Don't let autocomplete affect usual typing habits -o.completeopt = 'menuone,noselect' +o.completeopt = "menuone,noselect" -- This option allows you to switch between multiple buffers o.hidden = true -- without saving a changed buffer -- Automatically enable mouse usage -o.mouse = 'a' +o.mouse = "a" -- Show line numbers o.number = true @@ -110,16 +112,16 @@ o.showbreak = [[>>>\ \ \]] o.wrap = true -- Line wrap (number of cols) -o.textwidth = 79 +o.textwidth = 117 -- Highlight matching brace o.showmatch = true -- text complete with CTRL-N or CTRL-P -o.complete = 'kspell' +o.complete = "kspell" -- Enable spell checking for espanol y ingles-- -o.spelllang = 'es_us,en_us' +o.spelllang = "es_us,en_us" -- Use visual bell (no beeping) o.visualbell = true @@ -161,12 +163,12 @@ o.history = 10000 o.list = true -- Unprintable chars mapping -o.listchars = {tab = '••', trail = '•', extends = '»', precedes = '«'} +o.listchars = { tab = "••", trail = "•", extends = "»", precedes = "«" } -- Enable folding -o.foldmethod = 'indent' +o.foldmethod = "indent" o.foldlevel = 99 -- Remove Trailing whitespaces in all files -cmd [[autocmd BufWritePre * %s/\s\+$//e]] +cmd([[autocmd BufWritePre * %s/\s\+$//e]]) From a94aae84644fb136457bab57d6d6dfb46f7aa0d7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 7 Dec 2021 17:01:56 +0000 Subject: [PATCH 317/419] Add mapping for visiting last visited buffer Change mappings for bfirst blast bprevious bnext 'bufdo bd' and BufferLinePick --- lua/mapping/tab_buffer.lua | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index a4b5c99..c1c3d23 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -15,18 +15,15 @@ map("n", "", "j") map("n", "", "k") map("n", "", "l") --- Close the current buffer local opt = { noremap = false } -map("", "bd", ":bdelete", opt) - --- Close all the buffers -map("", "ba", ":bufdo bd", opt) - -map("", "bn", ":bnext", opt) -map("", "bp", ":bprevious", opt) -map("", "bf", ":bfirst", opt) -map("", "bl", ":blast", opt) -map("n", "blp", ":BufferLinePick", { +map("", "bd", ":bdelete", opt) -- Close the current buffer +map("", "bda", ":bufdo bd", opt) -- Close all the buffers +map("", "bf", ":bnext", opt) -- move forward to the next buffer in the buffer list +map("", "bb", ":bprevious", opt) -- move back to the previous buffer in the buffer list +map("", "bp", ":b#", opt) -- move to the last visited buffer +map("", "b1", ":bfirst", opt) -- move to the first buffer in the buffer list +map("", "b9", ":blast", opt) -- move to the last buffer in the buffer list +map("n", "bs", ":BufferLinePick", { -- pick a buffer from the buffer list noremap = true, silent = true, }) From dfe8569c4a1929bc9839108f83d1aea68e2a7657 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 11 Dec 2021 01:52:24 +0000 Subject: [PATCH 318/419] Update paq-nvim to it new require interface --- lua/plugins.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 5ad1c88..7cbc7a2 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -4,7 +4,7 @@ -- PLUGINS FOR NEOVIM -- Specify a directory for plugins ---For Neovim: ~/.local/share/nvim/site/pack/ -require("paq-nvim")({ +require("paq")({ { "savq/paq-nvim" }, From 870c638ddb326b82ace0dd9a664379c0ac8ee232 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 11 Dec 2021 01:57:15 +0000 Subject: [PATCH 319/419] Use unnamedplus by default Unnamedplus seems like a better default then unnamed --- lua/editor.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/editor.lua b/lua/editor.lua index f0f2dcf..ea23713 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -23,7 +23,7 @@ g.asmsyntax = "asm" -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed if fn.has("clipboard") == 1 then - vim.opt.clipboard:append("unnamed") + vim.opt.clipboard:append("unnamedplus") end -- Restore cursor to file position in previous editing session From 12531b81e273bbc36dc1ac3344640fb9373ca376 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 11 Dec 2021 01:59:47 +0000 Subject: [PATCH 320/419] Set focus to false for open_float This move the floating text upward preventing the float menu from interrupting typing and taking focus --- lua/mapping/lspconfig.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 9b17341..8b557df 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -56,4 +56,6 @@ set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) set_keymap("n", "sh", "lua vim.lsp.buf.signature_help()", opts) set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) -vim.cmd([[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{})]]) +vim.cmd( + [[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{focus=false})]] +) From 40514ba926338577b99ed7309197df378e93bafa Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 11 Dec 2021 07:14:18 +0000 Subject: [PATCH 321/419] Python not needed --- lua/editor.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index ea23713..3972989 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -8,9 +8,6 @@ local fn = vim.fn -- invoke vim-functions in lua g.mapleader = "," --- == Python provider configurations == -- -g.python3_host_prog = "/usr/bin/python3" - -- enable loading the plugin files for specific file types cmd([[filetype plugin indent on]]) From 86e6e8b7727d6a419bcf77ef1d271b801712ac50 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 16 Jan 2022 03:48:40 +0000 Subject: [PATCH 322/419] Update neorg to its new repo --- lua/plugins.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 7cbc7a2..d50b7cd 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -43,7 +43,7 @@ require("paq")({ { "ellisonleao/glow.nvim" }, -- === Note Taking Plugin === - { "vhyrro/neorg", branch = "unstable" }, -- neovim note taking tool + { "nvim-neorg/neorg" }, -- neovim note taking tool -- === Language Specific Plugins === -- == LSP Client === From 7c9094a8a1c7dc175b4a519e97cbc3f37ab282cb Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 16 Jan 2022 03:49:55 +0000 Subject: [PATCH 323/419] Use the new setup api for configuring null_ls --- lua/plugrc/lspconfig/init.lua | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 3dfec81..caa6a8b 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -79,24 +79,22 @@ local function setup_servers() "tsserver", "volar", "zls", - "null-ls", "bashls", } local null_ls = require("null-ls") - local sources = { - null_ls.builtins.formatting.stylua, - null_ls.builtins.diagnostics.shellcheck, - null_ls.builtins.diagnostics.cppcheck.with({ - extra_args = { - "--inconclusive", - }, - }), - } - null_ls.config({ - diagnostics_format = "(#{s}) #{m}", - sources = sources, + null_ls.setup({ + diagnostics_format = "#{m} (#{s})", + sources = { + null_ls.builtins.formatting.stylua, + null_ls.builtins.diagnostics.shellcheck, + null_ls.builtins.diagnostics.cppcheck.with({ + extra_args = { + "--inconclusive", + }, + }), + }, }) for _, server in pairs(lsp_servers) do From 55c400ed4a425803217375074e55f7cfc924255e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 16 Jan 2022 03:55:24 +0000 Subject: [PATCH 324/419] Additional treesitter parsers for norg_meta and norg_table --- lua/plugrc/treesitter.lua | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 7eeacf5..0badcea 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -8,6 +8,22 @@ parser_configs.norg = { }, } +parser_configs.norg_meta = { + install_info = { + url = "https://github.com/nvim-neorg/tree-sitter-norg-meta", + files = { "src/parser.c" }, + branch = "main", + }, +} + +parser_configs.norg_table = { + install_info = { + url = "https://github.com/nvim-neorg/tree-sitter-norg-table", + files = { "src/parser.c" }, + branch = "main", + }, +} + require("nvim-treesitter.configs").setup({ ensure_installed = { "cpp", @@ -15,14 +31,15 @@ require("nvim-treesitter.configs").setup({ "nix", "comment", "json5", - "haskell", "lua", "vue", "typescript", "scss", "html", "norg", - "glsl" + "norg_meta", + "norg_table", + "glsl", }, -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing From ef1f29931fc5b92aa3db983bb016f5cd9ce7c5bd Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 16 Jan 2022 03:58:44 +0000 Subject: [PATCH 325/419] Update onedark to its new setup api and remove vscode colorscheme --- lua/plugins.lua | 1 - lua/ui.lua | 11 +++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index d50b7cd..89d88ea 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -14,7 +14,6 @@ require("paq")({ -- === Themes and Colour Scheme === { "navarasu/onedark.nvim" }, - { "Mofiqul/vscode.nvim" }, -- === Git Plugin === -- A vim plugin which shows git diff in the gutter (sign column). diff --git a/lua/ui.lua b/lua/ui.lua index d62246a..92991fe 100644 --- a/lua/ui.lua +++ b/lua/ui.lua @@ -2,13 +2,12 @@ vim.o.termguicolors = true -- Onedark colorscheme -vim.g.onedark_style = "deep" --darker,default,cool ,deep,warm,warmer +require("onedark").setup({ + style = "dark", -- dark, darker, cool, deep, warm, warmer, light +}) + +require("onedark").load() -require("onedark").setup() --- For dark theme ---vim.g.vscode_style = "dark" --- ---vim.cmd[[colorscheme vscode]] -- status line require("plugrc/lualine") From 37df737bc799a18cd95fc610cf3c30706ac1937d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 16 Jan 2022 04:47:26 +0000 Subject: [PATCH 326/419] simplify neorg configuration and enable default keybinds --- lua/plugrc/neorg.lua | 103 +++---------------------------------------- 1 file changed, 7 insertions(+), 96 deletions(-) diff --git a/lua/plugrc/neorg.lua b/lua/plugrc/neorg.lua index b2423d8..20fe436 100644 --- a/lua/plugrc/neorg.lua +++ b/lua/plugrc/neorg.lua @@ -1,12 +1,13 @@ require("neorg").setup({ load = { ["core.defaults"] = {}, -- Tells neorg to load the module called core.defaults with no extra data - ["core.norg.concealer"] = {}, -- Since this module isn't part of core.defaults, we can include it ourselves, like so - ["core.norg.completion"] = { + ["core.keybinds"] = { -- Configure core.keybinds config = { - engine = "nvim-cmp", -- We current support nvim-compe and nvim-cmp only + default_keybinds = true, -- Generate the default keybinds + neorg_leader = "o", -- This is the default if unspecified }, }, + ["core.norg.concealer"] = {}, -- Since this module isn't part of core.defaults, we can include it ourselves, like so ["core.norg.dirman"] = { config = { -- Load a custom configuration -- Define your workspaces here! @@ -14,101 +15,11 @@ require("neorg").setup({ -- You can give it any name and any directory, get creative! notes = "~/neorg", }, - -- Automatically detect whenever we have entered a subdirectory of a workspace - autodetect = true, - -- Automatically change the directory to the root of the workspace every time - autochdir = true, - }, - }, - }, - hook = function() - -- The code that we will showcase below goes here - -- This sets the leader for all Neorg keybinds. It is separate from the regular , - -- And allows you to shove every Neorg keybind under one "umbrella". - local neorg_leader = "o" -- You may also want to set this to o for "organization" - - -- Require the user callbacks module, which allows us to tap into the core of Neorg - local neorg_callbacks = require("neorg.callbacks") - - -- Listen for the enable_keybinds event, which signals a "ready" state meaning we can bind keys. - -- This hook will be called several times, e.g. whenever the Neorg Mode changes or an event that - -- needs to reevaluate all the bound keys is invoked - neorg_callbacks.on_event( - "core.keybinds.events.enable_keybinds", - function(_, keybinds) - -- Map all the below keybinds only when the "norg" mode is active - keybinds.map_event_to_mode("norg", { - n = { -- Bind keys in normal mode - -- Keys for managing TODO items and setting their states - { "gtd", "core.norg.qol.todo_items.todo.task_done" }, - { "gtu", "core.norg.qol.todo_items.todo.task_undone" }, - { "gtp", "core.norg.qol.todo_items.todo.task_pending" }, - { - "", - "core.norg.qol.todo_items.todo.task_cycle", - }, - }, - }, { - silent = true, - noremap = true, - }) - end - ) - end, - logger = { - -- Should print the output to neovim while running - use_console = true, - -- Should highlighting be used in console (using echohl) - highlights = true, - -- Should write to a file - use_file = true, - -- Any messages above this level will be logged. - level = "warn", - -- Level configuration - modes = { - { name = "trace", hl = "Comment" }, - { name = "debug", hl = "Comment" }, - { name = "info", hl = "None" }, - { name = "warn", hl = "WarningMsg" }, - { name = "error", hl = "ErrorMsg" }, - { name = "fatal", hl = "ErrorMsg" }, - }, - -- Can limit the number of decimals displayed for floats - float_precision = 0.01, - }, - icons = { - todo = { - enabled = true, -- Conceal TODO items - - done = { - enabled = true, -- Conceal whenever an item is marked as done - icon = "", - }, - pending = { - enabled = true, -- Conceal whenever an item is marked as pending - icon = "", }, - undone = { - enabled = true, -- Conceal whenever an item is marked as undone - icon = "×", - }, - }, - quote = { - enabled = true, -- Conceal quotes - icon = "∣", }, - heading = { - enabled = true, -- Enable beautified headings - - -- Define icons for all the different heading levels - level_1 = { - enabled = true, - icon = "◉", - }, - - level_2 = { - enabled = true, - icon = "○", + ["core.norg.completion"] = { + config = { + engine = "nvim-cmp", -- We current support nvim-compe and nvim-cmp only }, }, }, From 5d70c10429ec1e69d47505ba5792f789fd49e00d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 7 Mar 2022 05:37:05 +0000 Subject: [PATCH 327/419] Update nvim-tree config --- lua/plugrc/tree.lua | 179 ++++++++++++++++++++++++++++++++------------ 1 file changed, 133 insertions(+), 46 deletions(-) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index ce9120d..598b2fb 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,10 +1,6 @@ local g = vim.g -g.nvim_tree_quit_on_open = 1 -- 0 by default, closes the tree when you open a file g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. ---g.nvim_tree_disable_window_picker = 1 --0 by default, will disable the window picker. - -local tree_cb = require("nvim-tree.config").nvim_tree_callback require("nvim-tree").setup({ -- disables netrw completely @@ -14,17 +10,26 @@ require("nvim-tree").setup({ -- open tree when running this setup function and the -- current buffer is a directory, is empty or is unnamed. open_on_setup = true, + -- will ignore the buffer, when deciding to open the tree on setup + ignore_buffer_on_setup = false, -- will not open on setup if the filetype is in this list ignore_ft_on_setup = { ".git", "node_modules", ".cache" }, -- closes neovim automatically when the tree is the last **WINDOW** in the view auto_close = true, + -- reload the explorer every time a buffer is written to + auto_reload_on_write = true, -- opens the tree when changing/opening a new tab if the tree was previously opened open_on_tab = false, - -- hijacks new directory buffers when they are opened. - update_to_buf_dir = { - -- enable the feature + -- changes how files within the same directory are sorted. can be name | modification_time + -- sort_by = "name", + -- open in place of the unnamed buffer if it's empty. + hijack_unnamed_buffer_when_opening = false, + -- hijacks new directory buffers when they are opened (`:e dir`). + hijack_directories = { + -- enable the feature. Disable this option if you use vim-dirvish or dirbuf.nvim. + -- If |hijack_netrw| and |disable_netrw| are `false`, this feature will be disabled. enable = true, - -- allow to open the tree if it was previously closed + -- opens the tree if the tree was previously closed. auto_open = true, }, -- hijack the cursor in the tree to put it at the start of the filename @@ -49,15 +54,30 @@ require("nvim-tree").setup({ -- the command arguments as a list args = {}, }, + -- git integration with icons and colors git = { + -- enable / disable the feature enable = true, + -- ignore files based on `.gitignore` ignore = true, }, + -- window / buffer setup view = { - -- width of the window, can be either a number (columns) or a string in `%` + -- hide the path of the current working directory on top of the tree + hide_root_folder = false, + -- width of the window, can be either a `%` string or a number representing columns. + -- Only works with |view.side| `left` or `right` width = 39, -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' side = "left", + -- preserve window proportions when opening a file. + -- If `false`, the height and width of windows other than nvim-tree will be equalized. + preserve_window_proportions = true, + -- print the line number in front of each line. + number = false, + -- show the line number relative to the line with the cursor in front of each line. + -- If the option `view.number` is also `true`, the number on the cursor line will be the line number instead of `0`. + relativenumber = false, -- if true the tree will resize itself after opening a file auto_resize = false, mappings = { @@ -68,45 +88,112 @@ require("nvim-tree").setup({ list = { { key = { "", "o", "<2-LeftMouse>" }, - cb = tree_cb("edit"), + action = "edit", + }, + { + key = "", + action = "edit_in_place", + }, + { + key = { "O" }, + action = "edit_no_picker", + }, + { key = "<2-RightMouse>", action = "cd" }, + { key = "", action = "vsplit" }, + { key = "", action = "split" }, + { key = "", action = "tabnew" }, + { key = "<", action = "prev_sibling" }, + { key = ">", action = "next_sibling" }, + { key = "P", action = "parent_node" }, + { key = "", action = "close_node" }, + { key = "", action = "preview" }, + { key = "K", action = "first_sibling" }, + { key = "J", action = "last_sibling" }, + { key = "I", action = "toggle_ignored" }, + { key = "H", action = "toggle_dotfiles" }, + { key = "R", action = "refresh" }, + { key = "a", action = "create" }, + { key = "d", action = "remove" }, + { key = "r", action = "rename" }, + { key = "", action = "full_rename" }, + { key = "x", action = "cut" }, + { key = "c", action = "copy" }, + { key = "p", action = "paste" }, + { key = "y", action = "copy_name" }, + { key = "Y", action = "copy_path" }, + { key = "gy", action = "copy_absolute_path" }, + { key = "[c", action = "prev_git_item" }, + { key = "]c", action = "next_git_item" }, + { key = "-", action = "dir_up" }, + { key = "s", action = "system_open" }, + { key = "q", action = "close" }, + { key = "g?", action = "toggle_help" }, + { + key = "W", + action = "collapse_all", + }, + { + key = "S", + action = "search_node", + }, + { + key = "", + action = "toggle_file_info", + }, + { + key = ".", + action = "run_file_command", + }, + }, + }, + filters = { + -- show `dotfiles` (files starting with a `.`) + dotfiles = false, + -- custom list of string that will not be shown. + custom = {}, + -- list of directories or files to exclude from filtering + exclude = {}, + }, + -- hijacks new directory buffers when they are opened. + update_to_buf_dir = { + -- enable the feature + enable = true, + -- allow to open the tree if it was previously closed + auto_open = true, + }, + -- configuration for various actions + actions = { + change_dir = { + -- change the working directory when changing directories in the tree. + enable = true, + -- use `:cd` instead of `:lcd` when changing directories. Consider that this might cause issues with the update_cwd options. + global = false, + }, + open_file = { + -- closes the explorer when opening a file. It will also disable preventing a buffer overriding the tree. + quit_on_open = true, + -- resizes the tree when opening a file + resize_window = false, + -- window picker configuration + window_picker = { + -- Enable the feature. If the feature is not enabled, files will open in window from which you last opened the tree. + enable = true, + -- A string of chars used as identifiers by the window picker. + chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", + -- Table of buffer option names mapped to a list of option values that indicates to the picker that the buffer's window should not be selectable. + exclude = { + filetype = { + "notify", + "packer", + "qf", + "diff", + "fugitive", + "fugitiveblame", + }, + buftype = { "nofile", "terminal", "help" }, + }, }, - { key = { "<2-RightMouse>", "" }, cb = tree_cb("cd") }, - { key = "", cb = tree_cb("vsplit") }, - { key = "", cb = tree_cb("split") }, - { key = "", cb = tree_cb("tabnew") }, - { key = "<", cb = tree_cb("prev_sibling") }, - { key = ">", cb = tree_cb("next_sibling") }, - { key = "P", cb = tree_cb("parent_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("close_node") }, - { key = "", cb = tree_cb("preview") }, - { key = "K", cb = tree_cb("first_sibling") }, - { key = "J", cb = tree_cb("last_sibling") }, - { key = "I", cb = tree_cb("toggle_ignored") }, - { key = "H", cb = tree_cb("toggle_dotfiles") }, - { key = "R", cb = tree_cb("refresh") }, - { key = "a", cb = tree_cb("create") }, - { key = "d", cb = tree_cb("remove") }, - { key = "r", cb = tree_cb("rename") }, - { key = "", cb = tree_cb("full_rename") }, - { key = "x", cb = tree_cb("cut") }, - { key = "c", cb = tree_cb("copy") }, - { key = "p", cb = tree_cb("paste") }, - { key = "y", cb = tree_cb("copy_name") }, - { key = "Y", cb = tree_cb("copy_path") }, - { key = "gy", cb = tree_cb("copy_absolute_path") }, - { key = "[c", cb = tree_cb("prev_git_item") }, - { key = "]c", cb = tree_cb("next_git_item") }, - { key = "-", cb = tree_cb("dir_up") }, - { key = "s", cb = tree_cb("system_open") }, - { key = "q", cb = tree_cb("close") }, - { key = "g?", cb = tree_cb("toggle_help") }, }, }, - }, - filters = { - --hide_dotfiles - dotfiles = false, - custom = {}, }, }) From 6d588556bf8ab51c27483b5656db66ceef6d25aa Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 7 Mar 2022 06:11:11 +0000 Subject: [PATCH 328/419] misc changes --- lua/plugins.lua | 2 +- lua/utils.lua | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 89d88ea..79f254f 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -35,7 +35,7 @@ require("paq")({ -- === Syntax Plugins === -- Nvim Treesitter configurations and abstraction layer - { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }, + { "nvim-treesitter/nvim-treesitter", run = "TSUpdate" }, -- === Preview Plugin === -- A markdown previewer prebuild binary diff --git a/lua/utils.lua b/lua/utils.lua index 137092e..6068ec3 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -1,18 +1,22 @@ function _G.map(mode, lhs, rhs, opts) - local options = {noremap = true} - if opts then options = vim.tbl_extend('force', options, opts) end + 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 -local scopes = {o = vim.o, b = vim.bo, w = vim.wo} +local scopes = { o = vim.o, b = vim.bo, w = vim.wo } function _G.opt(scope, key, value) scopes[scope][key] = value - if scope ~= 'o' then scopes['o'][key] = value end + if scope ~= "o" then + scopes["o"][key] = value + end end function _G.dump(...) - local objects = vim.tbl_map(vim.inspect, {...}) + local objects = vim.tbl_map(vim.inspect, { ... }) print(unpack(objects)) return ... end @@ -24,6 +28,6 @@ function _G.t(str) end function _G.reload(module, parent_directory) - local reload_module = require('plenary.reload').reload_module + local reload_module = require("plenary.reload").reload_module reload_module(module, parent_directory) end From 8eda237ceb417dd5f6e673c0ffeee0d3553550cf Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 9 Mar 2022 19:01:47 +0000 Subject: [PATCH 329/419] remove neorg_meta parser --- lua/plugrc/treesitter.lua | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 0badcea..2e4410c 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -8,14 +8,6 @@ parser_configs.norg = { }, } -parser_configs.norg_meta = { - install_info = { - url = "https://github.com/nvim-neorg/tree-sitter-norg-meta", - files = { "src/parser.c" }, - branch = "main", - }, -} - parser_configs.norg_table = { install_info = { url = "https://github.com/nvim-neorg/tree-sitter-norg-table", @@ -37,7 +29,6 @@ require("nvim-treesitter.configs").setup({ "scss", "html", "norg", - "norg_meta", "norg_table", "glsl", }, From 8951156143b228a3fe2c845a67f44467cb89a92d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Mar 2022 23:23:46 +0000 Subject: [PATCH 330/419] Remove glow.nvim It's functionalities are replaced by bat -l md --- lua/lazy/glow.lua | 7 ------- lua/lazy/init.lua | 1 - lua/plugins.lua | 3 --- 3 files changed, 11 deletions(-) delete mode 100644 lua/lazy/glow.lua diff --git a/lua/lazy/glow.lua b/lua/lazy/glow.lua deleted file mode 100644 index 69dceb7..0000000 --- a/lua/lazy/glow.lua +++ /dev/null @@ -1,7 +0,0 @@ -require('utils') -map('n','mp','Glow') -vim.cmd[[ -"autocmd! FileType markdown packadd glow.nvim -"command! Glow :packadd glow.nvim |:Glow -"command! -nargs=* Ack :packadd ack.vim | Ack " -]] diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 1333956..82defe0 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,4 +1,3 @@ require('lazy/telescope') require('lazy/trouble') -require('lazy/glow') require('lazy/symbols') diff --git a/lua/plugins.lua b/lua/plugins.lua index 79f254f..f16d5ef 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -38,9 +38,6 @@ require("paq")({ { "nvim-treesitter/nvim-treesitter", run = "TSUpdate" }, -- === Preview Plugin === - -- A markdown previewer prebuild binary - { "ellisonleao/glow.nvim" }, - -- === Note Taking Plugin === { "nvim-neorg/neorg" }, -- neovim note taking tool From 527433740991e080faa5eed547165cfb7f3cfb5f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Mar 2022 23:27:26 +0000 Subject: [PATCH 331/419] Add reloader and command_history telescope builtins remove the buffers builtin --- lua/lazy/telescope.lua | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index 59ced8c..31fdf68 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -1,7 +1,33 @@ -- Using lua functions -require('utils') -local opt={silent=true} -map('n','ff',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').find_files()]] ,opt) -map('n','fg',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').live_grep()]] ,opt) -map('n','fb',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').buffers()]] ,opt) -map('n','fh',[[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]],opt) +require("utils") +local opt = { silent = true } +map( + "n", + "ff", + [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').find_files()]], + opt +) +map( + "n", + "fg", + [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').live_grep()]], + opt +) +map( + "n", + "ft", + [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]], + opt +) +map( + "n", + "fh", + [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').command_history()]], + opt +) +map( + "n", + "fr", + [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').reloader()]], + opt +) From 0289d05843dcddce4f9f061f15c1b7ce9171d1db Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 10 Mar 2022 23:38:19 +0000 Subject: [PATCH 332/419] Enable gitsigns mappings in on_attach func after api change --- lua/plugrc/gitsigns.lua | 173 ++++++++++------------------------------ 1 file changed, 40 insertions(+), 133 deletions(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 1ed83a9..33f0a10 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -1,135 +1,42 @@ ---[[ local GitStatus = { - Modified = "✹", - Staged = "✚", - Untracked = "✭", - Renamed = "➜", - Unmerged = "═", - Deleted = "✖", - Dirty = "✗", - Clean = "✔︎", - Ignored = "☒", - Unknown = "?", -} - -local nvim_tree_icons = { - default = "", - symlink = "", - git = { - unstaged = "✗", - staged = "✓", - unmerged = "", - renamed = "➜", - untracked = "★", - deleted = "", - ignored = "◌", - }, - folder = { - arrow_open = "", - arrow_closed = "", - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - symlink_open = "", - }, - lsp = { hint = "", info = "", warning = "", error = "" }, -} +require("utils") require("gitsigns").setup({ - signs = { - add = { - hl = "GitSignsAdd", - text = "✔︎", - numhl = "GitSignsAddNr", - linehl = "GitSignsAddLn", - }, - change = { - hl = "GitSignsChange", - text = "✹", - numhl = "GitSignsChangeNr", - linehl = "GitSignsChangeLn", - }, - delete = { - hl = "GitSignsDelete", - text = "✗", - numhl = "GitSignsDeleteNr", - linehl = "GitSignsDeleteLn", - }, - topdelete = { - hl = "GitSignsDelete", - text = "‾", - numhl = "GitSignsDeleteNr", - linehl = "GitSignsDeleteLn", - }, - changedelete = { - hl = "GitSignsChange", - text = "~", - numhl = "GitSignsChangeNr", - linehl = "GitSignsChangeLn", - }, - }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = true, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - keymaps = { - -- Default keymap options - noremap = true, - buffer = true, - ["n ]c"] = { - expr = true, - "&diff ? ']c' : 'lua require\"gitsigns.actions\".next_hunk()'", - }, - ["n [c"] = { - expr = true, - "&diff ? '[c' : 'lua require\"gitsigns.actions\".prev_hunk()'", - }, - ["n hs"] = 'lua require"gitsigns".stage_hunk()', - ["v hs"] = 'lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})', - ["n hu"] = 'lua require"gitsigns".undo_stage_hunk()', - ["n hr"] = 'lua require"gitsigns".reset_hunk()', - ["v hr"] = 'lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})', - ["n hR"] = 'lua require"gitsigns".reset_buffer()', - ["n hp"] = 'lua require"gitsigns".preview_hunk()', - ["n hb"] = 'lua require"gitsigns".blame_line(true)', - ["n hS"] = 'lua require"gitsigns".stage_buffer()', - ["n hU"] = 'lua require"gitsigns".reset_buffer_index()', - -- Text objects - ["o ih"] = ':lua require"gitsigns.actions".select_hunk()', - ["x ih"] = ':lua require"gitsigns.actions".select_hunk()', - }, - watch_gitdir = { - interval = 1000, - follow_files = true, - }, - current_line_blame_delay = 1000, - attach_to_untracked = true, - current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` - current_line_blame_opts = { - virt_text = true, - virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' - delay = 1000, - }, - current_line_blame_formatter_opts = { - relative_time = false, - }, - max_file_length = 40000, - preview_config = { - -- Options passed to nvim_open_win - border = "single", - style = "minimal", - relative = "cursor", - row = 0, - col = 1, - }, - yadm = { - enable = false, - }, - current_line_blame_position = "eol", - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - use_internal_diff = true, -- If luajit is present -}) ]] -require("gitsigns").setup() + on_attach = function() + -- Navigation + map( + "n", + "]c", + "&diff ? ']c' : 'Gitsigns next_hunk'", + { expr = true } + ) + map( + "n", + "[c", + "&diff ? '[c' : 'Gitsigns prev_hunk'", + { expr = true } + ) + + -- Actions + map("n", "hs", ":Gitsigns stage_hunk") + map("v", "hs", ":Gitsigns stage_hunk") + map("n", "hr", ":Gitsigns reset_hunk") + map("v", "hr", ":Gitsigns reset_hunk") + map("n", "hS", "Gitsigns stage_buffer") + map("n", "hu", "Gitsigns undo_stage_hunk") + map("n", "hR", "Gitsigns reset_buffer") + map("n", "hp", "Gitsigns preview_hunk") + map( + "n", + "hb", + 'lua require"gitsigns".blame_line{full=true}' + ) + map("n", "tb", "Gitsigns toggle_current_line_blame") + map("n", "hd", "Gitsigns diffthis") + map("n", "hD", 'lua require"gitsigns".diffthis("~")') + map("n", "td", "Gitsigns toggle_deleted") + + -- Text object + map("o", "ih", ":Gitsigns select_hunk") + map("x", "ih", ":Gitsigns select_hunk") + end, +}) From 88327a7bac99b0346f13d75a1a57bef0d18658e0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 11 Mar 2022 02:06:50 +0000 Subject: [PATCH 333/419] Use jsonc parser over json5 and add vim parser remove shellcheck null-lsp source specify the backgroud option to enable using light themes if light is used --- lua/plugrc/lspconfig/init.lua | 1 - lua/plugrc/treesitter.lua | 3 ++- lua/ui.lua | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index caa6a8b..6a08203 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -88,7 +88,6 @@ local function setup_servers() diagnostics_format = "#{m} (#{s})", sources = { null_ls.builtins.formatting.stylua, - null_ls.builtins.diagnostics.shellcheck, null_ls.builtins.diagnostics.cppcheck.with({ extra_args = { "--inconclusive", diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 2e4410c..314b10f 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -22,7 +22,7 @@ require("nvim-treesitter.configs").setup({ "zig", "nix", "comment", - "json5", + "jsonc", "lua", "vue", "typescript", @@ -31,6 +31,7 @@ require("nvim-treesitter.configs").setup({ "norg", "norg_table", "glsl", + "vim", }, -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing diff --git a/lua/ui.lua b/lua/ui.lua index 92991fe..a318841 100644 --- a/lua/ui.lua +++ b/lua/ui.lua @@ -1,9 +1,11 @@ --Enable true colours in terminal vim.o.termguicolors = true +vim.o.background = "dark" + -- Onedark colorscheme require("onedark").setup({ - style = "dark", -- dark, darker, cool, deep, warm, warmer, light + style = "deep", -- dark, darker, cool, deep, warm, warmer, light }) require("onedark").load() From db645beecb4cfd8aa1a76173ea88a6f93040b6d0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Mar 2022 02:38:49 +0000 Subject: [PATCH 334/419] Enable swap and relative number Relative number make horizontal movement easy Swap to recover files in case of crash Save backups,undo ,swap to XDG_DATA_HOME as first option Remove unnecessary checks --- lua/editor.lua | 72 ++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 3972989..3bd8ef0 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -33,27 +33,48 @@ augroup restore_cursor augroup END ]]) --- Keep a backup copy of a file when overwriting it.This also sets the 'undofile' option, if --- available. This will store the multi-level undo information in a file. The result is --- that when you change a file, exit Vim, and then edit the file again, you can undo --- the changes made previously. -if fn.has("vms") == 1 then - o.backup = false -else - -- create a backup of the file before editing - o.backup = true - if fn.has("persistent_undo") == 1 then - -- enable undofile , which helps you undo a lot and redo also a lot - o.undofile = true - o.undolevels = 30000 - o.undoreload = 30000 - end -end +-- Show line numbers +o.number = true + +-- Show the line number relative to the line with the cursor in front of each line. +o.relativenumber = true + +--If you write to an existing file (but do not append) a backup of the original file is made. +o.backup = true + +-- tells neovim how backups are done +o.backupcopy = "auto" + +-- List of directories for the backup file +-- if a directory ends in two path separators "//", the swap file name will be built from +-- the complete path to the file with all path separators changed to percent '%' signs. +-- This will ensure file name uniqueness in the backup directory. +o.backupdir = "$XDG_DATA_HOME/nvim/backup//,/tmp//" + +-- The extension to be used for vim backup files +o.backupext = ".vimbak" + +-- enable saving unsaved/unwritten files in a *.swp file +o.swapfile = true + +-- The location of swap files ,ie buffers that have not been save ie in memory +o.directory = "$XDG_DATA_HOME/nvim/swap//,/tmp//" + +-- saves undo history to an undo file when writing a buffer to a file, and restores undo +-- history from the same file on buffer read. +o.undofile = true + +-- Maximum number of changes that can be undone. +o.undolevels = 30000 + +-- Location for storing undo tree of the edited file-- +o.undodir = "$XDG_DATA_HOME/nvim/undo//,/tmp//" -- Don't redraw screen when executing macros,registers or untyped commands o.lazyredraw = true -- enable tree style view +-- g.netrw_liststyle = 3 -- Disable top banner can be switched with I @@ -62,19 +83,6 @@ g.netrw_banner = 0 -- Incremental live completion o.inccommand = "nosplit" --- for vim's swap ; undo and backup organization --- Location for backup of files before editing -- -o.backupdir = "/tmp/" - --- The location of swap files ,ie buffers that have not been save ie in memory -o.directory = "/tmp/" - --- Location for storing undo tree of the edited file-- -o.undodir = "/tmp/" - --- The extension to be used for vim backup files -o.backupext = ".vimbak" - -- You will have bad experience for diagnostic messages when it's default 4000. o.updatetime = 100 @@ -84,9 +92,6 @@ o.shortmess = "c" -- always merge signcolumn and number column into one o.signcolumn = "yes" --- enable saving unsaved/unwritten files in a *.swp file -o.swapfile = false - -- always expands tab to spaces. It is good when peers use different editor. o.expandtab = true @@ -99,9 +104,6 @@ o.hidden = true -- without saving a changed buffer -- Automatically enable mouse usage o.mouse = "a" --- Show line numbers -o.number = true - -- Wrap-broken line prefix o.showbreak = [[>>>\ \ \]] From 7134e0d1507d16d52eec84db26ba2f6b5aa2417d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 15 Mar 2022 03:38:28 +0000 Subject: [PATCH 335/419] Use vim.env to access environment variables and expand ~ Expand env vars and ~ and take care of the case where the env var isn't defined --- lua/editor.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 3bd8ef0..08ab069 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -49,7 +49,9 @@ o.backupcopy = "auto" -- if a directory ends in two path separators "//", the swap file name will be built from -- the complete path to the file with all path separators changed to percent '%' signs. -- This will ensure file name uniqueness in the backup directory. -o.backupdir = "$XDG_DATA_HOME/nvim/backup//,/tmp//" +local dirprefix = vim.env.XDG_DATA_HOME or fn.expand("~/.local/share") + +o.backupdir = { dirprefix .. "/nvim/backup//", "/tmp//" } -- The extension to be used for vim backup files o.backupext = ".vimbak" @@ -58,7 +60,7 @@ o.backupext = ".vimbak" o.swapfile = true -- The location of swap files ,ie buffers that have not been save ie in memory -o.directory = "$XDG_DATA_HOME/nvim/swap//,/tmp//" +o.directory = { dirprefix .. "/nvim/swap//", "/tmp//" } -- saves undo history to an undo file when writing a buffer to a file, and restores undo -- history from the same file on buffer read. @@ -68,7 +70,7 @@ o.undofile = true o.undolevels = 30000 -- Location for storing undo tree of the edited file-- -o.undodir = "$XDG_DATA_HOME/nvim/undo//,/tmp//" +o.undodir = { dirprefix .. "/nvim/undo//", "/tmp//" } -- Don't redraw screen when executing macros,registers or untyped commands o.lazyredraw = true From 28a02562b331640ccdd55115a3a806b4eb1237e0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 17 Mar 2022 18:46:56 +0000 Subject: [PATCH 336/419] Fix and improve spell check and fix some bug and mistakes Remove es_us since it causes errors with spellcheck and I dont really use it Fix incorrect spell suggestion mapping =z to z= readd norg_meta since it isn't automatically enabled/injected in every file now Revert change in e158b9aa vim.o to vim.opt vim.o doesn't receive a lot of options and vim.g doesn't overwrite editor variable if it already has a default --- lua/editor.lua | 33 ++++++++++++--------------------- lua/mapping/spellcheck.lua | 6 ++++-- lua/plugins.lua | 2 +- lua/plugrc/treesitter.lua | 9 +++++++++ 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 08ab069..b6f9e15 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,6 +1,6 @@ local o = vim.opt -- editor options local g = vim.g -- Global editor variables -local cmd = vim.cmd -- exectue vimscript in lua +local cmd = vim.cmd -- execute vimscript in lua local fn = vim.fn -- invoke vim-functions in lua -- Remap leader key to , -- With a map leader it's possible to do extra key combinations @@ -8,15 +8,6 @@ local fn = vim.fn -- invoke vim-functions in lua g.mapleader = "," --- enable loading the plugin files for specific file types -cmd([[filetype plugin indent on]]) - --- Switch on syntax highlighting. -o.syntax = "on" - --- set assembly language file to use nasm -g.asmsyntax = "asm" - -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed if fn.has("clipboard") == 1 then @@ -75,13 +66,6 @@ o.undodir = { dirprefix .. "/nvim/undo//", "/tmp//" } -- Don't redraw screen when executing macros,registers or untyped commands o.lazyredraw = true --- enable tree style view --- -g.netrw_liststyle = 3 - --- Disable top banner can be switched with I -g.netrw_banner = 0 - -- Incremental live completion o.inccommand = "nosplit" @@ -91,7 +75,7 @@ o.updatetime = 100 -- don't give |ins-completion-menu| messages. o.shortmess = "c" --- always merge signcolumn and number column into one +-- always merge sign column and number column into one o.signcolumn = "yes" -- always expands tab to spaces. It is good when peers use different editor. @@ -121,13 +105,20 @@ o.showmatch = true -- text complete with CTRL-N or CTRL-P o.complete = "kspell" --- Enable spell checking for espanol y ingles-- -o.spelllang = "es_us,en_us" +-- Enable spell checking for español y ingles-- +o.spelllang = "en,es" + +-- Show best nine spell checking candidates at most +o.spellsuggest = "best,9" + +-- When a word is CamelCased, assume "Cased" is a separate word: every upper-case character +-- in a word that comes after a lower case character indicates the start of a new word. +o.spelloptions = "camel" -- Use visual bell (no beeping) o.visualbell = true --- Always case-insensitie +-- Always case-insensitive o.ignorecase = true -- Enable smart-case search diff --git a/lua/mapping/spellcheck.lua b/lua/mapping/spellcheck.lua index 2c6cc68..fd3764c 100644 --- a/lua/mapping/spellcheck.lua +++ b/lua/mapping/spellcheck.lua @@ -5,7 +5,9 @@ require('utils') -- Pressing ,ts will toggle and untoggle spell checking -- toggle to alternate configuration of spellcheck local opt = {noremap = false} -map('', 'ts', ':setlocal spell!', opt) +map('', 'st', 'set spell!', opt) + +-- Use Ctrl-x s to activate spell suggestions in insert mood -- Shortcuts using -- next spellcheck iteam @@ -21,4 +23,4 @@ map('', 'usg', 'ugz', opt) -- undo marking of word as wrong map('', 'usw', 'uwz', opt) -- check for suggestions for the underlined word -map('', 'sc', '=z', opt) +map('', 'sc', 'z=', opt) diff --git a/lua/plugins.lua b/lua/plugins.lua index f16d5ef..7719c28 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -50,7 +50,7 @@ require("paq")({ -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing - { "folke/trouble.nvim", opt = true }, + { "folke/trouble.nvim" }, --Use Neovim as a language server to inject LSP diagnostics, code actions, --and more via Lua diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 314b10f..9f6ffcf 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -1,5 +1,13 @@ local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() +parser_configs.norg_meta = { + install_info = { + url = "https://github.com/nvim-neorg/tree-sitter-norg-meta", + files = { "src/parser.c" }, + branch = "main", + }, +} + parser_configs.norg = { install_info = { url = "https://github.com/nvim-neorg/tree-sitter-norg", @@ -30,6 +38,7 @@ require("nvim-treesitter.configs").setup({ "html", "norg", "norg_table", + "norg_meta", "glsl", "vim", }, From 3afbe6fd648980865efef3b8833dc1f64d42ed8f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 17 Mar 2022 17:05:40 +0000 Subject: [PATCH 337/419] Move trouble to start and replace deprecated fn's with recommended Reorder loading of init in oder of incresing probability of errors Move trouble.nvim from lazy loading to on startup. its impact is negligible Remove unused options in lspconfig.init and lspconfig.ui_customizations morph troubles mappings for use use on start instead of lazy loading fix and remove deprecated functions and options in lspconfig and trouble --- init.lua | 18 +++--- lua/lazy/init.lua | 1 - lua/mapping/init.lua | 1 + lua/mapping/lspconfig.lua | 64 ++++++---------------- lua/mapping/trouble.lua | 8 +++ lua/plugrc/init.lua | 1 + lua/plugrc/lspconfig/init.lua | 1 - lua/plugrc/lspconfig/ui_customizations.lua | 49 ----------------- lua/{lazy => plugrc}/trouble.lua | 47 +++++----------- 9 files changed, 50 insertions(+), 140 deletions(-) create mode 100644 lua/mapping/trouble.lua delete mode 100644 lua/plugrc/lspconfig/ui_customizations.lua rename lua/{lazy => plugrc}/trouble.lua (51%) diff --git a/init.lua b/init.lua index 7abd0a5..98cadf1 100755 --- a/init.lua +++ b/init.lua @@ -5,9 +5,9 @@ require("editor") -- =================================================================== --- === MAPPINGS ONFIGURATIONS === +-- === UI CONFIGURATIONS === -- =================================================================== -require("mapping") +require("ui") -- =================================================================== -- === TERMINAL CONFIGURATIONS === @@ -15,17 +15,17 @@ require("mapping") require("terminal") -- =================================================================== --- === UI CONFIGURATIONS === +-- === MAPPINGS ONFIGURATIONS === -- =================================================================== -require("ui") +require("mapping") -- =================================================================== --- === PLUGINS CONFIGURATIONS === +-- === LAZY PLUGINS CONFIGURATIONS === -- =================================================================== -require("plugins") -require("plugrc") +require("lazy") -- =================================================================== --- === LAZY PLUGINS CONFIGURATIONS === +-- === PLUGINS CONFIGURATIONS === -- =================================================================== -require("lazy") +require("plugins") +require("plugrc") diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 82defe0..1f94907 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,3 +1,2 @@ require('lazy/telescope') -require('lazy/trouble') require('lazy/symbols') diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index fc5ae8f..2163e86 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -4,3 +4,4 @@ require('mapping/highlighting') require('mapping/terminal') require('mapping/lspconfig') require('mapping/tree') +require("mapping.trouble") diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 8b557df..c9b1ef3 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -1,61 +1,31 @@ +require("utils") -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer -local function set_keymap(...) - vim.api.nvim_set_keymap(...) -end -local function set_option(...) - vim.api.nvim_set_option(...) -end - --- Enable completion triggered by -set_option("omnifunc", "v:lua.vim.lsp.omnifunc") -- Mappings. -local opts = { noremap = true, silent = true } +local opts = { silent = true } -- See `:help vim.lsp.*` for documentation on any of the below functions -set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) -set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) -set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) -set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) -set_keymap( - "n", - "aw", - "lua vim.lsp.buf.add_workspace_folder()", - opts -) -set_keymap( - "n", - "rw", - "lua vim.lsp.buf.remove_workspace_folder()", - opts -) -set_keymap( +map("n", "gD", "lua vim.lsp.buf.declaration()", opts) +map("n", "gd", "lua vim.lsp.buf.definition()", opts) +map("n", "gi", "lua vim.lsp.buf.implementation()", opts) +-- set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) +map("n", "gr", "Trouble lsp_references", opts) +map( "n", "lw", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts ) -set_keymap("n", "td", "lua vim.lsp.buf.type_definition()", opts) -set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) -set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) -set_keymap( - "n", - "ld", - "lua vim.lsp.diagnostic.show_line_diagnostics()", - opts -) -set_keymap( - "n", - "sl", - "lua vim.lsp.diagnostic.set_loclist()", - opts -) -set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) -set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) -set_keymap("n", "sh", "lua vim.lsp.buf.signature_help()", opts) -set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) -set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) +map("n", "td", "lua vim.lsp.buf.type_definition()", opts) +map("n", "rn", "lua vim.lsp.buf.rename()", opts) +map("n", "ca", "lua vim.lsp.buf.code_action()", opts) +map("n", "sl", "lua vim.diagnostic.setloclist()", opts) +map("n", "f", "lua vim.lsp.buf.formatting()", opts) +map("n", "K", "lua vim.lsp.buf.hover()", opts) +map("n", "sh", "lua vim.lsp.buf.signature_help()", opts) +map("n", "[d", "lua vim.diagnostic.goto_prev()", opts) +map("n", "]d", "lua vim.diagnostic.goto_next()", opts) vim.cmd( [[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{focus=false})]] ) diff --git a/lua/mapping/trouble.lua b/lua/mapping/trouble.lua new file mode 100644 index 0000000..98cf96a --- /dev/null +++ b/lua/mapping/trouble.lua @@ -0,0 +1,8 @@ +require("utils") +local opt = { silent = true } + +map("n", "tt", "Trouble", opt) +map("n", "tw", "Trouble workspace_diagnostics", opt) +map("n", "td", "Trouble document_diagnostics", opt) +map("n", "tl", "Trouble loclist", opt) +map("n", "tq", "Trouble quickfix", opt) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index aa1778c..4ccc049 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -10,3 +10,4 @@ require("plugrc.whichkey") require("plugrc.tree") require("plugrc.neorg") require("Comment").setup() +require("plugrc.trouble") diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 6a08203..23586ee 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -55,7 +55,6 @@ local function make_config() capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true - capabilities.textDocument.signatureHelp.contextSupport = true return { -- enable snippet support diff --git a/lua/plugrc/lspconfig/ui_customizations.lua b/lua/plugrc/lspconfig/ui_customizations.lua deleted file mode 100644 index 3ff83aa..0000000 --- a/lua/plugrc/lspconfig/ui_customizations.lua +++ /dev/null @@ -1,49 +0,0 @@ -local M = {} - ---   漣      ﱮ -M.icons = { - Class = " ", - Color = " ", - Constant = " ", - Constructor = " ", - Enum = "了 ", - EnumMember = " ", - Field = " ", - File = " ", - Folder = " ", - Function = " ", - Interface = "ﰮ ", - Keyword = " ", - Method = "ƒ ", - Module = " ", - Property = " ", - Snippet = "﬌ ", - Struct = " ", - Text = " ", - Unit = " ", - Value = " ", - Variable = "﬚ ", -} - -function M.completion_kinds() - local kinds = vim.lsp.protocol.CompletionItemKind - for i, kind in ipairs(kinds) do - kinds[i] = M.icons[kind] or kind - end -end - -function M.sign_column_diagnostic_symbols() - --    --  --   ﯧ  --   ﯦ - local signs = { - Error = " ", - Warning = " ", - Hint = " ", - Information = " ", - } - for type, icon in pairs(signs) do - local hl = "DiagnosticsSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) - end -end - -return M diff --git a/lua/lazy/trouble.lua b/lua/plugrc/trouble.lua similarity index 51% rename from lua/lazy/trouble.lua rename to lua/plugrc/trouble.lua index fc181e5..3b64922 100644 --- a/lua/lazy/trouble.lua +++ b/lua/plugrc/trouble.lua @@ -1,12 +1,9 @@ -require('utils') -local opt = {silent = true} - -trouble_config = { +require("trouble").setup({ position = "bottom", -- position of the list can be: bottom, top, left, right height = 10, -- height of the trouble list when position is top or bottom width = 50, -- width of the list when position is left or right icons = true, -- use devicons for filenames - mode = "lsp_document_diagnostics", -- "lsp_workspace_diagnostics", "lsp_document_diagnostics", "quickfix", "lsp_references", "loclist" + mode = "document_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist" fold_open = "", -- icon used for open folds fold_closed = "", -- icon used for closed folds action_keys = { -- key mappings for actions in the trouble list @@ -15,20 +12,20 @@ trouble_config = { close = "q", -- close the list cancel = "", -- cancel the preview and get back to your last window / buffer / cursor refresh = "r", -- manually refresh - jump = {"", ""}, -- jump to the diagnostic or open / close folds - open_split = {""}, -- open buffer in new split - open_vsplit = {""}, -- open buffer in new vsplit - open_tab = {""}, -- open buffer in new tab - jump_close = {"o"}, -- jump to the diagnostic and close the list + jump = { "", "" }, -- jump to the diagnostic or open / close folds + open_split = { "" }, -- open buffer in new split + open_vsplit = { "" }, -- open buffer in new vsplit + open_tab = { "" }, -- open buffer in new tab + jump_close = { "o" }, -- jump to the diagnostic and close the list toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode toggle_preview = "P", -- toggle auto_preview hover = "K", -- opens a small poup with the full multiline message preview = "p", -- preview the diagnostic location - close_folds = {"zM", "zm"}, -- close all folds - open_folds = {"zR", "zr"}, -- open all folds - toggle_fold = {"zA", "za"}, -- toggle fold of current file + close_folds = { "zM", "zm" }, -- close all folds + open_folds = { "zR", "zr" }, -- open all folds + toggle_fold = { "zA", "za" }, -- toggle fold of current file previous = "k", -- preview item - next = "j" -- next item + next = "j", -- next item }, indent_lines = true, -- add an indent guide below the fold icons auto_open = false, -- automatically open the list when you have diagnostics @@ -41,23 +38,7 @@ trouble_config = { warning = "", hint = "", information = "", - other = "﫠" + other = "﫠", }, - use_lsp_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client -} - -map("n", "tt", - "[[packadd trouble.nvim|lua require('trouble').setup(trouble_config)|TroubleToggle]]", - opt) -map("n", "tw", - "packadd trouble.nvim|TroubleToggle lsp_workspace_diagnostics", - opt) -map("n", "td", - "packadd trouble.nvim|TroubleToggle lsp_document_diagnostics", - opt) -map("n", "tl", - "packadd trouble.nvim|TroubleToggle loclist", opt) -map("n", "tq", - "packadd trouble.nvim|TroubleToggle quickfix", opt) -map("n", "tr", - "packadd trouble.nvim|TroubleToggle lsp_references", opt) + use_lsp_diagnostic_signs = false, -- enabling this will use the signs defined in your lsp client +}) From 198056899dfdb636c7c7564c9ab8f2deba8cc1b2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 17 Mar 2022 19:17:44 +0000 Subject: [PATCH 338/419] Add a syntax module for syntax highlighting --- init.lua | 5 +++++ lua/syntax.lua | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 lua/syntax.lua diff --git a/init.lua b/init.lua index 98cadf1..065c847 100755 --- a/init.lua +++ b/init.lua @@ -29,3 +29,8 @@ require("lazy") -- =================================================================== require("plugins") require("plugrc") + +-- =================================================================== +-- === SYNTAX CONFIGURATIONS === +-- =================================================================== +require("syntax") diff --git a/lua/syntax.lua b/lua/syntax.lua new file mode 100644 index 0000000..12d5d8c --- /dev/null +++ b/lua/syntax.lua @@ -0,0 +1,8 @@ +vim.api.nvim_set_hl(0, "Search", { + ctermfg = 0, + ctermbg = 11, + cterm = { bold = true }, + bg = "NONE", + fg = "DarkCyan", + standout = true, +}) From a4253b22b68991d86dd7757dfbec325c648c1857 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 20 Mar 2022 13:48:20 +0000 Subject: [PATCH 339/419] Add icons kinds to completion menu && update api to current version Remove deprecated fn's and add some more options to mappings --- lua/plugrc/compe.lua | 76 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 4aa3e23..9d7479d 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -14,9 +14,33 @@ local has_words_before = function() == nil end -local t = function(key) - vim.fn.feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), "n") -end +local kind_icons = { + Text = " ", + Function = "", + Method = "", + Constructor = "", + Field = " ", + Variable = "﬚ ", + Class = "ﴯ", + Interface = "", + Module = " ", + Property = " ", + Unit = "", + Value = "", + Enum = "", + EnumMember = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + Constant = " ", + Struct = " ", + Event = "", + Operator = "", + TypeParameter = "", +} cmp.setup({ snippet = { @@ -25,17 +49,42 @@ cmp.setup({ require("luasnip").lsp_expand(args.body) end, }, + formatting = { + format = function(entry, vim_item) + -- Kind icons + vim_item.kind = string.format( + "%s", + kind_icons[vim_item.kind], + vim_item.kind + ) -- This concatonates the icons with the name of the item kind + -- Source + vim_item.menu = ({ + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + nvim_lua = "[Lua]", + path = "[Path]", + emoji = "[Emoji]", + neorg = "[Neorg]", + spell = "[Spell]", + })[entry.source.name] + return vim_item + end, + }, mapping = { + [""] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), [""] = cmp.mapping.select_next_item(), [""] = cmp.mapping.select_prev_item(), - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.close(), - [""] = cmp.mapping.confirm({ select = false ,behavior = cmp.ConfirmBehavior.Replace }), + [""] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + [""] = cmp.mapping.confirm({ select = false }), [""] = cmp.mapping(function(fallback) - if vim.fn.pumvisible() == 1 then - t("") + if cmp.visible() then + cmp.select_next_item() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() elseif has_words_before() then @@ -49,8 +98,8 @@ cmp.setup({ }), [""] = cmp.mapping(function(fallback) - if vim.fn.pumvisible() == 1 then - t("") + if cmp.visible() then + cmp.select_prev_item() elseif luasnip.jumpable(-1) then luasnip.jump(-1) else @@ -68,8 +117,7 @@ cmp.setup({ { name = "path" }, { name = "nvim_lua" }, { name = "emoji" }, - { name = "spell" }, { name = "neorg" }, + { name = "spell" }, }, }) ---vim.cmd[[highlight link CompeDocumentation NormalFloat]] From a9becd2654c574ff5346c610681145dd7ac410e8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 18 Apr 2022 01:03:16 +0000 Subject: [PATCH 340/419] fix run hook for nvim-treesitter Update bufferline repo to match upstream Add null-lsp diagnostics for zsh --- lua/plugins.lua | 4 ++-- lua/plugrc/lspconfig/init.lua | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 7719c28..6963d41 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -25,7 +25,7 @@ require("paq")({ { "hoob3rt/lualine.nvim" }, -- Tabline -- A snazzy buffer line (with minimal tab integration) for Neovim - { "akinsho/nvim-bufferline.lua" }, + { "akinsho/bufferline.nvim" }, -- === Fuzzy Finder === -- a highly extendable fuzzy finder over lists @@ -35,7 +35,7 @@ require("paq")({ -- === Syntax Plugins === -- Nvim Treesitter configurations and abstraction layer - { "nvim-treesitter/nvim-treesitter", run = "TSUpdate" }, + { "nvim-treesitter/nvim-treesitter", run = ":lua vim.cmd('TSUpdate')" }, -- === Preview Plugin === -- === Note Taking Plugin === diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 23586ee..742fe12 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -92,6 +92,7 @@ local function setup_servers() "--inconclusive", }, }), + null_ls.builtins.diagnostics.zsh, }, }) From db2dfbc7596534f984af23afcc563751a419af16 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 18 Apr 2022 20:27:26 +0000 Subject: [PATCH 341/419] Disable sumneko lsp formating capabilities --- lua/plugrc/lspconfig/init.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 742fe12..90c4e32 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,13 +1,19 @@ local disable_conflicting_formatters = function(client, buffer) + if client.name == "sumneko_lua" then + client.resolved_capabilities.document_formatting = false + client.resolved_capabilities.document_range_formatting = false + return + end + local buffer_filetype = vim.fn.getbufvar(buffer, "&filetype") - local disabled_files = buffer_filetype == "cpp" - or buffer_filetype == "javascript" + local null_disabled_ft = buffer_filetype == "javascript" or buffer_filetype == "typescript" - if client.name == "null-ls" and disabled_files then + if client.name == "null-ls" and null_disabled_ft then client.resolved_capabilities.document_formatting = false client.resolved_capabilities.document_range_formatting = false + return end end From e9eae1617c833be8bf9073ed72e4b776f030713e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Apr 2022 01:00:21 +0000 Subject: [PATCH 342/419] Use upstreamed norg treesitter config Remove unneeded snippet for configuring neorg for treesitter since norg treesitter configurations have been upstreamed to nvim-treesitter Require all files in plugrc in init --- lua/plugrc/init.lua | 9 ++++++--- lua/plugrc/treesitter.lua | 28 ---------------------------- 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 4ccc049..dac45ac 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -2,12 +2,15 @@ --== PLUGINS INIT == --========================================================== -- -require("plugrc.lspconfig") +require("plugrc.bufferline") +require("plugrc.lualine") require("plugrc.gitsigns") +require("plugrc.lspconfig") require("plugrc.compe") require("plugrc.autopairs") +require("plugrc.treesitter") +require("plugrc.neorg") require("plugrc.whichkey") require("plugrc.tree") -require("plugrc.neorg") -require("Comment").setup() require("plugrc.trouble") +require("Comment").setup() diff --git a/lua/plugrc/treesitter.lua b/lua/plugrc/treesitter.lua index 9f6ffcf..4fd89cd 100644 --- a/lua/plugrc/treesitter.lua +++ b/lua/plugrc/treesitter.lua @@ -1,29 +1,3 @@ -local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() - -parser_configs.norg_meta = { - install_info = { - url = "https://github.com/nvim-neorg/tree-sitter-norg-meta", - files = { "src/parser.c" }, - branch = "main", - }, -} - -parser_configs.norg = { - install_info = { - url = "https://github.com/nvim-neorg/tree-sitter-norg", - files = { "src/parser.c", "src/scanner.cc" }, - branch = "main", - }, -} - -parser_configs.norg_table = { - install_info = { - url = "https://github.com/nvim-neorg/tree-sitter-norg-table", - files = { "src/parser.c" }, - branch = "main", - }, -} - require("nvim-treesitter.configs").setup({ ensure_installed = { "cpp", @@ -37,8 +11,6 @@ require("nvim-treesitter.configs").setup({ "scss", "html", "norg", - "norg_table", - "norg_meta", "glsl", "vim", }, From 71f0e92be8289f8d3f10226113985ac25397a1e2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Apr 2022 01:10:23 +0000 Subject: [PATCH 343/419] Move autocmds to editor module modify mappings for telescope --- lua/editor.lua | 6 ++++++ lua/lazy/telescope.lua | 4 ++-- lua/mapping/lspconfig.lua | 3 --- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index b6f9e15..5e9e897 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -164,3 +164,9 @@ o.foldlevel = 99 -- Remove Trailing whitespaces in all files cmd([[autocmd BufWritePre * %s/\s\+$//e]]) + +-- automatically show diagnostics on current line +cmd([[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{focus=false})]]) + +-- format files on save +cmd([[autocmd BufWritePre * lua vim.lsp.buf.formatting_seq_sync()]]) diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index 31fdf68..d71af0e 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -15,13 +15,13 @@ map( ) map( "n", - "ft", + "fh", [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]], opt ) map( "n", - "fh", + "fc", [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').command_history()]], opt ) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index c9b1ef3..c20b3aa 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -26,6 +26,3 @@ map("n", "K", "lua vim.lsp.buf.hover()", opts) map("n", "sh", "lua vim.lsp.buf.signature_help()", opts) map("n", "[d", "lua vim.diagnostic.goto_prev()", opts) map("n", "]d", "lua vim.diagnostic.goto_next()", opts) -vim.cmd( - [[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{focus=false})]] -) From 3bdbcdd218d6ee220b2bc5cdcf03eff36133eee5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 26 Apr 2022 01:20:37 +0000 Subject: [PATCH 344/419] use formatting_seq_sync fn for formatting remove disable_confilicting_formatters fn because since formatting_seq_sync tries formatters in sequence there isn't a need to disable formatting capabilities of any server. formatting_seq_sync replaces lsp.buf.formatting --- lua/mapping/lspconfig.lua | 2 +- lua/plugrc/lspconfig/init.lua | 21 --------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index c20b3aa..be38fe0 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -21,7 +21,7 @@ map("n", "td", "lua vim.lsp.buf.type_definition()", opts) map("n", "rn", "lua vim.lsp.buf.rename()", opts) map("n", "ca", "lua vim.lsp.buf.code_action()", opts) map("n", "sl", "lua vim.diagnostic.setloclist()", opts) -map("n", "f", "lua vim.lsp.buf.formatting()", opts) +map("n", "f", "lua vim.lsp.buf.formatting_seq_sync()", opts) map("n", "K", "lua vim.lsp.buf.hover()", opts) map("n", "sh", "lua vim.lsp.buf.signature_help()", opts) map("n", "[d", "lua vim.diagnostic.goto_prev()", opts) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 90c4e32..ab3bcf5 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,22 +1,3 @@ -local disable_conflicting_formatters = function(client, buffer) - if client.name == "sumneko_lua" then - client.resolved_capabilities.document_formatting = false - client.resolved_capabilities.document_range_formatting = false - return - end - - local buffer_filetype = vim.fn.getbufvar(buffer, "&filetype") - - local null_disabled_ft = buffer_filetype == "javascript" - or buffer_filetype == "typescript" - - if client.name == "null-ls" and null_disabled_ft then - client.resolved_capabilities.document_formatting = false - client.resolved_capabilities.document_range_formatting = false - return - end -end - local on_attach = function(client, buffer) vim.diagnostic.config({ virtual_text = false, @@ -41,8 +22,6 @@ local on_attach = function(client, buffer) local opts = { noremap = true, silent = true } - disable_conflicting_formatters(client, buffer) - -- Set some keybinds conditional on server capabilities if client.resolved_capabilities.document_range_formatting then set_keymap( From 967e9882be5af7c83e6db2e0b5e22c8b3d83b31f Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 27 Apr 2022 03:50:21 +0000 Subject: [PATCH 345/419] Move ui related modules into ui dir source ui plugins in ui/init.lua --- lua/plugrc/init.lua | 3 --- lua/{plugrc => ui}/bufferline.lua | 0 lua/{ui.lua => ui/init.lua} | 6 +++--- lua/{plugrc => ui}/lualine.lua | 0 lua/{plugrc => ui}/treesitter.lua | 0 5 files changed, 3 insertions(+), 6 deletions(-) rename lua/{plugrc => ui}/bufferline.lua (100%) rename lua/{ui.lua => ui/init.lua} (78%) rename lua/{plugrc => ui}/lualine.lua (100%) rename lua/{plugrc => ui}/treesitter.lua (100%) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index dac45ac..67b29f6 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -2,13 +2,10 @@ --== PLUGINS INIT == --========================================================== -- -require("plugrc.bufferline") -require("plugrc.lualine") require("plugrc.gitsigns") require("plugrc.lspconfig") require("plugrc.compe") require("plugrc.autopairs") -require("plugrc.treesitter") require("plugrc.neorg") require("plugrc.whichkey") require("plugrc.tree") diff --git a/lua/plugrc/bufferline.lua b/lua/ui/bufferline.lua similarity index 100% rename from lua/plugrc/bufferline.lua rename to lua/ui/bufferline.lua diff --git a/lua/ui.lua b/lua/ui/init.lua similarity index 78% rename from lua/ui.lua rename to lua/ui/init.lua index a318841..5ebd895 100644 --- a/lua/ui.lua +++ b/lua/ui/init.lua @@ -11,10 +11,10 @@ require("onedark").setup({ require("onedark").load() -- status line -require("plugrc/lualine") +require("ui/lualine") -- buffer line -require("plugrc/bufferline") +require("ui/bufferline") -- Treesitter syntax highlighting -require("plugrc/treesitter") +require("ui/treesitter") diff --git a/lua/plugrc/lualine.lua b/lua/ui/lualine.lua similarity index 100% rename from lua/plugrc/lualine.lua rename to lua/ui/lualine.lua diff --git a/lua/plugrc/treesitter.lua b/lua/ui/treesitter.lua similarity index 100% rename from lua/plugrc/treesitter.lua rename to lua/ui/treesitter.lua From 3ad55a4d3404c1ca65b8641f95fbb633265932ba Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 27 Apr 2022 03:51:46 +0000 Subject: [PATCH 346/419] Update tree configuration --- lua/plugrc/tree.lua | 239 ++++++++++++++++++++++++++++---------------- 1 file changed, 153 insertions(+), 86 deletions(-) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index 598b2fb..beed6a4 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -9,19 +9,21 @@ require("nvim-tree").setup({ hijack_netrw = true, -- open tree when running this setup function and the -- current buffer is a directory, is empty or is unnamed. - open_on_setup = true, + open_on_setup = false, + --will automatically open the tree when running setup if + --startup buffer is a file. File window will be focused. File will be found if + --update_focused_file.enable is set. + open_on_setup_file = false, -- will ignore the buffer, when deciding to open the tree on setup ignore_buffer_on_setup = false, -- will not open on setup if the filetype is in this list ignore_ft_on_setup = { ".git", "node_modules", ".cache" }, - -- closes neovim automatically when the tree is the last **WINDOW** in the view - auto_close = true, -- reload the explorer every time a buffer is written to auto_reload_on_write = true, -- opens the tree when changing/opening a new tab if the tree was previously opened open_on_tab = false, -- changes how files within the same directory are sorted. can be name | modification_time - -- sort_by = "name", + sort_by = "name", -- open in place of the unnamed buffer if it's empty. hijack_unnamed_buffer_when_opening = false, -- hijacks new directory buffers when they are opened (`:e dir`). @@ -33,7 +35,7 @@ require("nvim-tree").setup({ auto_open = true, }, -- hijack the cursor in the tree to put it at the start of the filename - hijack_cursor = false, + hijack_cursor = true, -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) update_cwd = true, -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file @@ -47,13 +49,6 @@ require("nvim-tree").setup({ -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true ignore_list = {}, }, - -- configuration options for the system open command (`s` in the tree by default) - system_open = { - -- the command to run this, leaving nil should work in most cases - cmd = nil, - -- the command arguments as a list - args = {}, - }, -- git integration with icons and colors git = { -- enable / disable the feature @@ -78,8 +73,8 @@ require("nvim-tree").setup({ -- show the line number relative to the line with the cursor in front of each line. -- If the option `view.number` is also `true`, the number on the cursor line will be the line number instead of `0`. relativenumber = false, - -- if true the tree will resize itself after opening a file - auto_resize = false, + --show diagnostic sign column. Value can be `"yes"`, `"auto"`, `"no"` + signcolumn = "yes", mappings = { -- custom only false will merge the list with the default mappings -- if true, it will only use your list to set the mappings @@ -98,36 +93,121 @@ require("nvim-tree").setup({ key = { "O" }, action = "edit_no_picker", }, - { key = "<2-RightMouse>", action = "cd" }, - { key = "", action = "vsplit" }, - { key = "", action = "split" }, - { key = "", action = "tabnew" }, - { key = "<", action = "prev_sibling" }, - { key = ">", action = "next_sibling" }, - { key = "P", action = "parent_node" }, - { key = "", action = "close_node" }, - { key = "", action = "preview" }, - { key = "K", action = "first_sibling" }, - { key = "J", action = "last_sibling" }, - { key = "I", action = "toggle_ignored" }, - { key = "H", action = "toggle_dotfiles" }, - { key = "R", action = "refresh" }, - { key = "a", action = "create" }, - { key = "d", action = "remove" }, - { key = "r", action = "rename" }, - { key = "", action = "full_rename" }, + { key = { "<2-RightMouse>", "" }, action = "cd" }, + { + key = "", + action = "vsplit", + }, + { + key = "", + action = "split", + }, + { + key = "", + action = "tabnew", + }, + { + key = "<", + action = "prev_sibling", + }, + { + key = ">", + action = "next_sibling", + }, + { + key = "P", + action = "parent_node", + }, + { + key = "", + action = "close_node", + }, + { + key = "", + action = "preview", + }, + { + key = "K", + action = "first_sibling", + }, + { + key = "J", + action = "last_sibling", + }, + { + key = "I", + action = "toggle_git_ignored", + }, + { + key = "H", + action = "toggle_dotfiles", + }, + { + key = "R", + action = "refresh", + }, + { + key = "a", + action = "create", + }, + { + key = "d", + action = "remove", + }, + { + key = "D", + action = "trash", + }, + { + key = "r", + action = "rename", + }, + { + key = "", + action = "full_rename", + }, { key = "x", action = "cut" }, { key = "c", action = "copy" }, - { key = "p", action = "paste" }, - { key = "y", action = "copy_name" }, - { key = "Y", action = "copy_path" }, - { key = "gy", action = "copy_absolute_path" }, - { key = "[c", action = "prev_git_item" }, - { key = "]c", action = "next_git_item" }, - { key = "-", action = "dir_up" }, - { key = "s", action = "system_open" }, - { key = "q", action = "close" }, - { key = "g?", action = "toggle_help" }, + { + key = "p", + action = "paste", + }, + { + key = "y", + action = "copy_name", + }, + { + key = "Y", + action = "copy_path", + }, + { + key = "gy", + action = "copy_absolute_path", + }, + { + key = "[c", + action = "prev_git_item", + }, + { + key = "]c", + action = "next_git_item", + }, + { + key = "-", + action = "dir_up", + }, + { + key = "s", + action = "system_open", + }, + { + key = "q", + action = "close", + }, + { + key = "g?", + action = "toggle_help", + }, { key = "W", action = "collapse_all", @@ -146,54 +226,41 @@ require("nvim-tree").setup({ }, }, }, - filters = { - -- show `dotfiles` (files starting with a `.`) - dotfiles = false, - -- custom list of string that will not be shown. - custom = {}, - -- list of directories or files to exclude from filtering - exclude = {}, - }, - -- hijacks new directory buffers when they are opened. - update_to_buf_dir = { - -- enable the feature + }, + --filtering options + filters = { + --do not show dotfiles: files starting with a `.` + dotfiles = true, + --custom list of vim regex for file/directory names that will not be shown. + custom = {}, + --list of directories or files to exclude from filtering: always show them. + --Overrides `git.ignore`, `filters.dotfiles` and `filters.custom`. + exclude = {}, + }, + --configuration for various actions + actions = { + change_dir = { + --change the working directory when changing directories in the tree. enable = true, - -- allow to open the tree if it was previously closed - auto_open = true, + --use `:cd` instead of `:lcd` when changing directories. + --Consider that this might cause issues with the |update_cwd| options. + global = false, + --restrict changing to a directory above the global current working directory. + restrict_above_cwd = false, }, - -- configuration for various actions - actions = { - change_dir = { - -- change the working directory when changing directories in the tree. + open_file = { + --closes the explorer when opening a file. + --It will also disable preventing a buffer overriding the tree. + quit_on_open = false, + --resizes the tree when opening a file + resize_window = false, + --window picker configuration + window_picker = { + --If not enabled, files will open in window from which you last opened the tree. enable = true, - -- use `:cd` instead of `:lcd` when changing directories. Consider that this might cause issues with the update_cwd options. - global = false, - }, - open_file = { - -- closes the explorer when opening a file. It will also disable preventing a buffer overriding the tree. - quit_on_open = true, - -- resizes the tree when opening a file - resize_window = false, - -- window picker configuration - window_picker = { - -- Enable the feature. If the feature is not enabled, files will open in window from which you last opened the tree. - enable = true, - -- A string of chars used as identifiers by the window picker. - chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", - -- Table of buffer option names mapped to a list of option values that indicates to the picker that the buffer's window should not be selectable. - exclude = { - filetype = { - "notify", - "packer", - "qf", - "diff", - "fugitive", - "fugitiveblame", - }, - buftype = { "nofile", "terminal", "help" }, - }, - }, }, }, + --When enabled, copied text will be stored in registers '+' (system), otherwise, it will be stored in '1' and '"'. + use_system_clipboard = true, }, }) From 9fb2280a38a87509e4db827702dc07f1a9a06f61 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 27 Apr 2022 03:57:52 +0000 Subject: [PATCH 347/419] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d88b016..5be6ae4 100644 --- a/README.md +++ b/README.md @@ -54,19 +54,20 @@ Neovim does come out of the box with luajit and treesitter support │ └── 📂 plugrc │ │ └── 📂 lspconfig │ │ ├──  autopairs.lua - │ │ ├──  bufferline.lua │ │ ├──  compe.lua │ │ ├──  gitsigns.lua │ │ ├──  init.lua - │ │ ├──  lualine.lua │ │ ├──  neorg.lua │ │ ├──  tree.lua - │ │ ├──  treesitter.lua │ │ └──  whichkey.lua │ ├──  editor.lua │ ├──  plugins.lua │ ├──  terminal.lua - │ ├──  ui.lua + │ └── 📂 ui.lua + │ │ ├──  init.lua + │ │ ├──  bufferline.lua + │ │ ├──  lualine.lua + │ │ └──  treesitter.lua │ └──  utils.lua ├── README.md ├── LICENSE From d2e8e6353015324ef887ac9e4abac7f667c4b23b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 29 Apr 2022 07:40:37 +0000 Subject: [PATCH 348/419] remove the various directory specification option for backup swap and undo the defaults work pretty well with the writebackup option prefer writebackup option over backup this is beacuse the saved backup file is hardly useful writebackup gives us the safety guarentee of backup without the baggage move neorg's note workspace to $HOME/.local/neorg --- lua/editor.lua | 18 ++---------------- lua/plugrc/neorg.lua | 2 +- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 5e9e897..f0d3039 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -30,29 +30,18 @@ o.number = true -- Show the line number relative to the line with the cursor in front of each line. o.relativenumber = true ---If you write to an existing file (but do not append) a backup of the original file is made. -o.backup = true +--Make a backup before overwriting a file. The backup is removed after the file was successfully written +o.writebackup = true -- tells neovim how backups are done o.backupcopy = "auto" --- List of directories for the backup file --- if a directory ends in two path separators "//", the swap file name will be built from --- the complete path to the file with all path separators changed to percent '%' signs. --- This will ensure file name uniqueness in the backup directory. -local dirprefix = vim.env.XDG_DATA_HOME or fn.expand("~/.local/share") - -o.backupdir = { dirprefix .. "/nvim/backup//", "/tmp//" } - -- The extension to be used for vim backup files o.backupext = ".vimbak" -- enable saving unsaved/unwritten files in a *.swp file o.swapfile = true --- The location of swap files ,ie buffers that have not been save ie in memory -o.directory = { dirprefix .. "/nvim/swap//", "/tmp//" } - -- saves undo history to an undo file when writing a buffer to a file, and restores undo -- history from the same file on buffer read. o.undofile = true @@ -60,9 +49,6 @@ o.undofile = true -- Maximum number of changes that can be undone. o.undolevels = 30000 --- Location for storing undo tree of the edited file-- -o.undodir = { dirprefix .. "/nvim/undo//", "/tmp//" } - -- Don't redraw screen when executing macros,registers or untyped commands o.lazyredraw = true diff --git a/lua/plugrc/neorg.lua b/lua/plugrc/neorg.lua index 20fe436..a8bd87e 100644 --- a/lua/plugrc/neorg.lua +++ b/lua/plugrc/neorg.lua @@ -13,7 +13,7 @@ require("neorg").setup({ -- Define your workspaces here! workspaces = { -- You can give it any name and any directory, get creative! - notes = "~/neorg", + notes = "~/.local/neorg", }, }, }, From 6d06a144cf76b8bdedcede85f1587ac759e86e6e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 12 May 2022 15:22:01 +0000 Subject: [PATCH 349/419] Fix running TSUpdate on treesitter update --- lua/plugins.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 6963d41..81a88bb 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -35,7 +35,12 @@ require("paq")({ -- === Syntax Plugins === -- Nvim Treesitter configurations and abstraction layer - { "nvim-treesitter/nvim-treesitter", run = ":lua vim.cmd('TSUpdate')" }, + { + "nvim-treesitter/nvim-treesitter", + run = function() + vim.cmd("TSUpdate") + end, + }, -- === Preview Plugin === -- === Note Taking Plugin === From c41a6b01ceec0869c99be765f301a1ba53c803ac Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 19 May 2022 07:58:57 +0000 Subject: [PATCH 350/419] Replace nvim_set_keymap with keymap.set remove rearly used fn's like opt() and t() replace plenary.reload with a simpler reload and reloadModule fn for reloading modules --- lua/utils.lua | 53 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/lua/utils.lua b/lua/utils.lua index 6068ec3..7716165 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -1,18 +1,6 @@ function _G.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 - -local scopes = { o = vim.o, b = vim.bo, w = vim.wo } - -function _G.opt(scope, key, value) - scopes[scope][key] = value - if scope ~= "o" then - scopes["o"][key] = value - end + opts = opts or {} + vim.keymap.set(mode, lhs, rhs, opts) end function _G.dump(...) @@ -21,13 +9,36 @@ function _G.dump(...) return ... end --- escape termcode and keycode in lua for use in mapping expressions -function _G.t(str) - -- Adjust boolean arguments as needed - return vim.api.nvim_replace_termcodes(str, true, true, true) +function _G.reload() + for name, _ in pairs(package.loaded) do + if name:match("^lazy") + or name:match("^mapping") + or name:match("^plugrc") + or name:match("^ui") + or name:match("^editor") + or name:match("^plugins") + or name:match("^syntax") + or name:match("^terminal") + or name:match("^utils") + then + package.loaded[name] = nil + end + end + + dofile(vim.env.MYVIMRC) + vim.notify("\nNvim configuration reloaded!", vim.log.levels.INFO) end -function _G.reload(module, parent_directory) - local reload_module = require("plenary.reload").reload_module - reload_module(module, parent_directory) +function _G.reloadModule(module) + for name, _ in pairs(package.loaded) do + if name:match("^" .. module) then + package.loaded[name] = nil + require(name) + end + end + + vim.notify( + "Nvim module " .. module .. " configuration reloaded!", + vim.log.levels.INFO + ) end From 8039295ba7ca9d697f06847a02081566867bcddf Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 19 May 2022 08:04:53 +0000 Subject: [PATCH 351/419] Use new map fn's api for key mapping --- lua/mapping/spellcheck.lua | 21 ++++++++------- lua/mapping/tab_buffer.lua | 53 +++++++++++++++++++++----------------- lua/mapping/terminal.lua | 12 ++++----- 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/lua/mapping/spellcheck.lua b/lua/mapping/spellcheck.lua index fd3764c..ba1c09d 100644 --- a/lua/mapping/spellcheck.lua +++ b/lua/mapping/spellcheck.lua @@ -1,26 +1,27 @@ -require('utils') +require("utils") -- === Spell checking === " -- For help on spell checking :help spell -- Pressing ,ts will toggle and untoggle spell checking -- toggle to alternate configuration of spellcheck -local opt = {noremap = false} -map('', 'st', 'set spell!', opt) +local opt = { remap = true } +local mode = { "n", "v", "o" } +map(mode, "st", "set spell!", opt) -- Use Ctrl-x s to activate spell suggestions in insert mood -- Shortcuts using -- next spellcheck iteam -map('', 'sn', ']s', opt) +map(mode, "sn", "]s", opt) -- previous spellcheck iteam -map('', 'sp', 's[', opt) +map(mode, "sp", "s[", opt) -- mark word as good in local spellfile :NOTE checkout zG for internal spellfile -map('', 'sg', 'gz', opt) +map(mode, "sg", "gz", opt) -- mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile -map('', 'sw', 'wz', opt) +map(mode, "sw", "wz", opt) -- undo marking of word as good -map('', 'usg', 'ugz', opt) +map(mode, "usg", "ugz", opt) -- undo marking of word as wrong -map('', 'usw', 'uwz', opt) +map(mode, "usw", "uwz", opt) -- check for suggestions for the underlined word -map('', 'sc', 'z=', opt) +map(mode, "sc", "z=", opt) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index c1c3d23..b326e29 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -1,7 +1,7 @@ require("utils") -- === Moving around, tabs, windows and buffers === -- --- To use `ALT+{h,j,k,l}` to navigate windows from any mode: > +-- To use `ALT+{h,j,k,l}` to navigate windows from any mode map("t", "", [[h]]) map("t", "", [[j]]) map("t", "", [[k]]) @@ -15,33 +15,40 @@ map("n", "", "j") map("n", "", "k") map("n", "", "l") -local opt = { noremap = false } -map("", "bd", ":bdelete", opt) -- Close the current buffer -map("", "bda", ":bufdo bd", opt) -- Close all the buffers -map("", "bf", ":bnext", opt) -- move forward to the next buffer in the buffer list -map("", "bb", ":bprevious", opt) -- move back to the previous buffer in the buffer list -map("", "bp", ":b#", opt) -- move to the last visited buffer -map("", "b1", ":bfirst", opt) -- move to the first buffer in the buffer list -map("", "b9", ":blast", opt) -- move to the last buffer in the buffer list -map("n", "bs", ":BufferLinePick", { -- pick a buffer from the buffer list - noremap = true, - silent = true, -}) +local opt = { remap = true } +local mode = { "n", "v", "o" } +map(mode, "bd", "bdelete", opt) -- Close the current buffer +map(mode, "bda", "bufdo bd", opt) -- Close all the buffers +map(mode, "bf", "bnext", opt) -- move forward to the next buffer in the buffer list +map(mode, "bb", "bprevious", opt) -- move back to the previous buffer in the buffer list +map(mode, "bp", "b#", opt) -- move to the last visited buffer +map(mode, "b1", "bfirst", opt) -- move to the first buffer in the buffer list +map(mode, "b9", "blast", opt) -- move to the last buffer in the buffer list +-- pick a buffer from the buffer list +map( + "n", + "bs", + "BufferLinePick", + vim.tbl_extend("force", opt, { + remap = false, + silent = true, + }) +) -- Useful mappings for managing tabs -map("", "tnw", ":tabnew", opt) -map("", "to", ":tabonly", opt) -map("", "tc", ":tabclose", opt) -map("", "tm", ":tabmove", opt) -map("", "tn", ":tabnext", opt) -map("", "tp", ":tabprevious", opt) -map("", "tf", ":tabfirst", opt) +map(mode, "tnw", "tabnew", opt) +map(mode, "to", "tabonly", opt) +map(mode, "tc", "tabclose", opt) +map(mode, "tm", "tabmove", opt) +map(mode, "tn", "tabnext", opt) +map(mode, "tp", "tabprevious", opt) +map(mode, "tf", "tabfirst", opt) -- pass a positive or negative argument to the command to move by that step-- -map("", "t", ":tabnext", opt) +map(mode, "t", "tabnext", opt) -- Opens a new tab with the current buffer's path -- Super useful when editing files in the same directory -map("", "te", ':tabedit =expand("%:p:h")', opt) +map(mode, "te", 'tabedit =expand("%:p:h")', opt) -- Switch CWD to the directory of the open buffer -map("", "cd", ":cd %:p:h:pwd", opt) +map(mode, "cd", "cd %:p:h:pwd", opt) diff --git a/lua/mapping/terminal.lua b/lua/mapping/terminal.lua index 5c3ae84..dec8c04 100644 --- a/lua/mapping/terminal.lua +++ b/lua/mapping/terminal.lua @@ -1,14 +1,14 @@ -require('utils') +require("utils") -- turn terminal to normal mode with escape -- tnoremap :q -- open terminal on ctrl+n function _G.OpenTerminal() - vim.cmd [[ - split term://zsh - resize 10 - ]] + vim.cmd([[ + split term://zsh + resize 10 + ]]) end -- Mapping to open terminal emulator in nvim -map('n', '', ':call v:lua.OpenTerminal()') +map("n", "", "lua OpenTerminal()") From 390f3db787a5ef0d77981e67d63de9da2dafb62c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 19 May 2022 08:13:47 +0000 Subject: [PATCH 352/419] Update gitsigns configuration --- lua/plugrc/gitsigns.lua | 71 ++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 33f0a10..4d956b1 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -1,42 +1,49 @@ require("utils") require("gitsigns").setup({ - on_attach = function() + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + local opts = { buffer = bufnr } + -- Navigation - map( - "n", - "]c", - "&diff ? ']c' : 'Gitsigns next_hunk'", - { expr = true } - ) - map( - "n", - "[c", - "&diff ? '[c' : 'Gitsigns prev_hunk'", - { expr = true } - ) + map("n", "]c", function() + if vim.wo.diff then + return "]c" + end + vim.schedule(function() + gs.next_hunk() + end) + return "" + end, vim.tbl_extend("force", opts, { expr = true })) + + map("n", "[c", function() + if vim.wo.diff then + return "[c" + end + vim.schedule(function() + gs.prev_hunk() + end) + return "" + end, vim.tbl_extend("force", opts, { expr = true })) -- Actions - map("n", "hs", ":Gitsigns stage_hunk") - map("v", "hs", ":Gitsigns stage_hunk") - map("n", "hr", ":Gitsigns reset_hunk") - map("v", "hr", ":Gitsigns reset_hunk") - map("n", "hS", "Gitsigns stage_buffer") - map("n", "hu", "Gitsigns undo_stage_hunk") - map("n", "hR", "Gitsigns reset_buffer") - map("n", "hp", "Gitsigns preview_hunk") - map( - "n", - "hb", - 'lua require"gitsigns".blame_line{full=true}' - ) - map("n", "tb", "Gitsigns toggle_current_line_blame") - map("n", "hd", "Gitsigns diffthis") - map("n", "hD", 'lua require"gitsigns".diffthis("~")') - map("n", "td", "Gitsigns toggle_deleted") + map({ "n", "v" }, "hs", "Gitsigns stage_hunk") + map({ "n", "v" }, "hr", "Gitsigns reset_hunk") + map("n", "hS", gs.stage_buffer) + map("n", "hu", gs.undo_stage_hunk) + map("n", "hR", gs.reset_buffer) + map("n", "hp", gs.preview_hunk) + map("n", "hb", function() + gs.blame_line({ full = true }) + end) + map("n", "tb", gs.toggle_current_line_blame) + map("n", "hd", gs.diffthis) + map("n", "hD", function() + gs.diffthis("~") + end) + map("n", "td", gs.toggle_deleted) -- Text object - map("o", "ih", ":Gitsigns select_hunk") - map("x", "ih", ":Gitsigns select_hunk") + map({ "o", "x" }, "ih", "Gitsigns select_hunk") end, }) From 5ac8d83d81af718288941dce64bddf57caef676a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 19 May 2022 08:17:54 +0000 Subject: [PATCH 353/419] Use . consistently as module namespace seperator --- lua/lazy/init.lua | 4 ++-- lua/mapping/init.lua | 12 ++++++------ lua/ui/init.lua | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 1f94907..380c1e4 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,2 +1,2 @@ -require('lazy/telescope') -require('lazy/symbols') +require("lazy.telescope") +require("lazy.symbols") diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 2163e86..333fbf6 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -1,7 +1,7 @@ -require('mapping/spellcheck') -require('mapping/tab_buffer') -require('mapping/highlighting') -require('mapping/terminal') -require('mapping/lspconfig') -require('mapping/tree') +require("mapping.spellcheck") +require("mapping.tab_buffer") +require("mapping.highlighting") +require("mapping.terminal") +require("mapping.lspconfig") +require("mapping.tree") require("mapping.trouble") diff --git a/lua/ui/init.lua b/lua/ui/init.lua index 5ebd895..b5cce11 100644 --- a/lua/ui/init.lua +++ b/lua/ui/init.lua @@ -11,10 +11,10 @@ require("onedark").setup({ require("onedark").load() -- status line -require("ui/lualine") +require("ui.lualine") -- buffer line -require("ui/bufferline") +require("ui.bufferline") -- Treesitter syntax highlighting -require("ui/treesitter") +require("ui.treesitter") From 37b1728dc0d2e83a2c39c25d90a278433a736f74 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 19 May 2022 08:22:34 +0000 Subject: [PATCH 354/419] Format repo with stylua --- README.md | 2 +- lua/lazy/symbols.lua | 7 +- lua/mapping/highlighting.lua | 4 +- lua/plugrc/autopairs.lua | 2 +- lua/plugrc/init.lua | 2 +- lua/plugrc/lspconfig/signature.lua | 4 +- lua/plugrc/whichkey.lua | 127 +++++++++++++++-------------- lua/terminal.lua | 4 +- lua/ui/bufferline.lua | 48 ++++++----- 9 files changed, 109 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index 5be6ae4..0f7fa6d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Awesome Neovim Configuration -This is to make setting up of neovim >= 0.6 a breeze. +This is to make setting up of neovim >= 0.7 a breeze. ### NOTE : for vim >= 8 checkout [vim branch](https://github.com/Ultra-Code/awesome-neovim/tree/vim) ## Awesome NeoVim with C++ diff --git a/lua/lazy/symbols.lua b/lua/lazy/symbols.lua index 2cc4057..db9a3f6 100644 --- a/lua/lazy/symbols.lua +++ b/lua/lazy/symbols.lua @@ -49,4 +49,9 @@ vim.g.symbols_outline = { }, } require("utils") -map( "n", "so", "packadd symbols-outline.nvim|SymbolsOutline", { silent = true }) +map( + "n", + "so", + "packadd symbols-outline.nvim|SymbolsOutline", + { silent = true } +) diff --git a/lua/mapping/highlighting.lua b/lua/mapping/highlighting.lua index f122b12..f940096 100644 --- a/lua/mapping/highlighting.lua +++ b/lua/mapping/highlighting.lua @@ -1,3 +1,3 @@ -require('utils') +require("utils") -- Use l to clear the highlighting of :set hlsearch. -map('n', 'hl', ':nohl') +map("n", "hl", "nohl") diff --git a/lua/plugrc/autopairs.lua b/lua/plugrc/autopairs.lua index 42901e7..45d7991 100644 --- a/lua/plugrc/autopairs.lua +++ b/lua/plugrc/autopairs.lua @@ -1 +1 @@ -require('nvim-autopairs').setup({fast_wrap = {}}) +require("nvim-autopairs").setup({ fast_wrap = {} }) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 67b29f6..d177231 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -10,4 +10,4 @@ require("plugrc.neorg") require("plugrc.whichkey") require("plugrc.tree") require("plugrc.trouble") -require("Comment").setup() +require("Comment").setup({}) diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua index b706e73..9ce5091 100644 --- a/lua/plugrc/lspconfig/signature.lua +++ b/lua/plugrc/lspconfig/signature.lua @@ -24,9 +24,9 @@ local signature_cfg = { max_width = 120, -- max_width of signature floating_window, -- line will be wrapped if exceed max_width handler_opts = { - border = "shadow" -- double, single, shadow, none + border = "shadow", -- double, single, shadow, none }, - extra_trigger_chars = {} -- Array of extra characters that will + extra_trigger_chars = {}, -- Array of extra characters that will -- trigger signature completion, e.g., {"(", ","} } diff --git a/lua/plugrc/whichkey.lua b/lua/plugrc/whichkey.lua index 61dc4f6..f01380e 100644 --- a/lua/plugrc/whichkey.lua +++ b/lua/plugrc/whichkey.lua @@ -1,62 +1,69 @@ -require('which-key').setup -{ - plugins = { - marks = true, -- shows a list of your marks on ' and ` - registers = true, -- shows your registers on " in NORMAL or in INSERT mode - -- the presets plugin, adds help for a bunch of default keybindings in Neovim - -- No actual key bindings are created - spelling = { - enabled = false, -- enabling this will show WhichKey when pressing z= to select spelling suggestions - suggestions = 20, -- how many suggestions should be shown in the list? +require("which-key").setup({ + plugins = { + marks = true, -- shows a list of your marks on ' and ` + registers = true, -- shows your registers on " in NORMAL or in INSERT mode + -- the presets plugin, adds help for a bunch of default keybindings in Neovim + -- No actual key bindings are created + spelling = { + enabled = false, -- enabling this will show WhichKey when pressing z= to select spelling suggestions + suggestions = 20, -- how many suggestions should be shown in the list? + }, + presets = { + operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion + motions = true, -- adds help for motions + text_objects = true, -- help for text objects triggered after entering an operator + windows = true, -- default bindings on + nav = true, -- misc bindings to work with windows + z = true, -- bindings for folds, spelling and others prefixed with z + g = true, -- bindings for prefixed with g + }, }, - presets = { - operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion - motions = true, -- adds help for motions - text_objects = true, -- help for text objects triggered after entering an operator - windows = true, -- default bindings on - nav = true, -- misc bindings to work with windows - z = true, -- bindings for folds, spelling and others prefixed with z - g = true, -- bindings for prefixed with g + -- add operators that will trigger motion and text object completion + -- to enable all native operators, set the preset / operators plugin above + operators = { gc = "Comments" }, + key_labels = { + -- override the label used to display some keys. It doesn't effect WK in any other way. + -- For example: + -- [""] = "SPC", + -- [""] = "RET", + -- [""] = "TAB", }, - }, - -- add operators that will trigger motion and text object completion - -- to enable all native operators, set the preset / operators plugin above - operators = { gc = "Comments" }, - key_labels = { - -- override the label used to display some keys. It doesn't effect WK in any other way. - -- For example: - -- [""] = "SPC", - -- [""] = "RET", - -- [""] = "TAB", - }, - icons = { - breadcrumb = "»", -- symbol used in the command line area that shows your active key combo - separator = "➜", -- symbol used between a key and it's label - group = "+", -- symbol prepended to a group - }, - window = { - border = "none", -- none, single, double, shadow - position = "bottom", -- bottom, top - margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] - padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] - }, - layout = { - height = { min = 4, max = 25 }, -- min and max height of the columns - width = { min = 20, max = 50 }, -- min and max width of the columns - spacing = 3, -- spacing between columns - align = "left", -- align columns left, center or right - }, - ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label - hidden = { "", "", "", "", "call", "lua", "^:", "^ "}, -- hide mapping boilerplate - show_help = true, -- show help message on the command line when the popup is visible - triggers = "auto", -- automatically setup triggers - -- triggers = {""} -- or specify a list manually - triggers_blacklist = { - -- list of mode / prefixes that should never be hooked by WhichKey - -- this is mostly relevant for key maps that start with a native binding - -- most people should not need to change this - i = { "j", "k" }, - v = { "j", "k" }, - }, -} - + icons = { + breadcrumb = "»", -- symbol used in the command line area that shows your active key combo + separator = "➜", -- symbol used between a key and it's label + group = "+", -- symbol prepended to a group + }, + window = { + border = "none", -- none, single, double, shadow + position = "bottom", -- bottom, top + margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] + padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] + }, + layout = { + height = { min = 4, max = 25 }, -- min and max height of the columns + width = { min = 20, max = 50 }, -- min and max width of the columns + spacing = 3, -- spacing between columns + align = "left", -- align columns left, center or right + }, + ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label + hidden = { + "", + "", + "", + "", + "call", + "lua", + "^:", + "^ ", + }, -- hide mapping boilerplate + show_help = true, -- show help message on the command line when the popup is visible + triggers = "auto", -- automatically setup triggers + -- triggers = {""} -- or specify a list manually + triggers_blacklist = { + -- list of mode / prefixes that should never be hooked by WhichKey + -- this is mostly relevant for key maps that start with a native binding + -- most people should not need to change this + i = { "j", "k" }, + v = { "j", "k" }, + }, +}) diff --git a/lua/terminal.lua b/lua/terminal.lua index 435efa6..1e5e74a 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -1,11 +1,11 @@ -- open new split panes to right and below vim.go.splitright = true vim.go.splitbelow = true -vim.cmd [[ +vim.cmd([[ augroup Terminal autocmd! au TermOpen * tnoremap :bd! au TermOpen * startinsert au TermOpen * set nonumber augroup end -]] +]]) diff --git a/lua/ui/bufferline.lua b/lua/ui/bufferline.lua index 7d8e939..0baedcb 100644 --- a/lua/ui/bufferline.lua +++ b/lua/ui/bufferline.lua @@ -1,21 +1,27 @@ -require('bufferline').setup { - options = { - numbers = function(opts) - return string.format('%s|%s', opts.id, opts.raise(opts.ordinal)) - end, - max_name_length = 18, - max_prefix_length = 15, -- prefix used when a buffer is de-duplicated - tab_size = 18, - offsets = {{filetype = "NvimTree", text = "File Explorer", text_align = "left" --[[| "center" | "right",]]}}, - show_buffer_icons = true, --| false, -- disable filetype icons for buffers - show_buffer_close_icons = true,--| false, - show_close_icon = true, --| false, - show_tab_indicators = true, --| false, - persist_buffer_sort = true, -- whether or not custom sorted buffers should persist - -- can also be a table containing 2 custom separators - -- [focused and unfocused]. eg: { '|', '|' } - separator_style = "slant", --| "thick" | "thin" | { 'any', 'any' }, - enforce_regular_tabs = false, --| true, - always_show_bufferline = true, --| false, - } -} +require("bufferline").setup({ + options = { + numbers = function(opts) + return string.format("%s|%s", opts.id, opts.raise(opts.ordinal)) + end, + max_name_length = 18, + max_prefix_length = 15, -- prefix used when a buffer is de-duplicated + tab_size = 18, + offsets = { + { + filetype = "NvimTree", + text = "File Explorer", + text_align = "left", --[[| "center" | "right",]] + }, + }, + show_buffer_icons = true, --| false, -- disable filetype icons for buffers + show_buffer_close_icons = true, --| false, + show_close_icon = true, --| false, + show_tab_indicators = true, --| false, + persist_buffer_sort = true, -- whether or not custom sorted buffers should persist + -- can also be a table containing 2 custom separators + -- [focused and unfocused]. eg: { '|', '|' } + separator_style = "slant", --| "thick" | "thin" | { 'any', 'any' }, + enforce_regular_tabs = false, --| true, + always_show_bufferline = true, --| false, + }, +}) From 64a4b9befd54a59a6c0cf97efe776b01e7acfb0a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Jun 2022 15:23:48 +0000 Subject: [PATCH 355/419] Update tree config --- lua/plugrc/tree.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index beed6a4..b7b105b 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,7 +1,5 @@ local g = vim.g -g.nvim_tree_highlight_opened_files = 1 -- 0 by default, will enable folder and file icon highlight for opened files/directories. - require("nvim-tree").setup({ -- disables netrw completely disable_netrw = true, @@ -56,6 +54,12 @@ require("nvim-tree").setup({ -- ignore files based on `.gitignore` ignore = true, }, + renderer = { + --Enable file highlight for git attributes using `NvimTreeGit*` highlight groups. + highlight_git = true, + --Highlight icons and/or names for opened files. + highlight_opened_files = "all", + }, -- window / buffer setup view = { -- hide the path of the current working directory on top of the tree From f159310bc56a637a2d27515147c1d18497a09b59 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 1 Jul 2022 01:55:38 +0000 Subject: [PATCH 356/419] Fix signature overlaps with parameter hint and completions increase amount of fn signature docs shown --- lua/plugrc/lspconfig/signature.lua | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua index 9ce5091..2deadb3 100644 --- a/lua/plugrc/lspconfig/signature.lua +++ b/lua/plugrc/lspconfig/signature.lua @@ -1,33 +1,28 @@ local signature_cfg = { bind = true, -- This is mandatory, otherwise border config won't get registered. -- If you want to hook lspsaga or other signature handler, pls set to false - doc_lines = 9, -- will show two lines of comment/doc - -- (if there are more than two lines in doc, will be truncated); - -- set to 0 if you DO NOT want any API comments be shown - -- This setting only take effect in insert mode, - -- it does not affect signature help in normal - -- mode, 10 by default - + doc_lines = 18, -- will show two lines of comment/doc (if there are more than two lines in doc, will be truncated); + -- set to 0 if you DO NOT want any API comments be shown. This setting only take effect in insert mode, + -- it does not affect signature help in normal mode, 10 by default floating_window = true, -- show hint in a floating window, -- set to false for virtual text only mode - - fix_pos = true, -- set to true, the floating window will - -- not auto-close until finish all parameters + floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note: + -- will set to true when fully tested, set to false will use whichever side has more space + -- this setting will be helpful if you do not want the PUM and floating win overlap + fix_pos = false, -- set to true, the floating window will not auto-close until finish all parameters hint_enable = true, -- virtual hint enable hint_prefix = "🐼 ", -- Panda for parameter hint_scheme = "String", use_lspsaga = false, -- set to true if you want to use lspsaga popup hi_parameter = "Search", -- how your parameter will be highlight max_height = 18, -- max height of signature floating_window, - -- if content is more than max_height, you can scroll down - -- to view the hiding contents - max_width = 120, -- max_width of signature floating_window, + -- if content is more than max_height, you can scroll down to view the hiding contents + max_width = 90, -- max_width of signature floating_window, -- line will be wrapped if exceed max_width handler_opts = { border = "shadow", -- double, single, shadow, none }, - extra_trigger_chars = {}, -- Array of extra characters that will - -- trigger signature completion, e.g., {"(", ","} + extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} } return signature_cfg From 639a244c0355d9e9e4e11474d8f2d0ec5642106b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 1 Jul 2022 02:23:24 +0000 Subject: [PATCH 357/419] Use the new setup api to setup lsp_signature increase max_width to 117 which is about half of my screen with --- lua/plugrc/lspconfig/init.lua | 5 +++-- lua/plugrc/lspconfig/signature.lua | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index ab3bcf5..d447441 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -7,8 +7,6 @@ local on_attach = function(client, buffer) update_in_insert = false, severity_sort = true, }) - local signature_cfg = require("plugrc.lspconfig.signature") - require("lsp_signature").on_attach(signature_cfg) local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) @@ -81,6 +79,9 @@ local function setup_servers() }, }) + local signature_cfg = require("plugrc.lspconfig.signature") + require("lsp_signature").setup(signature_cfg) + for _, server in pairs(lsp_servers) do local config = make_config() local settings = require("plugrc.lspconfig.settings") diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua index 2deadb3..bedbf77 100644 --- a/lua/plugrc/lspconfig/signature.lua +++ b/lua/plugrc/lspconfig/signature.lua @@ -17,7 +17,7 @@ local signature_cfg = { hi_parameter = "Search", -- how your parameter will be highlight max_height = 18, -- max height of signature floating_window, -- if content is more than max_height, you can scroll down to view the hiding contents - max_width = 90, -- max_width of signature floating_window, + max_width = 117, -- max_width of signature floating_window, -- line will be wrapped if exceed max_width handler_opts = { border = "shadow", -- double, single, shadow, none From f2583c1e7f4638c8a99374a8776d7a0906a8a197 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 1 Jul 2022 19:52:18 +0000 Subject: [PATCH 358/419] move onedark into its own module use the full recommended config so that I can freely change and customise the scheme --- lua/ui/init.lua | 8 ++------ lua/ui/onedark.lua | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 lua/ui/onedark.lua diff --git a/lua/ui/init.lua b/lua/ui/init.lua index b5cce11..468973c 100644 --- a/lua/ui/init.lua +++ b/lua/ui/init.lua @@ -3,12 +3,8 @@ vim.o.termguicolors = true vim.o.background = "dark" --- Onedark colorscheme -require("onedark").setup({ - style = "deep", -- dark, darker, cool, deep, warm, warmer, light -}) - -require("onedark").load() +-- colour scheme +require("ui.onedark") -- status line require("ui.lualine") diff --git a/lua/ui/onedark.lua b/lua/ui/onedark.lua new file mode 100644 index 0000000..4e7a43d --- /dev/null +++ b/lua/ui/onedark.lua @@ -0,0 +1,43 @@ +-- Onedark colorscheme +require("onedark").setup({ + -- Main options -- + style = "deep", -- Default theme style. Choose between 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light' + transparent = false, -- Show/hide background + term_colors = true, -- Change terminal color as per the selected theme style + ending_tildes = false, -- Show the end-of-buffer tildes. By default they are hidden + cmp_itemkind_reverse = false, -- reverse item kind highlights in cmp menu + -- toggle theme style --- + toggle_style_key = "ts", -- Default keybinding to toggle + toggle_style_list = { + "dark", + "darker", + "cool", + "deep", + "warm", + "warmer", + "light", + }, -- List of styles to toggle between + + -- Change code style --- + -- Options are italic, bold, underline, none + -- You can configure multiple style with comma seperated, For e.g., keywords = 'italic,bold' + code_style = { + comments = "italic", + keywords = "none", + functions = "none", + strings = "none", + variables = "none", + }, + + -- Custom Highlights -- + colors = {}, -- Override default colors + highlights = {}, -- Override highlight groups + + -- Plugins Config -- + diagnostics = { + darker = true, -- darker colors for diagnostic + undercurl = true, -- use undercurl instead of underline for diagnostics + background = true, -- use background color for virtual text + }, +}) +require("onedark").load() From 8acedfc68e3b6ecbc6719ce9a9b56b2b8c234868 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 15 Jul 2022 16:26:04 +0000 Subject: [PATCH 359/419] Organize terminal mapping move OpenTerminal fn's into the normal mode Alt+t mapping move mapping for closing terminal into mapping/terminal module add norelativenumber option in terminal autocommand --- lua/mapping/terminal.lua | 14 ++++++-------- lua/terminal.lua | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lua/mapping/terminal.lua b/lua/mapping/terminal.lua index dec8c04..ea2c799 100644 --- a/lua/mapping/terminal.lua +++ b/lua/mapping/terminal.lua @@ -1,14 +1,12 @@ require("utils") --- turn terminal to normal mode with escape --- tnoremap :q - --- open terminal on ctrl+n -function _G.OpenTerminal() +-- Mapping to open terminal emulator in nvim +-- open terminal on alt+t +map("n", "", function() vim.cmd([[ split term://zsh resize 10 ]]) -end +end) --- Mapping to open terminal emulator in nvim -map("n", "", "lua OpenTerminal()") +-- mapping to close terminal emulator +map("t", "", [[:bd!]]) diff --git a/lua/terminal.lua b/lua/terminal.lua index 1e5e74a..ade6f03 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -4,8 +4,8 @@ vim.go.splitbelow = true vim.cmd([[ augroup Terminal autocmd! - au TermOpen * tnoremap :bd! au TermOpen * startinsert au TermOpen * set nonumber + au TermOpen * set norelativenumber augroup end ]]) From fe93f5857944d69508c33ccc460bfc23b908a4f9 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 15 Jul 2022 18:45:33 +0000 Subject: [PATCH 360/419] Add some convenience mappings for search, join, delete and paste use only english spell check now --- lua/editor.lua | 2 +- lua/mapping/editor.lua | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 lua/mapping/editor.lua diff --git a/lua/editor.lua b/lua/editor.lua index f0d3039..7640a1c 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -92,7 +92,7 @@ o.showmatch = true o.complete = "kspell" -- Enable spell checking for español y ingles-- -o.spelllang = "en,es" +o.spelllang = "en" --"en,es" -- Show best nine spell checking candidates at most o.spellsuggest = "best,9" diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua new file mode 100644 index 0000000..65901ca --- /dev/null +++ b/lua/mapping/editor.lua @@ -0,0 +1,17 @@ +require("utils") + +local opt = { remap = true } + +-- search selected region on current line +map("v", "//", [[y/\V=escape(@",'/\')]], opt) + +-- idea |copy_history:| keypress to extract search properly from history without \V +map("n", "B", "m`0i``i", opt) -- J(join) B(BackJoin): move text after cursor to next line + +-- keep pasting over the same thing, ie. delete content and paste something in it place +map("n", "p", [[m`0"_DP``]], opt) +map("v", "p", [[m`"_dP``]], opt) + +-- delete content without clobbering registers +map("n", "d", [["_dd]], opt) +map("v", "d", [["_d]], opt) From fd9ee0e062b62e215ebca03f57ff3a0acc4ac236 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 15 Jul 2022 20:08:55 +0000 Subject: [PATCH 361/419] Use neovim's new autocommand api for all autocommands --- lua/editor.lua | 29 ++++++++++++++++++----------- lua/mapping/highlighting.lua | 2 +- lua/mapping/init.lua | 1 + lua/terminal.lua | 24 ++++++++++++++++-------- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 7640a1c..50c4c95 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,11 +1,12 @@ local o = vim.opt -- editor options local g = vim.g -- Global editor variables -local cmd = vim.cmd -- execute vimscript in lua local fn = vim.fn -- invoke vim-functions in lua +local autogroup = vim.api.nvim_create_augroup -- create autocmd group +local autocmd = vim.api.nvim_create_autocmd -- create autocmd + -- Remap leader key to , -- With a map leader it's possible to do extra key combinations -- like w saves the current file - g.mapleader = "," -- Set clipboard to the + registers only @@ -17,12 +18,12 @@ end -- Restore cursor to file position in previous editing session -- This autocommand jumps to the last known position in a file -- just after opening it, if the '-- mark is set: > -cmd([[ -augroup restore_cursor - autocmd! - autocmd BufReadPost * call setpos(".", getpos("'\"")) -augroup END -]]) +local RetoreCursorPosition = autogroup("RetoreCursorPosition", { clear = true }) +autocmd({ "BufReadPost" }, { + group = RetoreCursorPosition, + pattern = { "*" }, + command = [[call setpos(".", getpos("'\""))]], +}) -- Show line numbers o.number = true @@ -149,10 +150,16 @@ o.foldmethod = "indent" o.foldlevel = 99 -- Remove Trailing whitespaces in all files -cmd([[autocmd BufWritePre * %s/\s\+$//e]]) +autocmd({ "BufWritePre" }, { pattern = { "*" }, command = [[%s/\s\+$//e]] }) -- automatically show diagnostics on current line -cmd([[autocmd CursorHold * lua vim.diagnostic.open_float(nil,{focus=false})]]) +autocmd({ "CursorHold" }, { + pattern = { "*" }, + command = "lua vim.diagnostic.open_float(nil,{focus=false})", +}) -- format files on save -cmd([[autocmd BufWritePre * lua vim.lsp.buf.formatting_seq_sync()]]) +autocmd( + { "BufWritePre" }, + { pattern = { "*" }, command = "lua vim.lsp.buf.formatting_seq_sync()" } +) diff --git a/lua/mapping/highlighting.lua b/lua/mapping/highlighting.lua index f940096..4b624fa 100644 --- a/lua/mapping/highlighting.lua +++ b/lua/mapping/highlighting.lua @@ -1,3 +1,3 @@ require("utils") --- Use l to clear the highlighting of :set hlsearch. +-- Use hl to clear the highlighting of :set hlsearch. map("n", "hl", "nohl") diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 333fbf6..cfc0d68 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -1,3 +1,4 @@ +require("mapping.editor") require("mapping.spellcheck") require("mapping.tab_buffer") require("mapping.highlighting") diff --git a/lua/terminal.lua b/lua/terminal.lua index ade6f03..c82fdde 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -1,11 +1,19 @@ +local autocmd = vim.api.nvim_create_autocmd -- create autocmd +local autogroup = vim.api.nvim_create_augroup -- create autocmd group + -- open new split panes to right and below vim.go.splitright = true vim.go.splitbelow = true -vim.cmd([[ - augroup Terminal - autocmd! - au TermOpen * startinsert - au TermOpen * set nonumber - au TermOpen * set norelativenumber - augroup end -]]) + +-- define autocmd in a group so that you can clear it easily +local Terminal = autogroup("Terminal", { clear = true }) + +autocmd({ "TermOpen" }, { + group = Terminal, + pattern = { "*" }, + callback = function() + vim.cmd([[ startinsert ]]) + vim.wo.number = false + vim.wo.relativenumber = false + end, +}) From 1201c79f2b0a708a09ce5353ec616c80ade1a79b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 15 Jul 2022 21:37:30 +0000 Subject: [PATCH 362/419] Refactor editor module to use its specific scope option set global-local option with vim.o set global option with vim.go set buffer-local option with vim.bo set window-local option with vim.wo and for where convenience is necessary use vim.opt*/global/local to be able to use more natural lua syntax like maps/dictionaries and :append :get etc ... fn's in terminal module set window-local options before startinsert --- lua/editor.lua | 88 ++++++++++++++++++++++-------------------------- lua/terminal.lua | 2 +- 2 files changed, 42 insertions(+), 48 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 50c4c95..c31f8f6 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,13 +1,15 @@ -local o = vim.opt -- editor options -local g = vim.g -- Global editor variables +local o = vim.o -- set editor global-local editor options +local wo = vim.wo -- set window-local editor options +local bo = vim.bo -- set buffer-local editor options +local g = vim.go -- set global editor editor options local fn = vim.fn -- invoke vim-functions in lua local autogroup = vim.api.nvim_create_augroup -- create autocmd group local autocmd = vim.api.nvim_create_autocmd -- create autocmd -- Remap leader key to , -- With a map leader it's possible to do extra key combinations --- like w saves the current file -g.mapleader = "," +-- vim.g sets editor global variables +vim.g.mapleader = "," -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed @@ -26,128 +28,120 @@ autocmd({ "BufReadPost" }, { }) -- Show line numbers -o.number = true +wo.number = true -- Show the line number relative to the line with the cursor in front of each line. -o.relativenumber = true +wo.relativenumber = true --Make a backup before overwriting a file. The backup is removed after the file was successfully written -o.writebackup = true +g.writebackup = true -- tells neovim how backups are done o.backupcopy = "auto" -- The extension to be used for vim backup files -o.backupext = ".vimbak" +g.backupext = ".vimbak" -- enable saving unsaved/unwritten files in a *.swp file -o.swapfile = true +bo.swapfile = true -- saves undo history to an undo file when writing a buffer to a file, and restores undo -- history from the same file on buffer read. -o.undofile = true +bo.undofile = true -- Maximum number of changes that can be undone. o.undolevels = 30000 -- Don't redraw screen when executing macros,registers or untyped commands -o.lazyredraw = true - --- Incremental live completion -o.inccommand = "nosplit" +g.lazyredraw = true -- You will have bad experience for diagnostic messages when it's default 4000. -o.updatetime = 100 +g.updatetime = 100 -- don't give |ins-completion-menu| messages. -o.shortmess = "c" +g.shortmess = "c" -- always merge sign column and number column into one -o.signcolumn = "yes" +wo.signcolumn = "yes" -- always expands tab to spaces. It is good when peers use different editor. -o.expandtab = true +bo.expandtab = true -- Don't let autocomplete affect usual typing habits -o.completeopt = "menuone,noselect" +vim.opt_global.completeopt = { "menuone", "noselect" } -- This option allows you to switch between multiple buffers -o.hidden = true -- without saving a changed buffer +g.hidden = true -- without saving a changed buffer -- Automatically enable mouse usage -o.mouse = "a" +g.mouse = "a" -- Wrap-broken line prefix o.showbreak = [[>>>\ \ \]] -- enable line wrap -o.wrap = true +wo.wrap = true -- Line wrap (number of cols) -o.textwidth = 117 +bo.textwidth = 117 -- Highlight matching brace -o.showmatch = true +g.showmatch = true +-- TODO: improve completions by using k{dict} and s{tsr} .:h 'complete' -- text complete with CTRL-N or CTRL-P -o.complete = "kspell" +bo.complete = "kspell" -- Enable spell checking for español y ingles-- -o.spelllang = "en" --"en,es" +bo.spelllang = "en" --"en,es" -- Show best nine spell checking candidates at most -o.spellsuggest = "best,9" +vim.opt_global.spellsuggest = { "best", "9" } -- When a word is CamelCased, assume "Cased" is a separate word: every upper-case character -- in a word that comes after a lower case character indicates the start of a new word. -o.spelloptions = "camel" +bo.spelloptions = "camel" -- Use visual bell (no beeping) -o.visualbell = true +g.visualbell = true -- Always case-insensitive -o.ignorecase = true +g.ignorecase = true -- Enable smart-case search -o.smartcase = true +g.smartcase = true -- case insensitive auto completion -o.wildignorecase = true +g.wildignorecase = true -- Number of auto-indent spaces -o.shiftwidth = 4 +bo.shiftwidth = 4 -- Enable smart-indent -o.smartindent = true +bo.smartindent = true -- Number of spaces per Tab -o.softtabstop = 4 +bo.softtabstop = 4 -- Prompt confirmation dialogs -o.confirm = true - --- Show row and column ruler information -o.ruler = true +g.confirm = true -- Command line height -o.cmdheight = 2 +g.cmdheight = 2 -- Auto-write all file changes -o.autowriteall = true - --- Set the history size to maximum. by default it is 20 -o.history = 10000 +g.autowriteall = true -- Display unprintable characters f12 - switches o.list = true -- Unprintable chars mapping -o.listchars = { tab = "••", trail = "•", extends = "»", precedes = "«" } +vim.opt.listchars = { tab = "••", trail = "•", extends = "»", precedes = "«" } -- Enable folding -o.foldmethod = "indent" +wo.foldmethod = "indent" -o.foldlevel = 99 +wo.foldlevel = 99 -- Remove Trailing whitespaces in all files autocmd({ "BufWritePre" }, { pattern = { "*" }, command = [[%s/\s\+$//e]] }) diff --git a/lua/terminal.lua b/lua/terminal.lua index c82fdde..abc72e1 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -12,8 +12,8 @@ autocmd({ "TermOpen" }, { group = Terminal, pattern = { "*" }, callback = function() - vim.cmd([[ startinsert ]]) vim.wo.number = false vim.wo.relativenumber = false + vim.api.nvim_command("startinsert") end, }) From 740f7f28b3f8a0edbd0cd9c351e4b40c182e6226 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 19 Jul 2022 23:04:21 +0000 Subject: [PATCH 363/419] Enable backup option and add /tmp as the default backup dir improve editor settings to make sure to use space over tabs remove cmdline source for nvim-cmp plugin --- lua/editor.lua | 28 ++++++++++++++++++++-------- lua/plugins.lua | 1 - 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index c31f8f6..c607f99 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -34,8 +34,17 @@ wo.number = true wo.relativenumber = true --Make a backup before overwriting a file. The backup is removed after the file was successfully written +-- unless the 'backup' option is also on. g.writebackup = true +--Make a backup before overwriting a file. Leave it around after the file has been successfully written. +--this make sure you alway have a backup of a file around,meaning in cases where there is no swapfile +--to recover from you can use the backup file directly +g.backup = true + +--List of directories for the backup file +vim.opt_global.backupdir = { "/tmp//" } + -- tells neovim how backups are done o.backupcopy = "auto" @@ -64,9 +73,6 @@ g.shortmess = "c" -- always merge sign column and number column into one wo.signcolumn = "yes" --- always expands tab to spaces. It is good when peers use different editor. -bo.expandtab = true - -- Don't let autocomplete affect usual typing habits vim.opt_global.completeopt = { "menuone", "noselect" } @@ -114,14 +120,20 @@ g.smartcase = true -- case insensitive auto completion g.wildignorecase = true +--Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. +--This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. +--Number of spaces that a in the file counts for +bo.tabstop = 4 + -- Number of auto-indent spaces bo.shiftwidth = 4 --- Enable smart-indent -bo.smartindent = true - -- Number of spaces per Tab -bo.softtabstop = 4 +-- When 'softtabstop' is negative, the value of 'shiftwidth' is used. +bo.softtabstop = -1 + +-- always expands tab to spaces. It is good when peers use different editor. +bo.expandtab = true -- Prompt confirmation dialogs g.confirm = true @@ -133,7 +145,7 @@ g.cmdheight = 2 g.autowriteall = true -- Display unprintable characters f12 - switches -o.list = true +wo.list = true -- Unprintable chars mapping vim.opt.listchars = { tab = "••", trail = "•", extends = "»", precedes = "«" } diff --git a/lua/plugins.lua b/lua/plugins.lua index 81a88bb..19799d7 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -74,7 +74,6 @@ require("paq")({ "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji - "f3fora/cmp-spell", -- spell source for nvim-cmp based on vim's spellsuggest -- Auto pairs { "windwp/nvim-autopairs" }, From 93c112b30fc681c5c459269d2f23d96661bf33d6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Tue, 19 Jul 2022 23:11:21 +0000 Subject: [PATCH 364/419] Setup completion for / and : --- lua/plugrc/compe.lua | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 9d7479d..bdc16d2 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -8,10 +8,11 @@ local has_words_before = function() end local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 - and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1] - :sub(col, col) - :match("%s") - == nil + and vim.api + .nvim_buf_get_lines(0, line - 1, line, true)[1] + :sub(col, col) + :match("%s") + == nil end local kind_icons = { @@ -52,11 +53,7 @@ cmp.setup({ formatting = { format = function(entry, vim_item) -- Kind icons - vim_item.kind = string.format( - "%s", - kind_icons[vim_item.kind], - vim_item.kind - ) -- This concatonates the icons with the name of the item kind + vim_item.kind = string.format("%s", kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind -- Source vim_item.menu = ({ buffer = "[Buffer]", @@ -71,7 +68,7 @@ cmp.setup({ return vim_item end, }, - mapping = { + mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), [""] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), @@ -109,8 +106,8 @@ cmp.setup({ "i", "s", }), - }, - sources = { + }), + sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "buffer" }, { name = "luasnip" }, @@ -118,6 +115,21 @@ cmp.setup({ { name = "nvim_lua" }, { name = "emoji" }, { name = "neorg" }, - { name = "spell" }, - }, + }), +}) + +-- Use buffer 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 = "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" }, + }), }) From f56653050a71008bfc02f91fa23874ca45f8dc7e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Jul 2022 04:57:48 +0000 Subject: [PATCH 365/419] Configure and use lua's default formatter --- .editorconfig | 111 ++++++++++++++++++++++++++++++++++ .stylua.toml | 2 - lua/plugrc/lspconfig/init.lua | 1 - 3 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 .editorconfig delete mode 100644 .stylua.toml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..712f422 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,111 @@ +# see https://github.com/CppCXY/EmmyLuaCodeStyle + +#https://github.com/CppCXY/EmmyLuaCodeStyle/blob/master/docs/format_config_EN.md +[*.lua] +# [basic code reformat option] +# optional space/tab +indent_style = space +# if indent_style is space, this is valid +indent_size = 4 +# if indent_style is tab, this is valid +tab_width = 4 +# none/single/double +quote_style = none +# keep/remove/remove_table_only/remove_string_only/unambiguous_remove_string_only +call_arg_parentheses = keep +# only support number +continuation_indent_size = 4 +# if true, continuation_indent_size for local or assign statement is invalid +# however, if the expression list has cross row expression, it will not be aligned to the first expression +local_assign_continuation_align_to_first_expression = false +# function call expression's args will align to first arg +# however, if the args has cross row arg, it will not be aligned to the first arg +align_call_args = false +# if true, all function define params will align to first param +align_function_define_params = true +# +align_chained_expression_statement = false +# if true, format like this "local t = { 1, 2, 3 }" +keep_one_space_between_table_and_bracket = true +# if indent_style is tab, this option is invalid +align_table_field_to_first_field = false +# if true, ormat like this "local t = 1" +keep_one_space_between_namedef_and_attribute = true +# continous line distance +max_continuous_line_distance = 1 +# see document for detail +continuous_assign_statement_align_to_equal_sign = true +# see document for detail +continuous_assign_table_field_align_to_equal_sign = true +# if true, the label loses its current indentation +label_no_indent = false +# if true, there will be no indentation in the do statement +do_statement_no_indent = false +# if true, the conditional expression of the if statement will not be a continuation line indent +if_condition_no_continuation_indent = false +# +if_branch_comments_after_block_no_indent = false +# if true, t[#t+1] will not space wrapper '+' +table_append_expression_no_space = false +# if statement will align like switch case +if_condition_align_with_each_other = false + +long_chain_expression_allow_one_space_after_colon = false + +remove_empty_header_and_footer_lines_in_function = true + +remove_expression_list_finish_comma = true +# optional crlf/lf/cr/auto, if it is 'auto', in windows it is crlf other platforms are lf +end_of_line = auto +# +detect_end_of_line = false + +space_before_function_open_parenthesis = false + +space_before_open_square_bracket = false + +# this mean utf8 length , if this is 'unset' then the line width is no longer checked +max_line_length = 120 + +# [line layout] +# The following configuration supports four expressions +# minLine:${n} +# keepLine +# keepLine:${n} +# maxLine:${n} + +keep_line_after_if_statement = minLine:0 +keep_line_after_do_statement = minLine:0 +keep_line_after_while_statement = minLine:0 +keep_line_after_repeat_statement = minLine:0 +keep_line_after_for_statement = minLine:0 +keep_line_after_local_or_assign_statement = keepLine +keep_line_after_function_define_statement = keepLine:1 +keep_line_after_expression_statement = keepLine + +#https://github.com/CppCXY/EmmyLuaCodeStyle/blob/master/docs/diagnosis_config_EN.md +# [diagnostic] +# the following is code diagnostic options +enable_check_codestyle = true + +# this will check text end with new line(format always end with new line) +insert_final_newline = true + +# [name style check] +enable_name_style_check = false +# the following is name style check rule +# base option off/camel_case/snake_case/upper_snake_case/pascal_case/same(filename/first_param/'', snake_case/pascal_case/camel_case) +# all option can use '|' represent or +# for example: +# snake_case | upper_snake_case +# same(first_param, snake_case) +# same('m') +local_name_define_style = snake_case +function_param_name_style = snake_case +function_name_define_style = snake_case +local_function_name_define_style = snake_case +table_field_name_define_style = snake_case +global_variable_name_define_style = snake_case|upper_snake_case +module_name_define_style = same('m')|same(filename, snake_case) +require_module_name_style = same(first_param, snake_case) +class_name_define_style = same(filename, snake_case) diff --git a/.stylua.toml b/.stylua.toml deleted file mode 100644 index a9a9c91..0000000 --- a/.stylua.toml +++ /dev/null @@ -1,2 +0,0 @@ -column_width = 80 -indent_type = "Spaces" diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index d447441..117bd88 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -69,7 +69,6 @@ local function setup_servers() null_ls.setup({ diagnostics_format = "#{m} (#{s})", sources = { - null_ls.builtins.formatting.stylua, null_ls.builtins.diagnostics.cppcheck.with({ extra_args = { "--inconclusive", From 7d8e0ae93684e52ff79fc30963e6547f69fffd19 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Jul 2022 23:52:35 +0000 Subject: [PATCH 366/419] Use the default lua-language-server formatter configuration Only create .editorconfig in the future if there is a strong need for it to be modified --- .editorconfig | 111 -------------------------------------------------- 1 file changed, 111 deletions(-) delete mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 712f422..0000000 --- a/.editorconfig +++ /dev/null @@ -1,111 +0,0 @@ -# see https://github.com/CppCXY/EmmyLuaCodeStyle - -#https://github.com/CppCXY/EmmyLuaCodeStyle/blob/master/docs/format_config_EN.md -[*.lua] -# [basic code reformat option] -# optional space/tab -indent_style = space -# if indent_style is space, this is valid -indent_size = 4 -# if indent_style is tab, this is valid -tab_width = 4 -# none/single/double -quote_style = none -# keep/remove/remove_table_only/remove_string_only/unambiguous_remove_string_only -call_arg_parentheses = keep -# only support number -continuation_indent_size = 4 -# if true, continuation_indent_size for local or assign statement is invalid -# however, if the expression list has cross row expression, it will not be aligned to the first expression -local_assign_continuation_align_to_first_expression = false -# function call expression's args will align to first arg -# however, if the args has cross row arg, it will not be aligned to the first arg -align_call_args = false -# if true, all function define params will align to first param -align_function_define_params = true -# -align_chained_expression_statement = false -# if true, format like this "local t = { 1, 2, 3 }" -keep_one_space_between_table_and_bracket = true -# if indent_style is tab, this option is invalid -align_table_field_to_first_field = false -# if true, ormat like this "local t = 1" -keep_one_space_between_namedef_and_attribute = true -# continous line distance -max_continuous_line_distance = 1 -# see document for detail -continuous_assign_statement_align_to_equal_sign = true -# see document for detail -continuous_assign_table_field_align_to_equal_sign = true -# if true, the label loses its current indentation -label_no_indent = false -# if true, there will be no indentation in the do statement -do_statement_no_indent = false -# if true, the conditional expression of the if statement will not be a continuation line indent -if_condition_no_continuation_indent = false -# -if_branch_comments_after_block_no_indent = false -# if true, t[#t+1] will not space wrapper '+' -table_append_expression_no_space = false -# if statement will align like switch case -if_condition_align_with_each_other = false - -long_chain_expression_allow_one_space_after_colon = false - -remove_empty_header_and_footer_lines_in_function = true - -remove_expression_list_finish_comma = true -# optional crlf/lf/cr/auto, if it is 'auto', in windows it is crlf other platforms are lf -end_of_line = auto -# -detect_end_of_line = false - -space_before_function_open_parenthesis = false - -space_before_open_square_bracket = false - -# this mean utf8 length , if this is 'unset' then the line width is no longer checked -max_line_length = 120 - -# [line layout] -# The following configuration supports four expressions -# minLine:${n} -# keepLine -# keepLine:${n} -# maxLine:${n} - -keep_line_after_if_statement = minLine:0 -keep_line_after_do_statement = minLine:0 -keep_line_after_while_statement = minLine:0 -keep_line_after_repeat_statement = minLine:0 -keep_line_after_for_statement = minLine:0 -keep_line_after_local_or_assign_statement = keepLine -keep_line_after_function_define_statement = keepLine:1 -keep_line_after_expression_statement = keepLine - -#https://github.com/CppCXY/EmmyLuaCodeStyle/blob/master/docs/diagnosis_config_EN.md -# [diagnostic] -# the following is code diagnostic options -enable_check_codestyle = true - -# this will check text end with new line(format always end with new line) -insert_final_newline = true - -# [name style check] -enable_name_style_check = false -# the following is name style check rule -# base option off/camel_case/snake_case/upper_snake_case/pascal_case/same(filename/first_param/'', snake_case/pascal_case/camel_case) -# all option can use '|' represent or -# for example: -# snake_case | upper_snake_case -# same(first_param, snake_case) -# same('m') -local_name_define_style = snake_case -function_param_name_style = snake_case -function_name_define_style = snake_case -local_function_name_define_style = snake_case -table_field_name_define_style = snake_case -global_variable_name_define_style = snake_case|upper_snake_case -module_name_define_style = same('m')|same(filename, snake_case) -require_module_name_style = same(first_param, snake_case) -class_name_define_style = same(filename, snake_case) From 5b93a7f1f70cd6caeb540f9ee2dd19ac1dd35328 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 20 Jul 2022 23:53:23 +0000 Subject: [PATCH 367/419] Set all buffer local options with global-local option this fixes some inconsistencies with neovim between buffer-local and global-local editor options --- lua/editor.lua | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index c607f99..7ca3ddc 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,6 +1,5 @@ local o = vim.o -- set editor global-local editor options local wo = vim.wo -- set window-local editor options -local bo = vim.bo -- set buffer-local editor options local g = vim.go -- set global editor editor options local fn = vim.fn -- invoke vim-functions in lua local autogroup = vim.api.nvim_create_augroup -- create autocmd group @@ -52,11 +51,11 @@ o.backupcopy = "auto" g.backupext = ".vimbak" -- enable saving unsaved/unwritten files in a *.swp file -bo.swapfile = true +o.swapfile = true -- saves undo history to an undo file when writing a buffer to a file, and restores undo -- history from the same file on buffer read. -bo.undofile = true +o.undofile = true -- Maximum number of changes that can be undone. o.undolevels = 30000 @@ -89,24 +88,24 @@ o.showbreak = [[>>>\ \ \]] wo.wrap = true -- Line wrap (number of cols) -bo.textwidth = 117 +o.textwidth = 117 -- Highlight matching brace g.showmatch = true -- TODO: improve completions by using k{dict} and s{tsr} .:h 'complete' -- text complete with CTRL-N or CTRL-P -bo.complete = "kspell" +o.complete = "kspell" -- Enable spell checking for español y ingles-- -bo.spelllang = "en" --"en,es" +o.spelllang = "en" --"en,es" -- Show best nine spell checking candidates at most vim.opt_global.spellsuggest = { "best", "9" } -- When a word is CamelCased, assume "Cased" is a separate word: every upper-case character -- in a word that comes after a lower case character indicates the start of a new word. -bo.spelloptions = "camel" +o.spelloptions = "camel" -- Use visual bell (no beeping) g.visualbell = true @@ -123,17 +122,17 @@ g.wildignorecase = true --Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. --This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. --Number of spaces that a in the file counts for -bo.tabstop = 4 +o.tabstop = 4 -- Number of auto-indent spaces -bo.shiftwidth = 4 +o.shiftwidth = 4 -- Number of spaces per Tab -- When 'softtabstop' is negative, the value of 'shiftwidth' is used. -bo.softtabstop = -1 +o.softtabstop = -1 -- always expands tab to spaces. It is good when peers use different editor. -bo.expandtab = true +o.expandtab = true -- Prompt confirmation dialogs g.confirm = true From ec0eece23530789480bb1a13ff6e98ccf33fd6ef Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 01:35:48 +0000 Subject: [PATCH 368/419] Improve autocmd for auto diagnostic with floating window --- lua/editor.lua | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 7ca3ddc..e3475d3 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -158,9 +158,17 @@ wo.foldlevel = 99 autocmd({ "BufWritePre" }, { pattern = { "*" }, command = [[%s/\s\+$//e]] }) -- automatically show diagnostics on current line -autocmd({ "CursorHold" }, { - pattern = { "*" }, - command = "lua vim.diagnostic.open_float(nil,{focus=false})", +autocmd("CursorHold", { + callback = function() + local opts = { + focusable = false, + close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, + border = "shadow", + source = "if_many", + severity_sort = true, + } + vim.diagnostic.open_float(nil, opts) + end }) -- format files on save From 3bc450959d80926d0db02d2ae9490abb3ba568d3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 01:40:43 +0000 Subject: [PATCH 369/419] Improve telescopes setup and add mapping for useful builtins better organise packadd for need plugins add mappings C-[ for closing window use git grep | gnu grep for vimgrep_arguments make ff more robust by having a fallback improve mapping by using callback fn's --- lua/lazy/telescope.lua | 127 +++++++++++++++++++++++++++++++---------- 1 file changed, 97 insertions(+), 30 deletions(-) diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index d71af0e..d860700 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -1,33 +1,100 @@ -- Using lua functions require("utils") local opt = { silent = true } -map( - "n", - "ff", - [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').find_files()]], - opt -) -map( - "n", - "fg", - [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').live_grep()]], - opt -) -map( - "n", - "fh", - [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').help_tags()]], - opt -) -map( - "n", - "fc", - [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').command_history()]], - opt -) -map( - "n", - "fr", - [[packadd popup.nvim|packadd telescope.nvim|lua require('telescope.builtin').reloader()]], - opt -) + +local function telescopesetup() + vim.cmd([[ + packadd popup.nvim + packadd telescope.nvim + ]]) + + local actions = require("telescope.actions") + require("telescope").setup { + defaults = { + mappings = { + i = { + [""] = actions.close + }, + }, + vimgrep_arguments = { + -- "grep", "--extended-regexp", "--color=never", "--with-filename", "--line-number", "-b", -- grep doesn't support a `--column` option :( + -- "--ignore-case", "--recursive", "--no-messages", "--exclude-dir=*cache*", "--exclude-dir=*.git", + -- "--exclude=.*", "--binary-files=without-match" + "git", "grep", "--full-name", "--line-number", "--column", "--extended-regexp", "--ignore-case", + "--no-color", "--recursive", "--recurse-submodules", "-I" + }, + } + } +end + +-- File Pickers +--Lists files in your current working directory, respects .gitignore +map("n", "ff", + --Falling back to find_files if git_files can't find a .git directory + function() + telescopesetup() + local opts = {} -- define here if you want to define something + local ok = pcall(require "telescope.builtin".git_files, opts) + if not ok then require "telescope.builtin".find_files(opts) end + end, opt) + +--Searches for the string under your cursor in your current working directory +map("n", "gs", + function() + telescopesetup() + return require('telescope.builtin').grep_string() + end, opt) + +-- Search for a string in your current working directory and get results live as you type (respecting .gitignore) +map("n", "lg", + function() + telescopesetup() + return require('telescope.builtin').live_grep() + end, opt) + + +--Vim Pickers +--Lists previously open files +map("n", "of", + function() + telescopesetup() + return require('telescope.builtin').oldfiles() + end, opt) +--Lists available help tags and opens a new window with the relevant help info on +map("n", "ht", + function() + telescopesetup() + return require('telescope.builtin').help_tags() + end, opt) +--Lists vim options, allows you to edit the current value on +map("n", "vo", + function() + telescopesetup() + return require('telescope.builtin').vim_options() + end, opt) +--Lists normal mode keymappings +map("n", "km", + function() + telescopesetup() + return require('telescope.builtin').keymaps() + end, opt) +--Live fuzzy search inside of the currently open buffer +map("n", "sw", + function() + telescopesetup() + return require('telescope.builtin').current_buffer_fuzzy_find() + end, opt) +--Lists the results incl. multi-selections of the previous picker +map("n", "rs", + function() + telescopesetup() + return require('telescope.builtin').resume() + end, opt) + +--Lists Picker +--Lists Lua modules and reload them on . +map("n", "r", + function() + telescopesetup() + return require('telescope.builtin').reloader() + end, opt) From 34640659f3ac749f50b13db3ec229f8562e5c3ac Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 01:58:56 +0000 Subject: [PATCH 370/419] Change highlight for Search --- lua/mapping/lspconfig.lua | 7 +------ lua/syntax.lua | 5 +++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index be38fe0..a8e87e7 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -11,12 +11,7 @@ map("n", "gd", "lua vim.lsp.buf.definition()", opts) map("n", "gi", "lua vim.lsp.buf.implementation()", opts) -- set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) map("n", "gr", "Trouble lsp_references", opts) -map( - "n", - "lw", - "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", - opts -) +map("n", "lw", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) map("n", "td", "lua vim.lsp.buf.type_definition()", opts) map("n", "rn", "lua vim.lsp.buf.rename()", opts) map("n", "ca", "lua vim.lsp.buf.code_action()", opts) diff --git a/lua/syntax.lua b/lua/syntax.lua index 12d5d8c..1c6299b 100644 --- a/lua/syntax.lua +++ b/lua/syntax.lua @@ -2,7 +2,8 @@ vim.api.nvim_set_hl(0, "Search", { ctermfg = 0, ctermbg = 11, cterm = { bold = true }, - bg = "NONE", - fg = "DarkCyan", + bg = "Blue", + fg = "Magenta", standout = true, + underdot = true, }) From 75329e784d193031f8590a83d1a4a48f6f3c4f8d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 02:29:29 +0000 Subject: [PATCH 371/419] Move trouble.nvim back to lazy module Also increase terminal size to 15 --- lua/lazy/init.lua | 1 + lua/lazy/trouble.lua | 82 ++++++++++++++++++++++++++++++++++++++++ lua/mapping/init.lua | 1 - lua/mapping/terminal.lua | 2 +- lua/mapping/trouble.lua | 8 ---- lua/plugins.lua | 2 +- lua/plugrc/init.lua | 1 - lua/plugrc/trouble.lua | 44 --------------------- 8 files changed, 85 insertions(+), 56 deletions(-) create mode 100644 lua/lazy/trouble.lua delete mode 100644 lua/mapping/trouble.lua delete mode 100644 lua/plugrc/trouble.lua diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 380c1e4..82e4e18 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,2 +1,3 @@ require("lazy.telescope") require("lazy.symbols") +require("lazy.trouble") diff --git a/lua/lazy/trouble.lua b/lua/lazy/trouble.lua new file mode 100644 index 0000000..9fd677d --- /dev/null +++ b/lua/lazy/trouble.lua @@ -0,0 +1,82 @@ +require("utils") + +local function troublesetup() + vim.cmd([[packadd trouble.nvim]]) + + require("trouble").setup({ + position = "bottom", -- position of the list can be: bottom, top, left, right + height = 10, -- height of the trouble list when position is top or bottom + width = 50, -- width of the list when position is left or right + icons = true, -- use devicons for filenames + mode = "document_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist" + fold_open = "", -- icon used for open folds + fold_closed = "", -- icon used for closed folds + action_keys = { -- key mappings for actions in the trouble list + -- map to {} to remove a mapping, for example: + -- close = {}, + close = "q", -- close the list + cancel = "", -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = { "", "" }, -- jump to the diagnostic or open / close folds + open_split = { "" }, -- open buffer in new split + open_vsplit = { "" }, -- open buffer in new vsplit + open_tab = { "" }, -- open buffer in new tab + jump_close = { "o" }, -- jump to the diagnostic and close the list + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "K", -- opens a small poup with the full multiline message + preview = "p", -- preview the diagnostic location + close_folds = { "zM", "zm" }, -- close all folds + open_folds = { "zR", "zr" }, -- open all folds + toggle_fold = { "zA", "za" }, -- toggle fold of current file + previous = "k", -- preview item + next = "j", -- next item + }, + indent_lines = true, -- add an indent guide below the fold icons + auto_open = false, -- automatically open the list when you have diagnostics + auto_close = true, -- automatically close the list when you have no diagnostics + auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window + auto_fold = false, -- automatically fold a file trouble list at creation + signs = { + -- icons / text used for a diagnostic + error = "", + warning = "", + hint = "", + information = "", + other = "﫠", + }, + use_lsp_diagnostic_signs = false, -- enabling this will use the signs defined in your lsp client + }) +end + +local opt = { silent = true } + +map("n", "tt", + function() + troublesetup() + vim.cmd([[Trouble]]) + end, opt) + +map("n", "tw", + function() + troublesetup() + vim.cmd([[Trouble workspace_diagnostics]]) + end, opt) + +map("n", "td", + function() + troublesetup() + vim.cmd([[Trouble document_diagnostics]]) + end, opt) + +map("n", "tl", + function() + troublesetup() + vim.cmd([[Trouble loclist]]) + end, opt) + +map("n", "tq", + function() + troublesetup() + vim.cmd([[Trouble quickfix]]) + end, opt) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index cfc0d68..d764533 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -5,4 +5,3 @@ require("mapping.highlighting") require("mapping.terminal") require("mapping.lspconfig") require("mapping.tree") -require("mapping.trouble") diff --git a/lua/mapping/terminal.lua b/lua/mapping/terminal.lua index ea2c799..12379e5 100644 --- a/lua/mapping/terminal.lua +++ b/lua/mapping/terminal.lua @@ -4,7 +4,7 @@ require("utils") map("n", "", function() vim.cmd([[ split term://zsh - resize 10 + resize 15 ]]) end) diff --git a/lua/mapping/trouble.lua b/lua/mapping/trouble.lua deleted file mode 100644 index 98cf96a..0000000 --- a/lua/mapping/trouble.lua +++ /dev/null @@ -1,8 +0,0 @@ -require("utils") -local opt = { silent = true } - -map("n", "tt", "Trouble", opt) -map("n", "tw", "Trouble workspace_diagnostics", opt) -map("n", "td", "Trouble document_diagnostics", opt) -map("n", "tl", "Trouble loclist", opt) -map("n", "tq", "Trouble quickfix", opt) diff --git a/lua/plugins.lua b/lua/plugins.lua index 19799d7..ae332d7 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -55,7 +55,7 @@ require("paq")({ -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing - { "folke/trouble.nvim" }, + { "folke/trouble.nvim", opt = true }, --Use Neovim as a language server to inject LSP diagnostics, code actions, --and more via Lua diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index d177231..7309043 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -9,5 +9,4 @@ require("plugrc.autopairs") require("plugrc.neorg") require("plugrc.whichkey") require("plugrc.tree") -require("plugrc.trouble") require("Comment").setup({}) diff --git a/lua/plugrc/trouble.lua b/lua/plugrc/trouble.lua deleted file mode 100644 index 3b64922..0000000 --- a/lua/plugrc/trouble.lua +++ /dev/null @@ -1,44 +0,0 @@ -require("trouble").setup({ - position = "bottom", -- position of the list can be: bottom, top, left, right - height = 10, -- height of the trouble list when position is top or bottom - width = 50, -- width of the list when position is left or right - icons = true, -- use devicons for filenames - mode = "document_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist" - fold_open = "", -- icon used for open folds - fold_closed = "", -- icon used for closed folds - action_keys = { -- key mappings for actions in the trouble list - -- map to {} to remove a mapping, for example: - -- close = {}, - close = "q", -- close the list - cancel = "", -- cancel the preview and get back to your last window / buffer / cursor - refresh = "r", -- manually refresh - jump = { "", "" }, -- jump to the diagnostic or open / close folds - open_split = { "" }, -- open buffer in new split - open_vsplit = { "" }, -- open buffer in new vsplit - open_tab = { "" }, -- open buffer in new tab - jump_close = { "o" }, -- jump to the diagnostic and close the list - toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode - toggle_preview = "P", -- toggle auto_preview - hover = "K", -- opens a small poup with the full multiline message - preview = "p", -- preview the diagnostic location - close_folds = { "zM", "zm" }, -- close all folds - open_folds = { "zR", "zr" }, -- open all folds - toggle_fold = { "zA", "za" }, -- toggle fold of current file - previous = "k", -- preview item - next = "j", -- next item - }, - indent_lines = true, -- add an indent guide below the fold icons - auto_open = false, -- automatically open the list when you have diagnostics - auto_close = true, -- automatically close the list when you have no diagnostics - auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window - auto_fold = false, -- automatically fold a file trouble list at creation - signs = { - -- icons / text used for a diagnostic - error = "", - warning = "", - hint = "", - information = "", - other = "﫠", - }, - use_lsp_diagnostic_signs = false, -- enabling this will use the signs defined in your lsp client -}) From b272b12ca2e7b68c5ca849a1ea6b4255ac80a062 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 02:30:40 +0000 Subject: [PATCH 372/419] Update README.md --- README.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0f7fa6d..73bd905 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,10 @@ and installing the server and other accompaning tools for development like linte ## Requirement -Unlike the [vim branch]() with neovim >= 0.6 most plugings written in lua and don't depend on python or node +Unlike the [vim branch]() with neovim >= 0.7 most plugings written in lua and don't depend on python or node But if you decide to use a plugin that rely's on any of these you would have to install them but I recommend you find their lua equivalent. Chances are that it will be faster (due to luajit) and more well -intergrated with neovim >= 0.6 +intergrated with neovim >= 0.7 __Neovim__ Neovim does come out of the box with luajit and treesitter support @@ -38,12 +38,12 @@ Neovim does come out of the box with luajit and treesitter support 📂 ~/.config/nvim ├── 📂 lua │ └── 📂 lazy - │ │ ├──  glow.lua │ │ ├──  init.lua │ │ ├──  symbols.lua │ │ ├──  telescope.lua │ │ └──  trouble.lua │ └── 📂 mapping + │ │ ├──  editor.lua │ │ ├──  highlighting.lua │ │ ├──  init.lua │ │ ├──  lspconfig.lua @@ -60,14 +60,16 @@ Neovim does come out of the box with luajit and treesitter support │ │ ├──  neorg.lua │ │ ├──  tree.lua │ │ └──  whichkey.lua - │ ├──  editor.lua - │ ├──  plugins.lua - │ ├──  terminal.lua │ └── 📂 ui.lua │ │ ├──  init.lua │ │ ├──  bufferline.lua │ │ ├──  lualine.lua + │ │ ├──  onedark.lua │ │ └──  treesitter.lua + │ ├──  editor.lua + │ ├──  plugins.lua + │ ├──  syntax.lua + │ ├──  terminal.lua │ └──  utils.lua ├── README.md ├── LICENSE @@ -80,13 +82,15 @@ Neovim does come out of the box with luajit and treesitter support `lua/plugrc` directory contains configuration for plugins +`lua/ui` directory contains tabline , statusline and treesitter configuration + `lua/editor` file contains neovim editor configuration. `lua/plugins` file contains the list of all plugins -`lua/terminal` file contains configuration for neovim builtin terminal +`lua/syntax` file contains syntax|highlighting commands -`lua/ui` file contains tabline , statusline and treesitter configuration +`lua/terminal` file contains configuration for neovim builtin terminal `lua/utils` file contains some resuable functions From 1b847512975273d12e1734d4aba6948250916209 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 18:57:12 +0000 Subject: [PATCH 373/419] Add gitsigns float window use shadow borders --- lua/plugrc/gitsigns.lua | 15 +++++++++++++++ lua/syntax.lua | 1 + 2 files changed, 16 insertions(+) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 4d956b1..753c764 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -1,6 +1,21 @@ require("utils") require("gitsigns").setup({ + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = true, -- Toggle with `:Gitsigns toggle_word_diff` + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + + preview_config = { + -- Options passed to nvim_open_win + border = 'shadow', + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1 + }, + on_attach = function(bufnr) local gs = package.loaded.gitsigns local opts = { buffer = bufnr } diff --git a/lua/syntax.lua b/lua/syntax.lua index 1c6299b..6465f90 100644 --- a/lua/syntax.lua +++ b/lua/syntax.lua @@ -1,3 +1,4 @@ +-- :h highlight-args and :h cterm-colors vim.api.nvim_set_hl(0, "Search", { ctermfg = 0, ctermbg = 11, From 75b4a9743dd6e96733e36f4828da9f1933476a7a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 21:00:17 +0000 Subject: [PATCH 374/419] Add mapping for `luafile %`, reload and reloadAllModules disable word_diff by default remove telescope reloader builtin use neovim's default for showbreak editor option --- lua/editor.lua | 3 --- lua/lazy/telescope.lua | 8 -------- lua/mapping/editor.lua | 27 +++++++++++++++++++++++++++ lua/plugrc/gitsigns.lua | 2 +- lua/utils.lua | 11 +++-------- 5 files changed, 31 insertions(+), 20 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index e3475d3..9a96e32 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -81,9 +81,6 @@ g.hidden = true -- without saving a changed buffer -- Automatically enable mouse usage g.mouse = "a" --- Wrap-broken line prefix -o.showbreak = [[>>>\ \ \]] - -- enable line wrap wo.wrap = true diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index d860700..37defa0 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -90,11 +90,3 @@ map("n", "rs", telescopesetup() return require('telescope.builtin').resume() end, opt) - ---Lists Picker ---Lists Lua modules and reload them on . -map("n", "r", - function() - telescopesetup() - return require('telescope.builtin').reloader() - end, opt) diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 65901ca..653b904 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -15,3 +15,30 @@ map("v", "p", [[m`"_dP``]], opt) -- delete content without clobbering registers map("n", "d", [["_dd]], opt) map("v", "d", [["_d]], opt) + +-- reload/source current file +map("n", "r", function() + vim.cmd([[luafile %]]) + print("reloaded " .. vim.fn.expand("%")) +end) + +-- reload a particular module +map("n", "rm", function() + local module_name = vim.fn.input({ + prompt = "\nEnter the name of the module you want to reload\n:", + completion = "file" + }) + if module_name == "" then + return + else + reload(module_name) + vim.notify("!Reloaded Nvim Module " .. module_name .. ".lua!", vim.log.levels.INFO) + end + +end) + +-- reload all nvim configuration modules +map("n", "ra", function() + reloadAllModules() + vim.notify("!Reloaded All Nvim Modules!", vim.log.levels.INFO) +end) diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index 753c764..fdce165 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -4,7 +4,7 @@ require("gitsigns").setup({ signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` numhl = false, -- Toggle with `:Gitsigns toggle_numhl` linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = true, -- Toggle with `:Gitsigns toggle_word_diff` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` preview_config = { diff --git a/lua/utils.lua b/lua/utils.lua index 7716165..41d14f5 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -9,7 +9,7 @@ function _G.dump(...) return ... end -function _G.reload() +function _G.reloadAllModules() for name, _ in pairs(package.loaded) do if name:match("^lazy") or name:match("^mapping") @@ -26,19 +26,14 @@ function _G.reload() end dofile(vim.env.MYVIMRC) - vim.notify("\nNvim configuration reloaded!", vim.log.levels.INFO) end -function _G.reloadModule(module) +function _G.reload(module) for name, _ in pairs(package.loaded) do if name:match("^" .. module) then package.loaded[name] = nil require(name) + return end end - - vim.notify( - "Nvim module " .. module .. " configuration reloaded!", - vim.log.levels.INFO - ) end From 0abdf1721eeb382e1676b4c7285594206add2fe0 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 21:45:08 +0000 Subject: [PATCH 375/419] Add bufferline mapping for selecting a buffer to close move cd mapping to mapping.editor remove te mapping i literally have never used it before --- lua/mapping/editor.lua | 3 +++ lua/mapping/tab_buffer.lua | 22 +++++----------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 653b904..4200537 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -16,6 +16,9 @@ map("v", "p", [[m`"_dP``]], opt) map("n", "d", [["_dd]], opt) map("v", "d", [["_d]], opt) +-- Switch CWD to the directory of the open buffer +map({ "n", "v", "o" }, "cd", "cd %:p:h:pwd", opt) + -- reload/source current file map("n", "r", function() vim.cmd([[luafile %]]) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index b326e29..e830662 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -24,16 +24,11 @@ map(mode, "bb", "bprevious", opt) -- move back to the previous map(mode, "bp", "b#", opt) -- move to the last visited buffer map(mode, "b1", "bfirst", opt) -- move to the first buffer in the buffer list map(mode, "b9", "blast", opt) -- move to the last buffer in the buffer list --- pick a buffer from the buffer list -map( - "n", - "bs", - "BufferLinePick", - vim.tbl_extend("force", opt, { - remap = false, - silent = true, - }) -) + +-- pick a buffer to view from the buffer list +map("n", "bs", "BufferLinePick", vim.tbl_extend("force", opt, { remap = false, silent = true, })) +-- pick a buffer to closes from the buffer list +map("n", "bc", "BufferLinePickClose", vim.tbl_extend("force", opt, { remap = false, silent = true, })) -- Useful mappings for managing tabs map(mode, "tnw", "tabnew", opt) @@ -45,10 +40,3 @@ map(mode, "tp", "tabprevious", opt) map(mode, "tf", "tabfirst", opt) -- pass a positive or negative argument to the command to move by that step-- map(mode, "t", "tabnext", opt) - --- Opens a new tab with the current buffer's path --- Super useful when editing files in the same directory -map(mode, "te", 'tabedit =expand("%:p:h")', opt) - --- Switch CWD to the directory of the open buffer -map(mode, "cd", "cd %:p:h:pwd", opt) From 0c48af6f2cd0dbf4e8721a4f72de62fdbaf784e7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 21 Jul 2022 22:01:22 +0000 Subject: [PATCH 376/419] change mapping for tabnew to tw add a mapping for closing telescope in normal mode --- lua/lazy/telescope.lua | 3 +++ lua/mapping/tab_buffer.lua | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index 37defa0..5da8458 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -15,6 +15,9 @@ local function telescopesetup() i = { [""] = actions.close }, + n = { + [""] = actions.close + }, }, vimgrep_arguments = { -- "grep", "--extended-regexp", "--color=never", "--with-filename", "--line-number", "-b", -- grep doesn't support a `--column` option :( diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index e830662..4789232 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -31,7 +31,7 @@ map("n", "bs", "BufferLinePick", vim.tbl_extend("force", opt, { map("n", "bc", "BufferLinePickClose", vim.tbl_extend("force", opt, { remap = false, silent = true, })) -- Useful mappings for managing tabs -map(mode, "tnw", "tabnew", opt) +map(mode, "tw", "tabnew", opt) map(mode, "to", "tabonly", opt) map(mode, "tc", "tabclose", opt) map(mode, "tm", "tabmove", opt) From b2fed0cc8f4a09571d2cc5a6ea46a414eef01923 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 24 Jul 2022 04:23:45 +0000 Subject: [PATCH 377/419] Use [b and ]b as bnext and bprevious mappings --- lua/mapping/tab_buffer.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index 4789232..3a8c62f 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -18,17 +18,17 @@ map("n", "", "l") local opt = { remap = true } local mode = { "n", "v", "o" } map(mode, "bd", "bdelete", opt) -- Close the current buffer -map(mode, "bda", "bufdo bd", opt) -- Close all the buffers -map(mode, "bf", "bnext", opt) -- move forward to the next buffer in the buffer list -map(mode, "bb", "bprevious", opt) -- move back to the previous buffer in the buffer list +map(mode, "ba", "bufdo bd", opt) -- Close all the buffers +map(mode, "]b", "bnext", opt) -- move forward to the next buffer in the buffer list +map(mode, "[b", "bprevious", opt) -- move back to the previous buffer in the buffer list map(mode, "bp", "b#", opt) -- move to the last visited buffer map(mode, "b1", "bfirst", opt) -- move to the first buffer in the buffer list map(mode, "b9", "blast", opt) -- move to the last buffer in the buffer list -- pick a buffer to view from the buffer list -map("n", "bs", "BufferLinePick", vim.tbl_extend("force", opt, { remap = false, silent = true, })) +map("n", "bs", "BufferLinePick", { silent = true, }) -- pick a buffer to closes from the buffer list -map("n", "bc", "BufferLinePickClose", vim.tbl_extend("force", opt, { remap = false, silent = true, })) +map("n", "bc", "BufferLinePickClose", { silent = true, }) -- Useful mappings for managing tabs map(mode, "tw", "tabnew", opt) From 5dba19be4150056f623b7ec75e16b89b3959bbb2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 27 Jul 2022 16:40:13 +0000 Subject: [PATCH 378/419] Fix for multiple different client offset_encodings detected for buffer --- lua/plugrc/lspconfig/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 117bd88..65be9fb 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -38,6 +38,8 @@ local function make_config() capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true + -- fix for multiple different client offset_encodings detected for buffer + capabilities.offsetEncoding = { "utf-16" } return { -- enable snippet support From 09f42069eaef9f2b3dcc12f841a14d8bc7149de7 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 29 Jul 2022 15:04:52 +0000 Subject: [PATCH 379/419] (lsp:settings)Use clang++ as the query-driver --- lua/plugrc/lspconfig/settings.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 890f2d3..386ecfc 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -34,7 +34,7 @@ settings.lua_settings = { settings.clangd_setting = { cmd = { "clangd", - "--query-driver=/usr/bin/g++", + "--query-driver=/usr/bin/clang++", "--clang-tidy", "-j=5", "--malloc-trim", From e4e8101549e4efd04ea9539c5943e000baa1ba71 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 18 Aug 2022 15:26:29 +0000 Subject: [PATCH 380/419] (lsp) Use utf-16 as default encoding for clangd --- lua/plugrc/lspconfig/init.lua | 31 +++++++++++++++---------------- lua/plugrc/lspconfig/settings.lua | 1 + 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 65be9fb..854165a 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -38,8 +38,6 @@ local function make_config() capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true - -- fix for multiple different client offset_encodings detected for buffer - capabilities.offsetEncoding = { "utf-16" } return { -- enable snippet support @@ -66,20 +64,6 @@ local function setup_servers() "bashls", } - local null_ls = require("null-ls") - - null_ls.setup({ - diagnostics_format = "#{m} (#{s})", - sources = { - null_ls.builtins.diagnostics.cppcheck.with({ - extra_args = { - "--inconclusive", - }, - }), - null_ls.builtins.diagnostics.zsh, - }, - }) - local signature_cfg = require("plugrc.lspconfig.signature") require("lsp_signature").setup(signature_cfg) @@ -101,6 +85,21 @@ local function setup_servers() end require("lspconfig")[server].setup(config) end + + local null_ls = require("null-ls") + + null_ls.setup({ + diagnostics_format = "#{m} (#{s})", + sources = { + null_ls.builtins.diagnostics.cppcheck.with({ + extra_args = { + "--inconclusive", + }, + }), + null_ls.builtins.diagnostics.zsh, + }, + }) + end setup_servers() diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index 386ecfc..f3d4463 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -38,6 +38,7 @@ settings.clangd_setting = { "--clang-tidy", "-j=5", "--malloc-trim", + "--offset-encoding=utf-16" }, filetypes = { "c", "cpp" }, -- we don't want objective-c and objective-cpp! } From b8ff51c985f9d2dcd7bce0823c31b9d18191b957 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 18 Aug 2022 15:44:08 +0000 Subject: [PATCH 381/419] (editor:mapping) Map jk to use fw as mapping for autopairs fast_wrap --- lua/mapping/editor.lua | 3 +++ lua/plugrc/autopairs.lua | 4 +++- lua/plugrc/compe.lua | 6 +++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 4200537..5ad6ca7 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -5,6 +5,9 @@ local opt = { remap = true } -- search selected region on current line map("v", "//", [[y/\V=escape(@",'/\')]], opt) +-- Map ESC to jk +map("i", "jk", "", { remap = false }) + -- idea |copy_history:| keypress to extract search properly from history without \V map("n", "B", "m`0i``i", opt) -- J(join) B(BackJoin): move text after cursor to next line diff --git a/lua/plugrc/autopairs.lua b/lua/plugrc/autopairs.lua index 45d7991..dcf49ba 100644 --- a/lua/plugrc/autopairs.lua +++ b/lua/plugrc/autopairs.lua @@ -1 +1,3 @@ -require("nvim-autopairs").setup({ fast_wrap = {} }) +require("nvim-autopairs").setup({ + fast_wrap = { map = 'fw' } +}) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index bdc16d2..e2ac375 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -69,9 +69,9 @@ cmp.setup({ end, }, mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), [""] = cmp.mapping.select_next_item(), [""] = cmp.mapping.select_prev_item(), [""] = cmp.mapping({ From 1e5d42ae6a2cb1c44aaf29fc82754dbfb2d4b0a5 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 3 Sep 2022 16:22:45 +0000 Subject: [PATCH 382/419] (lazy:symbols) Update config --- lua/lazy/symbols.lua | 93 ++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 51 deletions(-) diff --git a/lua/lazy/symbols.lua b/lua/lazy/symbols.lua index db9a3f6..5f3a432 100644 --- a/lua/lazy/symbols.lua +++ b/lua/lazy/symbols.lua @@ -1,57 +1,48 @@ -vim.g.symbols_outline = { - highlight_hovered_item = true, - show_guides = true, - auto_preview = true, - position = "right", - width = 25, - show_numbers = false, - show_relative_numbers = false, - show_symbol_details = true, - preview_bg_highlight = "Pmenu", - keymaps = { -- These keymaps can be a string or a table for multiple keys - close = { "", "q" }, - goto_location = "", - focus_location = "o", - hover_symbol = "", - toggle_preview = "K", - rename_symbol = "r", - code_actions = "a", - }, - lsp_blacklist = {}, - symbol_blacklist = {}, - symbols = { - File = { icon = "", hl = "TSURI" }, - Module = { icon = "", hl = "TSNamespace" }, - Namespace = { icon = "", hl = "TSNamespace" }, - Package = { icon = "", hl = "TSNamespace" }, - Class = { icon = "𝓒", hl = "TSType" }, - Method = { icon = "ƒ", hl = "TSMethod" }, - Property = { icon = "", hl = "TSMethod" }, - Field = { icon = "", hl = "TSField" }, - Constructor = { icon = "", hl = "TSConstructor" }, - Enum = { icon = "ℰ", hl = "TSType" }, - Interface = { icon = "ﰮ", hl = "TSType" }, - Function = { icon = "", hl = "TSFunction" }, - Variable = { icon = "", hl = "TSConstant" }, - Constant = { icon = "", hl = "TSConstant" }, - String = { icon = "𝓐", hl = "TSString" }, - Number = { icon = "#", hl = "TSNumber" }, - Boolean = { icon = "⊨", hl = "TSBoolean" }, - Array = { icon = "", hl = "TSConstant" }, - Object = { icon = "⦿", hl = "TSType" }, - Key = { icon = "🔐", hl = "TSType" }, - Null = { icon = "NULL", hl = "TSType" }, - EnumMember = { icon = "", hl = "TSField" }, - Struct = { icon = "𝓢", hl = "TSType" }, - Event = { icon = "🗲", hl = "TSType" }, - Operator = { icon = "+", hl = "TSOperator" }, - TypeParameter = { icon = "𝙏", hl = "TSParameter" }, - }, -} require("utils") + +local function symbols_setup() + vim.cmd([[ packadd symbols-outline.nvim ]]) + + local symbols_outline_opts = { + highlight_hovered_item = true, + show_guides = true, + auto_preview = false, + position = 'right', + relative_width = true, + width = 25, + auto_close = false, + show_numbers = false, + show_relative_numbers = false, + show_symbol_details = true, + preview_bg_highlight = 'Pmenu', + autofold_depth = nil, + auto_unfold_hover = true, + fold_markers = { '', '' }, + wrap = false, + keymaps = { -- These keymaps can be a string or a table for multiple keys + close = { "jk", "q" }, + goto_location = "", + focus_location = "o", + hover_symbol = "", + toggle_preview = "p", + rename_symbol = "r", + code_actions = "a", + fold = "zf", + unfold = "zu", + fold_all = "zC", + unfold_all = "zO", + fold_reset = "zR", + }, + } + require("symbols-outline").setup(symbols_outline_opts) +end + map( "n", "so", - "packadd symbols-outline.nvim|SymbolsOutline", + function() + symbols_setup() + vim.cmd([[SymbolsOutline]]) + end, { silent = true } ) From 6c04061e7f1b5a6b5a59c3211e5e57dea08cf000 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 3 Sep 2022 16:53:07 +0000 Subject: [PATCH 383/419] (mapping:spellcheck) remove unused mappings Also the default neovim mappings for spell is simple enough so I don't need these mappings --- lua/mapping/spellcheck.lua | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/lua/mapping/spellcheck.lua b/lua/mapping/spellcheck.lua index ba1c09d..43196e2 100644 --- a/lua/mapping/spellcheck.lua +++ b/lua/mapping/spellcheck.lua @@ -2,26 +2,5 @@ require("utils") -- === Spell checking === " -- For help on spell checking :help spell --- Pressing ,ts will toggle and untoggle spell checking --- toggle to alternate configuration of spellcheck -local opt = { remap = true } -local mode = { "n", "v", "o" } -map(mode, "st", "set spell!", opt) - --- Use Ctrl-x s to activate spell suggestions in insert mood - --- Shortcuts using --- next spellcheck iteam -map(mode, "sn", "]s", opt) --- previous spellcheck iteam -map(mode, "sp", "s[", opt) --- mark word as good in local spellfile :NOTE checkout zG for internal spellfile -map(mode, "sg", "gz", opt) --- mark word as wrong in local spellfile :NOTE checkout zW for internal spellfile -map(mode, "sw", "wz", opt) --- undo marking of word as good -map(mode, "usg", "ugz", opt) --- undo marking of word as wrong -map(mode, "usw", "uwz", opt) --- check for suggestions for the underlined word -map(mode, "sc", "z=", opt) +-- Pressing ,st will toggle and untoggle spell checking +map({ "n", "v", "o" }, "st", "set spell!", { remap = true }) From d57d192ec30b11998e49f799c026f9df64117b56 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 3 Sep 2022 16:55:18 +0000 Subject: [PATCH 384/419] (mapping:editor) disable "ESC" and use "jk" for "ESC" --- lua/mapping/editor.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 5ad6ca7..93cbed7 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -6,7 +6,9 @@ local opt = { remap = true } map("v", "//", [[y/\V=escape(@",'/\')]], opt) -- Map ESC to jk -map("i", "jk", "", { remap = false }) +map({ "i", "v" }, "jk", "", { remap = false }) +-- Disable ESC +map({ "i", "v" }, "", "", { remap = false }) -- idea |copy_history:| keypress to extract search properly from history without \V map("n", "B", "m`0i``i", opt) -- J(join) B(BackJoin): move text after cursor to next line From 9fea914f3b66fe5323742b7d8b500d3f4451d63a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 2 Oct 2022 01:36:40 +0000 Subject: [PATCH 385/419] Fixes for nvim 0.8 --- lua/plugrc/lspconfig/init.lua | 2 +- lua/syntax.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 854165a..904bc89 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -21,7 +21,7 @@ local on_attach = function(client, buffer) local opts = { noremap = true, silent = true } -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_range_formatting then + if client.server_capabilities.document_range_formatting then set_keymap( "v", "lf", diff --git a/lua/syntax.lua b/lua/syntax.lua index 6465f90..4e48376 100644 --- a/lua/syntax.lua +++ b/lua/syntax.lua @@ -6,5 +6,5 @@ vim.api.nvim_set_hl(0, "Search", { bg = "Blue", fg = "Magenta", standout = true, - underdot = true, + underdotted = true, }) From 7e5783009319aeaf205b20d39c19dbb6b2c7d014 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 2 Oct 2022 01:40:19 +0000 Subject: [PATCH 386/419] Update README --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 73bd905..696d7e5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # Awesome Neovim Configuration -This is to make setting up of neovim >= 0.7 a breeze. -### NOTE : for vim >= 8 checkout [vim branch](https://github.com/Ultra-Code/awesome-neovim/tree/vim) +This is to make setting up of neovim >= 0.8 a breeze. ## Awesome NeoVim with C++ @@ -25,12 +24,10 @@ and installing the server and other accompaning tools for development like linte ## Requirement -Unlike the [vim branch]() with neovim >= 0.7 most plugings written in lua and don't depend on python or node +Unlike the [vim branch]() with neovim >= 0.8 most plugings written in lua and don't depend on python or node But if you decide to use a plugin that rely's on any of these you would have to install them but I recommend you find their lua equivalent. Chances are that it will be faster (due to luajit) and more well -intergrated with neovim >= 0.7 - -__Neovim__ +intergrated with neovim >= 0.8 Neovim does come out of the box with luajit and treesitter support ## Repo structure From 567b794dad1093275dd02cd484f7177ca6ddfdab Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 19 Oct 2022 17:42:02 +0000 Subject: [PATCH 387/419] Disable autowrite by default and set maplocalleader --- lua/editor.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 9a96e32..eb05291 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -9,6 +9,7 @@ local autocmd = vim.api.nvim_create_autocmd -- create autocmd -- With a map leader it's possible to do extra key combinations -- vim.g sets editor global variables vim.g.mapleader = "," +vim.g.maplocalleader = ";" -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed @@ -169,7 +170,7 @@ autocmd("CursorHold", { }) -- format files on save -autocmd( - { "BufWritePre" }, - { pattern = { "*" }, command = "lua vim.lsp.buf.formatting_seq_sync()" } -) +-- autocmd( +-- { "BufWritePre" }, +-- { pattern = { "*" }, command = "lua vim.lsp.buf.format()" } +-- ) From c18aac19b14fe39a99002923dc976b562f2b0870 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 19 Oct 2022 17:44:42 +0000 Subject: [PATCH 388/419] Move highlight toggling to editor mapping remap ;; to key and make mapping buffer local --- README.md | 1 - lua/mapping/editor.lua | 7 +++++-- lua/mapping/highlighting.lua | 3 --- lua/mapping/init.lua | 1 - 4 files changed, 5 insertions(+), 7 deletions(-) delete mode 100644 lua/mapping/highlighting.lua diff --git a/README.md b/README.md index 696d7e5..9ec20d5 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,6 @@ Neovim does come out of the box with luajit and treesitter support │ │ └──  trouble.lua │ └── 📂 mapping │ │ ├──  editor.lua - │ │ ├──  highlighting.lua │ │ ├──  init.lua │ │ ├──  lspconfig.lua │ │ ├──  spellcheck.lua diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 93cbed7..a4203c9 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -2,13 +2,16 @@ require("utils") local opt = { remap = true } +-- Use hl to clear the highlighting of :set hlsearch. +map("n", "hl", "nohl") + -- search selected region on current line map("v", "//", [[y/\V=escape(@",'/\')]], opt) --- Map ESC to jk -map({ "i", "v" }, "jk", "", { remap = false }) -- Disable ESC map({ "i", "v" }, "", "", { remap = false }) +-- Map ESC to ;; +map({ "i", "v" }, ";;", "", { remap = false, nowait = true, buffer = true }) -- idea |copy_history:| keypress to extract search properly from history without \V map("n", "B", "m`0i``i", opt) -- J(join) B(BackJoin): move text after cursor to next line diff --git a/lua/mapping/highlighting.lua b/lua/mapping/highlighting.lua deleted file mode 100644 index 4b624fa..0000000 --- a/lua/mapping/highlighting.lua +++ /dev/null @@ -1,3 +0,0 @@ -require("utils") --- Use hl to clear the highlighting of :set hlsearch. -map("n", "hl", "nohl") diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index d764533..8b63f46 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -1,7 +1,6 @@ require("mapping.editor") require("mapping.spellcheck") require("mapping.tab_buffer") -require("mapping.highlighting") require("mapping.terminal") require("mapping.lspconfig") require("mapping.tree") From 36dcef7d7cf51929c78bbbccc4401b2e304d1de2 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 19 Oct 2022 17:49:43 +0000 Subject: [PATCH 389/419] Miscellaneous improvements Move Trouble lsp reference to trouble module Use nvim's lsp reference by default Use nvims builtin pretty_print fn for printing lua objects in _G.dump fn Pass TriggerOnly as an option to cmp's mapping.complete fn Use as the mapping for autopairs fast wrap --- lua/lazy/trouble.lua | 7 +++++++ lua/plugrc/autopairs.lua | 2 +- lua/plugrc/compe.lua | 2 +- lua/utils.lua | 4 +--- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lua/lazy/trouble.lua b/lua/lazy/trouble.lua index 9fd677d..f96d0e6 100644 --- a/lua/lazy/trouble.lua +++ b/lua/lazy/trouble.lua @@ -80,3 +80,10 @@ map("n", "tq", troublesetup() vim.cmd([[Trouble quickfix]]) end, opt) + +map("n", "tr", + function() + troublesetup(); + vim.cmd([[Trouble lsp_references]]) + end + , opt) diff --git a/lua/plugrc/autopairs.lua b/lua/plugrc/autopairs.lua index dcf49ba..252f639 100644 --- a/lua/plugrc/autopairs.lua +++ b/lua/plugrc/autopairs.lua @@ -1,3 +1,3 @@ require("nvim-autopairs").setup({ - fast_wrap = { map = 'fw' } + fast_wrap = { map = '' } }) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index e2ac375..6da68e8 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -71,7 +71,7 @@ cmp.setup({ mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), + [""] = cmp.mapping.complete({ TriggerOnly = 'triggerOnly' }), [""] = cmp.mapping.select_next_item(), [""] = cmp.mapping.select_prev_item(), [""] = cmp.mapping({ diff --git a/lua/utils.lua b/lua/utils.lua index 41d14f5..fea050d 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -4,9 +4,7 @@ function _G.map(mode, lhs, rhs, opts) end function _G.dump(...) - local objects = vim.tbl_map(vim.inspect, { ... }) - print(unpack(objects)) - return ... + vim.pretty_print(...); end function _G.reloadAllModules() From 1f7b569cdb3c7bd2c3c424af90699406fe911b69 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 19 Oct 2022 17:58:01 +0000 Subject: [PATCH 390/419] Overhaul of lsp mappings Set lsp mappings only if the buffer is attached to an lsp server set lsp mappings based on the functionalities provided by the server use for lsp mappings setup highlight groups for lsp document highlighting add mappings to enable and disable lsp document highlighting make buffer formatting async add mapping for checking if an lsp is attacted to a buffer move mappings in on_attach fn to lsp mapping Simplify on_attach fn for lsp server setup move to cmp's new api for initializing capabilities, .ie default_capabilities fn remove unused option in make_config fn --- lua/mapping/lspconfig.lua | 127 ++++++++++++++++++++++++++++------ lua/plugrc/lspconfig/init.lua | 21 +----- 2 files changed, 109 insertions(+), 39 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index a8e87e7..d1254dc 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -1,23 +1,110 @@ require("utils") --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer +local autocmd = vim.api.nvim_create_autocmd +local augroup = vim.api.nvim_create_augroup +-- map the following keys after the language server attaches to a buffer +-- See `:help vim.lsp.*` for documentation on any of the below functions +autocmd('LspAttach', { + callback = function(args) + local opts = { buffer = args.buf } --- Mappings. -local opts = { silent = true } + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client.server_capabilities.hoverProvider then + vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) + end + if client.server_capabilities.signatureHelpProvider then + map("n", "k", vim.lsp.buf.signature_help, opts) + end + if client.server_capabilities.declarationProvider then + map("n", "gD", vim.lsp.buf.declaration, opts) + end + if client.server_capabilities.definitionProvider then + map("n", "gd", vim.lsp.buf.definition, opts) + end + if client.server_capabilities.typeDefinitionProvider then + map("n", "td", vim.lsp.buf.type_definition, opts) + end + if client.server_capabilities.implementationProvider then + map("n", "gi", vim.lsp.buf.implementation, opts) + end + if client.server_capabilities.referencesProvider then + map("n", "gr", vim.lsp.buf.references, opts) + end + if client.server_capabilities.documentHighlightProvider then + local bufnr = vim.api.nvim_get_current_buf() + vim.api.nvim_set_hl(0, "LspReferenceRead", { + link = "DiffText" + }) + vim.api.nvim_set_hl(0, "LspReferenceText", { + link = "IncSearch" + }) + vim.api.nvim_set_hl(0, "LspRefDiffTexterenceWrite", { + link = "WildMenu" + }) + local doc_highlight = augroup('lsp_document_highlight', { + clear = false, + }) + local enable_highlight = function() + autocmd({ 'CursorHold', 'CursorHoldI' }, { + group = doc_highlight, + buffer = bufnr, + callback = vim.lsp.buf.document_highlight, + }) + autocmd('CursorMoved', { + group = doc_highlight, + buffer = bufnr, + callback = vim.lsp.buf.clear_references, + }) --- See `:help vim.lsp.*` for documentation on any of the below functions -map("n", "gD", "lua vim.lsp.buf.declaration()", opts) -map("n", "gd", "lua vim.lsp.buf.definition()", opts) -map("n", "gi", "lua vim.lsp.buf.implementation()", opts) --- set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) -map("n", "gr", "Trouble lsp_references", opts) -map("n", "lw", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) -map("n", "td", "lua vim.lsp.buf.type_definition()", opts) -map("n", "rn", "lua vim.lsp.buf.rename()", opts) -map("n", "ca", "lua vim.lsp.buf.code_action()", opts) -map("n", "sl", "lua vim.diagnostic.setloclist()", opts) -map("n", "f", "lua vim.lsp.buf.formatting_seq_sync()", opts) -map("n", "K", "lua vim.lsp.buf.hover()", opts) -map("n", "sh", "lua vim.lsp.buf.signature_help()", opts) -map("n", "[d", "lua vim.diagnostic.goto_prev()", opts) -map("n", "]d", "lua vim.diagnostic.goto_next()", opts) + end + local disable_highlight = function() + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds({ + buffer = bufnr, + group = doc_highlight + }) + end + map("n", "dh", disable_highlight, opts) + map("n", "eh", enable_highlight, opts) + end + if client.server_capabilities.documentSymbolProvider then + map("n", "lds", vim.lsp.buf.document_symbol, opts) + end + if client.server_capabilities.codeActionProvider then + map("n", "ca", vim.lsp.buf.code_action, opts) + map("v", "ca", vim.lsp.buf.range_code_action, opts) + end + if client.server_capabilities.documentFormattingProvider then + map("n", "f", function() + vim.lsp.buf.format({ async = true }) + end, opts) + end + if client.server_capabilities.documentRangeFormattingProvider then + map("v", "f", function() + vim.lsp.buf.format({ async = true }) + end, opts) + end + if client.server_capabilities.renameProvider then + map("n", "rn", vim.lsp.buf.rename, opts) + end + if client.server_capabilities.callHierarchyProvider then + map("n", "ci", vim.lsp.buf.incoming_calls, opts) + map("n", "co", vim.lsp.buf.outgoing_calls, opts) + end + if client.server_capabilities.workspaceSymbolProvider then + map("n", "lws", vim.lsp.buf.workspace_symbol, opts) + end + + map("n", "[d", vim.diagnostic.goto_prev, opts) + map("n", "]d", vim.diagnostic.goto_next, opts) + map("n", "sl", vim.diagnostic.setloclist, opts) + map('n', 'of', vim.diagnostic.open_float, opts) + + map("n", "lw", function() + vim.pretty_print(vim.lsp.buf.list_workspace_folders()) + end, opts) + map("n", "rd", function() + print("Language server " .. (vim.lsp.buf.server_ready() and "is ready" or "is not ready")) + end, opts) + + end, +}) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 904bc89..940e683 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,4 +1,5 @@ local on_attach = function(client, buffer) + _ = client; vim.diagnostic.config({ virtual_text = false, float = { scope = "line", severity_sort = true, source = "if_many" }, @@ -8,34 +9,18 @@ local on_attach = function(client, buffer) severity_sort = true, }) - local function set_keymap(...) - vim.api.nvim_buf_set_keymap(buffer, ...) - end - local function set_option(...) vim.api.nvim_buf_set_option(buffer, ...) end set_option("omnifunc", "v:lua.vim.lsp.omnifunc") - - local opts = { noremap = true, silent = true } - - -- Set some keybinds conditional on server capabilities - if client.server_capabilities.document_range_formatting then - set_keymap( - "v", - "lf", - "lua vim.lsp.buf.range_formatting()", - opts - ) - end end -- config that activates keymaps and enables snippet support local function make_config() local capabilities = vim.lsp.protocol.make_client_capabilities() -- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. - capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) + capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true @@ -44,8 +29,6 @@ local function make_config() capabilities = capabilities, -- map buffer local keybindings when the language server attaches on_attach = on_attach, - - -- rootdir = vim.loop.cwd } end From 2ce633a8fe60f2d53e83633fe629e1bac7fa1b89 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Wed, 19 Oct 2022 18:31:43 +0000 Subject: [PATCH 391/419] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9ec20d5..88b6af6 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,11 @@ and installing the server and other accompaning tools for development like linte ## Requirement -Unlike the [vim branch]() with neovim >= 0.8 most plugings written in lua and don't depend on python or node +With neovim >= 0.8 most plugings are written in lua and don't depend on python or node But if you decide to use a plugin that rely's on any of these you would have to install them but I recommend you find their lua equivalent. Chances are that it will be faster (due to luajit) and more well intergrated with neovim >= 0.8 -Neovim does come out of the box with luajit and treesitter support +Neovim comes out of the box with luajit and treesitter support ## Repo structure ```text From 5d1662a758e8e01532fa3ea6849fe2e32abcc694 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 27 Oct 2022 01:52:12 +0000 Subject: [PATCH 392/419] Remove disabling of key It cost seems to outway it benefit Reduce cmdheight to 1 Change back to jk for remap --- lua/editor.lua | 2 +- lua/mapping/editor.lua | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index eb05291..d85c675 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -136,7 +136,7 @@ o.expandtab = true g.confirm = true -- Command line height -g.cmdheight = 2 +g.cmdheight = 1 -- Auto-write all file changes g.autowriteall = true diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index a4203c9..2da50b5 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -8,10 +8,8 @@ map("n", "hl", "nohl") -- search selected region on current line map("v", "//", [[y/\V=escape(@",'/\')]], opt) --- Disable ESC -map({ "i", "v" }, "", "", { remap = false }) --- Map ESC to ;; -map({ "i", "v" }, ";;", "", { remap = false, nowait = true, buffer = true }) +-- Map jk to ESC +map({ "i", "v" }, "jk", "", { remap = false, nowait = true}) -- idea |copy_history:| keypress to extract search properly from history without \V map("n", "B", "m`0i``i", opt) -- J(join) B(BackJoin): move text after cursor to next line From 19f5287feaa1939b9f55bf9897348ce3b4183a81 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 24 Nov 2022 13:26:21 +0000 Subject: [PATCH 393/419] editor: miscellaneous improvements Make diff mode always open in vertical split disable lua lsp environment emulation feature turn off root directory update on directory change --- lua/editor.lua | 5 ++++- lua/plugrc/lspconfig/settings.lua | 3 +++ lua/plugrc/tree.lua | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index d85c675..2ad378e 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -14,7 +14,7 @@ vim.g.maplocalleader = ";" -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed if fn.has("clipboard") == 1 then - vim.opt.clipboard:append("unnamedplus") + vim.opt.clipboard:append({"unnamedplus"}) end -- Restore cursor to file position in previous editing session @@ -105,6 +105,9 @@ vim.opt_global.spellsuggest = { "best", "9" } -- in a word that comes after a lower case character indicates the start of a new word. o.spelloptions = "camel" +-- make diff mode always open in vertical split + vim.opt_global.diffopt:append({"vertical"}) + -- Use visual bell (no beeping) g.visualbell = true diff --git a/lua/plugrc/lspconfig/settings.lua b/lua/plugrc/lspconfig/settings.lua index f3d4463..0fe8de3 100644 --- a/lua/plugrc/lspconfig/settings.lua +++ b/lua/plugrc/lspconfig/settings.lua @@ -26,6 +26,9 @@ settings.lua_settings = { workspace = { -- Make the server aware of Neovim runtime files library = vim.api.nvim_get_runtime_file("", true), + -- This feature causes the lsp to use the "environment emulation" feature to suggest + -- applying a library/framework when a certain keyword or filename has been found + checkThirdParty = false, }, }, }, diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index b7b105b..4f8cc9f 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -35,7 +35,7 @@ require("nvim-tree").setup({ -- hijack the cursor in the tree to put it at the start of the filename hijack_cursor = true, -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) - update_cwd = true, + update_cwd = false, -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file update_focused_file = { -- enables the feature From ca73e76f00c1c15af2de0492ab6766bacbdb3c29 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Dec 2022 15:56:41 +0000 Subject: [PATCH 394/419] Enable file reloading functionality only for lua files use an autocmd to enable reloading files functionality only when the files are lua files --- lua/mapping/editor.lua | 62 +++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 2da50b5..3dbc53f 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -9,7 +9,7 @@ map("n", "hl", "nohl") map("v", "//", [[y/\V=escape(@",'/\')]], opt) -- Map jk to ESC -map({ "i", "v" }, "jk", "", { remap = false, nowait = true}) +map({ "i", "v" }, "jk", "", { remap = false, nowait = true }) -- idea |copy_history:| keypress to extract search properly from history without \V map("n", "B", "m`0i``i", opt) -- J(join) B(BackJoin): move text after cursor to next line @@ -25,29 +25,41 @@ map("v", "d", [["_d]], opt) -- Switch CWD to the directory of the open buffer map({ "n", "v", "o" }, "cd", "cd %:p:h:pwd", opt) --- reload/source current file -map("n", "r", function() - vim.cmd([[luafile %]]) - print("reloaded " .. vim.fn.expand("%")) -end) - --- reload a particular module -map("n", "rm", function() - local module_name = vim.fn.input({ - prompt = "\nEnter the name of the module you want to reload\n:", - completion = "file" - }) - if module_name == "" then - return - else - reload(module_name) - vim.notify("!Reloaded Nvim Module " .. module_name .. ".lua!", vim.log.levels.INFO) - end +-- maybe make below a filetype plugin +local autocmd = vim.api.nvim_create_autocmd +autocmd({ "BufEnter", "BufWinEnter" }, { + pattern = { "*.lua" }, + callback = function(ev) + _ = ev + -- :help api-autocmd + -- nvim_create_autocmd's callback receives a table argument with fields + -- ev = {id,event,group?,match,buf,file,data(arbituary data)} + + -- reload/source current file + map("n", "r", function() + vim.cmd([[luafile %]]) + print("reloaded " .. vim.fn.expand("%")) + end, { buffer = true }) -end) + -- reload a particular module + map("n", "rm", function() + local module_name = vim.fn.input({ + prompt = "\nEnter the name of the module you want to reload\n:", + completion = "file" + }) + if module_name == "" then + return + else + reload(module_name) + vim.notify("!Reloaded Nvim Module " .. module_name .. ".lua!", vim.log.levels.INFO) + end --- reload all nvim configuration modules -map("n", "ra", function() - reloadAllModules() - vim.notify("!Reloaded All Nvim Modules!", vim.log.levels.INFO) -end) + end, { buffer = true }) + + -- reload all nvim configuration modules + map("n", "ra", function() + reloadAllModules() + vim.notify("!Reloaded All Nvim Modules!", vim.log.levels.INFO) + end, { buffer = true }) + end +}) From 438853af8c55989d6f2d5463534c5a9c80372f38 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Dec 2022 16:06:25 +0000 Subject: [PATCH 395/419] Change some lsp mappings and fix tab/buffer mappings --- lua/mapping/lspconfig.lua | 11 +++++------ lua/mapping/tab_buffer.lua | 4 +--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index d1254dc..421be04 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -3,7 +3,7 @@ local autocmd = vim.api.nvim_create_autocmd local augroup = vim.api.nvim_create_augroup -- map the following keys after the language server attaches to a buffer -- See `:help vim.lsp.*` for documentation on any of the below functions -autocmd('LspAttach', { +autocmd({ 'LspAttach' }, { callback = function(args) local opts = { buffer = args.buf } @@ -67,11 +67,10 @@ autocmd('LspAttach', { map("n", "eh", enable_highlight, opts) end if client.server_capabilities.documentSymbolProvider then - map("n", "lds", vim.lsp.buf.document_symbol, opts) + map("n", "ds", vim.lsp.buf.document_symbol, opts) end if client.server_capabilities.codeActionProvider then - map("n", "ca", vim.lsp.buf.code_action, opts) - map("v", "ca", vim.lsp.buf.range_code_action, opts) + map({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) end if client.server_capabilities.documentFormattingProvider then map("n", "f", function() @@ -91,7 +90,7 @@ autocmd('LspAttach', { map("n", "co", vim.lsp.buf.outgoing_calls, opts) end if client.server_capabilities.workspaceSymbolProvider then - map("n", "lws", vim.lsp.buf.workspace_symbol, opts) + map("n", "ws", vim.lsp.buf.workspace_symbol, opts) end map("n", "[d", vim.diagnostic.goto_prev, opts) @@ -99,7 +98,7 @@ autocmd('LspAttach', { map("n", "sl", vim.diagnostic.setloclist, opts) map('n', 'of', vim.diagnostic.open_float, opts) - map("n", "lw", function() + map("n", "wf", function() vim.pretty_print(vim.lsp.buf.list_workspace_folders()) end, opts) map("n", "rd", function() diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index 3a8c62f..17b9917 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -34,9 +34,7 @@ map("n", "bc", "BufferLinePickClose", { silent = true, }) map(mode, "tw", "tabnew", opt) map(mode, "to", "tabonly", opt) map(mode, "tc", "tabclose", opt) -map(mode, "tm", "tabmove", opt) +map(mode, "tm", "tabmove", opt) map(mode, "tn", "tabnext", opt) map(mode, "tp", "tabprevious", opt) map(mode, "tf", "tabfirst", opt) --- pass a positive or negative argument to the command to move by that step-- -map(mode, "t", "tabnext", opt) From e8d1388eec7d3f5a19fe81265d3f25aafdbf2efa Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 29 Dec 2022 16:21:50 +0000 Subject: [PATCH 396/419] Use as mapleader and <\> as maplocalleader --- lua/editor.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 2ad378e..b547593 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -8,13 +8,13 @@ local autocmd = vim.api.nvim_create_autocmd -- create autocmd -- Remap leader key to , -- With a map leader it's possible to do extra key combinations -- vim.g sets editor global variables -vim.g.mapleader = "," -vim.g.maplocalleader = ";" +vim.g.mapleader = [[ ]] +vim.g.maplocalleader = [[\]] -- Set clipboard to the + registers only -- if you want to use the * also add ,unnamed if fn.has("clipboard") == 1 then - vim.opt.clipboard:append({"unnamedplus"}) + vim.opt.clipboard:append({ "unnamedplus" }) end -- Restore cursor to file position in previous editing session @@ -106,7 +106,7 @@ vim.opt_global.spellsuggest = { "best", "9" } o.spelloptions = "camel" -- make diff mode always open in vertical split - vim.opt_global.diffopt:append({"vertical"}) +vim.opt_global.diffopt:append({ "vertical" }) -- Use visual bell (no beeping) g.visualbell = true From cd2ba2814a2d9a93c1d6488c9774afa0a23d05ce Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Thu, 5 Jan 2023 16:18:22 +0000 Subject: [PATCH 397/419] Reduce map sequence timeout to 500 milli sec --- lua/editor.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/editor.lua b/lua/editor.lua index b547593..25e8596 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -67,6 +67,9 @@ g.lazyredraw = true -- You will have bad experience for diagnostic messages when it's default 4000. g.updatetime = 100 +-- Time in milliseconds to wait for a mapped sequence to complete. +g.timeoutlen = 500 + -- don't give |ins-completion-menu| messages. g.shortmess = "c" From 26ab7d0bd250d8aa1396061c32b18cbd7ad18652 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 3 Feb 2023 13:18:23 +0000 Subject: [PATCH 398/419] Remove deprecated functionality in nvim use https://github.com/nvim-tree/nvim-tree.lua/wiki/Open-At-Startup if opening nvim-tree at startup is a required functionality for you. remove commented code for fomartting since is is already taken care of in mappings for lsp --- lua/editor.lua | 6 ------ lua/plugrc/tree.lua | 11 ----------- 2 files changed, 17 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 25e8596..2c9ec20 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -174,9 +174,3 @@ autocmd("CursorHold", { vim.diagnostic.open_float(nil, opts) end }) - --- format files on save --- autocmd( --- { "BufWritePre" }, --- { pattern = { "*" }, command = "lua vim.lsp.buf.format()" } --- ) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index 4f8cc9f..135be27 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -5,17 +5,6 @@ require("nvim-tree").setup({ disable_netrw = true, -- hijack netrw window on startup hijack_netrw = true, - -- open tree when running this setup function and the - -- current buffer is a directory, is empty or is unnamed. - open_on_setup = false, - --will automatically open the tree when running setup if - --startup buffer is a file. File window will be focused. File will be found if - --update_focused_file.enable is set. - open_on_setup_file = false, - -- will ignore the buffer, when deciding to open the tree on setup - ignore_buffer_on_setup = false, - -- will not open on setup if the filetype is in this list - ignore_ft_on_setup = { ".git", "node_modules", ".cache" }, -- reload the explorer every time a buffer is written to auto_reload_on_write = true, -- opens the tree when changing/opening a new tab if the tree was previously opened From f9623043c953a789a4761534d9cabf8fd4dea73a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 3 Feb 2023 16:50:05 +0000 Subject: [PATCH 399/419] Open nvim-tree when opening 'directory/no name buffer' at startup --- lua/editor.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lua/editor.lua b/lua/editor.lua index 2c9ec20..c5b72a4 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -174,3 +174,28 @@ autocmd("CursorHold", { vim.diagnostic.open_float(nil, opts) end }) + +local open_nvimtree_for_nonamebuf_and_directory = function(data) + -- buffer is a [No Name] + local no_name = data.file == "" and vim.bo[data.buf].buftype == "" + -- buffer is a directory + local directory = vim.fn.isdirectory(data.file) == 1 + + if not directory and not no_name then + return + end + + if directory then + -- change to the directory + vim.cmd.cd(data.file) + + -- open the tree + require("nvim-tree.api").tree.open() + else + -- open the tree, find the file but don't focus it + require("nvim-tree.api").tree.toggle({ focus = false, find_file = true, }) + end + +end + +autocmd({ "VimEnter" }, { callback = open_nvimtree_for_nonamebuf_and_directory }) From c11401c09b014be045b59e398fa874c5aa14455b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 5 Feb 2023 14:37:47 +0000 Subject: [PATCH 400/419] Enable treesitter based folding --- lua/editor.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index c5b72a4..60636a7 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -89,7 +89,7 @@ g.mouse = "a" wo.wrap = true -- Line wrap (number of cols) -o.textwidth = 117 +o.textwidth = 80 -- Highlight matching brace g.showmatch = true @@ -154,9 +154,15 @@ wo.list = true vim.opt.listchars = { tab = "••", trail = "•", extends = "»", precedes = "«" } -- Enable folding -wo.foldmethod = "indent" +vim.wo.foldmethod = "expr" -wo.foldlevel = 99 +vim.wo.foldexpr = "nvim_treesitter#foldexpr()" + +-- diable folding at startup +vim.wo.foldenable = false + +-- set the number of screen lines above which a fold is displayed closed +vim.wo.foldminlines = 5 -- Remove Trailing whitespaces in all files autocmd({ "BufWritePre" }, { pattern = { "*" }, command = [[%s/\s\+$//e]] }) From 64544b026a749c59bf07d1a7aa53e72a48a4bf83 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Feb 2023 16:42:55 +0000 Subject: [PATCH 401/419] lualine: Use lua api for line count using legacy vim.fn.expand(vim.fn.line("$")) cause constant irregular behaviour with and --- lua/ui/lualine.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/ui/lualine.lua b/lua/ui/lualine.lua index ee4446e..a60a796 100644 --- a/lua/ui/lualine.lua +++ b/lua/ui/lualine.lua @@ -1,5 +1,5 @@ local function total_num_lines() - return vim.fn.expand(vim.fn.line("$")) + return vim.api.nvim_buf_line_count(0); end require("lualine").setup({ From ac08cdb766e15700f06ee765c1147fc5ef1aaa96 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Feb 2023 16:46:44 +0000 Subject: [PATCH 402/419] lualine: Add encoding and fileformat components to section x move filename component from section b to c --- lua/ui/lualine.lua | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/lua/ui/lualine.lua b/lua/ui/lualine.lua index a60a796..e81b88d 100644 --- a/lua/ui/lualine.lua +++ b/lua/ui/lualine.lua @@ -12,17 +12,12 @@ require("lualine").setup({ lualine_a = { { "mode", separator = { left = "" }, right_padding = 2 }, }, - lualine_b = { - "branch", - "diff", - { - "filename", - file_status = true, -- displays file status (readonly status, modified status) - path = 1, -- 0 = just filename, 1 = relative path, 2 = absolute path - }, - }, - lualine_c = {}, - lualine_x = {}, + lualine_b = { "branch", "diff" }, + lualine_c = { { "filename", + file_status = true, -- displays file status (readonly status, modified status) + path = 1, -- 0 = just filename, 1 = relative path, 2 = absolute path + } }, + lualine_x = { 'encoding', 'fileformat' }, lualine_y = { "filetype", total_num_lines }, lualine_z = { { "location", separator = { right = "" }, left_padding = 2 }, From 6e3ac16913e8331735b3a6d76d25f6cd1ea356f6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Feb 2023 17:02:26 +0000 Subject: [PATCH 403/419] nvim-cmp: Add cmp-cmdline sources make has_words_before fn simpler add buffer source completions for `?` add cmdline as completion source for `:` --- lua/plugins.lua | 1 + lua/plugrc/compe.lua | 40 ++++++++++++++-------------------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index ae332d7..82d6ba5 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -74,6 +74,7 @@ require("paq")({ "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji + "hrsh7th/cmp-cmdline", --nvim-cmp source for vim's cmdline. -- Auto pairs { "windwp/nvim-autopairs" }, diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 6da68e8..3252b2a 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -2,19 +2,6 @@ local cmp = require("cmp") local luasnip = require("luasnip") -local has_words_before = function() - if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then - return false - end - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 - and vim.api - .nvim_buf_get_lines(0, line - 1, line, true)[1] - :sub(col, col) - :match("%s") - == nil -end - local kind_icons = { Text = " ", Function = "", @@ -43,6 +30,11 @@ local kind_icons = { TypeParameter = "", } +local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil +end + cmp.setup({ snippet = { expand = function(args) @@ -89,11 +81,7 @@ cmp.setup({ else fallback() -- The fallback function sends a already mapped key. In this case, it's probably ``. end - end, { - "i", - "s", - }), - + end, { "i", "s" }), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() @@ -102,10 +90,7 @@ cmp.setup({ else fallback() end - end, { - "i", - "s", - }), + end, { "i", "s" }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, @@ -115,11 +100,12 @@ cmp.setup({ { name = "nvim_lua" }, { name = "emoji" }, { name = "neorg" }, + { name = "cmdline" }, }), }) --- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). -cmp.setup.cmdline("/", { +-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline({ "/", "?" }, { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = "buffer" }, @@ -130,6 +116,8 @@ cmp.setup.cmdline("/", { cmp.setup.cmdline(":", { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ - { name = "path" }, - }), + { name = 'path' } + }, { + { name = 'cmdline' } + }) }) From 7de7377ebec8c74e7dac26ce9e6c970cd52931a3 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Feb 2023 17:22:57 +0000 Subject: [PATCH 404/419] nvim-cmp: remove cmdline as an insert mode completion source --- lua/plugrc/compe.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 3252b2a..d3f0eae 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -100,7 +100,6 @@ cmp.setup({ { name = "nvim_lua" }, { name = "emoji" }, { name = "neorg" }, - { name = "cmdline" }, }), }) From 2164c69094c512148e14bc18f1ac155892b695d8 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 10 Feb 2023 18:32:08 +0000 Subject: [PATCH 405/419] plugins: Update nvim-tree plugin repo --- lua/plugins.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 82d6ba5..245d039 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -89,10 +89,9 @@ require("paq")({ -- === UI === -- -- A Neovim File explorer - { "kyazdani42/nvim-tree.lua" }, + { "nvim-tree/nvim-tree.lua" }, -- == Icons == -- -- Glyphs and Icons for neovim - -- Plug 'ryanoasis/vim-devicons' - { "kyazdani42/nvim-web-devicons" }, + { "nvim-tree/nvim-web-devicons" }, }) From 5a0b9fe3c6f0a038832bc2667cae720433bf578a Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 13 Feb 2023 15:40:32 +0000 Subject: [PATCH 406/419] lspconfig: update to new lua_ls server --- lua/plugrc/lspconfig/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 940e683..1cd3e42 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -35,7 +35,7 @@ end -- lsp-install local function setup_servers() local lsp_servers = { - "sumneko_lua", + "lua_ls", "clangd", "cssls", "html", @@ -61,7 +61,7 @@ local function setup_servers() config.filetypes = clangd_settings.filetypes end - if server == "sumneko_lua" then + if server == "lua_ls" then local lua_settings = settings.lua_settings config.cmd = lua_settings.cmd config.settings = lua_settings.settings From 1ba61de3a2be871d5764a2add02a1c1c16bf3767 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 5 Mar 2023 20:42:54 +0000 Subject: [PATCH 407/419] plugins: add recommended neorg run command --- lua/plugins.lua | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 245d039..b2595f2 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -29,8 +29,8 @@ require("paq")({ -- === Fuzzy Finder === -- a highly extendable fuzzy finder over lists - { "nvim-lua/popup.nvim", opt = true }, -- for Find, Filter, Preview, Pick - { "nvim-lua/plenary.nvim" }, -- reusable lua funtions + { "nvim-lua/popup.nvim", opt = true }, -- for Find, Filter, Preview, Pick + { "nvim-lua/plenary.nvim" }, -- reusable lua funtions { "nvim-telescope/telescope.nvim", opt = true }, -- === Syntax Plugins === @@ -44,7 +44,12 @@ require("paq")({ -- === Preview Plugin === -- === Note Taking Plugin === - { "nvim-neorg/neorg" }, -- neovim note taking tool + { + "nvim-neorg/neorg", + run = function() + vim.cmd("Neorg sync-parsers") + end, + }, -- === Language Specific Plugins === -- == LSP Client === @@ -55,7 +60,7 @@ require("paq")({ -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing - { "folke/trouble.nvim", opt = true }, + { "folke/trouble.nvim", opt = true }, --Use Neovim as a language server to inject LSP diagnostics, code actions, --and more via Lua @@ -70,17 +75,17 @@ require("paq")({ -- Autocompletion plugin -- Completion Sources -- "hrsh7th/cmp-nvim-lsp", -- nvim-cmp source for neovim builtin LSP client - "hrsh7th/cmp-path", -- nvim-cmp source for path - "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words + "hrsh7th/cmp-path", -- nvim-cmp source for path + "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua - "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji - "hrsh7th/cmp-cmdline", --nvim-cmp source for vim's cmdline. + "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji + "hrsh7th/cmp-cmdline", --nvim-cmp source for vim's cmdline. -- Auto pairs { "windwp/nvim-autopairs" }, -- === Code Snippets Plugins === - { "L3MON4D3/LuaSnip" }, -- snippets provider for lua + { "L3MON4D3/LuaSnip" }, -- snippets provider for lua "saadparwaiz1/cmp_luasnip", -- luasnip completion source for nvim-cmp -- === LSP symbols === From 2cb8c785819348cafcd41da9d365871e0cd2d597 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 5 Mar 2023 21:13:49 +0000 Subject: [PATCH 408/419] format files with lsp --- lua/editor.lua | 11 +- lua/lazy/symbols.lua | 3 +- lua/lazy/telescope.lua | 8 +- lua/lazy/trouble.lua | 59 +++++----- lua/mapping/editor.lua | 1 - lua/mapping/lspconfig.lua | 2 - lua/mapping/tab_buffer.lua | 12 +- lua/plugrc/compe.lua | 42 +++---- lua/plugrc/gitsigns.lua | 10 +- lua/plugrc/lspconfig/init.lua | 1 - lua/plugrc/lspconfig/signature.lua | 26 ++-- lua/plugrc/neorg.lua | 16 +-- lua/plugrc/tree.lua | 183 ++++++----------------------- lua/plugrc/whichkey.lua | 35 +++--- lua/terminal.lua | 2 +- lua/ui/bufferline.lua | 12 +- lua/ui/lualine.lua | 5 +- lua/ui/onedark.lua | 23 ++-- lua/ui/treesitter.lua | 4 +- 19 files changed, 174 insertions(+), 281 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 60636a7..3b1cdce 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,9 +1,9 @@ -local o = vim.o -- set editor global-local editor options -local wo = vim.wo -- set window-local editor options -local g = vim.go -- set global editor editor options -local fn = vim.fn -- invoke vim-functions in lua +local o = vim.o -- set editor global-local editor options +local wo = vim.wo -- set window-local editor options +local g = vim.go -- set global editor editor options +local fn = vim.fn -- invoke vim-functions in lua local autogroup = vim.api.nvim_create_augroup -- create autocmd group -local autocmd = vim.api.nvim_create_autocmd -- create autocmd +local autocmd = vim.api.nvim_create_autocmd -- create autocmd -- Remap leader key to , -- With a map leader it's possible to do extra key combinations @@ -201,7 +201,6 @@ local open_nvimtree_for_nonamebuf_and_directory = function(data) -- open the tree, find the file but don't focus it require("nvim-tree.api").tree.toggle({ focus = false, find_file = true, }) end - end autocmd({ "VimEnter" }, { callback = open_nvimtree_for_nonamebuf_and_directory }) diff --git a/lua/lazy/symbols.lua b/lua/lazy/symbols.lua index 5f3a432..f09a95c 100644 --- a/lua/lazy/symbols.lua +++ b/lua/lazy/symbols.lua @@ -19,7 +19,8 @@ local function symbols_setup() auto_unfold_hover = true, fold_markers = { '', '' }, wrap = false, - keymaps = { -- These keymaps can be a string or a table for multiple keys + -- These keymaps can be a string or a table for multiple keys + keymaps = { close = { "jk", "q" }, goto_location = "", focus_location = "o", diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index 5da8458..a5cafc0 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -12,12 +12,8 @@ local function telescopesetup() require("telescope").setup { defaults = { mappings = { - i = { - [""] = actions.close - }, - n = { - [""] = actions.close - }, + i = { [""] = actions.close }, + n = { [""] = actions.close }, }, vimgrep_arguments = { -- "grep", "--extended-regexp", "--color=never", "--with-filename", "--line-number", "-b", -- grep doesn't support a `--column` option :( diff --git a/lua/lazy/trouble.lua b/lua/lazy/trouble.lua index f96d0e6..e112a3f 100644 --- a/lua/lazy/trouble.lua +++ b/lua/lazy/trouble.lua @@ -4,41 +4,42 @@ local function troublesetup() vim.cmd([[packadd trouble.nvim]]) require("trouble").setup({ - position = "bottom", -- position of the list can be: bottom, top, left, right - height = 10, -- height of the trouble list when position is top or bottom - width = 50, -- width of the list when position is left or right - icons = true, -- use devicons for filenames + position = "bottom", -- position of the list can be: bottom, top, left, right + height = 10, -- height of the trouble list when position is top or bottom + width = 50, -- width of the list when position is left or right + icons = true, -- use devicons for filenames mode = "document_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist" - fold_open = "", -- icon used for open folds - fold_closed = "", -- icon used for closed folds - action_keys = { -- key mappings for actions in the trouble list - -- map to {} to remove a mapping, for example: - -- close = {}, - close = "q", -- close the list - cancel = "", -- cancel the preview and get back to your last window / buffer / cursor - refresh = "r", -- manually refresh - jump = { "", "" }, -- jump to the diagnostic or open / close folds - open_split = { "" }, -- open buffer in new split - open_vsplit = { "" }, -- open buffer in new vsplit - open_tab = { "" }, -- open buffer in new tab - jump_close = { "o" }, -- jump to the diagnostic and close the list - toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode - toggle_preview = "P", -- toggle auto_preview - hover = "K", -- opens a small poup with the full multiline message - preview = "p", -- preview the diagnostic location + fold_open = "", -- icon used for open folds + fold_closed = "", -- icon used for closed folds + -- key mappings for actions in the trouble list + -- map to {} to remove a mapping, for example: close = {}, + action_keys = { + close = "q", -- close the list + cancel = "", -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = { "", "" }, -- jump to the diagnostic or open / close folds + open_split = { "" }, -- open buffer in new split + open_vsplit = { "" }, -- open buffer in new vsplit + open_tab = { "" }, -- open buffer in new tab + jump_close = { "o" }, -- jump to the diagnostic and close the list + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "K", -- opens a small poup with the full multiline message + preview = "p", -- preview the diagnostic location close_folds = { "zM", "zm" }, -- close all folds - open_folds = { "zR", "zr" }, -- open all folds + open_folds = { "zR", "zr" }, -- open all folds toggle_fold = { "zA", "za" }, -- toggle fold of current file - previous = "k", -- preview item - next = "j", -- next item + previous = "k", -- preview item + next = "j", -- next item }, - indent_lines = true, -- add an indent guide below the fold icons - auto_open = false, -- automatically open the list when you have diagnostics - auto_close = true, -- automatically close the list when you have no diagnostics - auto_preview = true, -- automatyically preview the location of the diagnostic. to close preview and go back to last window + indent_lines = true, -- add an indent guide below the fold icons + auto_open = false, -- automatically open the list when you have diagnostics + auto_close = true, -- automatically close the list when you have no diagnostics + -- automatyically preview the location of the diagnostic. to close preview and go back to last window + auto_preview = true, auto_fold = false, -- automatically fold a file trouble list at creation + -- icons / text used for a diagnostic signs = { - -- icons / text used for a diagnostic error = "", warning = "", hint = "", diff --git a/lua/mapping/editor.lua b/lua/mapping/editor.lua index 3dbc53f..d37a4d0 100644 --- a/lua/mapping/editor.lua +++ b/lua/mapping/editor.lua @@ -53,7 +53,6 @@ autocmd({ "BufEnter", "BufWinEnter" }, { reload(module_name) vim.notify("!Reloaded Nvim Module " .. module_name .. ".lua!", vim.log.levels.INFO) end - end, { buffer = true }) -- reload all nvim configuration modules diff --git a/lua/mapping/lspconfig.lua b/lua/mapping/lspconfig.lua index 421be04..77743e6 100644 --- a/lua/mapping/lspconfig.lua +++ b/lua/mapping/lspconfig.lua @@ -54,7 +54,6 @@ autocmd({ 'LspAttach' }, { buffer = bufnr, callback = vim.lsp.buf.clear_references, }) - end local disable_highlight = function() vim.lsp.buf.clear_references() @@ -104,6 +103,5 @@ autocmd({ 'LspAttach' }, { map("n", "rd", function() print("Language server " .. (vim.lsp.buf.server_ready() and "is ready" or "is not ready")) end, opts) - end, }) diff --git a/lua/mapping/tab_buffer.lua b/lua/mapping/tab_buffer.lua index 17b9917..860ef86 100644 --- a/lua/mapping/tab_buffer.lua +++ b/lua/mapping/tab_buffer.lua @@ -17,13 +17,13 @@ map("n", "", "l") local opt = { remap = true } local mode = { "n", "v", "o" } -map(mode, "bd", "bdelete", opt) -- Close the current buffer +map(mode, "bd", "bdelete", opt) -- Close the current buffer map(mode, "ba", "bufdo bd", opt) -- Close all the buffers -map(mode, "]b", "bnext", opt) -- move forward to the next buffer in the buffer list -map(mode, "[b", "bprevious", opt) -- move back to the previous buffer in the buffer list -map(mode, "bp", "b#", opt) -- move to the last visited buffer -map(mode, "b1", "bfirst", opt) -- move to the first buffer in the buffer list -map(mode, "b9", "blast", opt) -- move to the last buffer in the buffer list +map(mode, "]b", "bnext", opt) -- move forward to the next buffer in the buffer list +map(mode, "[b", "bprevious", opt) -- move back to the previous buffer in the buffer list +map(mode, "bp", "b#", opt) -- move to the last visited buffer +map(mode, "b1", "bfirst", opt) -- move to the first buffer in the buffer list +map(mode, "b9", "blast", opt) -- move to the last buffer in the buffer list -- pick a buffer to view from the buffer list map("n", "bs", "BufferLinePick", { silent = true, }) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index d3f0eae..edab28e 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -45,33 +45,34 @@ cmp.setup({ formatting = { format = function(entry, vim_item) -- Kind icons - vim_item.kind = string.format("%s", kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind + -- This concatonates the icons with the name of the item kind + vim_item.kind = string.format("%s", kind_icons[vim_item.kind], vim_item.kind) -- Source vim_item.menu = ({ - buffer = "[Buffer]", - nvim_lsp = "[LSP]", - luasnip = "[LuaSnip]", - nvim_lua = "[Lua]", - path = "[Path]", - emoji = "[Emoji]", - neorg = "[Neorg]", - spell = "[Spell]", - })[entry.source.name] + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + nvim_lua = "[Lua]", + path = "[Path]", + emoji = "[Emoji]", + neorg = "[Neorg]", + spell = "[Spell]", + })[entry.source.name] return vim_item end, }, mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete({ TriggerOnly = 'triggerOnly' }), - [""] = cmp.mapping.select_next_item(), - [""] = cmp.mapping.select_prev_item(), - [""] = cmp.mapping({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete({ TriggerOnly = 'triggerOnly' }), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close(), }), - [""] = cmp.mapping.confirm({ select = false }), - [""] = cmp.mapping(function(fallback) + [""] = cmp.mapping.confirm({ select = false }), + [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif luasnip.expand_or_jumpable() then @@ -79,10 +80,11 @@ cmp.setup({ elseif has_words_before() then cmp.complete() else - fallback() -- The fallback function sends a already mapped key. In this case, it's probably ``. + -- The fallback function sends a already mapped key. In this case, it's probably ``. + fallback() end end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) + [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() elseif luasnip.jumpable(-1) then diff --git a/lua/plugrc/gitsigns.lua b/lua/plugrc/gitsigns.lua index fdce165..099b0d5 100644 --- a/lua/plugrc/gitsigns.lua +++ b/lua/plugrc/gitsigns.lua @@ -1,22 +1,20 @@ require("utils") require("gitsigns").setup({ - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` numhl = false, -- Toggle with `:Gitsigns toggle_numhl` linehl = false, -- Toggle with `:Gitsigns toggle_linehl` word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` - - preview_config = { - -- Options passed to nvim_open_win + -- Options passed to nvim_open_win + preview_config = { border = 'shadow', style = 'minimal', relative = 'cursor', row = 0, col = 1 }, - - on_attach = function(bufnr) + on_attach = function(bufnr) local gs = package.loaded.gitsigns local opts = { buffer = bufnr } diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 1cd3e42..d80da4d 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -82,7 +82,6 @@ local function setup_servers() null_ls.builtins.diagnostics.zsh, }, }) - end setup_servers() diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua index bedbf77..e93d0fb 100644 --- a/lua/plugrc/lspconfig/signature.lua +++ b/lua/plugrc/lspconfig/signature.lua @@ -1,26 +1,32 @@ local signature_cfg = { - bind = true, -- This is mandatory, otherwise border config won't get registered. + -- This is mandatory, otherwise border config won't get registered. -- If you want to hook lspsaga or other signature handler, pls set to false - doc_lines = 18, -- will show two lines of comment/doc (if there are more than two lines in doc, will be truncated); + bind = true, + -- will show the specified lines of comment/doc (if there are more than two lines in doc, will be truncated); -- set to 0 if you DO NOT want any API comments be shown. This setting only take effect in insert mode, -- it does not affect signature help in normal mode, 10 by default - floating_window = true, -- show hint in a floating window, + doc_lines = 18, + -- show hint in a floating window, + floating_window = true, -- set to false for virtual text only mode floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note: -- will set to true when fully tested, set to false will use whichever side has more space -- this setting will be helpful if you do not want the PUM and floating win overlap - fix_pos = false, -- set to true, the floating window will not auto-close until finish all parameters - hint_enable = true, -- virtual hint enable - hint_prefix = "🐼 ", -- Panda for parameter + -- set to true, the floating window will not auto-close until finish all parameters + fix_pos = false, + hint_enable = true, -- virtual hint enable + hint_prefix = "🐼 ", -- Panda for parameter hint_scheme = "String", - use_lspsaga = false, -- set to true if you want to use lspsaga popup + use_lspsaga = false, -- set to true if you want to use lspsaga popup hi_parameter = "Search", -- how your parameter will be highlight - max_height = 18, -- max height of signature floating_window, + -- max height of signature floating_window, -- if content is more than max_height, you can scroll down to view the hiding contents - max_width = 117, -- max_width of signature floating_window, + max_height = 18, + -- max_width of signature floating_window, -- line will be wrapped if exceed max_width + max_width = 117, handler_opts = { - border = "shadow", -- double, single, shadow, none + border = "shadow", -- double, single, shadow, none }, extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} } diff --git a/lua/plugrc/neorg.lua b/lua/plugrc/neorg.lua index a8bd87e..811099e 100644 --- a/lua/plugrc/neorg.lua +++ b/lua/plugrc/neorg.lua @@ -1,15 +1,15 @@ require("neorg").setup({ load = { - ["core.defaults"] = {}, -- Tells neorg to load the module called core.defaults with no extra data - ["core.keybinds"] = { -- Configure core.keybinds + ["core.defaults"] = {}, -- Tells neorg to load the module called core.defaults with no extra data + ["core.keybinds"] = { -- Configure core.keybinds config = { - default_keybinds = true, -- Generate the default keybinds + default_keybinds = true, -- Generate the default keybinds neorg_leader = "o", -- This is the default if unspecified }, }, - ["core.norg.concealer"] = {}, -- Since this module isn't part of core.defaults, we can include it ourselves, like so - ["core.norg.dirman"] = { - config = { -- Load a custom configuration + ["core.norg.concealer"] = {}, + ["core.norg.dirman"] = { + config = { -- Define your workspaces here! workspaces = { -- You can give it any name and any directory, get creative! @@ -17,9 +17,9 @@ require("neorg").setup({ }, }, }, - ["core.norg.completion"] = { + ["core.norg.completion"] = { config = { - engine = "nvim-cmp", -- We current support nvim-compe and nvim-cmp only + engine = "nvim-cmp", }, }, }, diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua index 135be27..f4968cc 100644 --- a/lua/plugrc/tree.lua +++ b/lua/plugrc/tree.lua @@ -1,5 +1,3 @@ -local g = vim.g - require("nvim-tree").setup({ -- disables netrw completely disable_netrw = true, @@ -74,149 +72,44 @@ require("nvim-tree").setup({ custom_only = false, -- list of mappings to set on the tree manually list = { - { - key = { "", "o", "<2-LeftMouse>" }, - action = "edit", - }, - { - key = "", - action = "edit_in_place", - }, - { - key = { "O" }, - action = "edit_no_picker", - }, - { key = { "<2-RightMouse>", "" }, action = "cd" }, - { - key = "", - action = "vsplit", - }, - { - key = "", - action = "split", - }, - { - key = "", - action = "tabnew", - }, - { - key = "<", - action = "prev_sibling", - }, - { - key = ">", - action = "next_sibling", - }, - { - key = "P", - action = "parent_node", - }, - { - key = "", - action = "close_node", - }, - { - key = "", - action = "preview", - }, - { - key = "K", - action = "first_sibling", - }, - { - key = "J", - action = "last_sibling", - }, - { - key = "I", - action = "toggle_git_ignored", - }, - { - key = "H", - action = "toggle_dotfiles", - }, - { - key = "R", - action = "refresh", - }, - { - key = "a", - action = "create", - }, - { - key = "d", - action = "remove", - }, - { - key = "D", - action = "trash", - }, - { - key = "r", - action = "rename", - }, - { - key = "", - action = "full_rename", - }, - { key = "x", action = "cut" }, - { key = "c", action = "copy" }, - { - key = "p", - action = "paste", - }, - { - key = "y", - action = "copy_name", - }, - { - key = "Y", - action = "copy_path", - }, - { - key = "gy", - action = "copy_absolute_path", - }, - { - key = "[c", - action = "prev_git_item", - }, - { - key = "]c", - action = "next_git_item", - }, - { - key = "-", - action = "dir_up", - }, - { - key = "s", - action = "system_open", - }, - { - key = "q", - action = "close", - }, - { - key = "g?", - action = "toggle_help", - }, - { - key = "W", - action = "collapse_all", - }, - { - key = "S", - action = "search_node", - }, - { - key = "", - action = "toggle_file_info", - }, - { - key = ".", - action = "run_file_command", - }, + { key = { "", "o", "<2-LeftMouse>" }, action = "edit", }, + { key = "", action = "edit_in_place", }, + { key = { "O" }, action = "edit_no_picker", }, + { key = { "<2-RightMouse>", "" }, action = "cd" }, + { key = "", action = "vsplit", }, + { key = "", action = "split", }, + { key = "", action = "tabnew", }, + { key = "<", action = "prev_sibling", }, + { key = ">", action = "next_sibling", }, + { key = "P", action = "parent_node", }, + { key = "", action = "close_node", }, + { key = "", action = "preview", }, + { key = "K", action = "first_sibling", }, + { key = "J", action = "last_sibling", }, + { key = "I", action = "toggle_git_ignored", }, + { key = "H", action = "toggle_dotfiles", }, + { key = "R", action = "refresh", }, + { key = "a", action = "create", }, + { key = "d", action = "remove", }, + { key = "D", action = "trash", }, + { key = "r", action = "rename", }, + { key = "", action = "full_rename", }, + { key = "x", action = "cut" }, + { key = "c", action = "copy" }, + { key = "p", action = "paste", }, + { key = "y", action = "copy_name", }, + { key = "Y", action = "copy_path", }, + { key = "gy", action = "copy_absolute_path", }, + { key = "[c", action = "prev_git_item", }, + { key = "]c", action = "next_git_item", }, + { key = "-", action = "dir_up", }, + { key = "s", action = "system_open", }, + { key = "q", action = "close", }, + { key = "g?", action = "toggle_help", }, + { key = "W", action = "collapse_all", }, + { key = "S", action = "search_node", }, + { key = "", action = "toggle_file_info", }, + { key = ".", action = "run_file_command", }, }, }, }, diff --git a/lua/plugrc/whichkey.lua b/lua/plugrc/whichkey.lua index f01380e..07b0ff9 100644 --- a/lua/plugrc/whichkey.lua +++ b/lua/plugrc/whichkey.lua @@ -1,21 +1,21 @@ require("which-key").setup({ plugins = { - marks = true, -- shows a list of your marks on ' and ` + marks = true, -- shows a list of your marks on ' and ` registers = true, -- shows your registers on " in NORMAL or in INSERT mode -- the presets plugin, adds help for a bunch of default keybindings in Neovim -- No actual key bindings are created spelling = { - enabled = false, -- enabling this will show WhichKey when pressing z= to select spelling suggestions + enabled = false, -- enabling this will show WhichKey when pressing z= to select spelling suggestions suggestions = 20, -- how many suggestions should be shown in the list? }, presets = { - operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion - motions = true, -- adds help for motions + operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion + motions = true, -- adds help for motions text_objects = true, -- help for text objects triggered after entering an operator - windows = true, -- default bindings on - nav = true, -- misc bindings to work with windows - z = true, -- bindings for folds, spelling and others prefixed with z - g = true, -- bindings for prefixed with g + windows = true, -- default bindings on + nav = true, -- misc bindings to work with windows + z = true, -- bindings for folds, spelling and others prefixed with z + g = true, -- bindings for prefixed with g }, }, -- add operators that will trigger motion and text object completion @@ -31,21 +31,22 @@ require("which-key").setup({ icons = { breadcrumb = "»", -- symbol used in the command line area that shows your active key combo separator = "➜", -- symbol used between a key and it's label - group = "+", -- symbol prepended to a group + group = "+", -- symbol prepended to a group }, window = { - border = "none", -- none, single, double, shadow - position = "bottom", -- bottom, top - margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] + border = "none", -- none, single, double, shadow + position = "bottom", -- bottom, top + margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] }, layout = { height = { min = 4, max = 25 }, -- min and max height of the columns width = { min = 20, max = 50 }, -- min and max width of the columns - spacing = 3, -- spacing between columns - align = "left", -- align columns left, center or right + spacing = 3, -- spacing between columns + align = "left", -- align columns left, center or right }, - ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label + ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label + -- hide mapping boilerplate hidden = { "", "", @@ -55,8 +56,8 @@ require("which-key").setup({ "lua", "^:", "^ ", - }, -- hide mapping boilerplate - show_help = true, -- show help message on the command line when the popup is visible + }, + show_help = true, -- show help message on the command line when the popup is visible triggers = "auto", -- automatically setup triggers -- triggers = {""} -- or specify a list manually triggers_blacklist = { diff --git a/lua/terminal.lua b/lua/terminal.lua index abc72e1..b5cd8ac 100644 --- a/lua/terminal.lua +++ b/lua/terminal.lua @@ -1,4 +1,4 @@ -local autocmd = vim.api.nvim_create_autocmd -- create autocmd +local autocmd = vim.api.nvim_create_autocmd -- create autocmd local autogroup = vim.api.nvim_create_augroup -- create autocmd group -- open new split panes to right and below diff --git a/lua/ui/bufferline.lua b/lua/ui/bufferline.lua index 0baedcb..d9e881f 100644 --- a/lua/ui/bufferline.lua +++ b/lua/ui/bufferline.lua @@ -13,15 +13,15 @@ require("bufferline").setup({ text_align = "left", --[[| "center" | "right",]] }, }, - show_buffer_icons = true, --| false, -- disable filetype icons for buffers + show_buffer_icons = true, --| false, -- disable filetype icons for buffers show_buffer_close_icons = true, --| false, - show_close_icon = true, --| false, - show_tab_indicators = true, --| false, - persist_buffer_sort = true, -- whether or not custom sorted buffers should persist + show_close_icon = true, --| false, + show_tab_indicators = true, --| false, + persist_buffer_sort = true, -- whether or not custom sorted buffers should persist -- can also be a table containing 2 custom separators -- [focused and unfocused]. eg: { '|', '|' } - separator_style = "slant", --| "thick" | "thin" | { 'any', 'any' }, - enforce_regular_tabs = false, --| true, + separator_style = "slant", --| "thick" | "thin" | { 'any', 'any' }, + enforce_regular_tabs = false, --| true, always_show_bufferline = true, --| false, }, }) diff --git a/lua/ui/lualine.lua b/lua/ui/lualine.lua index e81b88d..91c3a50 100644 --- a/lua/ui/lualine.lua +++ b/lua/ui/lualine.lua @@ -13,9 +13,10 @@ require("lualine").setup({ { "mode", separator = { left = "" }, right_padding = 2 }, }, lualine_b = { "branch", "diff" }, - lualine_c = { { "filename", + lualine_c = { { + "filename", file_status = true, -- displays file status (readonly status, modified status) - path = 1, -- 0 = just filename, 1 = relative path, 2 = absolute path + path = 1, -- 0 = just filename, 1 = relative path, 2 = absolute path } }, lualine_x = { 'encoding', 'fileformat' }, lualine_y = { "filetype", total_num_lines }, diff --git a/lua/ui/onedark.lua b/lua/ui/onedark.lua index 4e7a43d..6b7dcc8 100644 --- a/lua/ui/onedark.lua +++ b/lua/ui/onedark.lua @@ -1,13 +1,15 @@ -- Onedark colorscheme require("onedark").setup({ -- Main options -- - style = "deep", -- Default theme style. Choose between 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light' - transparent = false, -- Show/hide background - term_colors = true, -- Change terminal color as per the selected theme style - ending_tildes = false, -- Show the end-of-buffer tildes. By default they are hidden - cmp_itemkind_reverse = false, -- reverse item kind highlights in cmp menu + -- Default theme style. Choose between 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light' + style = "deep", + transparent = false, -- Show/hide background + term_colors = true, -- Change terminal color as per the selected theme style + ending_tildes = false, -- Show the end-of-buffer tildes. By default they are hidden + cmp_itemkind_reverse = false, -- reverse item kind highlights in cmp menu -- toggle theme style --- toggle_style_key = "ts", -- Default keybinding to toggle + -- List of styles to toggle between toggle_style_list = { "dark", "darker", @@ -16,8 +18,7 @@ require("onedark").setup({ "warm", "warmer", "light", - }, -- List of styles to toggle between - + }, -- Change code style --- -- Options are italic, bold, underline, none -- You can configure multiple style with comma seperated, For e.g., keywords = 'italic,bold' @@ -28,15 +29,13 @@ require("onedark").setup({ strings = "none", variables = "none", }, - -- Custom Highlights -- - colors = {}, -- Override default colors + colors = {}, -- Override default colors highlights = {}, -- Override highlight groups - -- Plugins Config -- diagnostics = { - darker = true, -- darker colors for diagnostic - undercurl = true, -- use undercurl instead of underline for diagnostics + darker = true, -- darker colors for diagnostic + undercurl = true, -- use undercurl instead of underline for diagnostics background = true, -- use background color for virtual text }, }) diff --git a/lua/ui/treesitter.lua b/lua/ui/treesitter.lua index 4fd89cd..a83869c 100644 --- a/lua/ui/treesitter.lua +++ b/lua/ui/treesitter.lua @@ -17,8 +17,8 @@ require("nvim-treesitter.configs").setup({ -- one of "all", "maintained" (parsers with maintainers), or a list of languages ignore_install = {}, -- List of parsers to ignore installing highlight = { - enable = true, -- false will disable the whole extension - disable = {}, -- list of language that will be disabled + enable = true, -- false will disable the whole extension + disable = {}, -- list of language that will be disabled }, incremental_selection = { enable = true, From 98a4a262890cf989bc1c3601b92aac653557a04e Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Mar 2023 21:44:34 +0000 Subject: [PATCH 409/419] lsp(float): move all float menu configuration to on_attach in lsp init --- lua/editor.lua | 14 --------- lua/plugrc/lspconfig/init.lua | 57 +++++++++++++++++++++++++++-------- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 3b1cdce..594015f 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -167,20 +167,6 @@ vim.wo.foldminlines = 5 -- Remove Trailing whitespaces in all files autocmd({ "BufWritePre" }, { pattern = { "*" }, command = [[%s/\s\+$//e]] }) --- automatically show diagnostics on current line -autocmd("CursorHold", { - callback = function() - local opts = { - focusable = false, - close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, - border = "shadow", - source = "if_many", - severity_sort = true, - } - vim.diagnostic.open_float(nil, opts) - end -}) - local open_nvimtree_for_nonamebuf_and_directory = function(data) -- buffer is a [No Name] local no_name = data.file == "" and vim.bo[data.buf].buftype == "" diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index d80da4d..bae41c2 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,19 +1,52 @@ -local on_attach = function(client, buffer) +local autocmd = vim.api.nvim_create_autocmd -- create autocmd + +local on_attach = function(client, bufnr) _ = client; - vim.diagnostic.config({ + _ = bufnr; + -- options from nvim_open_win()| vim.diagnostic.open_float() + -- | vim.lsp.util.open_floating_preview()| vim.diagnostic.config() + local opts = { virtual_text = false, - float = { scope = "line", severity_sort = true, source = "if_many" }, - signs = true, - underline = true, - update_in_insert = false, + close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, + focusable = false, + float = { + source = "if_many", + -- "single": A single line box. + -- "double": A double line box. + -- "rounded": Like "single", but with rounded corners "╭" + -- "solid": Adds padding by a single whitespace cell. + -- "shadow": A drop shadow effect by blending with the + -- "none": No border (default). + border = "rounded", + }, severity_sort = true, + } + vim.diagnostic.config(opts) + + -- automatically show diagnostics on current line + autocmd({ "CursorHold", "CursorHoldI" }, { + callback = function() + vim.diagnostic.open_float(nil, { + focus = false, + }) + end }) - local function set_option(...) - vim.api.nvim_buf_set_option(buffer, ...) - end + require('lspconfig.ui.windows').default_options = { + border = opts.float.border, + } + + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( + vim.lsp.handlers.hover, { + border = opts.float.border, + } + ) - set_option("omnifunc", "v:lua.vim.lsp.omnifunc") + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( + vim.lsp.handlers.signature_help, { + border = opts.float.border, + } + ) end -- config that activates keymaps and enables snippet support @@ -47,8 +80,8 @@ local function setup_servers() "bashls", } - local signature_cfg = require("plugrc.lspconfig.signature") - require("lsp_signature").setup(signature_cfg) + local signature_cfg = require("plugrc.lspconfig.signature") + require("lsp_signature").setup(signature_cfg) for _, server in pairs(lsp_servers) do local config = make_config() From 9391e783b4ef93f85e1e047b3ec639d1ca5f6520 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Mar 2023 22:10:36 +0000 Subject: [PATCH 410/419] lsp(signature): update signature's configuration --- lua/plugrc/lspconfig/signature.lua | 64 +++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 15 deletions(-) diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua index e93d0fb..d7bf90f 100644 --- a/lua/plugrc/lspconfig/signature.lua +++ b/lua/plugrc/lspconfig/signature.lua @@ -6,29 +6,63 @@ local signature_cfg = { -- set to 0 if you DO NOT want any API comments be shown. This setting only take effect in insert mode, -- it does not affect signature help in normal mode, 10 by default doc_lines = 18, - -- show hint in a floating window, - floating_window = true, - -- set to false for virtual text only mode - floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note: - -- will set to true when fully tested, set to false will use whichever side has more space - -- this setting will be helpful if you do not want the PUM and floating win overlap - -- set to true, the floating window will not auto-close until finish all parameters - fix_pos = false, - hint_enable = true, -- virtual hint enable - hint_prefix = "🐼 ", -- Panda for parameter - hint_scheme = "String", - use_lspsaga = false, -- set to true if you want to use lspsaga popup - hi_parameter = "Search", -- how your parameter will be highlight -- max height of signature floating_window, -- if content is more than max_height, you can scroll down to view the hiding contents max_height = 18, -- max_width of signature floating_window, -- line will be wrapped if exceed max_width max_width = 117, + -- allow doc/signature text wrap inside floating_window, useful if your lsp return doc/sig is too long + wrap = true, + -- show hint in a floating window, + -- set to false for virtual text only mode + floating_window = true, + -- try to place the floating above the current line when possible Note: + -- will set to true when fully tested, set to false will use whichever side has more space + -- this setting will be helpful if you do not want the PUM and floating win overlap + floating_window_above_cur_line = true, + floating_window_off_x = 5, -- adjust float windows x position. + -- adjust float windows y position. e.g. set to -2 can make floating window move up 2 lines + floating_window_off_y = function() + local pumheight = vim.o.pumheight + local winline = vim.fn.winline() -- line number in the window + local winheight = vim.fn.winheight(0) + + -- window top + if winline - 1 < pumheight then + return pumheight + end + + -- window bottom + if winheight - winline < pumheight then + return -pumheight + end + return 0 + end, + -- set to true the floating window will not auto-close until finish all parameters + -- It can be a boolean or a function that returns a boolean + fix_pos = true, + hint_enable = true, -- virtual hint enable + hint_prefix = "🐼 ", -- Panda for parameter + hint_scheme = "String", + hi_parameter = "LspSignatureActiveParameter", -- how your parameter will be highlight handler_opts = { - border = "shadow", -- double, single, shadow, none + -- double, rounded, single, shadow, none, or a table of borders + border = "shadow", }, - extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} + -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58 + always_trigger = false, + auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil. + extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} + zindex = 400, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom + padding = '', -- character to pad on left and right of signature can be ' ', or '|' etc + transparency = nil, -- disabled by default, allow floating win transparent value 1~100 + shadow_blend = 36, -- if you using shadow as border use this set the opacity + shadow_guibg = 'Black', -- if you using shadow as border use this set the color e.g. 'Green' or '#121315' + timer_interval = 200, -- default timer check interval set to lower value if you want to reduce latency + toggle_key = nil, -- toggle signature on and off in insert mode, e.g. toggle_key = '' + select_signature_key = nil, -- cycle to next signature, e.g. '' function overloading + move_cursor_key = nil, -- imap, use nvim_set_current_win to move cursor between current win and floating } return signature_cfg From dc640cea33088a28e93f2d81a282a4d24d29a79c Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Mar 2023 22:16:04 +0000 Subject: [PATCH 411/419] lsp(signature help): replace lsp-signature with cmp's lsp-signature-help This change is mainly moltivated by the fact that lsp-signature sometimes flickers It's quite an annoying behaviour so I am switching to cmp's signature help --- lua/plugins.lua | 15 ++++++++------- lua/plugrc/compe.lua | 1 + lua/plugrc/lspconfig/init.lua | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index b2595f2..b64b52c 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -56,7 +56,7 @@ require("paq")({ -- Nvim LSP client { "neovim/nvim-lspconfig" }, -- Show function signature when you type - { "ray-x/lsp_signature.nvim" }, + -- { "ray-x/lsp_signature.nvim" }, -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing @@ -74,12 +74,13 @@ require("paq")({ { "hrsh7th/nvim-cmp" }, -- Autocompletion plugin -- Completion Sources -- - "hrsh7th/cmp-nvim-lsp", -- nvim-cmp source for neovim builtin LSP client - "hrsh7th/cmp-path", -- nvim-cmp source for path - "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words - "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua - "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji - "hrsh7th/cmp-cmdline", --nvim-cmp source for vim's cmdline. + "hrsh7th/cmp-nvim-lsp", -- nvim-cmp source for neovim builtin LSP client + "hrsh7th/cmp-path", -- nvim-cmp source for path + "hrsh7th/cmp-buffer", -- nvim-cmp source for buffer words + "hrsh7th/cmp-nvim-lua", -- nvim-cmp source for nvim lua + "hrsh7th/cmp-emoji", -- nvim-cmp source for emoji + "hrsh7th/cmp-cmdline", --nvim-cmp source for vim's cmdline. + "hrsh7th/cmp-nvim-lsp-signature-help", --cmp-nvim-lsp-signature-help -- Auto pairs { "windwp/nvim-autopairs" }, diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index edab28e..4e4ac23 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -102,6 +102,7 @@ cmp.setup({ { name = "nvim_lua" }, { name = "emoji" }, { name = "neorg" }, + { name = 'nvim_lsp_signature_help' } }), }) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index bae41c2..1a3d9af 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -80,8 +80,8 @@ local function setup_servers() "bashls", } - local signature_cfg = require("plugrc.lspconfig.signature") - require("lsp_signature").setup(signature_cfg) + --local signature_cfg = require("plugrc.lspconfig.signature") + --require("lsp_signature").setup(signature_cfg) for _, server in pairs(lsp_servers) do local config = make_config() From a9ffa88e47c55cd24305bfc1c11175171d1646f6 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Mon, 6 Mar 2023 22:18:32 +0000 Subject: [PATCH 412/419] completion: enable round bordered floating window for cmp Enable it for both completion and documentation --- lua/plugrc/compe.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 4e4ac23..4c41bf9 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -42,6 +42,10 @@ cmp.setup({ require("luasnip").lsp_expand(args.body) end, }, + window = { + completion = { border = "rounded" }, + documentation = { border = "rounded" }, + }, formatting = { format = function(entry, vim_item) -- Kind icons From 131b7825eef774285e0639f95a3df77dc978b631 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 11 Mar 2023 12:26:11 +0000 Subject: [PATCH 413/419] editor: move diagnostics config and handles to editor.lua so that even when lsp isn't used the same config is used for all float windows and handlers move diagnostics_options to utils so all modules can refer to the same options use the diagnostics_options in all places where it is required --- lua/editor.lua | 23 ++++++++++++++++++ lua/plugrc/compe.lua | 6 +++-- lua/plugrc/lspconfig/init.lua | 45 ++--------------------------------- lua/utils.lua | 24 +++++++++++++++++++ 4 files changed, 53 insertions(+), 45 deletions(-) diff --git a/lua/editor.lua b/lua/editor.lua index 594015f..ad9cbed 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -167,6 +167,29 @@ vim.wo.foldminlines = 5 -- Remove Trailing whitespaces in all files autocmd({ "BufWritePre" }, { pattern = { "*" }, command = [[%s/\s\+$//e]] }) +local diagnostics_options = require("utils").diagnostics_options; + +vim.diagnostic.config(diagnostics_options) + +-- automatically show diagnostics on current line +autocmd({ "CursorHold", "CursorHoldI" }, { + callback = function() + vim.diagnostic.open_float(nil, diagnostics_options.float) + end +}) + +vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( + vim.lsp.handlers.hover, { + border = diagnostics_options.float.border, + } +) + +vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( + vim.lsp.handlers.signature_help, { + border = diagnostics_options.float.border, + } +) + local open_nvimtree_for_nonamebuf_and_directory = function(data) -- buffer is a [No Name] local no_name = data.file == "" and vim.bo[data.buf].buftype == "" diff --git a/lua/plugrc/compe.lua b/lua/plugrc/compe.lua index 4c41bf9..9a51798 100644 --- a/lua/plugrc/compe.lua +++ b/lua/plugrc/compe.lua @@ -35,6 +35,8 @@ local has_words_before = function() return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end +local diagnostics_options = require("utils").diagnostics_options; + cmp.setup({ snippet = { expand = function(args) @@ -43,8 +45,8 @@ cmp.setup({ end, }, window = { - completion = { border = "rounded" }, - documentation = { border = "rounded" }, + completion = { border = diagnostics_options.float.border }, + documentation = { border = diagnostics_options.float.border }, }, formatting = { format = function(entry, vim_item) diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 1a3d9af..4691e77 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -1,52 +1,11 @@ -local autocmd = vim.api.nvim_create_autocmd -- create autocmd +local diagnostics_options = require("utils").diagnostics_options; local on_attach = function(client, bufnr) _ = client; _ = bufnr; - -- options from nvim_open_win()| vim.diagnostic.open_float() - -- | vim.lsp.util.open_floating_preview()| vim.diagnostic.config() - local opts = { - virtual_text = false, - close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, - focusable = false, - float = { - source = "if_many", - -- "single": A single line box. - -- "double": A double line box. - -- "rounded": Like "single", but with rounded corners "╭" - -- "solid": Adds padding by a single whitespace cell. - -- "shadow": A drop shadow effect by blending with the - -- "none": No border (default). - border = "rounded", - }, - severity_sort = true, - } - vim.diagnostic.config(opts) - - -- automatically show diagnostics on current line - autocmd({ "CursorHold", "CursorHoldI" }, { - callback = function() - vim.diagnostic.open_float(nil, { - focus = false, - }) - end - }) - require('lspconfig.ui.windows').default_options = { - border = opts.float.border, + border = diagnostics_options.float.border, } - - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( - vim.lsp.handlers.hover, { - border = opts.float.border, - } - ) - - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( - vim.lsp.handlers.signature_help, { - border = opts.float.border, - } - ) end -- config that activates keymaps and enables snippet support diff --git a/lua/utils.lua b/lua/utils.lua index fea050d..80cd240 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -35,3 +35,27 @@ function _G.reload(module) end end end + +local M = {} + +-- options from nvim_open_win()| vim.diagnostic.open_float() +-- | vim.lsp.util.open_floating_preview()| vim.diagnostic.config() +M.diagnostics_options = { + virtual_text = false, + float = { + close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, + focusable = false, + focus = false, + source = "if_many", + -- "single": A single line box. + -- "double": A double line box. + -- "rounded": Like "single", but with rounded corners "╭" + -- "solid": Adds padding by a single whitespace cell. + -- "shadow": A drop shadow effect by blending with the + -- "none": No border (default). + border = "rounded", + }, + update_in_insert = false, + severity_sort = true, +} +return M; From eef15cd455ef33f7794dbd543a26804b6a60633b Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 11 Mar 2023 18:25:33 +0000 Subject: [PATCH 414/419] lsp: remove ray-x/lsp_signature.nvim plugin lsp_signature's functionality can be replaced with hrsh7th/cmp-nvim-lsp-signature-help an it doesn't flicker like lsp_signature does sometimes --- lua/plugins.lua | 2 - lua/plugrc/lspconfig/init.lua | 3 -- lua/plugrc/lspconfig/signature.lua | 68 ------------------------------ 3 files changed, 73 deletions(-) delete mode 100644 lua/plugrc/lspconfig/signature.lua diff --git a/lua/plugins.lua b/lua/plugins.lua index b64b52c..2869015 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -55,8 +55,6 @@ require("paq")({ -- == LSP Client === -- Nvim LSP client { "neovim/nvim-lspconfig" }, - -- Show function signature when you type - -- { "ray-x/lsp_signature.nvim" }, -- A pretty diagnostics, references, telescope -- results, quickfix and location -- list to help you solve all the trouble your code is causing diff --git a/lua/plugrc/lspconfig/init.lua b/lua/plugrc/lspconfig/init.lua index 4691e77..511d5b3 100644 --- a/lua/plugrc/lspconfig/init.lua +++ b/lua/plugrc/lspconfig/init.lua @@ -39,9 +39,6 @@ local function setup_servers() "bashls", } - --local signature_cfg = require("plugrc.lspconfig.signature") - --require("lsp_signature").setup(signature_cfg) - for _, server in pairs(lsp_servers) do local config = make_config() local settings = require("plugrc.lspconfig.settings") diff --git a/lua/plugrc/lspconfig/signature.lua b/lua/plugrc/lspconfig/signature.lua deleted file mode 100644 index d7bf90f..0000000 --- a/lua/plugrc/lspconfig/signature.lua +++ /dev/null @@ -1,68 +0,0 @@ -local signature_cfg = { - -- This is mandatory, otherwise border config won't get registered. - -- If you want to hook lspsaga or other signature handler, pls set to false - bind = true, - -- will show the specified lines of comment/doc (if there are more than two lines in doc, will be truncated); - -- set to 0 if you DO NOT want any API comments be shown. This setting only take effect in insert mode, - -- it does not affect signature help in normal mode, 10 by default - doc_lines = 18, - -- max height of signature floating_window, - -- if content is more than max_height, you can scroll down to view the hiding contents - max_height = 18, - -- max_width of signature floating_window, - -- line will be wrapped if exceed max_width - max_width = 117, - -- allow doc/signature text wrap inside floating_window, useful if your lsp return doc/sig is too long - wrap = true, - -- show hint in a floating window, - -- set to false for virtual text only mode - floating_window = true, - -- try to place the floating above the current line when possible Note: - -- will set to true when fully tested, set to false will use whichever side has more space - -- this setting will be helpful if you do not want the PUM and floating win overlap - floating_window_above_cur_line = true, - floating_window_off_x = 5, -- adjust float windows x position. - -- adjust float windows y position. e.g. set to -2 can make floating window move up 2 lines - floating_window_off_y = function() - local pumheight = vim.o.pumheight - local winline = vim.fn.winline() -- line number in the window - local winheight = vim.fn.winheight(0) - - -- window top - if winline - 1 < pumheight then - return pumheight - end - - -- window bottom - if winheight - winline < pumheight then - return -pumheight - end - return 0 - end, - -- set to true the floating window will not auto-close until finish all parameters - -- It can be a boolean or a function that returns a boolean - fix_pos = true, - hint_enable = true, -- virtual hint enable - hint_prefix = "🐼 ", -- Panda for parameter - hint_scheme = "String", - hi_parameter = "LspSignatureActiveParameter", -- how your parameter will be highlight - handler_opts = { - -- double, rounded, single, shadow, none, or a table of borders - border = "shadow", - }, - -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58 - always_trigger = false, - auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil. - extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} - zindex = 400, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom - padding = '', -- character to pad on left and right of signature can be ' ', or '|' etc - transparency = nil, -- disabled by default, allow floating win transparent value 1~100 - shadow_blend = 36, -- if you using shadow as border use this set the opacity - shadow_guibg = 'Black', -- if you using shadow as border use this set the color e.g. 'Green' or '#121315' - timer_interval = 200, -- default timer check interval set to lower value if you want to reduce latency - toggle_key = nil, -- toggle signature on and off in insert mode, e.g. toggle_key = '' - select_signature_key = nil, -- cycle to next signature, e.g. '' function overloading - move_cursor_key = nil, -- imap, use nvim_set_current_win to move cursor between current win and floating -} - -return signature_cfg From 5abd7d8fb4374353bdccd767b99a763ba551fa83 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 12 Mar 2023 22:57:29 +0000 Subject: [PATCH 415/419] plugins: make neorg a lazy plugin --- lua/lazy/init.lua | 1 + lua/lazy/neorg.lua | 46 ++++++++++++++++++++++++++++++++++++++++++++ lua/plugrc/init.lua | 1 - lua/plugrc/neorg.lua | 26 ------------------------- 4 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 lua/lazy/neorg.lua delete mode 100644 lua/plugrc/neorg.lua diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 82e4e18..e904f29 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -1,3 +1,4 @@ require("lazy.telescope") require("lazy.symbols") require("lazy.trouble") +require("lazy.neorg") diff --git a/lua/lazy/neorg.lua b/lua/lazy/neorg.lua new file mode 100644 index 0000000..eb6433c --- /dev/null +++ b/lua/lazy/neorg.lua @@ -0,0 +1,46 @@ +local autocmd = vim.api.nvim_create_autocmd +local augroup = vim.api.nvim_create_augroup + +local neorg_group = augroup("neorg", { clear = false }); + +autocmd({ "BufEnter", "BufWinEnter" }, { + pattern = { "*.norg" }, + group = neorg_group, + desc = "autocmd to load neorg only in norg files", + callback = function(args) + _ = args + if not package.loaded["plenary"] then + vim.cmd([[ packadd plenary.nvim ]]) + end + if not package.loaded["neorg"] then + vim.cmd([[ packadd neorg ]]) + end + + require("neorg").setup({ + load = { + ["core.defaults"] = {}, -- Tells neorg to load the module called core.defaults with no extra data + ["core.keybinds"] = { -- Configure core.keybinds + config = { + default_keybinds = true, -- Generate the default keybinds + neorg_leader = "o", -- This is the default if unspecified + }, + }, + ["core.norg.concealer"] = {}, + ["core.norg.dirman"] = { + config = { + -- Define your workspaces here! + workspaces = { + -- You can give it any name and any directory, get creative! + notes = "~/.local/neorg", + }, + }, + }, + ["core.norg.completion"] = { + config = { + engine = "nvim-cmp", + }, + }, + }, + }) + end +}) diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index 7309043..e397d15 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -6,7 +6,6 @@ require("plugrc.gitsigns") require("plugrc.lspconfig") require("plugrc.compe") require("plugrc.autopairs") -require("plugrc.neorg") require("plugrc.whichkey") require("plugrc.tree") require("Comment").setup({}) diff --git a/lua/plugrc/neorg.lua b/lua/plugrc/neorg.lua deleted file mode 100644 index 811099e..0000000 --- a/lua/plugrc/neorg.lua +++ /dev/null @@ -1,26 +0,0 @@ -require("neorg").setup({ - load = { - ["core.defaults"] = {}, -- Tells neorg to load the module called core.defaults with no extra data - ["core.keybinds"] = { -- Configure core.keybinds - config = { - default_keybinds = true, -- Generate the default keybinds - neorg_leader = "o", -- This is the default if unspecified - }, - }, - ["core.norg.concealer"] = {}, - ["core.norg.dirman"] = { - config = { - -- Define your workspaces here! - workspaces = { - -- You can give it any name and any directory, get creative! - notes = "~/.local/neorg", - }, - }, - }, - ["core.norg.completion"] = { - config = { - engine = "nvim-cmp", - }, - }, - }, -}) From 6d76164cb7112aa7ad8c52034a64e01da3996b42 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 12 Mar 2023 23:00:47 +0000 Subject: [PATCH 416/419] lazy: check if packages are already loaded before packadding them --- lua/lazy/symbols.lua | 2 ++ lua/lazy/telescope.lua | 10 ++++++---- lua/lazy/trouble.lua | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lua/lazy/symbols.lua b/lua/lazy/symbols.lua index f09a95c..15dbebf 100644 --- a/lua/lazy/symbols.lua +++ b/lua/lazy/symbols.lua @@ -1,7 +1,9 @@ require("utils") local function symbols_setup() + if not package.loaded["symbols-outline"] then vim.cmd([[ packadd symbols-outline.nvim ]]) + end local symbols_outline_opts = { highlight_hovered_item = true, diff --git a/lua/lazy/telescope.lua b/lua/lazy/telescope.lua index a5cafc0..659e1e5 100644 --- a/lua/lazy/telescope.lua +++ b/lua/lazy/telescope.lua @@ -3,10 +3,12 @@ require("utils") local opt = { silent = true } local function telescopesetup() - vim.cmd([[ - packadd popup.nvim - packadd telescope.nvim - ]]) + if not package.loaded["plenary"] then + vim.cmd([[ packadd plenary.nvim ]]) + end + if not package.loaded["telescope"] then + vim.cmd([[ packadd telescope.nvim ]]) + end local actions = require("telescope.actions") require("telescope").setup { diff --git a/lua/lazy/trouble.lua b/lua/lazy/trouble.lua index e112a3f..e7b16c4 100644 --- a/lua/lazy/trouble.lua +++ b/lua/lazy/trouble.lua @@ -1,7 +1,9 @@ require("utils") local function troublesetup() - vim.cmd([[packadd trouble.nvim]]) + if not package.loaded["trouble"] then + vim.cmd([[packadd trouble.nvim]]) + end require("trouble").setup({ position = "bottom", -- position of the list can be: bottom, top, left, right From 304fc28eadf7151daf04abf4ef7410031cc48880 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sun, 12 Mar 2023 23:06:20 +0000 Subject: [PATCH 417/419] lazy: make nvim-tree a lazy plugin move open nvim-tree on noname buffer and directory to lazy/tree update plugins.lua for neorg and plenary --- lua/editor.lua | 27 +--- lua/lazy/init.lua | 1 + lua/lazy/tree.lua | 310 +++++++++++++++++++++++++++++++++++++++++++ lua/mapping/init.lua | 1 - lua/mapping/tree.lua | 5 - lua/plugins.lua | 8 +- lua/plugrc/init.lua | 1 - lua/plugrc/tree.lua | 152 --------------------- 8 files changed, 318 insertions(+), 187 deletions(-) create mode 100644 lua/lazy/tree.lua delete mode 100644 lua/mapping/tree.lua delete mode 100644 lua/plugrc/tree.lua diff --git a/lua/editor.lua b/lua/editor.lua index ad9cbed..f6f656a 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -26,6 +26,9 @@ autocmd({ "BufReadPost" }, { pattern = { "*" }, command = [[call setpos(".", getpos("'\""))]], }) +-- disabling netrw is strongly advised for nvim-tree +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 -- Show line numbers wo.number = true @@ -189,27 +192,3 @@ vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( border = diagnostics_options.float.border, } ) - -local open_nvimtree_for_nonamebuf_and_directory = function(data) - -- buffer is a [No Name] - local no_name = data.file == "" and vim.bo[data.buf].buftype == "" - -- buffer is a directory - local directory = vim.fn.isdirectory(data.file) == 1 - - if not directory and not no_name then - return - end - - if directory then - -- change to the directory - vim.cmd.cd(data.file) - - -- open the tree - require("nvim-tree.api").tree.open() - else - -- open the tree, find the file but don't focus it - require("nvim-tree.api").tree.toggle({ focus = false, find_file = true, }) - end -end - -autocmd({ "VimEnter" }, { callback = open_nvimtree_for_nonamebuf_and_directory }) diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index e904f29..f1a295c 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -2,3 +2,4 @@ require("lazy.telescope") require("lazy.symbols") require("lazy.trouble") require("lazy.neorg") +require("lazy.tree") diff --git a/lua/lazy/tree.lua b/lua/lazy/tree.lua new file mode 100644 index 0000000..c147a5f --- /dev/null +++ b/lua/lazy/tree.lua @@ -0,0 +1,310 @@ +require("utils") + +local opt = { silent = true } +local autocmd = vim.api.nvim_create_autocmd + +local function on_attach(bufnr) + local api = require('nvim-tree.api') + + local function opts(desc) + return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } + end + + + -- Default mappings. Feel free to modify or remove as you wish. + -- + -- BEGIN_DEFAULT_ON_ATTACH + map('n', 'g?', api.tree.toggle_help, opts('Help')) + + map('n', '', api.tree.change_root_to_node, opts('CD')) + map('n', 'C', api.tree.change_root_to_node, opts('CD')) + + map('n', 'E', api.tree.expand_all, opts('Expand All')) + map('n', 'q', api.tree.close, opts('Close')) + map('n', 'R', api.tree.reload, opts('Refresh')) + map('n', 'S', api.tree.search_node, opts('Search')) + map('n', 'U', api.tree.toggle_custom_filter, opts('Toggle Hidden')) + map('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Dotfiles')) + map('n', 'W', api.tree.collapse_all, opts('Collapse')) + + map('n', '', api.node.open.replace_tree_buffer, opts('Open: In Place')) + map('n', '', api.node.open.edit, opts('Open')) + map('n', 'o', api.node.open.edit, opts('Open')) + map('n', 'O', api.node.open.no_window_picker, opts('Open: No Window Picker')) + + map('n', '', api.node.show_info_popup, opts('File Info')) + + map('n', '', api.fs.rename_sub, opts('Rename: Omit Filename')) + map('n', 'e', api.fs.rename_basename, opts('Rename: Basename')) + map('n', 'r', api.fs.rename, opts('Rename File')) + map('n', 'a', api.fs.create, opts('Create File')) + map('n', 'c', api.fs.copy.node, opts('Copy File')) + map('n', 'y', api.fs.copy.filename, opts('Copy Name')) + map('n', 'Y', api.fs.copy.relative_path, opts('Copy Relative Path')) + map('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path')) + map('n', 'D', api.fs.trash, opts('Trash')) + map('n', 'p', api.fs.paste, opts('Paste')) + map('n', 'x', api.fs.cut, opts('Cut')) + + map('n', '', api.node.open.vertical, opts('Open: Vertical Split')) + map('n', '', api.node.open.horizontal, opts('Open: Horizontal Split')) + map('n', '', api.node.open.tab, opts('Open: New Tab')) + + map('n', '', api.node.navigate.parent_close, opts('Close Directory')) + + map('n', '', api.node.open.preview, opts('Open Preview')) + + map('n', '>', api.node.navigate.sibling.next, opts('Next Sibling')) + map('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling')) + map('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling')) + map('n', 'K', api.node.navigate.sibling.first, opts('First Sibling')) + map('n', 'P', api.node.navigate.parent, opts('Parent Directory')) + map('n', '-', api.tree.change_root_to_parent, opts('Up')) + + map('n', '.', api.node.run.cmd, opts('Run File Command')) + map('n', 's', api.node.run.system, opts('Run System')) + + + map('n', 'bmv', api.marks.bulk.move, opts('Move Bookmarked')) + map('n', 'm', api.marks.toggle, opts('Toggle Bookmark')) + + map('n', '[c', api.node.navigate.git.prev, opts('Prev Git')) + map('n', ']c', api.node.navigate.git.next, opts('Next Git')) + map('n', 'B', api.tree.toggle_no_buffer_filter, opts('Toggle No Buffer')) + map('n', 'C', api.tree.toggle_git_clean_filter, opts('Toggle Git Clean')) + map('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Git Ignore')) + + + map('n', ']e', api.node.navigate.diagnostics.next, opts('Next Diagnostic')) + map('n', '[e', api.node.navigate.diagnostics.prev, opts('Prev Diagnostic')) + + map('n', 'F', api.live_filter.clear, opts('Clean Filter')) + map('n', 'f', api.live_filter.start, opts('Filter')) + -- END_DEFAULT_ON_ATTACH + + + --Example of mappings with a custom action_cb + -- map('n', 'P', function() + -- local node = api.tree.get_node_under_cursor() + -- if node ~= nil then + -- print(node.absolute_path) + -- end + -- end, opts('Print Node Path')) +end + +local tree_setup = function() + if not package.loaded["nvim-tree"] then + vim.cmd([[ packadd nvim-tree.lua ]]) + end + + require("nvim-tree").setup({ + on_attach = on_attach, + -- disables netrw completely + disable_netrw = true, + -- hijack netrw window on startup + hijack_netrw = true, + -- reload the explorer every time a buffer is written to + auto_reload_on_write = true, + -- changes how files within the same directory are sorted. can be name | modification_time + sort_by = "name", + -- open in place of the unnamed buffer if it's empty. + hijack_unnamed_buffer_when_opening = true, + -- hijack the cursor in the tree to put it at the start of the filename + hijack_cursor = true, + -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) + -- and refresh the tree + sync_root_with_cwd = false, + --Will change cwd of nvim-tree to that of new buffer's when opening nvim-tree. + respect_buf_cwd = false, + -- hijacks new directory buffers when they are opened (`:e dir`). + hijack_directories = { + -- enable the feature. Disable this option if you use vim-dirvish or dirbuf.nvim. + -- If |hijack_netrw| and |disable_netrw| are `false`, this feature will be disabled. + enable = true, + -- opens the tree if the tree was previously closed. + auto_open = true, + }, + -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file + update_focused_file = { + -- enables the feature + enable = true, + -- Update the root directory of the tree if the file is not under current + -- root directory. It prefers vim's cwd and `root_dirs`. + -- Otherwise it falls back to the folder containing the file. + -- Only relevant when `update_focused_file.enable` is `true` + update_root = true, + -- list of buffer names / filetypes that will not update the cwd if the file + -- isn't found under the current root directory + -- only relevant when `update_focused_file.update_root` is true and `update_focused_file.enable` is true + ignore_list = {}, + }, + -- git integration with icons and colors + git = { + -- enable / disable the feature + enable = true, + -- ignore files based on `.gitignore` + ignore = true, + }, + -- Indicate which file have unsaved modification + modified = { + enable = true, + }, + -- window / buffer setup + view = { + -- When entering nvim-tree, reposition the view so that the current node is + --initially centralized, see |zz|. + centralize_selection = false, + -- Enable |cursorline| in the tree window. + cursorline = true, + -- hide the path of the current working directory on top of the tree + hide_root_folder = false, + -- Width of the window: can be a `%` string, a number representing columns, a + -- function or a table. + -- A table indicates that the view should be dynamically sized based on the + -- longest line (previously `view.adaptive_size`). + width = 39, + -- side of the tree, can be 'left' | 'right' + side = "left", + -- preserve window proportions when opening a file. + -- If `false`, the height and width of windows other than nvim-tree will be equalized. + preserve_window_proportions = true, + -- print the line number in front of each line. + number = false, + -- show the line number relative to the line with the cursor in front of each line. + -- If the option `view.number` is also `true`, the number on the cursor line will be the line number instead of `0`. + relativenumber = false, + --show diagnostic sign column. Value can be `"yes"`, `"auto"`, `"no"` + signcolumn = "yes", + -- Configuration options for floating window + float = { + -- Tree window will be floating. + enable = false, + -- Close the floating tree window when it loses focus. + quit_on_focus_loss = true, + }, + }, + -- UI rendering setup + renderer = { + -- Appends a trailing slash to folder names. + add_trailing = false, + -- Compact folders that only contain a single folder into one node in the file tree. + group_empty = false, + -- Display node whose name length is wider than the width of nvim-tree window in floating window. + full_name = false, + --Enable file highlight for git attributes using `NvimTreeGit*` highlight groups. + highlight_git = true, + -- Highlight icons and/or names for opened files using the + -- `NvimTreeOpenedFile` highlight group. + -- Value can be `"none"`, `"icon"`, `"name"` or `"all"`. + highlight_opened_files = "icon", + -- Highlight icons and/or names for modified files using the + -- `NvimTreeModifiedFile` highlight group. + -- Requires |nvim-tree.modified.enable| + -- Value can be `"none"`, `"icon"`, `"name"` or `"all"` + highlight_modified = "icon", + -- A list of filenames that gets highlighted with `NvimTreeSpecialFile`. + special_files = { "Cargo.toml", "Makefile", "README.md", "build.zig", "build.zig.zon" }, + -- Whether to show the destination of the symlink. + symlink_destination = true, + }, + --filtering options + filters = { + --do not show dotfiles: files starting with a `.` + dotfiles = true, + -- Do not show files with no git status. This will show ignored files when + -- |nvim-tree.git.ignore| is set, as they are effectively dirty. + git_clean = false, + --custom list of vim regex for file/directory names that will not be shown. + custom = {}, + --list of directories or files to exclude from filtering: always show them. + --Overrides `git.ignore`, `filters.dotfiles` and `filters.custom`. + exclude = {}, + }, + --configuration for various actions + actions = { + -- vim |current-directory| behaviour. + change_dir = { + --change the working directory when changing directories in the tree. + enable = true, + -- Use `:cd` instead of `:lcd` when changing directories. + -- Consider that this might cause issues with the |nvim-tree.sync_root_with_cwd| option. + global = false, + --restrict changing to a directory above the global current working directory. + restrict_above_cwd = false, + }, + -- Configuration options for opening a file from nvim-tree. + open_file = { + --closes the explorer when opening a file. + --It will also disable preventing a buffer overriding the tree. + quit_on_open = false, + --resizes the tree when opening a file + resize_window = false, + --window picker configuration + window_picker = { + --If not enabled, files will open in window from which you last opened the tree. + enable = true, + }, + }, + -- Close any window displaying a file when removing the file from the tree. + remove_file = { close_window = true }, + --When enabled, copied text will be stored in registers '+' (system), otherwise, it will be stored in '1' and '"'. + use_system_clipboard = true, + }, + -- Configuration for tab behaviour. + tab = { + -- Configuration for syncing nvim-tree across tabs. + sync = { + -- Opens the tree automatically when switching tabpage or opening a new + -- tabpage if the tree was previously open. + open = false, + -- Closes the tree across all tabpages when the tree is closed. + close = false, + }, + }, + }) +end + +autocmd({ "VimEnter" }, { + -- open nvim-tree for noname buffers and directory + callback = function(args) + -- buffer is a [No Name] + local no_name = args.file == "" and vim.bo[args.buf].buftype == "" + -- buffer is a directory + local directory = vim.fn.isdirectory(args.file) == 1 + + if not directory and not no_name then + return + end + + if not package.loaded["nvim-tree"] then + vim.cmd([[ packadd nvim-tree.lua ]]) + end + + tree_setup() + + local api = require("nvim-tree.api") + + if directory then + -- change to the directory + vim.cmd.cd(args.file) + -- open the tree + api.tree.open() + else + -- open the tree, find the file but don't focus it + api.tree.toggle({ focus = false, find_file = true, }) + end + end +}) + +map("n", "n", function() + tree_setup() + return require("nvim-tree.api").tree.toggle({ focus = false, find_file = true }) +end +, opt) + +map("n", "nc", function() + tree_setup() + return require("nvim-tree.api").tree.close() + --vim.cmd([[NvimTreeFindFileToggle]]) +end +, opt) diff --git a/lua/mapping/init.lua b/lua/mapping/init.lua index 8b63f46..5e18319 100644 --- a/lua/mapping/init.lua +++ b/lua/mapping/init.lua @@ -3,4 +3,3 @@ require("mapping.spellcheck") require("mapping.tab_buffer") require("mapping.terminal") require("mapping.lspconfig") -require("mapping.tree") diff --git a/lua/mapping/tree.lua b/lua/mapping/tree.lua deleted file mode 100644 index 53456fa..0000000 --- a/lua/mapping/tree.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("utils") - -map("n", "n", "NvimTreeToggle") --- map('n', 'r', ':NvimTreeRefresh') --- map('n','tf',':NvimTreeFindFile',option) diff --git a/lua/plugins.lua b/lua/plugins.lua index 2869015..6c89752 100755 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -22,15 +22,14 @@ require("paq")({ -- === Status Line === -- Status bar plugin -- A blazing fast and easy to configure neovim statusline - { "hoob3rt/lualine.nvim" }, + { "nvim-lualine/lualine.nvim" }, -- Tabline -- A snazzy buffer line (with minimal tab integration) for Neovim { "akinsho/bufferline.nvim" }, -- === Fuzzy Finder === -- a highly extendable fuzzy finder over lists - { "nvim-lua/popup.nvim", opt = true }, -- for Find, Filter, Preview, Pick - { "nvim-lua/plenary.nvim" }, -- reusable lua funtions + { "nvim-lua/plenary.nvim", opt = true }, -- reusable lua funtions { "nvim-telescope/telescope.nvim", opt = true }, -- === Syntax Plugins === @@ -49,6 +48,7 @@ require("paq")({ run = function() vim.cmd("Neorg sync-parsers") end, + opt = true }, -- === Language Specific Plugins === @@ -93,7 +93,7 @@ require("paq")({ -- === UI === -- -- A Neovim File explorer - { "nvim-tree/nvim-tree.lua" }, + { "nvim-tree/nvim-tree.lua", opt = true }, -- == Icons == -- -- Glyphs and Icons for neovim diff --git a/lua/plugrc/init.lua b/lua/plugrc/init.lua index e397d15..ae67a74 100644 --- a/lua/plugrc/init.lua +++ b/lua/plugrc/init.lua @@ -7,5 +7,4 @@ require("plugrc.lspconfig") require("plugrc.compe") require("plugrc.autopairs") require("plugrc.whichkey") -require("plugrc.tree") require("Comment").setup({}) diff --git a/lua/plugrc/tree.lua b/lua/plugrc/tree.lua deleted file mode 100644 index f4968cc..0000000 --- a/lua/plugrc/tree.lua +++ /dev/null @@ -1,152 +0,0 @@ -require("nvim-tree").setup({ - -- disables netrw completely - disable_netrw = true, - -- hijack netrw window on startup - hijack_netrw = true, - -- reload the explorer every time a buffer is written to - auto_reload_on_write = true, - -- opens the tree when changing/opening a new tab if the tree was previously opened - open_on_tab = false, - -- changes how files within the same directory are sorted. can be name | modification_time - sort_by = "name", - -- open in place of the unnamed buffer if it's empty. - hijack_unnamed_buffer_when_opening = false, - -- hijacks new directory buffers when they are opened (`:e dir`). - hijack_directories = { - -- enable the feature. Disable this option if you use vim-dirvish or dirbuf.nvim. - -- If |hijack_netrw| and |disable_netrw| are `false`, this feature will be disabled. - enable = true, - -- opens the tree if the tree was previously closed. - auto_open = true, - }, - -- hijack the cursor in the tree to put it at the start of the filename - hijack_cursor = true, - -- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually) - update_cwd = false, - -- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file - update_focused_file = { - -- enables the feature - enable = true, - -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory - -- only relevant when `update_focused_file.enable` is true - update_cwd = true, - -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory - -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true - ignore_list = {}, - }, - -- git integration with icons and colors - git = { - -- enable / disable the feature - enable = true, - -- ignore files based on `.gitignore` - ignore = true, - }, - renderer = { - --Enable file highlight for git attributes using `NvimTreeGit*` highlight groups. - highlight_git = true, - --Highlight icons and/or names for opened files. - highlight_opened_files = "all", - }, - -- window / buffer setup - view = { - -- hide the path of the current working directory on top of the tree - hide_root_folder = false, - -- width of the window, can be either a `%` string or a number representing columns. - -- Only works with |view.side| `left` or `right` - width = 39, - -- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom' - side = "left", - -- preserve window proportions when opening a file. - -- If `false`, the height and width of windows other than nvim-tree will be equalized. - preserve_window_proportions = true, - -- print the line number in front of each line. - number = false, - -- show the line number relative to the line with the cursor in front of each line. - -- If the option `view.number` is also `true`, the number on the cursor line will be the line number instead of `0`. - relativenumber = false, - --show diagnostic sign column. Value can be `"yes"`, `"auto"`, `"no"` - signcolumn = "yes", - mappings = { - -- custom only false will merge the list with the default mappings - -- if true, it will only use your list to set the mappings - custom_only = false, - -- list of mappings to set on the tree manually - list = { - { key = { "", "o", "<2-LeftMouse>" }, action = "edit", }, - { key = "", action = "edit_in_place", }, - { key = { "O" }, action = "edit_no_picker", }, - { key = { "<2-RightMouse>", "" }, action = "cd" }, - { key = "", action = "vsplit", }, - { key = "", action = "split", }, - { key = "", action = "tabnew", }, - { key = "<", action = "prev_sibling", }, - { key = ">", action = "next_sibling", }, - { key = "P", action = "parent_node", }, - { key = "", action = "close_node", }, - { key = "", action = "preview", }, - { key = "K", action = "first_sibling", }, - { key = "J", action = "last_sibling", }, - { key = "I", action = "toggle_git_ignored", }, - { key = "H", action = "toggle_dotfiles", }, - { key = "R", action = "refresh", }, - { key = "a", action = "create", }, - { key = "d", action = "remove", }, - { key = "D", action = "trash", }, - { key = "r", action = "rename", }, - { key = "", action = "full_rename", }, - { key = "x", action = "cut" }, - { key = "c", action = "copy" }, - { key = "p", action = "paste", }, - { key = "y", action = "copy_name", }, - { key = "Y", action = "copy_path", }, - { key = "gy", action = "copy_absolute_path", }, - { key = "[c", action = "prev_git_item", }, - { key = "]c", action = "next_git_item", }, - { key = "-", action = "dir_up", }, - { key = "s", action = "system_open", }, - { key = "q", action = "close", }, - { key = "g?", action = "toggle_help", }, - { key = "W", action = "collapse_all", }, - { key = "S", action = "search_node", }, - { key = "", action = "toggle_file_info", }, - { key = ".", action = "run_file_command", }, - }, - }, - }, - --filtering options - filters = { - --do not show dotfiles: files starting with a `.` - dotfiles = true, - --custom list of vim regex for file/directory names that will not be shown. - custom = {}, - --list of directories or files to exclude from filtering: always show them. - --Overrides `git.ignore`, `filters.dotfiles` and `filters.custom`. - exclude = {}, - }, - --configuration for various actions - actions = { - change_dir = { - --change the working directory when changing directories in the tree. - enable = true, - --use `:cd` instead of `:lcd` when changing directories. - --Consider that this might cause issues with the |update_cwd| options. - global = false, - --restrict changing to a directory above the global current working directory. - restrict_above_cwd = false, - }, - open_file = { - --closes the explorer when opening a file. - --It will also disable preventing a buffer overriding the tree. - quit_on_open = false, - --resizes the tree when opening a file - resize_window = false, - --window picker configuration - window_picker = { - --If not enabled, files will open in window from which you last opened the tree. - enable = true, - }, - }, - --When enabled, copied text will be stored in registers '+' (system), otherwise, it will be stored in '1' and '"'. - use_system_clipboard = true, - }, -}) From 8243fcdbd065c74ec5892c23442ee1c453a59612 Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Sat, 18 Mar 2023 08:22:29 +0000 Subject: [PATCH 418/419] disable builtin plugins at startup --- lua/editor.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lua/editor.lua b/lua/editor.lua index f6f656a..336b508 100644 --- a/lua/editor.lua +++ b/lua/editor.lua @@ -1,3 +1,22 @@ +local disabled_built_ins = { + "gzip", + "health", + "man", + "matchit", + "matchparen", + "netrwPlugin", + "rplugin", + "shada", + "spellfile", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", +} + +for index = 1, #disabled_built_ins do + vim.g["loaded_" .. disabled_built_ins[index]] = true +end local o = vim.o -- set editor global-local editor options local wo = vim.wo -- set window-local editor options local g = vim.go -- set global editor editor options From cfd00f9c4d52866b0a5c4578485a0ff33a28ef5d Mon Sep 17 00:00:00 2001 From: Ultra-Code Date: Fri, 24 Mar 2023 14:14:37 +0000 Subject: [PATCH 419/419] tree: fix tree toggle functionality in mapping fix for nvim-tree reconstructing(destroy/recreate) setup when called after the initial one this issue was preventing tree toggle fn from functioning like expected on second call --- lua/lazy/tree.lua | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lua/lazy/tree.lua b/lua/lazy/tree.lua index c147a5f..645db4d 100644 --- a/lua/lazy/tree.lua +++ b/lua/lazy/tree.lua @@ -297,14 +297,11 @@ autocmd({ "VimEnter" }, { }) map("n", "n", function() + local TRUE = 1 +-- help NvimTreeRequired autocmd in nvim_tree_events_startup section + if vim.g.NvimTreeRequired ~= TRUE then tree_setup() + end return require("nvim-tree.api").tree.toggle({ focus = false, find_file = true }) end , opt) - -map("n", "nc", function() - tree_setup() - return require("nvim-tree.api").tree.close() - --vim.cmd([[NvimTreeFindFileToggle]]) -end -, opt)

    YpSLy4XU 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�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