silent! call plug#begin()
Plug '~/.vim/plugged/typescript-vim'
Plug '~/.vim/plugged/vim-airline'
Plug '~/.vim/plugged/lightline.vim'
Plug '~/.vim/plugged/vim-javascript'
Plug '~/.vim/plugged/vim-jsx'
Plug '~/.vim/plugged/vim-markdown'
Plug '~/.vim/plugged/dockerfile.vim'
Plug '~/.vim/plugged/php.vim'
Plug '~/.vim/plugged/python-syntax'
Plug '~/.vim/plugged/nerdtree'
Plug '~/.vim/plugged/vim-five'
Plug '~/.vim/plugged/vim-prettier'
Plug '~/.vim/plugged/vim-sensible'
Plug '~/.vim/plugged/editorconfig-vim'
Plug '~/.vim/plugged/vimgutter'
Plug '~/.vim/plugged/vim-surround'
Plug '~/.vim/plugged/vim-carbon-now-sh'
Plug '~/.vim/plugged/vim-multiple-cursors'
Plug '~/.vim/plugged/ale'
Plug '~/.vim/plugged/fzf'
Plug '~/.vim/plugged/fzf.vim'
if executable('node')
  Plug '~/.vim/plugged/coc.nvim'
endif
Plug '~/.vim/plugged/syntastic'
Plug '~/.vim/plugged/vim-devicons'
Plug '~/.vim/plugged/zoxide.vim'
Plug '~/.vim/plugged/vim-go'
Plug '~/.vim/plugged/ansible-vim', {'do': './UltiSnips/generate.sh'}
call plug#end()
" TODO -- add executable checks around plugins

" Install Coc extensions
if executable('node')
  let g:coc_global_extensions = [
    \ 'coc-angular',
    \ '@yaegassy/coc-ansible',
    \ 'coc-calc',
    \ 'coc-copilot',
    \ 'coc-htmlhint',
    \ 'coc-html-css-support',
    \ 'coc-markdownlint',
    \ 'coc-markdown-preview-enhanced',
    \ '@yaegassy/coc-nginx',
    \ 'coc-powershell',
    \ 'coc-prettier',
    \ 'coc-stylelint',
    \ 'coc-spell-checker',
    \ 'coc-yaml',
    \ 'coc-xml',
    \ 'coc-sh',
    \ 'coc-css',
    \ 'coc-deno',
    \ 'coc-go',
    \ 'coc-html',
    \ 'coc-tsserver',
    \ 'coc-json',
    \ 'coc-markdownlint',
    \ 'coc-phpls',
    \ 'coc-pyright',
    \ 'coc-solargraph',
    \ 'coc-rls',
    \ 'coc-solidity'
    \]

  if !executable('docker-langserver')
    call system('npm install --prefix $HOME/.local/share/nvim -g dockerfile-language-server-nodejs')
  endif
  if !executable('sql-language-server')
    call system('npm install --prefix $HOME/.local/share/nvim -g sql-language-server')
  endif
  if !executable('solargraph')
    call system('gem install solargraph -n $HOME/.local/share/nvim/bin')
  endif
endif

" Settings for coc-css extension
autocmd FileType scss setl iskeyword+=@-@

" Settings for coc-go extension, to add missing imports on save
autocmd BufWritePre *.go :silent call CocAction('runCommand', 'editor.action.organizeImport')

syntax enable
set background=dark
colorscheme Betelgeuse
" set g:lightline = { 'colorscheme': 'Betelgeuse' }

" Settings for plugin https://github.com/neoclide/coc.nvim.git
autocmd FileType json syntax match Comment +\/\/.\+$+

" Settings for plugin https://github.com/vim-syntastic/syntastic.git
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

" Settings for plugin https://github.com/ryanoasis/vim-devicons.git
set encoding=UTF-8

" Set location of viminfo file
set viminfo+=n~/.config/vim/viminfo

" Automatically apply with Chezmoi anytime a source file is modified
autocmd BufWritePost ~/.local/share/chezmoi/* ! chezmoi apply --source-path "%"