From fc59f3cf4c440ca2225bb0bf5f4201817ece1af4 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 2 Jul 2022 16:19:28 +1000 Subject: [PATCH 1/4] Migrate plugins.vim to Vim9 script This syntax is only supported in Vim 8.2 or higher, so this means older Vims won't work properly, but I don't really have much of a reason to use older Vims than that anyway. Note that because plugins.vim now requires Vim 8.2+, it doesn't need to bother providing special support for Vims that don't have the packages feature, since packages were added before Vim9 script anyway. --- config/vim/plugins.vim | 159 +++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 94 deletions(-) diff --git a/config/vim/plugins.vim b/config/vim/plugins.vim index ffcdef0..4ee833b 100644 --- a/config/vim/plugins.vim +++ b/config/vim/plugins.vim @@ -1,116 +1,87 @@ -if exists('+packpath') - silent! packadd minpac - if !exists('g:loaded_minpac') - silent !git clone https://github.com/k-takata/minpac.git $XDG_CACHE_HOME/vim/pack/minpac/opt/minpac - augroup minpac - autocmd! - autocmd VimEnter * call minpac#update() - augroup END - endif - - function! Plug(...) - call call('minpac#add', a:000) - endfunction - - function! PlugEnd() - endfunction - - packadd minpac - - call minpac#init({'dir': $XDG_CACHE_HOME . '/vim'}) -else - if !filereadable($XDG_CACHE_HOME . '/vim/autoload/plug.vim') - silent !curl -fLo $XDG_CACHE_HOME/vim/autoload/plug.vim --create-dirs 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' - augroup vimplug - autocmd VimEnter * PlugInstall - augroup END - endif - - function! Plug(name, ...) - call plug#(a:name) - endfunction - - function! PlugEnd() - call plug#end() - endfunction - - call plug#begin($XDG_CACHE_HOME . '/vim/plugged') +vim9script +silent! packadd minpac +if !exists('g:loaded_minpac') + silent !git clone https://github.com/k-takata/minpac.git $XDG_CACHE_HOME/vim/pack/minpac/opt/minpac + augroup minpac { + autocmd! + autocmd VimEnter * call minpac#update() + } endif +packadd minpac -call Plug('k-takata/minpac', {'type': 'opt'}) -call Plug('tpope/vim-sensible') -call Plug('prabirshrestha/async.vim') +minpac#init({dir: $XDG_CACHE_HOME .. '/vim'}) +minpac#add('k-takata/minpac', {type: 'opt'}) +minpac#add('tpope/vim-sensible') +minpac#add('prabirshrestha/async.vim') -call Plug('ciaranm/inkpot', {'type': 'opt', 'do': 'colorscheme inkpot'}) -call Plug('morhetz/gruvbox', {'type': 'opt'}) +minpac#add('ciaranm/inkpot', {type: 'opt', do: 'colorscheme inkpot'}) +minpac#add('morhetz/gruvbox', {type: 'opt'}) -call Plug('direnv/direnv.vim') -call Plug('editorconfig/editorconfig-vim') -call Plug('godlygeek/tabular') -call Plug('jamessan/vim-gnupg') -call Plug('junegunn/vim-easy-align') -call Plug('lifepillar/vim-mucomplete') -call Plug('lotabout/skim') -call Plug('lotabout/skim.vim') -call Plug('mhinz/vim-signify') -call Plug('scrooloose/nerdtree') -call Plug('sjl/vitality.vim') -call Plug('tpope/vim-apathy') -call Plug('tpope/vim-commentary') -call Plug('tpope/vim-dadbod') -call Plug('tpope/vim-endwise') -call Plug('tpope/vim-eunuch') -call Plug('tpope/vim-fugitive') -call Plug('tpope/vim-repeat') -call Plug('tpope/vim-rhubarb') -call Plug('tpope/vim-sleuth') -call Plug('tpope/vim-surround') -call Plug('tpope/vim-unimpaired') +minpac#add('direnv/direnv.vim') +minpac#add('editorconfig/editorconfig-vim') +minpac#add('godlygeek/tabular') +minpac#add('jamessan/vim-gnupg') +minpac#add('junegunn/vim-easy-align') +minpac#add('lifepillar/vim-mucomplete') +minpac#add('lotabout/skim') +minpac#add('lotabout/skim.vim') +minpac#add('mhinz/vim-signify') +minpac#add('scrooloose/nerdtree') +minpac#add('sjl/vitality.vim') +minpac#add('tpope/vim-apathy') +minpac#add('tpope/vim-commentary') +minpac#add('tpope/vim-dadbod') +minpac#add('tpope/vim-endwise') +minpac#add('tpope/vim-eunuch') +minpac#add('tpope/vim-fugitive') +minpac#add('tpope/vim-repeat') +minpac#add('tpope/vim-rhubarb') +minpac#add('tpope/vim-sleuth') +minpac#add('tpope/vim-surround') +minpac#add('tpope/vim-unimpaired') -call Plug('wincent/loupe') -call Plug('wincent/terminus') -call Plug('w0rp/ale') +minpac#add('wincent/loupe') +minpac#add('wincent/terminus') +minpac#add('w0rp/ale') -call Plug('neoclide/coc.nvim', {'branch': 'release'}) +minpac#add('neoclide/coc.nvim', {branch: 'release'}) -call Plug('vim-airline/vim-airline') -call Plug('vim-airline/vim-airline-themes') -call Plug('lambdalisue/battery.vim') +minpac#add('vim-airline/vim-airline') +minpac#add('vim-airline/vim-airline-themes') +minpac#add('lambdalisue/battery.vim') -call Plug('alvan/vim-closetag') -call Plug('LaTeX-Box-Team/LaTeX-Box') -call Plug('vhda/verilog_systemverilog.vim') -call Plug('sheerun/vim-polyglot') +minpac#add('alvan/vim-closetag') +minpac#add('LaTeX-Box-Team/LaTeX-Box') +minpac#add('vhda/verilog_systemverilog.vim') +minpac#add('sheerun/vim-polyglot') -call Plug('eipipuz/factor.vim') +minpac#add('eipipuz/factor.vim') -call Plug('ehamberg/vim-cute-python') -call Plug('Glench/Vim-Jinja2-Syntax') -call Plug('tweekmonster/braceless.vim') +minpac#add('ehamberg/vim-cute-python') +minpac#add('Glench/Vim-Jinja2-Syntax') +minpac#add('tweekmonster/braceless.vim') -call Plug('ternjs/tern_for_vim', {'do': {-> async#job#start(['npm', 'install'], {})}}) -call Plug('vito-c/jq.vim') +minpac#add('ternjs/tern_for_vim', {do: () => async#job#start(['npm', 'install'], {})}) +minpac#add('vito-c/jq.vim') -call Plug('fladson/vim-kitty') +minpac#add('fladson/vim-kitty') -call Plug('fpob/nette.vim') +minpac#add('fpob/nette.vim') -call Plug('leafOfTree/vim-svelte-plugin') +minpac#add('leafOfTree/vim-svelte-plugin') if executable('task') - call Plug('farseer90718/vim-taskwarrior') + minpac#add('farseer90718/vim-taskwarrior') endif -call Plug('pedrohdz/vim-yaml-folds') +minpac#add('pedrohdz/vim-yaml-folds') -call Plug('alx741/yesod.vim') -call Plug('pbrisbin/vim-syntax-shakespeare') +minpac#add('alx741/yesod.vim') +minpac#add('pbrisbin/vim-syntax-shakespeare') if has('macunix') - call Plug('rizzatti/dash.vim') - " We rename this plugin to make sure it loads AFTER vim-polyglot, - " since it won't work properly if it's loaded first. - call Plug('itspriddle/vim-marked', {'name': 'zzvim-marked'}) + minpac#add('rizzatti/dash.vim') + # We rename this plugin to make sure it loads AFTER vim-polyglot, + # since it won't work properly if it's loaded first. + minpac#add('itspriddle/vim-marked', {name: 'zzvim-marked'}) endif - -call PlugEnd() From a17be94d774b4ae93707bd5c11a49e2cb030f0a4 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 2 Jul 2022 16:38:38 +1000 Subject: [PATCH 2/4] Migrate init.vim to Vim9 script as well --- config/vim/init.vim | 71 ++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/config/vim/init.vim b/config/vim/init.vim index 485d2a8..11e41da 100644 --- a/config/vim/init.vim +++ b/config/vim/init.vim @@ -1,43 +1,39 @@ +vim9script set encoding=utf-8 scriptencoding utf-8 -function! s:ensure_dir(dir) - if filewritable(a:dir) != 2 - call mkdir(a:dir, "p", 0700) +def EnsureDir(dir: string): void + if filewritable(dir) != 2 + mkdir(dir, "p", 0700) endif -endfunction +enddef -if exists('+packpath') - " These are really clever - minpac will actually be loaded on the fly only - " when you need to update or clean your packages, rather than all the time. - command! PackUpdate source $XDG_CONFIG_HOME/vim/plugins.vim | call minpac#update() - command! PackClean source $XDG_CONFIG_HOME/vim/plugins.vim | call minpac#clean() - command! PackStatus source $XDG_CONFIG_HOME/vim/plugins.vim | call minpac#status() +# These are really clever - minpac will actually be loaded on the fly only +# when you need to update or clean your packages, rather than all the time. +command! PackUpdate source $XDG_CONFIG_HOME/vim/plugins.vim | minpac#update() +command! PackClean source $XDG_CONFIG_HOME/vim/plugins.vim | minpac#clean() +command! PackStatus source $XDG_CONFIG_HOME/vim/plugins.vim | minpac#status() - " If the pack directory doesn't exist, we haven't installed any packages yet, - " so let's call PackUpdate. - if !isdirectory($XDG_CACHE_HOME . '/vim/pack') - PackUpdate - endif -else - " If we're on a version of Vim that doesn't have packages, we have to load a - " plugin manager (vim-plug) on every boot. - source $XDG_CONFIG_HOME/vim/plugins.vim +# If the pack directory doesn't exist, we haven't installed any packages yet, +# so let's call PackUpdate. +if !isdirectory($XDG_CACHE_HOME .. '/vim/pack') + PackUpdate endif augroup transparent_term autocmd! autocmd ColorScheme * highlight Normal ctermbg=NONE guibg=NONE augroup END + set background=dark -let g:gruvbox_italic=1 -let g:gruvbox_improved_strings=1 -let g:gruvbox_improved_warnings=1 +g:gruvbox_italic = 1 +g:gruvbox_improved_strings = 1 +g:gruvbox_improved_warnings = 1 if has('gui_running') || has('termguicolors') set termguicolors silent! packadd gruvbox - let g:airline_theme = 'gruvbox' + g:airline_theme = 'gruvbox' colorscheme gruvbox else colorscheme inkpot @@ -57,6 +53,7 @@ set linebreak showbreak=↩ set modelines=5 set showcmd set wildmode=longest,full +silent! set wildoptions+=pum set tabstop=2 shiftwidth=2 @@ -70,8 +67,8 @@ else set number endif -for s:dir in ['backup', 'swap', 'undo'] - call s:ensure_dir($XDG_STATE_HOME . '/vim/' . s:dir) +for dir in ['backup', 'swap', 'undo'] + EnsureDir($XDG_STATE_HOME .. '/vim/' .. dir) endfor set backupdir=.,$XDG_STATE_HOME/vim/backup @@ -81,22 +78,22 @@ if exists('+undofile') set undodir=$XDG_STATE_HOME/vim/undo endif -let g:airline_powerline_fonts = 1 -let g:airline#extensions#battery#enabled = 1 +g:airline_powerline_fonts = 1 +g:airline#extensions#battery#enabled = 1 -let g:csv_no_conceal = 1 +g:csv_no_conceal = 1 -let vim_svelte_plugin_use_typescript = 1 +g:vim_svelte_plugin_use_typescript = 1 -let g:LatexBox_Folding = 1 -let g:NERDTreeHijackNetrw = 1 +g:LatexBox_Folding = 1 +g:NERDTreeHijackNetrw = 1 -let g:ale_set_balloons = 1 +g:ale_set_balloons = 1 nmap (ale_previous_wrap) nmap (ale_next_wrap) -let g:mucomplete#can_complete = { - \'default': { - \'omni': {t -> strlen(&l:omnifunc) > 0 && t =~# '\m\k\%(\k\|\.\)$'} - \} -\} +g:mucomplete#can_complete = { + default: { + omni: (t) => strlen(&l:omnifunc) > 0 && t =~# '\m\k\%(\k\|\.\)$' + } +} From ca41e40e6af2cbfd004c9fafe90714b265716ec9 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 2 Jul 2022 16:49:40 +1000 Subject: [PATCH 3/4] Migrate vimrc to Vim9 script --- vimrc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/vimrc b/vimrc index fa8d3c2..7b937a4 100644 --- a/vimrc +++ b/vimrc @@ -1,6 +1,13 @@ -for [s:var, s:value] in items({'XDG_CONFIG_HOME': '~/.config', 'XDG_CACHE_HOME': '~/.cache', 'XDG_DATA_HOME': '~/.local/share', 'XDG_STATE_HOME': '~/.local/state'}) - if (empty(eval('$' . s:var))) - exec 'let $' . s:var . ' = expand(s:value)' +vim9script +const xdg = { + XDG_CONFIG_HOME: '~/.config', + XDG_CACHE_HOME: '~/.cache', + XDG_DATA_HOME: '~/.local/share', + XDG_STATE_HOME: '~/.local/state', +} +for [key, default] in items(xdg) + if !has_key(environ(), key) + setenv(key, expand(default)) endif endfor @@ -9,7 +16,7 @@ set viminfo+=n$XDG_STATE_HOME/vim/viminfo if exists('+packpath') set packpath^=$XDG_CONFIG_HOME/vim,$XDG_CACHE_HOME/vim endif -let g:netrw_home = $XDG_CACHE_HOME . '/vim/netrw' +g:netrw_home = $XDG_CACHE_HOME .. '/vim/netrw' -let $MYVIMRC = $XDG_CONFIG_HOME . '/vim/init.vim' +$MYVIMRC = $XDG_CONFIG_HOME .. '/vim/init.vim' source $MYVIMRC From 211ee2eb40f23ebdddf0da8eee53fface17c20a0 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sat, 2 Jul 2022 16:50:57 +1000 Subject: [PATCH 4/4] Use has-patch for wildoptions, instead of silent! --- config/vim/init.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/vim/init.vim b/config/vim/init.vim index 11e41da..f2f9650 100644 --- a/config/vim/init.vim +++ b/config/vim/init.vim @@ -53,7 +53,9 @@ set linebreak showbreak=↩ set modelines=5 set showcmd set wildmode=longest,full -silent! set wildoptions+=pum +if has('patch-8.2.4325') + set wildoptions+=pum +endif set tabstop=2 shiftwidth=2