2009-08-24 9 views
2

私はこのPythonコードを使って別のスレッドからVimのバッファを埋めようとしています。Vimのpythonのbuffer.append(行)スイッチウィンドウのフォーカス

python << PYTHON_CODE 

import vim 
import time 

buffer_number = -1 
class AppendLineTest(Thread): 
    def run(self): 
     buffer = vim.buffers[buffer_number - 1] 

     for i in range(10): 
     buffer.append('Line number %s' % i) 
     time.sleep(1) 

PYTHON_CODE 

function! s:test() 
    split TestBuffer 
    exec 'python buffer_number = '.bufnr('%') 

    setlocal noswapfile 
    setlocal bufhidden=delete 
    setlocal buftype=nofile 
    setlocal nobuflisted 
    setlocal nonumber 
    setlocal nowrap 
    setlocal nocursorline 

    python AppendLineTest().start() 
endfunction 

command! -nargs=0 PythonAppendTest call s:test() 

私は別のスレッドからVimのバッファにアクセスが許可されていることを確認していないと不思議いくつかの安全な発送方法があります。 しかし、許可されていれば、行を追加するときにカーソルが飛び降りるのを避けたいです。

動作を再現するには、コードをいくつかのname.vimファイルに保存し、Vimで開きます。その後

:source % 

そして

PythonAppendTest 

行は一時バッファに10回を追加されます。あなたがいたウィンドウにカーソルを戻すだけで、私が話していることを理解することができます。

あなたはなぜ誰かがここでは、別のスレッドからのバッファに行を追加する必要があることができます不思議場合の例である:

  • UNIXのトップ
  • UNIXテール
  • RSS
  • メール

作業中は、あらかじめ定義されたバッファに表示されます。

ありがとうございます。

答えて

2

私はVimがパッチを適用しないで複数のスレッドに非常に寛容であるとは思わない。ディスカッションat this linkにはもっと詳細な説明がありますが、私が望むのは些細なものとは限りません。

+0

リンクありがとうございます。あまりにも悲しい。 –

関連する問題