Skrypty Vima z niedopasowaniem kodowania Tcl:

0

Próbuję napisać wtyczkę dla Vima używając Tcl jako języka zaplecza. Napisałem i przetestowałem większość kodu i wygląda na to, że działa dobrze, z wyjątkiem jednej przeszkody, której nie mogę się pozbyć: kodowania.

Zastanawiam się, czy ktoś tutaj jest skłonny do testu.

Utwórz ~ / .vim / plugin / tcltest.tcl tymi liniami:

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
}

Następnie dodaj te linie do ~ / .vimrc:

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

Teraz uruchom ponownie Vima nowym dokumentem, przejdź do trybu Wstaw i naciśnij „?”

Dwie rzeczy powinny się zdarzyć:

1) ciąg „já não bênção” powinien być wyświetlany w obszarze wiadomości

2) ciąg „já não bênção” należy wstawić do bufora

Będzie dobrze wyglądać w obszarze wiadomości, ale będzie całkowicie zniekształcony w buforze z powodu znaków akcentowanych.

W Tcl jest komenda 'encoding' i wypróbowałem WSZYSTKIE możliwe kodowania w pętli foreach, ale żadna z nich nie działa.

Jestem przekonany, że jest to błąd, ponieważ łańcuch powinien być przynajmniej taki sam w buforze i obszarze wiadomości. Nawet jeśli robię coś złego z moim kodem Tcl, błąd powinien być odzwierciedlony w obu miejscach.

Czy ktoś może potwierdzić (lub nie) to i zgłosić wersję Vima i system operacyjny / platformę?

movingtype
źródło
Wygląda na to, że działa dobrze (ręcznie załadowano plik tclfile i dodano mapowanie). Debian unstable, console, vim 7.3 łaty 1-923 Ogromne.
Etan Reisner
1
Jakie ustawienia kodowania ustawiłeś w vimie? Co dokładnie oznacza „wszystko zniekształcone”?
Etan Reisner
encoding = latin1, fileencoding = Wszystko zniekształcone oznacza, że ​​znaki akcentowane stają się niechlujne, oczywiście ustawione na złe kodowanie.
movingtype
Wygląda na to, że działa dla mnie tutaj, gdy uruchamiam kodowanie tak samo skonfigurowane, więc nie jestem pewien, co dokładnie widzisz, ale czy te znaki są nawet legalnymi znakami latin1? Czy powinno to w ogóle działać?
Etan Reisner
Tak, są legalne, ale nie poprawne. „já não bênção” staje się „jánà £ o bênçà £ o”. Dlaczego nie powinno się pracować? Dlaczego wynik nie jest taki sam w obszarze wiadomości i buforze tekstu? Powinny być przynajmniej takie same.
movingtype