On Saturday, April 28, 2012 12:39:51 AM UTC+2, Tony Mechelynck wrote: > On 27/04/12 23:41, rameo wrote: > > On Friday, April 27, 2012 8:29:03 PM UTC+2, Tony Mechelynck wrote: > >> 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" > > > > Thank you very much. > > > > Just one little thing.. > > > > What I noted is that when I have a split window it gives the default > > colorscheme (that's ok) but I would like to have the possibility to change > > the colorscheme of all split buffers in a window with the :color > > "colorscheme" command (and if possible keep this colorscheme when I switch > > from one Tab to another and back to the split window or when I click in > > another split buffer in the split window. > > (when I have multiple .vim files in the split window I prefer the dark > > colorscheme, when I have multiple .txt files in the split, I prefer the > > light colorscheme. That isn't possible now. When I use :color "colorscheme" > > and click in another split window all other split windows changes again to > > the default colorscheme) > > > > Is it possible to do? > > > > Well, it is possible, with a slight refinement to the above. You may > want to remember the Vim terminology: > > - buffer: one file (or file-like data) in Vim memory, with the relevant > metadata. It may be displayed in zero or more windows. > - window: a viewport into a buffer. If several windows display the same > buffer, changes made in one are reflected in all others. Also, if > several windows display the same buffer, the displayed regions of that > buffer may or may not overlap. > - tab page: a set of one or more windows which are displayed at the same > time. > > "another split buffer in a split window" has no meaning. Maybe you meant > "another window in the current tab"? > > You can use variables with different scopes: > > b:something local to a buffer > g:something global to all Vim > l:something local to a function > s:something local to a script > t:something local to a tab page > v:something predefined at compile-time > w:something local to a window > > With no prefix it falls back to v: for compatibility for a few > predefined names, otherwise l: if inside a function, otherwise g: > > See also the help for the following functions: > > bufname() > bufnr() > bufwinnr() > tabpagebuflist() > tabpagenr() > tabpagewinnr() > winbufnr() > winnr() > > See also |setting-tabline| for an example of how to use these functions > (albeit for a different purpose). > > > Best regards, > Tony. > -- > Ten million Linux users can't be wrong!
Yes I mean another window in the current tab. But after an hour of reading help-files I don't have an idea how to adapt the script, sorry. -- 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