터미널 버퍼의 REPL과 상호 작용하는 Neovim 플러그인을 작업 중입니다. REPL에 명령을 보내고 응답을 복사하여 어떻게 든 사용자에게 표시 할 수 있기를 원합니다. 현재, 단말의 버퍼는 현재 vim 스크립트 기능이 종료 될 때까지 출력을 리프레시하지 않는 것, 그래서 않는 단일 기능, 예를 가질 수 없다 다음 get_response
기능은 단말의 버퍼와 협력으로Neovim 비동기 버퍼 대기
function! plugin#eval(str)
call s:send_to_repl(str)
echomsg s:get_response()
endfunction
을 업데이트되기 전에.
현재 저는 neovim의 작업 제어 기능을 사용하고 있습니다.하지만 바닐라 빔으로 수행 할 수 있다면 더 좋습니다. 내가 edit
명령을 추가하려고했습니다
function! s:send(str)
call jobsend(g:intero_job_id, add([a:str], ''))
endfunction
:
여기function! s:start_buffer(height)
set bufhidden=hide
set noswapfile
set buftype=nofile
set hidden
terminal! stack ghci --with-ghc intero
let l:buffer_id = bufnr('%')
let g:intero_job_id = b:terminal_job_id
endfunction
내가 REPL에 명령을 보내고있다 방법은 다음과 같습니다 여기
내가 터미널을 초기화하는 데 사용하고 코드입니다 새로 고침을하지만 REPL에서 작동하지 않는 것 같습니다.REPL과 통신하기위한 코드는 here입니다. 프로세스를 관리하는 코드는 here입니다.
흠,'TextChanged'' autocmd는 내가 기대 한대로하지 않습니다. 사용자 커서가 현재 터미널 버퍼에있을 때만 발생하는 것처럼 보입니다. 지금'jobattach'를 체크 아웃하면 – ephrion
'jobattach'가 아직 존재하지 않습니다. 기능 요청 일 것입니다. –
@ephrion 타이머를 사용하여 또 다른 제안을 추가했습니다. 그러나 아마'jobattach()'는 실제로 필요한 부분입니다. –