Created
August 26, 2018 20:35
-
-
Save SidOfc/3f94244a8b08406710b6669052f66d62 to your computer and use it in GitHub Desktop.
Gist file containing code for medium post codi.vim fullscreen workflow
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" since it is fullscreen, I'd like a 50/50 split | |
let g:codi#width = 50.0 | |
" instead of destroying buffers, hide them and | |
" index them by filetype into this dictionary | |
let s:codi_filetype_tabs = {} | |
fun! s:FullscreenScratch() | |
" store filetype and bufnr of current buffer | |
" for later reference | |
let current_buf_ft = &ft | |
let current_buf_num = bufnr('%') | |
" check if a scratch buffer for this filetype already exists | |
let saved_scratch = get(s:codi_filetype_tabs, current_buf_ft, -1) | |
" if a tabpage exists for current_buf_ft, go to it instead of | |
" creating a new scratch buffer | |
if saved_scratch != -1 | |
if index(map(gettabinfo(), 'v:val.tabnr'), saved_scratch) == -1 | |
unlet s:codi_filetype_tabs[current_buf_ft] | |
else | |
exe 'tabn' saved_scratch | |
return | |
endif | |
endif | |
" create a new empty tab, set scratch options and give it a name | |
tabe | |
setlocal buftype=nofile noswapfile modifiable buflisted bufhidden=hide | |
exe ':file scratch::' . current_buf_ft | |
" set filetype to that of original source file | |
" e.g. ruby / python / w/e Codi supports | |
let &filetype = current_buf_ft | |
" store the tabpagenr per filetype so we can return | |
" to it later when re-opening from the same filetype | |
let s:codi_filetype_tabs[&filetype] = tabpagenr() | |
" create a buffer local mapping that overrides the | |
" outer one to delete the current scratch buffer instead | |
" when the buffer is destroyed, this mapping will be | |
" destroyed with it and the next <Leader><Leader> | |
" will spawn a new fullscreen scratch window again | |
nmap <silent><buffer> <Leader><Leader> :tabprevious<Cr> | |
" everything is setup, filetype is set | |
" let Codi do the rest :) | |
Codi | |
endfun | |
" create a mapping to call the fullscreen scratch wrapper | |
nmap <silent> <Leader><Leader> :call <SID>FullscreenScratch()<Cr> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment