Created
August 26, 2018 20:35
Revisions
-
SidOfc created this gist
Aug 26, 2018 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,54 @@ " 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>