Addendum.

Heureka, I've found it!

The solution is based on a combination of virtcol(".") and byteidx(...):

function! CWord(string, class_start, class_end)
>    let l:len = len(substitute(a:string, ".", "x", "g"))
>    let l:pos = virtcol(".") - 1
>
>    let l:start = l:pos
>    while l:start >= 0 && matchstr(a:string, ".", byteidx(a:string, 
> l:start)) =~ a:class_start
>       let l:start -= 1
>    endwhile
>
>    let l:end = l:pos
>    while l:end < l:len && matchstr(a:string, ".", byteidx(a:string, 
> l:end)) =~ a:class_end
>       let l:end += 1
>    endwhile
>
>    let l:start = byteidx(a:string, l:start + 1)
>    let l:end   = byteidx(a:string, l:end   - 1)
>
>    return strpart(a:string, l:start, l:end - l:start + 1)
> endfunction
>

Thanks for the comments! 

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

Reply via email to