Запустите команду CommandTFlush при записи нового файла

Я пытаюсь заставить Vim запускать команду 'CommandTFlush' всякий раз, когда новый файл записывается. Для тех, кто не использует плагин Command-T, команда "CommandTFlush" используется для перестройки индекса файлов в текущем каталоге.

Что я хочу сделать, это запустить команду после того, как файл будет записан на диск, так что CommandTFlush найдет файл и добавит его в индекс.

Я сам пытался написать функцию, но она либо не срабатывает, либо срабатывает слишком рано (до того, как файл будет записан, и весь смысл в том, чтобы добавить файл в индекс):

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

Я подозреваю, что это можно решить, установив некоторое логическое значение var (isTheFileNew) в BufWritePre, а затем выполнить команду CommandTFlush в BufWritePost, если файл был только что создан, но я не могу понять синтаксис. Другим решением может быть установка / отмена обратного вызова BufWritePost из обратного вызова BufWritePre, если это возможно...

Может ли кто-нибудь помочь мне здесь?;)

2 ответа

Решение
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

Это реализация вашего второго предложения.

Вот мое решение. Он запускает CommandTFlush всякий раз, когда файл записывается, а также всякий раз, когда окно Vim получает фокус. Это полезно, когда вы создаете файлы вне vim - например, переключаясь между ветками в вашей системе контроля версий. Новые файлы будут доступны в CommandT сразу после повторного входа в Vim.

augroup CommandTExtension
  autocmd!
  autocmd FocusGained * CommandTFlush
  autocmd BufWritePost * CommandTFlush
augroup END
Другие вопросы по тегам