On Mar 30, 2014 12:59 PM, "Dmitry Frank" <[email protected]> wrote:
>
>
>
>
> 2014-03-30 12:51 GMT+04:00 Nikolay Pavlov <[email protected]>:
>
>>
>> On Mar 30, 2014 4:19 AM, "Dmitry Frank" <[email protected]> wrote:
>> >
>> > Then, how can I get the symbol index (not byte offset) of a match?
>> >
>> > There is awesome plugin "PreciseJump":
http://www.vim.org/scripts/script.php?script_id=3437 , it gets array of all
symbols of the line, like that:
>> >
>> >         let lines_with_markers[l] = split(getline(l), '\zs')
>> >
>> > So that here's symbol index is needed, not byte offset. Because of
this, it fails if there's multi-byte chars before the match.
>> >
>> > Currently, it's calculated like this:
>> >
>> >         let match_start = match(getline(l), a:re, 0, 1)
>> >
>> > Please suggest how to get symbol index instead.
>>
>> Please define "symbol". /\zs split takes composing characters and
codepoint they modify as one symbol. If this is what you want use
len(split(str[: match_start-1], '\zs')). Use strchars(str[: match_start-1])
if you want them counted separately. Use strdisplaywidth() if you need
count for the jump-to-virtcol (pipe) motion.
>
> Yes thanks, I've already found that I can use strchars() for that. By
"symbol" I meant "char", sorry for wrong term.

Meaning of "char" is unclear as well. If strchars() is fine it should be
"unicode codepoint" (because "composing characters are counted
separately"). Problem is that I do not know well-established terminology on
this matter: display cell, byte and unicode codepoint each have single
clear meaning, but symbol and character may mean anything, depending on the
speaker.

>
> --
> --
> You received this message from the "vim_dev" 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
>
> ---
> You received this message because you are subscribed to the Google Groups
"vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
-- 
You received this message from the "vim_dev" 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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui