Monday, September 29, 2014

Re: Some abbreviations work only as imaps

Christian wrote:

> On Mi, 24 Sep 2014, Gevisz wrote:
> > Some abbreviations expand as desired and some do not.
> >
> > > Are there any circumstances different between a working abbreviation
> > > and a not working abbreviation?
> >
> > They may be very similar. For example, abbreviation чкпк expands as
> > desired, whereas abbreviation чкпр does not expand at all unless I
> > redefine it via imaps. (The only difference between чкпк and чкпр is
> > in the last cyrillic letter.)
> >
> > > Have you tried, testing with
> > > vim -u NONE -N (to eliminate the effect of any plugins)?
> >
> > I have just tried that. No abbreviation works after starting vim with
> > such parameters. However, when I define these two abbreviation anew in
> > thus started vim, I get the same picture: чкпк abbreviation works and
> > чкпр one do not.
>
> I can reproduce this. Does this always involve the character 'р'?
>
> Bram, problem is, 'р' is U+0440 (0xD1 0x80). As you may now already
> guess, the 0x80 will be parsed as K_SPECIAL and therefore encoded as
> K_SPECIAL KS_SPECIAL KE_FILLER. Now when checking for an abbreviation,
> Vim does not consider that the len of the mapped keys might differ from
> the len of the input chars.
>
> Attached patch fixes this.

Thanks. This deserves a test.

> @@ -4517,6 +4519,14 @@ check_abbr(c, ptr, col, mincol)
> #else
> mp = first_abbr;
>

No comments: