comparison vim/bundle/scratch/plugin/scratch.vim @ 19:89c7493e3442

Added 'scratch' plugin.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 21 Nov 2011 17:12:22 -0800
parents
children
comparison
equal deleted inserted replaced
18:cec2213f938c 19:89c7493e3442
1 " File: scratch.vim
2 " Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
3 " Version: 1.0
4 " Last Modified: June 3, 2003
5 "
6 " Overview
7 " --------
8 " You can use the scratch plugin to create a temporary scratch buffer to store
9 " and edit text that will be discarded when you quit/exit vim. The contents
10 " of the scratch buffer are not saved/stored in a file.
11 "
12 " Installation
13 " ------------
14 " 1. Copy the scratch.vim plugin to the $HOME/.vim/plugin directory. Refer to
15 " the following Vim help topics for more information about Vim plugins:
16 "
17 " :help add-plugin
18 " :help add-global-plugin
19 " :help runtimepath
20 "
21 " 2. Restart Vim.
22 "
23 " Usage
24 " -----
25 " You can use the following command to open/edit the scratch buffer:
26 "
27 " :Scratch
28 "
29 " To open the scratch buffer in a new split window, use the following command:
30 "
31 " :Sscratch
32 "
33 " When you close the scratch buffer window, the buffer will retain the
34 " contents. You can again edit the scratch buffer by openeing it using one of
35 " the above commands. There is no need to save the scatch buffer.
36 "
37 " When you quit/exit Vim, the contents of the scratch buffer will be lost.
38 " You will not be prompted to save the contents of the modified scratch
39 " buffer.
40 "
41 " You can have only one scratch buffer open in a single Vim instance. If the
42 " current buffer has unsaved modifications, then the scratch buffer will be
43 " opened in a new window
44 "
45 " ****************** Do not modify after this line ************************
46 if exists('loaded_scratch') || &cp
47 finish
48 endif
49 let loaded_scratch=1
50
51 " Scratch buffer name
52 let ScratchBufferName = "__Scratch__"
53
54 " ScratchBufferOpen
55 " Open the scratch buffer
56 function! s:ScratchBufferOpen(new_win)
57 let split_win = a:new_win
58
59 " If the current buffer is modified then open the scratch buffer in a new
60 " window
61 if !split_win && &modified
62 let split_win = 1
63 endif
64
65 " Check whether the scratch buffer is already created
66 let scr_bufnum = bufnr(g:ScratchBufferName)
67 if scr_bufnum == -1
68 " open a new scratch buffer
69 if split_win
70 exe "new " . g:ScratchBufferName
71 else
72 exe "edit " . g:ScratchBufferName
73 endif
74 else
75 " Scratch buffer is already created. Check whether it is open
76 " in one of the windows
77 let scr_winnum = bufwinnr(scr_bufnum)
78 if scr_winnum != -1
79 " Jump to the window which has the scratch buffer if we are not
80 " already in that window
81 if winnr() != scr_winnum
82 exe scr_winnum . "wincmd w"
83 endif
84 else
85 " Create a new scratch buffer
86 if split_win
87 exe "split +buffer" . scr_bufnum
88 else
89 exe "buffer " . scr_bufnum
90 endif
91 endif
92 endif
93 endfunction
94
95 " ScratchMarkBuffer
96 " Mark a buffer as scratch
97 function! s:ScratchMarkBuffer()
98 setlocal buftype=nofile
99 setlocal bufhidden=hide
100 setlocal noswapfile
101 setlocal buflisted
102 endfunction
103
104 autocmd BufNewFile __Scratch__ call s:ScratchMarkBuffer()
105
106 " Command to edit the scratch buffer in the current window
107 command! -nargs=0 Scratch call s:ScratchBufferOpen(0)
108 " Command to open the scratch buffer in a new split window
109 command! -nargs=0 Sscratch call s:ScratchBufferOpen(1)
110