aboutsummaryrefslogtreecommitdiffstats
path: root/plugin/togglebackground.vim
blob: 7663af7edb808d7056efcd1f5d8d88eeda888f2c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
" Toggle background
" Last Change:  April 7, 2011
" Maintainer:   Ethan Schoonover
" License:      OSI approved MIT license

if exists("g:loaded_ToggleBackground")
    finish
endif
let g:loaded_ToggleBackground = 1

if !exists("no_plugin_maps") && !hasmapto('<Plug>ToggleBackground')
    " map alone won't work here as it doesn't 
    try
        silent! nmap <unique> <F5> <Plug>ToggleBackground
        silent! imap <unique> <F5> <Plug>ToggleBackground
        silent! vmap <unique> <F5> <Plug>ToggleBackground
    finally
        let g:test_val = "checked"
    endtry
endif

" noremap is a bit misleading here if you are unused to vim mapping.
" in fact, there is remapping, but only of script locally defined remaps, in 
" this case <SID>TogBG. The <script> argument modifies the noremap scope in 
" this regard (and the noremenu below).
nnoremap <unique> <script> <Plug>ToggleBackground <SID>TogBG
inoremap <unique> <script> <Plug>ToggleBackground <ESC><SID>TogBG<ESC>a
vnoremap <unique> <script> <Plug>ToggleBackground <ESC><SID>TogBG<ESC>gv
nnoremenu <script> Window.Toggle\ Background <SID>TogBG
inoremenu <script> Window.Toggle\ Background <ESC><SID>TogBG<ESC>a
vnoremenu <script> Window.Toggle\ Background <ESC><SID>TogBG<ESC>gv
noremap <SID>TogBG  :call <SID>TogBG()<CR>

function! s:TogBG()
    let &background = ( &background == "dark"? "light" : "dark" ) | exe "colorscheme " . g:colors_name
endfunction

if !exists(":ToggleBG")
    command ToggleBG :call s:TogBG()
endif

function! ToggleBackground()
    echo "Please update your ToggleBackground mapping. ':help togglebg' for information."
endfunction