2 votes

Vim python's buffer.append(line) basculer le focus de la fenêtre

Je suis en train d'essayer de remplir le tampon de Vim à partir d'un thread séparé en utilisant ce code python.

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('Ligne numéro %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()

Je ne suis pas sûr que l'accès aux tampons de Vim à partir de threads séparés soit autorisé et je me demande s'il existe un moyen de lancer en toute sécurité. Mais si c'est autorisé, je voudrais me débarrasser du saut de curseur lorsque la ligne est ajoutée.

Pour reproduire le comportement, enregistrez le code dans un fichier nommé nom.vim et ouvrez-le dans Vim. Puis

:source %

Et ensuite

PythonAppendTest

Les lignes seront ajoutées 10 fois au tampon temporaire. Il vous suffit de déplacer le curseur vers la fenêtre où vous étiez et vous comprendrez de quoi je parle.

Si vous vous demandez pourquoi quelqu'un aurait besoin d'ajouter des lignes aux tampons à partir d'un thread séparé, voici un exemple:

  • unix top
  • unix tail
  • rss
  • email

Pendant que vous travaillez, elles apparaissent dans un tampon prédéfini.

Merci d'avance.

2voto

DrAl Points 29528

Je ne pense pas que Vim soit très tolérant aux threads multiples sans patch. Il y a beaucoup plus de détails dans la discussion à ce lien, mais je soupçonne que ce que vous voulez est loin d'être trivial.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X