Pregunta

Estoy tratando de hacer que Vim ejecutar el comando 'CommandTFlush' cada vez que un nuevo archivo es writte. Para aquellos que no utilizan el plugin Comando-T, el comando 'CommandTFlush' se usa para reconstruir un índice de archivos en el directorio actual.

Lo que quiero hacer es ejecutar el comando después de que el archivo se escribe en el disco, por lo que CommandTFlush encontrará el archivo y agregarlo a ella de índice.

He intentado escribir una función a mí mismo, pero o bien no se dispara o se dispara demasiado pronto (antes de que el archivo está escrito, y el punto es para agregar el archivo al índice):

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

sospecho que podría ser resuelto mediante el establecimiento de algunas var boolean (isTheFileNew) en BufWritePre y luego ejecutar el comando CommandTFlush en BufWritePost si el archivo se acaba de crear, pero no puedo averiguar la sintaxis. Otra solución podría ser armado / desarmado la devolución de llamada desde dentro BufWritePost BufWritePre de devolución de llamada, si eso es posible ...

¿Podría alguien ayudarme aquí? ;)

¿Fue útil?

Solución

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

Esta es una realización de la segunda propuesta.

Otros consejos

Aquí está mi solución. Se dispara CommandTFlush cada vez que un archivo se escribe y también cada vez que las ganancias de la ventana de Vim se centran. Esto es útil cuando se crea archivos fuera de vim - por ejemplo, mediante el cambio entre las ramas de un sistema de control de versiones. Los nuevos archivos estarán disponibles en CommandT inmediatamente después de volver a entrar en Vim.

augroup CommandTExtension
  autocmd!
  autocmd FocusGained * CommandTFlush
  autocmd BufWritePost * CommandTFlush
augroup END
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top