Dominique Pelle wrote:

> >> > John Little wrote:
> >> >
> >> >> On Feb 28, 6:53am, Kenneth Reid Beesley wrote:
> >> >>
> >> >>> But :help lCursor =A0returned no information.
> >> >>
> >> >> BTW, You could have tried
> >> >>
> >> >> :helpgrep lCursor
> >> >>
> >> >> Regards, John
> >> >
> >> > Yes, ":helpgrep lCursor" gives a few hints. But still,
> >> > lCursor deserves a tag I think to make ":help lCursor"
> >> > work. I did not know about lCursor until today, it's useful.
> >> >
> >> > I wonder whether this is a bug though:
> >> >
> >> > $ gvim -u NONE -U NONE
> >> >
> >> > :hi Cursor guibg=3D#ff0000 =A0 =A0 =A0" red cursor
> >> > :hi lCursor guibg=3D#00ff00 =A0 =A0 " green cursor when keymap activat=
> ed
> >> >
> >> > :set imcursor?
> >> > iminsert=3D2 =A0 =A0 =A0" OK, expected
> >> >
> >> > :set keymap=3Desperanto =A0" or any other keymap
> >> > :set iminsert?
> >> > iminsert=3D1 =A0 =A0 =A0" OK, expected
> >> >
> >> > :set keymap=3D
> >> > :set iminsert?
> >> > iminsert=3D1 =A0 =A0 =A0" Hmmm, shouldn't this be back to 2???
> >> >
> >> > lCursor is nice so that cursor color changes aspect when a
> >> > keymap is being activated. But if I cancel the keymap with
> >> > ":set keymap=3D" then cursor remains in the same color
> >> > (green, lCursor) as if there was still a keymap activated.
> >> > It seems to me that the cursor should then become red
> >> > (Cursor). I can work around with ":set imcursor=3D2" which
> >> > puts back the cursor in red (Cursor).
> >> >
> >> > In ":help iminsert" I see:
> >> >
> >> > =A0 =A0Specifies whether :lmap or an Input Method (IM) is to be used i=
> n
> >> > =A0 =A0Insert mode. Valid values:
> >> > =A0 =A0 =A0 =A00 =A0 =A0:lmap is off and IM is off
> >> > =A0 =A0 =A0 =A01 =A0 =A0:lmap is ON and IM is off
> >> > =A0 =A0 =A0 =A02 =A0 =A0:lmap is off and IM is ON
> >> >
> >> > I'm using vim-7.2.127 (huge), GUI GTK2 on Linux x86.
> >> >
> >> > -- Dominique
> >>
> >>
> >> Attached patch fixes the problem I described in my previous
> >> email: it makes the cursor go back to normal color (Cursor
> >> instead of lCursor) when cancelling keymaps with ":set keymap=3D".
> >>
> >> Please review it since I must admit I don't fully understand
> >> how 'iminsert' and 'imsearch' are supposed to work...
> >
> > Does this have any real effect? =A0If 'iminsert' is set to use lmap's
> > (value is 1), but there are none, it works the same way as setting
> > 'iminsert' off (value 0), right?
> 
> 
> I'm not 100% sure I understand the question.  If 'iminsert' is value 1,
> then cursor has color "lCursor" regardless of whether there are keymaps
> or not.
> 
> Problem happens in gVim only since lCursor only matters in GUI.

OK, so this is just about the cursor color.  I thought the intention was
to fix something else.

> The following test case illustrates the problem:
> 
> $ gvim -u NONE -U NONE
> 
> :hi Cursor guibg=#ff0000           " red cursor
> :hi lCursor guibg=#00ff00          " green cursor when keymap activated
> 
> :set keymap=esperanto   " or any other keymap
> 
> :" type something in INSERT mode (Cursor should be green)
> icxgx<Esc>
> 
> :" disable keymaps
> :set keymap=
> 
> :" type something in INSERT mode again.
> :" Observe that cursor is still green (I would expect it to be red)
> icxgx<Esc>
> 
> With proposed patch, the cursor is read (as I'd expect)
> in INSERT mode after disabling keymaps with ":set keymap="
> 
> Without patch, the workaround to have proper cursor color
> when disabling keymaps is to do...
> 
>   :set iminsert=0 imsearch=0 keymap=

The alternative would be to have the cursor color also take into account
if any keymappings are defined.  But that's getting complicated.

I think the code should check that 'iminsert' and 'imsearch' are
actually at the B_IMODE_LMAP value.  Otherwise this doesn't work:

        :set iminsert=2 keymap=

New patch:


*** ../vim-7.2.128/src/option.c Sat Feb 21 20:27:00 2009
--- src/option.c        Sun Mar  1 23:15:21 2009
***************
*** 5797,5810 ****
        /* load or unload key mapping tables */
        errmsg = keymap_init();
  
!       /* When successfully installed a new keymap switch on using it. */
!       if (*curbuf->b_p_keymap != NUL && errmsg == NULL)
        {
!           curbuf->b_p_iminsert = B_IMODE_LMAP;
!           if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
!               curbuf->b_p_imsearch = B_IMODE_LMAP;
!           set_iminsert_global();
!           set_imsearch_global();
  # ifdef FEAT_WINDOWS
            status_redraw_curbuf();
  # endif
--- 5797,5824 ----
        /* load or unload key mapping tables */
        errmsg = keymap_init();
  
!       if (errmsg == NULL)
        {
!           if (*curbuf->b_p_keymap != NUL)
!           {
!               /* Installed a new keymap, switch on using it. */
!               curbuf->b_p_iminsert = B_IMODE_LMAP;
!               if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
!                   curbuf->b_p_imsearch = B_IMODE_LMAP;
!           }
!           else
!           {
!               /* Cleared the keyamp, may reset 'iminsert' and 'imsearch'. */
!               if (curbuf->b_p_iminsert == B_IMODE_LMAP)
!                   curbuf->b_p_iminsert = B_IMODE_NONE;
!               if (curbuf->b_p_imsearch == B_IMODE_LMAP)
!                   curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
!           }
!           if ((opt_flags & OPT_LOCAL) == 0)
!           {
!               set_iminsert_global();
!               set_imsearch_global();
!           }
  # ifdef FEAT_WINDOWS
            status_redraw_curbuf();
  # endif


-- 
hundred-and-one symptoms of being an internet addict:
143. You dream in pallettes of 216 websafe colors.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to