Искал чего интересного на vim.org
Нашёл.
TwitVim – плагин для постинга в твиттер прямо из вима.
Удобно, подумал я. Ведь на работе постоянно в коде и очень лень переключаться на миранду и открывать диалог с ботом твиттера.
Но не всё так просто.
Первое, что надо сделать это прописать в переменную окружения Path программку curl.
Для винды у меня была скомпилена в cygwin. Однако, автор TwitVim’a в инструкции указал откуда можно скачать.
Вторая проблема заключается в том, что в винде русский текст в cp-1251, а для корректной отсылки сообщения необходимо, чтобы оно было в utf-8.
Т.к. я собирал также под cygwin’ом iconv, то пропатчил функцию: s:urlencode таким образом
function! s:url_encode(str)
let istr = iconv( a:str, ‘cp1251’, ‘utf-8’ )
return substitute(istr, ’[^a-zA-Z_-]’, ’\=printf("%%%02X", char2nr(submatch(0)))’, ‘g’)
endif
endfunction
После этого стало можно писать на великом и могучем.
Однако, одна проблема осталась. Читать твиттер не получается, т.к. приходят кракозяблы (то биш юникод, а перекодировать плагин пока не может, надо дописать будет)
Вечером попробовал под линуксом этот плагин. Думал, что тут-то всё пойдёт как по маслу. А вот и фиг.
Функция printf отработала не так, как ожидалось, выдавая числа вида %410 вместо вида %D0%B1
Решил, что лучше использовать внешний urlencode. Например из php.
Пока остановился на варианте
function! s:url_encode(str)
"if has( ‘php’ )
return system( "php -r ‘echo urlencode(".a:str.");’" )
"else
" return substitute(istr, ’[^a-zA-Z_-]’, ’\=printf("%%%02X", char2nr(submatch(0)))’, ‘g’)
"endif
endfunction
Тестовый прогон показал, что кодированная строка правильная.
Однако, твиттер отключили и проверить никак.
Второй косяк под линуксом в том, что функция PosttoTwitter не работает.
Обхожу тем, что пишу текст в окно, выделяю и отправляю по Alt+T
Зато читать твиттер можно нормально – по-русски.
P.S. Почему всё время мучится так приходится?