Я пытаюсь написать плагин для 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 и ОС / платформу?