Я пытаюсь написать плагин для Vim, используя Tcl в качестве языка бэкэнда. Я написал и протестировал большую часть кода, и он, кажется, работает нормально, за исключением одного препятствия, которое я не могу преодолеть: кодирование.

Интересно, хочет ли кто-нибудь здесь пройти тест?

Создайте ~/.vim/plugin/tcltest.tcl со следующими строками:

proc tcl.test   {}  {
    array set CURSOR [[set ::vim::current(window)] cursor]
    lassign "$CURSOR(row) $CURSOR(column)" CR CC
    set bufferCommand [set ::vim::current(buffer)]

    set string "já não bênção"
    puts $string
    $bufferCommand set $CR $string
}

Затем добавьте эти строки в ~/.vimrc:

if has("tcl")
    tclfile ~/.vim/plugin/tcltest.tcl
endif
inoremap  ?   ^[:tcl tcl.test<CR>

Теперь перезапустите Vim с новым документом, перейдите в режим вставки и нажмите '?'

Должны произойти две вещи:

1) строка «já não bênção» должна отображаться в области сообщений

2) строка «já não bênção» должна быть вставлена в буфер

Он будет хорошо выглядеть в области сообщений, но все это будет искажено в буфере из-за акцентированных символов.

В Tcl есть команда 'encoding', и я попробовал ВСЕ возможные кодировки в цикле foreach, но ни одна из них не работает.

Я убежден, что это ошибка, потому что строка должна быть как минимум одинаковой в буфере и области сообщений. Даже если я делаю что-то не так с моим кодом Tcl, ошибка должна отражаться в обоих местах.

Может кто-нибудь подтвердить (или нет) это и сообщить версию Vim и ОС / платформу?

0