" 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 or last 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 goyo_enter() autocmd! User GoyoLeave nested call 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()