On 27/04/12 18:34, rameo wrote:
On Friday, April 27, 2012 6:18:29 PM UTC+2, Ben Fritz wrote:
On Friday, April 27, 2012 10:56:55 AM UTC-5, rameo wrote:
I use this code in my .vimrc to use my dark colorscheme when I open a .vim page 
and my light colorscheme when I open whatever other page:

augroup filetype_colorscheme
         au BufEnter *
         \ if !exists('b:colors_name')
             \ | if &ft == "vim"
                 \ | let b:colors_name = 'color_dark'
             \ | else
                 \ | let b:colors_name = 'color_light'
             \ | endif
         \ | endif
         \ | exe 'colorscheme' b:colors_name
augroup END

However, it doesn't work fine in split windows.
When I click on a .vim file in the split window all not .vim files changes to 
the dark colorscheme as well.
I would like to keep them their own colorscheme; a .vim page always the dark 
colorscheme and whatever other file always the light colorscheme.

I've learned that colorschemes will always affect the entire vim instance and 
that it is not possible to have a different color scheme per split window.

In that point I would like to disable above code for split windows in order to give all 
split windows the default colorscheme (which I can change afterwards using :color 
"colorscheme") but don't know how to realize this. Whatever I tried didn't do 
what I want it to do.
Can anyone help me?

You can check the number of windows with winnr('$'). If > 1, you have multiple 
split windows.

Hi Ben,

That's what I tried.
But wherever I put it in above code it doesn't work.
Where would you place this in above code?


Around your autocommand:

augroup filetype_colorscheme
    au BufEnter *
        \ if winnr('$') == 1
            \ | if !exists('b:colors_name')
                \ | if &ft == "vim"
                    \ | let b:colors_name = 'color_dark'
                \ | else
                    \ | let b:colors_name = 'color_light'
                \ | endif
            \ | endif
            \ | exe 'colorscheme' b:colors_name
        \ | else
            \ | colorscheme default
        | | endif
augroup END

or (maybe more readable)

function SetColors()
        if exists('b:colors_name')
                exe 'colorscheme' b:colors_name
                return
        endif
        if winnr('$') > 1
                colorscheme default
        elseif &ft == 'vim'
                colorscheme color_dark
        else
                colorscheme color_light
        endif
        let b:colors_name = g:colors_name
endfunction
augroup filetype_colorscheme
        au BufEnter * call SetColors()
augroup END

This way, the autocommand will be defined unconditionally, but if it finds that at BufEnter three are more than one window in the current tab it will go back to the default scheme.


Best regards,
Tony.
--
Actor:  So what do you do for a living?
Doris:  I work for a company that makes deceptively shallow serving
        dishes for Chinese restaurants.
                -- Woody Allen, "Without Feathers"

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to