diff options
| author | Anton Bobov <abobov@gmail.com> | 2014-07-09 15:29:44 +0600 |
|---|---|---|
| committer | Anton Bobov <abobov@gmail.com> | 2014-07-09 22:17:43 +0600 |
| commit | c82f91eff5edd473875689e20237add1d9bc4db3 (patch) | |
| tree | 1f9eede40ea332e580bc5d0762d7f818ea46f345 /files | |
| parent | cd757d30dd3553f09b17d8db70bc2073a526def2 (diff) | |
Add vim scratch plugin.
Diffstat (limited to 'files')
| -rw-r--r-- | files/.vim/plugin/scratch.vim | 110 | ||||
| -rw-r--r-- | files/.vimrc | 17 |
2 files changed, 127 insertions, 0 deletions
diff --git a/files/.vim/plugin/scratch.vim b/files/.vim/plugin/scratch.vim new file mode 100644 index 0000000..05b9018 --- /dev/null +++ b/files/.vim/plugin/scratch.vim @@ -0,0 +1,110 @@ +" File: scratch.vim +" Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com) +" Version: 1.0 +" Last Modified: June 3, 2003 +" +" Overview +" -------- +" You can use the scratch plugin to create a temporary scratch buffer to store +" and edit text that will be discarded when you quit/exit vim. The contents +" of the scratch buffer are not saved/stored in a file. +" +" Installation +" ------------ +" 1. Copy the scratch.vim plugin to the $HOME/.vim/plugin directory. Refer to +" the following Vim help topics for more information about Vim plugins: +" +" :help add-plugin +" :help add-global-plugin +" :help runtimepath +" +" 2. Restart Vim. +" +" Usage +" ----- +" You can use the following command to open/edit the scratch buffer: +" +" :Scratch +" +" To open the scratch buffer in a new split window, use the following command: +" +" :Sscratch +" +" When you close the scratch buffer window, the buffer will retain the +" contents. You can again edit the scratch buffer by openeing it using one of +" the above commands. There is no need to save the scatch buffer. +" +" When you quit/exit Vim, the contents of the scratch buffer will be lost. +" You will not be prompted to save the contents of the modified scratch +" buffer. +" +" You can have only one scratch buffer open in a single Vim instance. If the +" current buffer has unsaved modifications, then the scratch buffer will be +" opened in a new window +" +" ****************** Do not modify after this line ************************ +if exists('loaded_scratch') || &cp + finish +endif +let loaded_scratch=1 + +" Scratch buffer name +let ScratchBufferName = "__Scratch__" + +" ScratchBufferOpen +" Open the scratch buffer +function! s:ScratchBufferOpen(new_win) + let split_win = a:new_win + + " If the current buffer is modified then open the scratch buffer in a new + " window + if !split_win && &modified + let split_win = 1 + endif + + " Check whether the scratch buffer is already created + let scr_bufnum = bufnr(g:ScratchBufferName) + if scr_bufnum == -1 + " open a new scratch buffer + if split_win + exe "new " . g:ScratchBufferName + else + exe "edit " . g:ScratchBufferName + endif + else + " Scratch buffer is already created. Check whether it is open + " in one of the windows + let scr_winnum = bufwinnr(scr_bufnum) + if scr_winnum != -1 + " Jump to the window which has the scratch buffer if we are not + " already in that window + if winnr() != scr_winnum + exe scr_winnum . "wincmd w" + endif + else + " Create a new scratch buffer + if split_win + exe "split +buffer" . scr_bufnum + else + exe "buffer " . scr_bufnum + endif + endif + endif +endfunction + +" ScratchMarkBuffer +" Mark a buffer as scratch +function! s:ScratchMarkBuffer() + setlocal buftype=nofile + setlocal bufhidden=hide + setlocal noswapfile + setlocal buflisted +endfunction + +autocmd BufNewFile __Scratch__ call s:ScratchMarkBuffer() + +" Command to edit the scratch buffer in the current window +command! -nargs=0 Scratch call s:ScratchBufferOpen(0) +" Command to open the scratch buffer in a new split window +command! -nargs=0 Sscratch call s:ScratchBufferOpen(1) + diff --git a/files/.vimrc b/files/.vimrc index 73a1c69..75b1239 100644 --- a/files/.vimrc +++ b/files/.vimrc @@ -295,6 +295,23 @@ let NERDTreeChDirMode = 2 " Sparkup{{{2 let g:sparkupNextMapping = '<c-x>' + +" Scratch {{{ + +function! ScratchToggle() + if exists("w:is_scratch_window") + unlet w:is_scratch_window + exec "q" + else + exec "norm! :Sscratch\<cr>\<c-w>l" + let w:is_scratch_window = 1 + endif +endfunction +command! ScratchToggle call ScratchToggle() + +nnoremap <silent> <Leader><Tab> :ScratchToggle<cr> + +" }}} " Load custom local config{{{1 let s:local_vimrc=$MYVIMRC . ".local" if filereadable(s:local_vimrc) |
