Posso configurar o vim para configurar o noswapfile ao editar um arquivo que exista em um repositório git

0

Quais APIs e recursos do vim eu poderia usar para desabilitar o arquivo de permuta do vim (o arquivo de recuperação oculto) para um determinado buffer se o arquivo existir em um repositório do git?

Dentro de git repos Eu também quero ativar um plugin de salvamento automático, já que não preciso me preocupar com mudanças acidentais sendo salvas. Mas, para outros buffers fora dos git repos, não quero que o autosave modifique acidentalmente os arquivos, e quero manter o arquivo de recuperação do vim.

Eu suponho que esta é uma tarefa de programação de plugin agradável para se familiarizar com a programação do plugin vim, mas se alguém sabe mais ou menos a abordagem que eu deveria ter, eu agradeceria

    
por Peter Hahn 10.07.2018 / 23:24

1 resposta

1

Desativando o arquivo de swap

Para os buffers existentes, você pode :setlocal noswapfile . Isso removerá qualquer existente e desativará a recuperação. Ao abrir novos buffers, você também pode preceder diretamente :noswapfile edit ...

Detectando o repositório Git

Se você sempre abrir o Vim a partir do diretório raiz do Git, isso pode ser tão simples quanto isdirectory('.git') . Senão, você teria que verificar também os diretórios pais:

let gitDirspec = finddir('.git', '.;')
let isGitRepo = !empty(gitDirspec)

Como alternativa, o plug-in vcscommand.vim fornece detecção para vários tipos de sistema de controle de revisão (entre eles, o Git):

let isGitRepo = VCSCommandGetVCSType('') ==? 'git'

Conectando-se

Se você tivesse uma lista estática de repositórios Git, poderia colocar os caminhos diretamente nos padrões :autocmd filespec:

:autocmd BufNew,BufRead /path/to/repo1/**,/path/to/repo2/** setlocal noswapfile

Para executar a detecção, precisamos executar os autocmds em cada arquivo aberto:

:autocmd BufNew,BufRead * if VCSCommandGetVCSType('') ==? 'git' | setlocal noswapfile | endif
    
por 03.09.2018 / 16:04

Tags