Qual é a 'melhor prática' atual para preferências persistentes para um plug-in?


7

Eu tenho um plug-in (um submódulo unido) que filtra arquivos de texto extremamente grandes para gerar um 'índice' útil. Gostaria de fornecer ao usuário a capacidade de ativar / desativar muitos dos filtros ... e gostaria que essa configuração persistisse em cada chamada do vim. (atualizações instantâneas em sessões simultâneas não são necessariamente necessárias)

Existe um mecanismo para fazer isso embutido no vim? Ou preciso criar e gerenciar um "arquivo de ponto" no $ HOME do usuário? Ou existe uma maneira padrão aceita de lidar com isso?

EDIT: Eu realmente não posso deixar o usuário definir uma variável global no vimrc, porque a lista de opções atualmente possui várias centenas de entradas e a interface atual é simplesmente "tipo d com o índice aberto" para remover da lista .


Estou ciente de que, para variáveis ​​de usuário, você pode garantir que viminfoinclui !e, em seguida, certos tipos de variáveis ​​g: serão armazenados persistentemente no arquivo viminfo, mas não é razoável para a maioria dos plugins modificar o viminfo nos usuários.
jkerian

Não tenho muito conhecimento sobre esse assunto, mas acho que todos os plugins que usei acabaram de definir g:boolVariablee depois orientaram o usuário a defini-lo por conta própria vimrc. Depois, basta verificar as opções que o usuário definiu e trabalhar a partir daí.
precisa saber é o seguinte

Respostas:


6

Uma maneira de fazer isso é fazer com que seu plug-in defina uma variável global que armazene o caminho para o arquivo específico "configurações persistentes / filtros ativados". Isso é semelhante ao modo como vários plugins que precisam 'armazenar em cache' alguns valores funcionam. Portanto, a documentação pode ficar assim:

g:myplugin_enabled_filters_path     *g:myplugin_enabled_filters_path*
    This variable points to the file that stores enabled filters for
    <myplugin> etc.

    Default value is "$HOME/.myplugin.filters"

Você pode usar a $HOMEvariável para criar um valor padrão para esse caminho e armazenar seus filtros ativados lá. Os usuários podem alterar o caminho alterando a variável acima vimrc. Suponho que você pretenda oferecer alguns meios (funções, comandos, mapas de teclas) para habilitar / desabilitar convenientemente vários filtros em tempo real, enquanto usa seu plug-in (filtros que você lembra nesse arquivo), para que o usuário não precise lidar com eles diretamente. Caso contrário, é mais simples permitir que o usuário modifique uma variável global que armazena uma lista / ditado etc. de filtros ativados (que podem "persistir" mantendo a variável salva vimrc) e, em vez disso, leia-a (como no comentário de Tumbler41 acima).

Para mais detalhes, você pode acompanhar como g: neocomplcache_temporary_dir é definido e usado no neocomplcache.vimplug-in do Shougo .

Além disso, você pode serializar (salvar / restaurar) facilmente qualquer variável vim (mesmo um dicionário) nesse arquivo usando algo como isto .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.