Nicolas Schodet wrote:
> * Bram Moolenaar <[EMAIL PROTECTED]> [060418 12:41]:
> > > I found some bugs or strange behaviour with vim7d03, I have made all my
> > > tests starting vim with -u NONE -i NONE options, with the terminal
> > > version:
> > >
> > > 1/ When background is set to light, the current selection in the
> > > completion popup menu is printed white on white.
> > Are you using a B&W terminal? No, then you would not get a popup menu
> > at all. In a color terminal the color should be black on grey. I can't
> > imagine it's different for you.
> > > 2/ When background is set to dark, the current selection in the
> > > completion popup menu is printed white on black, but black is the
> > > background color, so it is not easy to make the distinction between the
> > > text and the menu.
> > It's white on grey for me. Do you perhaps have defined different colors
> > for your terminal? Vim cannot know about this, thus you will have to
> > setup a colorscheme.
>
> I tried using differents terminal, aterm and xterm with default or -bg
> black -fg grey60 options, same problem.
>
> But finaly, I managed to make it work as expected if t_Co=16. Default
> on my system (debian sarge) seems to be 8. I am not sure where this
> value is taken.
>
> I have read this in /etc/vim/vimrc :
>
> " We know xterm-debian is a color terminal
> if &term =~ "xterm-debian" || &term =~ "xterm-xfree86"
> set t_Co=16
> set t_Sf=^[[3%dm
> set t_Sb=^[[4%dm
> endif
>
> But it is no used as $TERM is xterm with xterm and rxvt with aterm.
It is a common problem that the $TERM value is xterm while you are
actually using a color xterm. Vim does check the actual number of
colors supported if the t_RV value is set. Unfortunately this is not a
generic mechanism, only works for xterm.
Adding another set of default colors for when t_Co is 8 would be quite a
bit of work...
> I will try to identify how o reproduce it. Perhaps there is a problem
> in a loop exit condition in vim code?
>
> > > With longest, without menu:
> > >
> > > 6/ When I type ^X^P^P, the second item is selected, but the first one is
> > > never selected, I have to press ^X^P^P^N to see it. It could be better
> > > to have a state where there is no item selected and vim displaying
> > > "longest" in the command line instead of "match 1 of x".
> > It's probably better to stick to the original text. I'll see if that
> > can be done.
>
> What do you mean? What I beleave could be best is a behaviour similar
> to the wildmenu completion. For exemple :
>
> aaaa
> aabb
> a<-- here I press ^P, first time it should be completed as "aa", then if I
> press ^P again, "aabb", then "aaaa", then original "a", then "aabb"...
I now changed it to work like that (mostly).
You an use CTRL-L to add another character. Hmm, my change not to use
the first match actually broke that, you now need to do CTRL-N or CTRL-P
first.
> > [...]
> > > 8/ ^L and ^Y do not seem to work when menu is not in completeopt.
> > That is right. They don't make much sense when you can't see the text
> > of the current completion.
>
> Ok. Perhaps the doc should be change in 'completeopt' from:
>
> longest Only insert the longest common text of the matches. Use
> CTRL-L to add more characters. Whether case is ignored
> depends on the kind of completion. For buffer text the
> 'ignorecase' option is used.
>
> to:
>
> longest Only insert the longest common text of the matches.
> If the menu is displayed, use CTRL-L to add more
> characters. Whether case is ignored depends on the
> kind of completion. For buffer text the
> 'ignorecase' option is used.
Yes.
> > > Last ones which is not related to text completion:
> > > 9/ In visual mode, pink text is unreadable when selected.
> > Don't use pink text! :-) See the remark about using a colorscheme
> > above.
>
> But there is pink text in the default colorsheme! I mean magenta
> actually :-) I have the same problem with diffmode.
I suppose we need to fall back to reverse when there are only 8 colors.
Try the patch below.
> > > 10/ In command line completion, with "set wildmenu
> > > wildmode=longest:full,full", when the command line is completed to the
> > > longest, the first item is selected in the wildmenu.
> > What do you mean with "completed to the longest"?
>
> If I have a directory with the files aaaa and aabb, then the first tab
> complete to aa, then if I press it again, it is completed to aaaa, then
> aabb. Nice. But the first time I press tab, the first item in the
> wildmenu is highlited which is quite confusing because the user can beleave
> that the first item is selected.
Well, it has always been like that. Without highlighting one of the
items it doesn't always look like a menu. I think I'll just leave this
as it is.
Index: syntax.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/syntax.c,v
retrieving revision 1.58
diff -u -r1.58 syntax.c
--- syntax.c 17 Apr 2006 22:10:26 -0000 1.58
+++ syntax.c 18 Apr 2006 12:49:18 -0000
@@ -6171,8 +6171,8 @@
"SignColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey
guifg=DarkBlue"),
#endif
#ifdef FEAT_VISUAL
- CENT("Visual term=reverse ctermbg=Magenta",
- "Visual term=reverse ctermbg=Magenta guibg=LightGrey"),
+ CENT("Visual term=reverse",
+ "Visual term=reverse guibg=LightGrey"),
#endif
#ifdef FEAT_DIFF
CENT("DiffAdd term=bold ctermbg=LightBlue",
@@ -6251,8 +6251,8 @@
"SignColumn term=standout ctermbg=DarkGrey ctermfg=Cyan guibg=Grey
guifg=Cyan"),
#endif
#ifdef FEAT_VISUAL
- CENT("Visual term=reverse ctermbg=Magenta",
- "Visual term=reverse ctermbg=Magenta guibg=DarkGrey"),
+ CENT("Visual term=reverse",
+ "Visual term=reverse guibg=DarkGrey"),
#endif
#ifdef FEAT_DIFF
CENT("DiffAdd term=bold ctermbg=DarkBlue",
@@ -6325,11 +6325,13 @@
for (i = 0; pp[i] != NULL; ++i)
do_highlight((char_u *)pp[i], reset, TRUE);
- /* Magenta background looks ugly, but grey may not work for 8 colors.
- * Thus let it depend on the number of colors available. */
+ /* Reverse looks ugly, but grey may not work for 8 colors. Thus let it
+ * depend on the number of colors available. */
if (t_colors > 8)
do_highlight((char_u *)(*p_bg == 'l' ? "Visual ctermbg=LightGrey"
: "Visual ctermbg=DarkGrey"), reset, TRUE);
+ else
+ do_highlight((char_u *)"Visual cterm=reverse", reset, TRUE);
#ifdef FEAT_SYN_HL
/*