Como definir spellfile com espaços

Oct 30 2020

Estou tentando dar ao vim um arquivo de magia global e um arquivo de magia específico do projeto. O arquivo específico do projeto é ./en.utf-8.addrelativo ao cwd. Isso funciona bem se o diretório do projeto não tiver espaços, mas dá erro E474: Invalid argumentao chamar set spellfile+=um caminho com espaços. Tentei escapar do caminho com fnameescape(), mas ainda recebo o erro. Colocar o caminho entre aspas não dá nenhum erro, mas não parece ter nenhum efeito.

Eu sei que posso simplesmente colocar o nome de base do arquivo de feitiço em relação a cwd, mas quero que as entradas spellfilesejam absolutas. Principalmente porque quero ser capaz de encontrar programaticamente o índice do feitiço local vil para [count]zge [count]zug.

Editar: Adicionar exemplos

set spellfile=/foo bar/en.utf-8.add -> E474: Invalid argument: spellfile=/foo
set spellfile=/foo\ bar/en.utf-8.add -> E474: Invalid argument: spellfile=/foo\ bar/en.utf-8.add
set spellfile=/foo\\ bar/en.utf-8.add -> E474: Invalid argument: spellfile=/foo\\
set spellfile=/foobar/en.utf-8.add -> Sets the spellfile to /foobar/en.utf-8.add as expected

Curiosamente, parece que com um único espaço, todo o caminho é aceito, mas de alguma forma ainda inválido. Com 0 ou 2 espaços, a entrada é cortada quando o espaço é alcançado, o que faz sentido. Então, posso codificar corretamente o espaço, mas ainda é inválido para um arquivo de feitiço?

Respostas

1 filbranden Oct 30 2020 at 06:27

ATUALIZAÇÃO: isso foi corrigido na versão 8.2.1926.

Olhando o código-fonte do Vim, parece que o Vim tentará validar o nome do arquivo de feitiço e apenas considerará os caracteres 'isfname'como válidos.

Como alternativa, você pode adicionar um espaço 'isfname'(talvez temporariamente) para definir 'spellfile'um nome que contenha um espaço:

set isfname+=32
set spellfile=/foo\ bar/en.utf-8.add
set isfname-=32

Observe que 32 é o código ASCII para um caractere de espaço. Veja :help 'isfname'para mais detalhes sobre como essa opção funciona.