> A.J.Mechelynck wrote:
>
> Michael Wookey wrote:
> > Hello vimmers,
> >
> > I am running 7.1a.001 on OSX and have just noticed the following
from
> > console vim (running in Terminal.app and also occurs in iTerm.app).
> >
> > If I change the colour scheme I receive a lot of error output.  For
> > example:
> >
> >     :colorscheme desert
> >
> > Results in:
> >
> >     Error detected while processing
> >
>
/Applications/Vim.app/Contents/Resources/vim/runtime/colors/desert.vim:
> >     line   27:
> >     E254: Cannot allocate color khaki
> >     E254: Cannot allocate color slategrey
> >     line   36:
> >     E254: Cannot allocate color gold
> >     line   37:
> >     E254: Cannot allocate color tan
> >     ...
> >
> > Other colour schemes produce similar output.  The error messages
have
> > only appeared for me in console vim on OSX (10.4.9 PPC).  They have
> not
> > appeared in the linux or win32 console vims of 7.1a.001. GVim's on
> each
> > of the platforms (OSX, linux, Win32) have worked fine.
> >
> > My console vim is symlinked as follows:
> >
> >     $ ls -l `which vim`
> >     lrwxr-xr-x   1 root  wheel  40 Feb 28 14:33 /usr/bin/vim ->
> > /Applications/Vim.app/Contents/MacOS/Vim
> >
> > These errors did not occur before 7.1a.001 and occurs on builds from
> CVS
> > and SVN.  The errors still occur even with starting vim with:
> >
> >     vim -u NONE
> >
> > Has anyone else noticed this?
> >
> >
> 
> These color names should be used only in the GUI. In the "desert"
> colorscheme
> I have (v1.1, 2004/06/13 19:30:30) they are only present in "guibg="
> and
> "guifg=" arguments to the ":hi" command, which is normal.
> 
> If you want to debug that problem, you may want to vimgrep your
sources
> for
> the "highlight" command, then inspect the source to see if (as it
> should) it
> does ignore guibg= guifg= and gui= when setting highlights in Console
> Vim.
> 
> You may restrict yourself to the modules which were actually compiled
> for your
> configure options, as shown e.g. by the contents of the objects folder
> (src/objects or whatever).

I think I've found it..

The OSX Vim is built with FEAT_GUI_MAC always defined.  This in turn
forces FEAT_GUI to be defined.  This is from around lines 66-102 of
src/vim.h.

In src/syntax.c:do_highlight() there are checks for FEAT_GUI to be
defined.  Items like "guifg" and "guibg" etc are conditionally compiled
to only take effect if FEAT_GUI is defined (which it is in the OSX
case).  The call chain eventually looks like:

    do_highlight()
       color_name2handle()
          gui_get_color()    <- E254: Cannot allocate color

So because FEAT_GUI is always defined on OSX, vim gets these errors for
console vim.  I still don't quite understand why this is causing an
error when it doesn't on linux.  The console linux version reports:

    VIM - Vi IMproved 7.1a BETA (2007 May 5, compiled May  8 2007
00:27:42)
    Included patches: 1
    Huge version with GTK2 GUI.  Features included (+) or not (-):
    ...

While the console OSX version reports:

    VIM - Vi IMproved 7.1a BETA (2007 May 5, compiled May  9 2007
11:33:38)
    MacOS X (unix) version
    Included patches: 1
    Huge version with Carbon GUI.  Features included (+) or not (-):
    ...

So both have the GUI built in yet only the OSX version complains about
the colour scheme being set.

Reply via email to