Question

Je suis en train de faire Vim exécuter la commande « CommandTFlush » à chaque fois qu'un nouveau fichier est writte. Pour ceux qui ne pas utiliser le plug-in Commande-T, la commande « CommandTFlush » est utilisée pour reconstruire un index des fichiers dans le répertoire courant.

Ce que je veux faire est de lancer la commande après que le fichier est écrit sur le disque, de sorte que CommandTFlush trouvera le fichier et l'ajouter à son index.

Je l'ai essayé d'écrire une fonction moi-même, mais soit il ne se déclenche pas ou il se déclenche trop tôt (avant que le fichier est écrit, et le point de l'ensemble est d'ajouter le fichier à l'index):

au! BufWritePre * ks| call NewFilesUpdatesCommandT()
function! NewFilesUpdatesCommandT()
    let filename=@%
    if !filereadable(filename)
        CommandTFlush
    endif
endfunction

Je soupçonne qu'il pourrait être résolu en mettant une var booléenne (isTheFileNew) dans BufWritePre puis exécutez la commande CommandTFlush dans BufWritePost si le fichier vient d'être créé, mais je ne peux pas comprendre la syntaxe. Une autre solution pourrait être l'activation / désactivation de la fonction de rappel BufWritePost à partir de rappel BufWritePre, si cela est possible ...

pourrait aider quelqu'un me ici? ;)

Était-ce utile?

La solution

augroup NFUCT
    autocmd!
    autocmd BufWritePre * call NFUCTset()
augroup END
function NFUCTset()
    if !filereadable(expand('%'))
        augroup NFUCT
            autocmd BufWritePost * call NFUCT()
        augroup END
    endif
endfunction
function NFUCT()
    augroup NFUCT
        autocmd!
        autocmd BufWritePre * call NFUCTset()
    augroup END
    CommandTFlush
endfunction

Ceci est une prise de conscience de votre deuxième suggestion.

Autres conseils

Voici ma solution. Il déclenche CommandTFlush chaque fois qu'un fichier est écrit et chaque fois que se concentrent les gains de la fenêtre de Vim. Ceci est utile lorsque vous créez des fichiers en dehors de vim - par exemple en passant entre les branches dans votre système de contrôle de version. Les nouveaux fichiers seront disponibles dans CommandT immédiatement après que vous entrez à nouveau Vim.

augroup CommandTExtension
  autocmd!
  autocmd FocusGained * CommandTFlush
  autocmd BufWritePost * CommandTFlush
augroup END
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top