aboutsummaryrefslogtreecommitdiff
path: root/files/.vim/plugin
diff options
context:
space:
mode:
authorAnton Bobov <abobov@gmail.com>2014-07-09 15:29:44 +0600
committerAnton Bobov <abobov@gmail.com>2014-07-09 22:17:43 +0600
commitc82f91eff5edd473875689e20237add1d9bc4db3 (patch)
tree1f9eede40ea332e580bc5d0762d7f818ea46f345 /files/.vim/plugin
parentcd757d30dd3553f09b17d8db70bc2073a526def2 (diff)
Add vim scratch plugin.
Diffstat (limited to 'files/.vim/plugin')
-rw-r--r--files/.vim/plugin/scratch.vim110
1 files changed, 110 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)
+