Mercurial > dotfiles
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 |