Reorganize vim plugin settings
Setting everything during PlugLoad function caused some plugins to misbehave. Plugins are now loaded by Plug and their settings can be either set with a file in the plugin directory (this mimicks the old way of setting plugin up during load) or in after/ directory, which sets options *after* everything has loaded.
This commit is contained in:
parent
6b79eeef5d
commit
756e45e037
29 changed files with 305 additions and 274 deletions
|
@ -30,8 +30,61 @@ autocmd VimEnter *
|
||||||
" Install plugins from vim with :PlugInstall
|
" Install plugins from vim with :PlugInstall
|
||||||
silent! if plug#begin('~/.local/share/nvim/plugged')
|
silent! if plug#begin('~/.local/share/nvim/plugged')
|
||||||
|
|
||||||
|
" base
|
||||||
|
Plug 'christoomey/vim-tmux-navigator'
|
||||||
|
Plug 'jeffkreeftmeijer/vim-numbertoggle'
|
||||||
|
Plug 'justinmk/vim-sneak'
|
||||||
|
Plug 'RRethy/vim-illuminate'
|
||||||
|
" editing
|
||||||
|
Plug 'tpope/vim-commentary' " easily toggle comments for lines, paragraphs etc with gc
|
||||||
|
Plug 'tpope/vim-surround' " lets you change surrounding things with cs (or ds to del, ys to add)
|
||||||
|
Plug 'tommcdo/vim-exchange' " adds exchange operator with cx. common use: cxiw . on 2 words to switch
|
||||||
|
Plug 'jiangmiao/auto-pairs' " Auto close brackets and ''
|
||||||
|
|
||||||
|
Plug 'scrooloose/nerdtree', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] } " show a directory listing within vim
|
||||||
|
Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] } " show git status in nerdtree for files and dirs
|
||||||
|
" Fuzzy matching
|
||||||
|
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' }
|
||||||
|
Plug 'junegunn/fzf.vim'
|
||||||
|
|
||||||
" ultimately the only thing left here should be a
|
" ultimately the only thing left here should be a
|
||||||
runtime! pluglist/**/*.vim
|
Plug 'Shougo/deoplete.nvim' " automatic suggestions, can also perhaps be changed for newer plugs
|
||||||
|
Plug 'deoplete-plugins/deoplete-go', { 'do': 'make'}
|
||||||
|
Plug 'Shougo/echodoc.vim', { 'on': [] }
|
||||||
|
Plug 'w0rp/ale', { 'on': [] } " asynchronous linting - might be superseded by lsp or coc.nvim at some point
|
||||||
|
" statusline
|
||||||
|
Plug 'vim-airline/vim-airline'
|
||||||
|
Plug 'vim-airline/vim-airline-themes'
|
||||||
|
Plug 'edkolev/tmuxline.vim'
|
||||||
|
" Colorschemes
|
||||||
|
Plug 'chriskempson/base16-vim'
|
||||||
|
Plug 'reedes/vim-colors-pencil'
|
||||||
|
Plug 'rakr/vim-togglebg'
|
||||||
|
" RMarkdown & LaTeX workflow
|
||||||
|
Plug 'vim-pandoc/vim-pandoc-syntax'
|
||||||
|
Plug 'vim-pandoc/vim-pandoc'
|
||||||
|
" Notes and Wiki
|
||||||
|
Plug 'dyng/ctrlsf.vim'
|
||||||
|
Plug 'lervag/wiki.vim'
|
||||||
|
Plug 'alok/notational-fzf-vim'
|
||||||
|
" Prose Workflow
|
||||||
|
Plug 'kana/vim-textobj-user' " dependency for most other textobj plugins
|
||||||
|
Plug 'reedes/vim-textobj-sentence' " extends the capabilities of sentence detection
|
||||||
|
" and allows you to jump to the *end* of this <g)> or last <g(> sentence.
|
||||||
|
Plug 'reedes/vim-pencil', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide md convenience functions like hard/softwrap
|
||||||
|
Plug 'junegunn/goyo.vim', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide distraction free writing
|
||||||
|
Plug 'junegunn/limelight.vim', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide even distraction free-er writing (lowlight paragraphs)
|
||||||
|
" Language Integration
|
||||||
|
Plug 'sheerun/vim-polyglot' " syntax plugins for almost every language
|
||||||
|
Plug 'stephpy/vim-yaml'
|
||||||
|
Plug 'mhartington/nvim-typescript', {'for': 'typescript','do': './install.sh'}
|
||||||
|
|
||||||
|
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
|
||||||
|
Plug 'aliou/bats.vim'
|
||||||
|
|
||||||
|
if !has('nvim')
|
||||||
|
Plug 'tpope/vim-sensible'
|
||||||
|
endif
|
||||||
|
|
||||||
" Plug 'liuchengxu/vim-which-key', { 'on': ['WhichKey', 'WhichKey!'] } ->
|
" Plug 'liuchengxu/vim-which-key', { 'on': ['WhichKey', 'WhichKey!'] } ->
|
||||||
" instructions: http://liuchengxu.org/vim-which-key/, needs setup tp become
|
" instructions: http://liuchengxu.org/vim-which-key/, needs setup tp become
|
||||||
|
|
|
@ -113,9 +113,44 @@ Plug 'rakr/vim-one'
|
||||||
Plug 'vim-pandoc/vim-pandoc'
|
Plug 'vim-pandoc/vim-pandoc'
|
||||||
Plug 'vim-pandoc/vim-pandoc-syntax'
|
Plug 'vim-pandoc/vim-pandoc-syntax'
|
||||||
|
|
||||||
|
Plug 'Shougo/deoplete.nvim' " automatic suggestions, can also perhaps be changed for newer plugs
|
||||||
|
|
||||||
call plug#end()
|
call plug#end()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" PLUGIN: DEOPLETE
|
||||||
|
" enable deoplete at startup
|
||||||
|
let g:deoplete#enable_at_startup = 1
|
||||||
|
let g:deoplete#enable_ignore_case = 1
|
||||||
|
let g:deoplete#enable_smart_case = 1
|
||||||
|
let g:deoplete#enable_camel_case = 1
|
||||||
|
let g:deoplete#enable_refresh_always = 1
|
||||||
|
let g:deoplete#max_abbr_width = 0
|
||||||
|
let g:deoplete#max_menu_width = 0
|
||||||
|
" call deoplete#custom#var('omni', 'input_patterns', {
|
||||||
|
" \ 'pandoc': '@',
|
||||||
|
" \})
|
||||||
|
" call deoplete#enable()
|
||||||
|
" lazy loading since they require a lot of startup time
|
||||||
|
let s:ide_features_loaded=0
|
||||||
|
function! Autocomplete_linting_init() abort
|
||||||
|
if s:ide_features_loaded || !has('nvim')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let s:ide_features_loaded=1
|
||||||
|
call plug#load('ale', 'deoplete.nvim', 'echodoc.vim')
|
||||||
|
call echodoc#enable()
|
||||||
|
call deoplete#custom#var('omni', 'input_patterns', {
|
||||||
|
\ 'pandoc': '@',
|
||||||
|
\})
|
||||||
|
call deoplete#enable()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
augroup load_ide_features
|
||||||
|
autocmd!
|
||||||
|
autocmd InsertEnter * call Autocomplete_linting_init()
|
||||||
|
augroup END
|
||||||
|
|
||||||
set foldlevel=2
|
set foldlevel=2
|
||||||
|
|
||||||
" PLUGIN: vim-pandoc
|
" PLUGIN: vim-pandoc
|
||||||
|
@ -141,8 +176,8 @@ let g:pandoc#hypertext#create_if_no_alternates_exists=1
|
||||||
let g:pandoc#syntax#conceal#use = 1
|
let g:pandoc#syntax#conceal#use = 1
|
||||||
let g:pandoc#syntax#conceal#urls = 1
|
let g:pandoc#syntax#conceal#urls = 1
|
||||||
|
|
||||||
" follow and open links with pandoc
|
" follow and open links with pandoc
|
||||||
" open a file with either local means, or let the system decide
|
" open a file with either local means, or let the system decide
|
||||||
nnoremap <silent> gX :<C-u>call pandoc#hypertext#OpenSystem()<cr>
|
nnoremap <silent> gX :<C-u>call pandoc#hypertext#OpenSystem()<cr>
|
||||||
nnoremap <silent> gx :<C-u>call pandoc#hypertext#OpenLocal()<cr>
|
nnoremap <silent> gx :<C-u>call pandoc#hypertext#OpenLocal()<cr>
|
||||||
" open a link in the editor (this buffer, or split)
|
" open a link in the editor (this buffer, or split)
|
||||||
|
|
15
nvim/.config/nvim/plugin/after/deoplete.vim
Normal file
15
nvim/.config/nvim/plugin/after/deoplete.vim
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
" PLUGIN: DEOPLETE
|
||||||
|
" For async completion
|
||||||
|
" enable deoplete at startup
|
||||||
|
let g:deoplete#enable_at_startup = 1
|
||||||
|
let g:deoplete#enable_ignore_case = 1
|
||||||
|
let g:deoplete#enable_smart_case = 1
|
||||||
|
let g:deoplete#enable_camel_case = 1
|
||||||
|
let g:deoplete#enable_refresh_always = 1
|
||||||
|
let g:deoplete#max_abbr_width = 0
|
||||||
|
let g:deoplete#max_menu_width = 0
|
||||||
|
|
||||||
|
call deoplete#custom#var('omni', 'input_patterns', {
|
||||||
|
\ 'pandoc': '@',
|
||||||
|
\})
|
||||||
|
call deoplete#enable()
|
6
nvim/.config/nvim/plugin/after/echodoc.vim
Normal file
6
nvim/.config/nvim/plugin/after/echodoc.vim
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
" PLUGIN: ECHODOC
|
||||||
|
let g:echodoc#type="virtual"
|
||||||
|
set splitbelow
|
||||||
|
set completeopt+=menuone,noinsert,noselect
|
||||||
|
set completeopt-=preview
|
||||||
|
autocmd CompleteDone * pclose
|
|
@ -0,0 +1,21 @@
|
||||||
|
" lazy loading since they require a lot of startup time
|
||||||
|
let s:ide_features_loaded=0
|
||||||
|
function! Autocomplete_linting_init() abort
|
||||||
|
if s:ide_features_loaded || !has('nvim')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let s:ide_features_loaded=1
|
||||||
|
|
||||||
|
call plug#load('ale', 'deoplete.nvim', 'echodoc.vim')
|
||||||
|
call echodoc#enable()
|
||||||
|
call deoplete#custom#var('omni', 'input_patterns', {
|
||||||
|
\ 'pandoc': '@',
|
||||||
|
\})
|
||||||
|
call deoplete#enable()
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" augroup load_ide_features
|
||||||
|
" autocmd!
|
||||||
|
" autocmd InsertEnter * call Autocomplete_linting_init()
|
||||||
|
" augroup END
|
20
nvim/.config/nvim/plugin/after/prose.vim
Normal file
20
nvim/.config/nvim/plugin/after/prose.vim
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
" PROSE: function to automatically enables markdown plugins for md & txt files
|
||||||
|
function! Prose()
|
||||||
|
call plug#load('vim-pencil')
|
||||||
|
call plug#load('goyo.vim')
|
||||||
|
call plug#load('limelight.vim')
|
||||||
|
call pencil#init()
|
||||||
|
" PLUGIN: vim-textobj-sentence
|
||||||
|
" enable extended sentence textobject use on md and plaintext files
|
||||||
|
call textobj#sentence#init()
|
||||||
|
" hide the markdown cruft
|
||||||
|
setlocal conceallevel=2
|
||||||
|
setlocal foldlevel=2
|
||||||
|
endfunction
|
||||||
|
" enable syntax highlighting for codeblocks WITHIN markdown
|
||||||
|
let g:markdown_fenced_languages = ['html', 'python', 'bash=sh', 'javascipt', 'go']
|
||||||
|
|
||||||
|
" call the prose function defined above for any md files
|
||||||
|
au FileType pandoc,markdown,md,mkd call Prose()
|
||||||
|
" or invoke it manually by writing :Prose
|
||||||
|
command! -nargs=0 Prose call Prose()
|
3
nvim/.config/nvim/plugin/after/vim-pandoc-syntax.vim
Normal file
3
nvim/.config/nvim/plugin/after/vim-pandoc-syntax.vim
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
" PLUGIN: vim-pandoc-syntax
|
||||||
|
let g:pandoc#syntax#conceal#use = 1
|
||||||
|
let g:pandoc#syntax#conceal#urls = 1
|
|
@ -1,9 +1,7 @@
|
||||||
" RMarkdown & LaTeX workflow
|
|
||||||
Plug 'vim-pandoc/vim-pandoc-syntax'
|
|
||||||
Plug 'vim-pandoc/vim-pandoc'
|
|
||||||
" PLUGIN: vim-pandoc
|
" PLUGIN: vim-pandoc
|
||||||
" handle markdown files with pandoc (and pandoc syntax!)
|
" handle markdown files with pandoc (and pandoc syntax!)
|
||||||
let g:pandoc#modules#disabled = ["folding"]
|
let g:pandoc#modules#disabled = ["folding", "keyboard"]
|
||||||
|
let g:pandoc#modules#enabled = ["formatting", "bibliographies", "completion", "metadata", "menu", "spell", "hypertext"]
|
||||||
let g:pandoc#filetypes#pandoc_markdown = 1
|
let g:pandoc#filetypes#pandoc_markdown = 1
|
||||||
let g:pandoc#filetypes#handled = [ "extra", "latex", "markdown", "pandoc", "rst", "textile" ]
|
let g:pandoc#filetypes#handled = [ "extra", "latex", "markdown", "pandoc", "rst", "textile" ]
|
||||||
" disable all default keymaps
|
" disable all default keymaps
|
||||||
|
@ -28,7 +26,3 @@ let g:pandoc#folding#fastfolds=1
|
||||||
let g:pandoc#spell#default_langs=["en_us", "de_de"]
|
let g:pandoc#spell#default_langs=["en_us", "de_de"]
|
||||||
let g:pandoc#hypertext#ausosave_on_edit_open_link=1
|
let g:pandoc#hypertext#ausosave_on_edit_open_link=1
|
||||||
let g:pandoc#hypertext#create_if_no_alternates_exists=1
|
let g:pandoc#hypertext#create_if_no_alternates_exists=1
|
||||||
let g:pandoc#syntax#conceal#use = 1
|
|
||||||
let g:pandoc#syntax#conceal#urls = 1
|
|
||||||
|
|
||||||
" Plug 'vim-pandoc/vim-rmarkdown'
|
|
7
nvim/.config/nvim/plugin/airline.vim
Normal file
7
nvim/.config/nvim/plugin/airline.vim
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
" Design
|
||||||
|
" PLUGIN: AIRLINE
|
||||||
|
let g:airline_powerline_fonts=1
|
||||||
|
" disable automatically refreshing the mux statusbar since it breaks tmux
|
||||||
|
" prefix highlighting. Instead, when changing vim statusbar just create
|
||||||
|
" snapshot with :TmuxlineSnapshot file and stick it into tmux config manually
|
||||||
|
let g:airline#extensions#tmuxline#enabled = 1
|
26
nvim/.config/nvim/plugin/ale.vim
Normal file
26
nvim/.config/nvim/plugin/ale.vim
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
" PLUGIN: ALE
|
||||||
|
" clearer Error and warning signs for the gutter
|
||||||
|
let g:ale_sign_error = ''
|
||||||
|
let g:ale_sign_warning = ''
|
||||||
|
|
||||||
|
let g:ale_fix_on_save = 1
|
||||||
|
let g:ale_fixers = {
|
||||||
|
\'javascipt': ['eslint', 'prettier'],
|
||||||
|
\'html': ['tidy','prettier'],
|
||||||
|
\'typescript': ['prettier','tslint'],
|
||||||
|
\'*': ['remove_trailing_lines', 'trim_whitespace'],
|
||||||
|
\'go': ['gofmt'],
|
||||||
|
\'sh': ['shfmt'],
|
||||||
|
\'zsh': ['shfmt'],
|
||||||
|
\}
|
||||||
|
let g:ale_linters = {
|
||||||
|
\ 'go': ['gopls'],
|
||||||
|
\ 'sh': ['language_server','shellcheck'],
|
||||||
|
\ 'zsh': ['language_server','shellcheck'],
|
||||||
|
\}
|
||||||
|
|
||||||
|
|
||||||
|
" Enable integration with airline.
|
||||||
|
if exists("g:airline_theme")
|
||||||
|
let g:airline#extensions#ale#enabled = 1
|
||||||
|
endif
|
4
nvim/.config/nvim/plugin/colorschemes-font.vim
Normal file
4
nvim/.config/nvim/plugin/colorschemes-font.vim
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
" Enable italics for colorschemes that support them
|
||||||
|
let g:gruvbox_italic=1
|
||||||
|
let g:one_allow_italics=1
|
||||||
|
let g:pencil_terminal_italics=1
|
34
nvim/.config/nvim/plugin/fzf.vim
Normal file
34
nvim/.config/nvim/plugin/fzf.vim
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
" PLUGIN: fzf.vim
|
||||||
|
" set some fzf defaults
|
||||||
|
" windows drops down from above, 40% of the screen
|
||||||
|
let g:fzf_layout = { 'up': '~40%' }
|
||||||
|
" any Fzf command is prefixed with Fzf
|
||||||
|
" this groups them nicely together, and avoids confusion when suddenly :Buffer
|
||||||
|
" or :Files would appear as a command otherwise
|
||||||
|
let g:fzf_command_prefix = 'Fzf'
|
||||||
|
" let the colors come from our colorscheme
|
||||||
|
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'] }
|
||||||
|
" add some additional actions TODO perhaps unify with NerdTree mappings
|
||||||
|
let g:fzf_action = {
|
||||||
|
\ 'ctrl-t': 'tab split',
|
||||||
|
\ 'ctrl-x': 'split',
|
||||||
|
\ 'ctrl-v': 'vsplit' }
|
||||||
|
|
||||||
|
" FzfRg but also search through hidden files
|
||||||
|
command! -bang -nargs=* FzfRgHidden
|
||||||
|
\ call fzf#vim#grep(
|
||||||
|
\ 'rg --column --line-number --no-heading --color=always --smart-case --hidden '.shellescape(<q-args>), 1,
|
||||||
|
\ fzf#vim#with_preview(), <bang>0)
|
21
nvim/.config/nvim/plugin/goyo.vim
Normal file
21
nvim/.config/nvim/plugin/goyo.vim
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
" PLUGIN: goyo.vim
|
||||||
|
" set up functions for entering/exiting distraction free mode, or leaving it
|
||||||
|
function! s:goyo_enter()
|
||||||
|
" remove the tmux status bar for actual distraction free environment
|
||||||
|
silent !tmux set status off
|
||||||
|
" maximize the tmux pane that vim is in if any (usually I have vim open as the only pane)
|
||||||
|
silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z
|
||||||
|
" disable line highlighting, we really don't need it for prose
|
||||||
|
set nocursorline
|
||||||
|
" enable limelight which highlights whatever paragraph you are in and lowlights the rest
|
||||||
|
Limelight
|
||||||
|
endfunction
|
||||||
|
function! s:goyo_leave()
|
||||||
|
silent !tmux set status on
|
||||||
|
silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z
|
||||||
|
set cursorline
|
||||||
|
Limelight!
|
||||||
|
endfunction
|
||||||
|
" actually call the functions on entering/leaving goyo
|
||||||
|
autocmd! User GoyoEnter nested call <SID>goyo_enter()
|
||||||
|
autocmd! User GoyoLeave nested call <SID>goyo_leave()
|
19
nvim/.config/nvim/plugin/nerdtree.vim
Normal file
19
nvim/.config/nvim/plugin/nerdtree.vim
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
" PLUGIN: NERDTree
|
||||||
|
" " Ecosystem
|
||||||
|
" " Plug 'tpope/vim-fugitive' - Will have to take a closer look some other time
|
||||||
|
" highlight the line the cursor is on
|
||||||
|
let NERDTreeHighlightCursorline = 1
|
||||||
|
" remove Press ? for help
|
||||||
|
let NERDTreeMinimalUI=1
|
||||||
|
" loads nerdtree plugin when starting vim with a directory
|
||||||
|
" this is necessary when we lazyload nerdtree with vimplug above
|
||||||
|
" since it would only get loaded with nttoggle otherwise, and run netrw
|
||||||
|
augroup nerd_loader
|
||||||
|
autocmd!
|
||||||
|
autocmd VimEnter * silent! autocmd! FileExplorer
|
||||||
|
autocmd BufEnter,BufNew *
|
||||||
|
\ if isdirectory(expand('<amatch>'))
|
||||||
|
\| call plug#load('nerdtree')
|
||||||
|
\| execute 'autocmd! nerd_loader'
|
||||||
|
\| endif
|
||||||
|
augroup END
|
8
nvim/.config/nvim/plugin/notational-fzf-vim.vim
Normal file
8
nvim/.config/nvim/plugin/notational-fzf-vim.vim
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
" PLUGIN: notational-fzf-vim
|
||||||
|
" Configure notational-fzf-vim
|
||||||
|
if $WIKIROOT ==? ""
|
||||||
|
let g:nv_search_paths = [ expand('~/documents/notes') ]
|
||||||
|
else
|
||||||
|
let g:nv_search_paths = [ $WIKIROOT ]
|
||||||
|
endif
|
||||||
|
let g:nv_wrap_preview_text=1
|
12
nvim/.config/nvim/plugin/tmuxline.vim
Normal file
12
nvim/.config/nvim/plugin/tmuxline.vim
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
" custom preset with left-justified window list
|
||||||
|
" PLUGIN: TMUXLINE
|
||||||
|
let g:tmuxline_preset = {
|
||||||
|
\'a' : '#S',
|
||||||
|
\'b' : '#(whoami)',
|
||||||
|
\'c' : '#I:#P',
|
||||||
|
\'win' : '#I #W',
|
||||||
|
\'cwin' : [' ', '#I #W'],
|
||||||
|
\'x' : '#{?client_prefix,#[fg=colour232]#[bg=brightblue],} %H:%M:%S',
|
||||||
|
\'y' : '%d-%b-%y',
|
||||||
|
\'z' : '#H',
|
||||||
|
\'options' : {}}
|
|
@ -1,9 +1,3 @@
|
||||||
" Language Integration
|
|
||||||
Plug 'sheerun/vim-polyglot' " syntax plugins for almost every language
|
|
||||||
Plug 'stephpy/vim-yaml'
|
|
||||||
Plug 'mhartington/nvim-typescript', {'for': 'typescript','do': './install.sh'}
|
|
||||||
|
|
||||||
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
|
|
||||||
" PLUGIN: vim-go
|
" PLUGIN: vim-go
|
||||||
" change the tabstops for go to use tabs and a width of 4
|
" change the tabstops for go to use tabs and a width of 4
|
||||||
" this conforms with the gofmt expectations
|
" this conforms with the gofmt expectations
|
||||||
|
@ -29,5 +23,3 @@ let g:go_auto_sameids = 1
|
||||||
let g:go_fmt_command = "goimports"
|
let g:go_fmt_command = "goimports"
|
||||||
" show type information for variables in the status line
|
" show type information for variables in the status line
|
||||||
let g:go_auto_type_info = 1
|
let g:go_auto_type_info = 1
|
||||||
|
|
||||||
Plug 'aliou/bats.vim'
|
|
4
nvim/.config/nvim/plugin/vim-pencil.vim
Normal file
4
nvim/.config/nvim/plugin/vim-pencil.vim
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
" PLUGIN: vim-pencil
|
||||||
|
" set default wrap mode to hard - TODO test which mode works better for
|
||||||
|
" me, it seems hardmode has trouble with markdown lists (see issue #31)
|
||||||
|
let g:pencil#wrapModeDefault = 'soft' " default is 'hard'
|
7
nvim/.config/nvim/plugin/vim-sneak.vim
Normal file
7
nvim/.config/nvim/plugin/vim-sneak.vim
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
" PLUGIN: vim-sneak
|
||||||
|
" sneak around your files using
|
||||||
|
" repeatedly pressing fFtTsS will advance the search instead of starting a new
|
||||||
|
" one. To start a new one, press any other key, then fFtTsS
|
||||||
|
let g:sneak#s_next = 1
|
||||||
|
" use ignorecase/smartcase, depending on vim setting
|
||||||
|
let g:sneak#use_ic_scs = 1
|
4
nvim/.config/nvim/plugin/vim-tmux-navigator.vim
Normal file
4
nvim/.config/nvim/plugin/vim-tmux-navigator.vim
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
" PLUGIN: tmux-navigator
|
||||||
|
" add seamless movement between vim and tmux, switch windows with C-hjkl
|
||||||
|
" automatically save the current buffer when navigating away from vim
|
||||||
|
let g:tmux_navigator_save_on_switch = 1
|
|
@ -1,9 +1,6 @@
|
||||||
Plug 'dyng/ctrlsf.vim'
|
|
||||||
|
|
||||||
Plug 'lervag/wiki.vim'
|
|
||||||
" PLUGIN: wiki.vim
|
" PLUGIN: wiki.vim
|
||||||
if $WIKIROOT ==? ""
|
if $WIKIROOT ==? ""
|
||||||
let g:wiki_root = '~/Nextcloud/Notes/'
|
let g:wiki_root = expand('~/documents/notes')
|
||||||
else
|
else
|
||||||
let g:wiki_root = $WIKIROOT
|
let g:wiki_root = $WIKIROOT
|
||||||
endif
|
endif
|
||||||
|
@ -13,8 +10,3 @@ let g:wiki_filetypes = ['md', 'mkd', 'markdown', 'wiki']
|
||||||
let g:wiki_link_extension = '.md'
|
let g:wiki_link_extension = '.md'
|
||||||
let g:wiki_link_target_type = 'md'
|
let g:wiki_link_target_type = 'md'
|
||||||
let g:wiki_mappings_use_defaults = 1
|
let g:wiki_mappings_use_defaults = 1
|
||||||
|
|
||||||
Plug 'alok/notational-fzf-vim'
|
|
||||||
" Configure notational-fzf-vim
|
|
||||||
let g:nv_search_paths = [ g:wiki_root ]
|
|
||||||
let g:nv_wrap_preview_text=1
|
|
|
@ -1,86 +0,0 @@
|
||||||
" Base Plugins - shared by vim & nvim
|
|
||||||
|
|
||||||
" add seamless movement between vim and tmux, switch windows with C-hjkl
|
|
||||||
Plug 'christoomey/vim-tmux-navigator'
|
|
||||||
" automatically save the current buffer when navigating away from vim
|
|
||||||
let g:tmux_navigator_save_on_switch = 1
|
|
||||||
|
|
||||||
" automatically switch between relative and absolute numbers as buffers move
|
|
||||||
" into / out of focus (requires number & relativenumber to be set)
|
|
||||||
Plug 'jeffkreeftmeijer/vim-numbertoggle'
|
|
||||||
|
|
||||||
" sneak around your files using
|
|
||||||
Plug 'justinmk/vim-sneak'
|
|
||||||
" repeatedly pressing fFtTsS will advance the search instead of starting a new
|
|
||||||
" one. To start a new one, press any other key, then fFtTsS
|
|
||||||
let g:sneak#s_next = 1
|
|
||||||
" use ignorecase/smartcase, depending on vim setting
|
|
||||||
let g:sneak#use_ic_scs = 1
|
|
||||||
|
|
||||||
" highlight all occurences of the current word under the cursor (after 250ms
|
|
||||||
" delay)
|
|
||||||
Plug 'RRethy/vim-illuminate'
|
|
||||||
|
|
||||||
" editing Workflow
|
|
||||||
Plug 'tpope/vim-commentary' " easily toggle comments for lines, paragraphs etc with gc
|
|
||||||
Plug 'tpope/vim-surround' " lets you change surrounding things with cs (or ds to del, ys to add)
|
|
||||||
Plug 'tommcdo/vim-exchange' " adds exchange operator with cx. common use: cxiw . on 2 words to switch
|
|
||||||
Plug 'jiangmiao/auto-pairs' " Auto close brackets and ''
|
|
||||||
|
|
||||||
" " Ecosystem
|
|
||||||
" " Plug 'tpope/vim-fugitive' - Will have to take a closer look some other time
|
|
||||||
Plug 'scrooloose/nerdtree', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] } " show a directory listing within vim
|
|
||||||
Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] } " show git status in nerdtree for files and dirs
|
|
||||||
" highlight the line the cursor is on
|
|
||||||
let NERDTreeHighlightCursorline = 1
|
|
||||||
" remove Press ? for help
|
|
||||||
let NERDTreeMinimalUI=1
|
|
||||||
" loads nerdtree plugin when starting vim with a directory
|
|
||||||
" this is necessary when we lazyload nerdtree with vimplug above
|
|
||||||
" since it would only get loaded with nttoggle otherwise, and run netrw
|
|
||||||
augroup nerd_loader
|
|
||||||
autocmd!
|
|
||||||
autocmd VimEnter * silent! autocmd! FileExplorer
|
|
||||||
autocmd BufEnter,BufNew *
|
|
||||||
\ if isdirectory(expand('<amatch>'))
|
|
||||||
\| call plug#load('nerdtree')
|
|
||||||
\| execute 'autocmd! nerd_loader'
|
|
||||||
\| endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
" Fuzzy matching
|
|
||||||
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' }
|
|
||||||
Plug 'junegunn/fzf.vim'
|
|
||||||
" set some fzf defaults
|
|
||||||
" windows drops down from above, 40% of the screen
|
|
||||||
let g:fzf_layout = { 'up': '~40%' }
|
|
||||||
" any Fzf command is prefixed with Fzf
|
|
||||||
" this groups them nicely together, and avoids confusion when suddenly :Buffer
|
|
||||||
" or :Files would appear as a command otherwise
|
|
||||||
let g:fzf_command_prefix = 'Fzf'
|
|
||||||
" let the colors come from our colorscheme
|
|
||||||
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'] }
|
|
||||||
" add some additional actions TODO perhaps unify with NerdTree mappings
|
|
||||||
let g:fzf_action = {
|
|
||||||
\ 'ctrl-t': 'tab split',
|
|
||||||
\ 'ctrl-x': 'split',
|
|
||||||
\ 'ctrl-v': 'vsplit' }
|
|
||||||
|
|
||||||
" FzfRg but also search through hidden files
|
|
||||||
command! -bang -nargs=* FzfRgHidden
|
|
||||||
\ call fzf#vim#grep(
|
|
||||||
\ 'rg --column --line-number --no-heading --color=always --smart-case --hidden '.shellescape(<q-args>), 1,
|
|
||||||
\ fzf#vim#with_preview(), <bang>0)
|
|
|
@ -1,61 +0,0 @@
|
||||||
" For async completion
|
|
||||||
Plug 'Shougo/deoplete.nvim', { 'on': [] } " automatic suggestions, can also perhaps be changed for newer plugs
|
|
||||||
" PLUGIN: DEOPLETE
|
|
||||||
" enable deoplete at startup
|
|
||||||
let g:deoplete#enable_at_startup = 0
|
|
||||||
let g:deoplete#enable_ignore_case = 1
|
|
||||||
let g:deoplete#enable_smart_case = 1
|
|
||||||
let g:deoplete#enable_camel_case = 1
|
|
||||||
let g:deoplete#enable_refresh_always = 1
|
|
||||||
let g:deoplete#max_abbr_width = 0
|
|
||||||
let g:deoplete#max_menu_width = 0
|
|
||||||
let g:deoplete#omni#input_patterns = get(g:,'deoplete#omni#input_patterns',{})
|
|
||||||
|
|
||||||
Plug 'deoplete-plugins/deoplete-go', { 'do': 'make'}
|
|
||||||
|
|
||||||
Plug 'Shougo/echodoc.vim', { 'on': [] }
|
|
||||||
" PLUGIN: ECHODOC
|
|
||||||
let g:echodoc#type="virtual"
|
|
||||||
set splitbelow
|
|
||||||
set completeopt+=menuone,noinsert,noselect
|
|
||||||
set completeopt-=preview
|
|
||||||
autocmd CompleteDone * pclose
|
|
||||||
|
|
||||||
Plug 'w0rp/ale', { 'on': [] } " asynchronous linting - might be superseded by lsp or coc.nvim at some point
|
|
||||||
" PLUGIN: ALE
|
|
||||||
" clearer Error and warning signs for the gutter
|
|
||||||
let g:ale_sign_error = '⤫'
|
|
||||||
let g:ale_sign_warning = '⚠'
|
|
||||||
" Enable integration with airline.
|
|
||||||
let g:airline#extensions#ale#enabled = 1
|
|
||||||
let g:ale_fix_on_save = 1
|
|
||||||
let g:ale_fixers = {
|
|
||||||
\'javascipt': ['eslint', 'prettier'],
|
|
||||||
\'html': ['tidy','prettier'],
|
|
||||||
\'typescript': ['prettier','tslint'],
|
|
||||||
\'*': ['remove_trailing_lines', 'trim_whitespace'],
|
|
||||||
\'go': ['gofmt'],
|
|
||||||
\'sh': ['shfmt'],
|
|
||||||
\'zsh': ['shfmt'],
|
|
||||||
\}
|
|
||||||
let g:ale_linters = {
|
|
||||||
\ 'go': ['gopls'],
|
|
||||||
\ 'sh': ['language_server','shellcheck'],
|
|
||||||
\ 'zsh': ['language_server','shellcheck'],
|
|
||||||
\}
|
|
||||||
|
|
||||||
" lazy loading since they require a lot of startup time
|
|
||||||
augroup load_ide_features
|
|
||||||
autocmd!
|
|
||||||
autocmd InsertEnter * call plug#load('ale', 'deoplete.nvim', 'echodoc.vim')
|
|
||||||
\| autocmd! load_ide_features
|
|
||||||
autocmd InsertEnter * call deoplete#enable()
|
|
||||||
autocmd InsertEnter * call echodoc#enable()
|
|
||||||
|
|
||||||
|
|
||||||
augroup PandocCompletion
|
|
||||||
" Add pandoc citations to deoplete automatic completions
|
|
||||||
autocmd InsertEnter * call deoplete#custom#var('omni', 'input_patterns', {
|
|
||||||
\ 'pandoc': '@'
|
|
||||||
\})
|
|
||||||
augroup END
|
|
|
@ -1,36 +0,0 @@
|
||||||
" Design
|
|
||||||
Plug 'vim-airline/vim-airline'
|
|
||||||
" PLUGIN: AIRLINE
|
|
||||||
let g:airline_powerline_fonts=1
|
|
||||||
" disable automatically refreshing the mux statusbar since it breaks tmux
|
|
||||||
" prefix highlighting. Instead, when changing vim statusbar just create
|
|
||||||
" snapshot with :TmuxlineSnapshot file and stick it into tmux config manually
|
|
||||||
let g:airline#extensions#tmuxline#enabled = 1
|
|
||||||
" custom preset with left-justified window list
|
|
||||||
Plug 'vim-airline/vim-airline-themes'
|
|
||||||
|
|
||||||
Plug 'edkolev/tmuxline.vim'
|
|
||||||
" PLUGIN: TMUXLINE
|
|
||||||
let g:tmuxline_preset = {
|
|
||||||
\'a' : '#S',
|
|
||||||
\'b' : '#(whoami)',
|
|
||||||
\'c' : '#I:#P',
|
|
||||||
\'win' : '#I #W',
|
|
||||||
\'cwin' : [' ', '#I #W'],
|
|
||||||
\'x' : '#{?client_prefix,#[fg=colour232]#[bg=brightblue],} %H:%M:%S',
|
|
||||||
\'y' : '%d-%b-%y',
|
|
||||||
\'z' : '#H',
|
|
||||||
\'options' : {}}
|
|
||||||
|
|
||||||
" Colorschemes
|
|
||||||
Plug 'chriskempson/base16-vim'
|
|
||||||
Plug 'reedes/vim-colors-pencil'
|
|
||||||
Plug 'rakr/vim-togglebg'
|
|
||||||
|
|
||||||
" Enable italics for colorschemes that support them
|
|
||||||
let g:gruvbox_italic=1
|
|
||||||
let g:one_allow_italics=1
|
|
||||||
let g:pencil_terminal_italics=1
|
|
||||||
|
|
||||||
" per this discussion: https://github.com/junegunn/vim-plug/issues/300
|
|
||||||
autocmd VimEnter * colorscheme base16-gruvbox-dark-medium
|
|
|
@ -1,57 +0,0 @@
|
||||||
" Prose Workflow
|
|
||||||
Plug 'kana/vim-textobj-user' " dependency for most other textobj plugins
|
|
||||||
Plug 'reedes/vim-textobj-sentence' " extends the capabilities of sentence detection
|
|
||||||
" and allows you to jump to the *end* of this <g)> or last <g(> sentence.
|
|
||||||
|
|
||||||
Plug 'reedes/vim-pencil', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide md convenience functions like hard/softwrap
|
|
||||||
" PLUGIN: vim-pencil
|
|
||||||
" set default wrap mode to hard - TODO test which mode works better for
|
|
||||||
" me, it seems hardmode has trouble with markdown lists (see issue #31)
|
|
||||||
let g:pencil#wrapModeDefault = 'soft' " default is 'hard'
|
|
||||||
|
|
||||||
Plug 'junegunn/goyo.vim', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide distraction free writing
|
|
||||||
" PLUGIN: goyo
|
|
||||||
" set up functions for entering/exiting distraction free mode, or leaving it
|
|
||||||
function! s:goyo_enter()
|
|
||||||
" remove the tmux status bar for actual distraction free environment
|
|
||||||
silent !tmux set status off
|
|
||||||
" maximize the tmux pane that vim is in if any (usually I have vim open as the only pane)
|
|
||||||
silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z
|
|
||||||
" disable line highlighting, we really don't need it for prose
|
|
||||||
set nocursorline
|
|
||||||
" enable limelight which highlights whatever paragraph you are in and lowlights the rest
|
|
||||||
Limelight
|
|
||||||
endfunction
|
|
||||||
function! s:goyo_leave()
|
|
||||||
silent !tmux set status on
|
|
||||||
silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z
|
|
||||||
set cursorline
|
|
||||||
Limelight!
|
|
||||||
endfunction
|
|
||||||
" actually call the functions on entering/leaving goyo
|
|
||||||
autocmd! User GoyoEnter nested call <SID>goyo_enter()
|
|
||||||
autocmd! User GoyoLeave nested call <SID>goyo_leave()
|
|
||||||
|
|
||||||
|
|
||||||
Plug 'junegunn/limelight.vim', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide even distraction free-er writing (lowlight paragraphs)
|
|
||||||
|
|
||||||
" PROSE: function to automatically enables markdown plugins for md & txt files
|
|
||||||
function! Prose()
|
|
||||||
call plug#load('vim-pencil')
|
|
||||||
call plug#load('goyo.vim')
|
|
||||||
call plug#load('limelight.vim')
|
|
||||||
call pencil#init()
|
|
||||||
" PLUGIN: vim-textobj-sentence
|
|
||||||
" enable extended sentence textobject use on md and plaintext files
|
|
||||||
call textobj#sentence#init()
|
|
||||||
" hide the markdown cruft
|
|
||||||
setlocal conceallevel=2
|
|
||||||
setlocal foldlevel=2
|
|
||||||
endfunction
|
|
||||||
" enable syntax highlighting for codeblocks WITHIN markdown
|
|
||||||
let g:markdown_fenced_languages = ['html', 'python', 'bash=sh', 'javascipt', 'go']
|
|
||||||
|
|
||||||
" call the prose function defined above for any md files
|
|
||||||
au FileType pandoc,markdown,md,mkd call Prose()
|
|
||||||
" or invoke it manually by writing :Prose
|
|
||||||
command! -nargs=0 Prose call Prose()
|
|
|
@ -1,6 +0,0 @@
|
||||||
if has('nvim')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" a minimal definition of variables TODO still necessary for nvim?
|
|
||||||
Plug 'tpope/vim-sensible'
|
|
Loading…
Reference in a new issue