Vim에서 트윗을 니코 동의 코멘트 스타일로 흘립니다.
고릴라입니다.
평소 브라우저에서 Twitter를 하고 있습니다만, 최근 Vim과 브라우저를 전환하는 것이 귀찮다고 느끼고 있습니다.
거기서, Vim에서 작업하면서 트윗을 니코동의 코멘트풍에 흘리면 편리한 것은? 라고 생각했기 때문에 했습니다.
검증 결과
화면이 묻혀서 일할 수 없는 것 같았습니다.
죄송합니다...
검증에 사용되는 것
검증 방법
전체 흐름은 대략 다음과 같습니다.
twty
에서 정기적으로 타임 라인 JSON 얻기 twty로 정기적으로 타임 라인 JSON을 얻습니다.
twty
에는 timeline을 지정한 간격으로 polling하는 기능이 있습니다.다음 명령을 실행하면 20s 간격으로 timeline json이 반환됩니다.
twty -S 20s -json
Vim에는 외부 명령을 비동기적으로 실행하는
job_start
함수가 있으므로,이것을 사용하여 명령을 호출하면 트윗 JSON을 얻을 수 있습니다.
call job_start(["twty", "-S", "20s", "-json"], #{
\ out_cb: function('s:tweet'),
\ err_cb: function('s:onerr')
\ })
JSON에서 트윗 텍스트 추출
out_cb
에서 지정한 함수에 JSON이 들어오므로 그것을 decode하여 트윗 텍스트를 꺼냅니다.timer_start
에서 무작위로 지연하여 창을 생성하는 타이밍을 어긋나고 있습니다.function! s:tweet(ch, msg) abort
let obj = json_decode(a:msg)
if obj.text is# ""
return
endif
let wait = rand(srand()) % 12
call timer_start(wait*800, function('s:comment', [obj]))
endfunction
창을 생성하여 오른쪽에서 왼쪽으로 이동
popup_create
에서 창을 만듭니다.그 때, 윈도우의 상하의 위치를 랜덤으로 배치하기 (위해)때문에,
line
옵션에 난수를 사용하고 있습니다.function! s:comment(obj, timer) abort
let winid = popup_create(a:obj.text, #{
\ col: &columns - 40,
\ line: rand(srand()) % &lines,
\ minwidth: strlen(a:obj.text),
\ maxwidth: 40,
\ tabpage: -1,
\ zindex: 300,
\ })
call timer_start(100, function("s:move", [winid]), #{
\ repeat: -1,
\ })
endfunction
창을 만든 후에는
timer_start
로 이동합니다.가장 왼쪽으로 이동하면 타이머를 멈추고 창을 끕니다.
function! s:move(winid, timer) abort
let opt = popup_getpos(a:winid)
if opt.col is# 1
call timer_stop(a:timer)
call popup_close(a:winid)
return
endif
let opt.col -= 1
call popup_move(a:winid, opt)
redraw
endfunction
검증 코드
여기에 올려 두었으므로, 시험해보고 싶은 분은 부디.
skanehira/tweet-comment.vim
Reference
이 문제에 관하여(Vim에서 트윗을 니코 동의 코멘트 스타일로 흘립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gorilla0513/items/1d96d6b802a0628a98fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)