Exécutez la commande CommandTFlush lorsqu'un nouveau fichier est écrit
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? ;)
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