Acelere a macro TeX-insert-on \ input

10

Em latex-modequando eu uso TeX-insert-macropara escrever uma \input{...} macro, AUCTeX convenientemente oferece a conclusão filename, que é grande. No entanto, parece procurar em muitos lugares para compilar a lista de conclusão, porque o emacs trava por quase um minuto no meu pobre laptop.

Existe uma maneira de TeX-insert-macrooferecer a conclusão de nome de arquivo idiota?
Por "burro", quero dizer o que você recebe quando liga find-file. Na maioria das vezes, o arquivo que eu quero inserir fica a apenas um diretório, o que seria mais do que bom.

Se isso não for possível, existe outra maneira de acelerar isso?
Percebi que quando insiro a \includemacro, a lista de nomes de arquivos é muito menor, então talvez haja uma maneira de usar essa lista \input também.

Malabarba
fonte
Há também o cdlatex-insert-filenameque vem com o pacote cdlatex. Acho útil para inserir arquivos gráficos em ambientes de figuras.
Vamsi

Respostas:

6

Você tem algumas soluções:

Primeiro, há uma variável que personaliza este comportamento: TeX-arg-input-file-search.

Se TeX-arg-input-filedeve procurar por arquivos. Se o valor for t, os arquivos no caminho de pesquisa do TeX são pesquisados ​​e fornecidos para conclusão. O nome do arquivo é inserido sem diretório e extensão. Se o valor for nulo, o nome do arquivo pode ser especificado manualmente e é inserido com um caminho relativo ao diretório do arquivo do buffer atual e com extensão. Se o valor for ask, você será solicitado a usar o método sempre que TeX-arg-input-filefor chamado.

Esta parte da documentação não é suficientemente clara, mas configurá-la para nilparece fazer o trabalho.

(setq TeX-arg-input-file-search nil)

Essa variável afeta todas as funções que chamam TeX-arg-input-file, incluindo input, includee usepackage. Para o último, esse comportamento pode ser inesperado.

Depois, há uma solução mais hacky que deve funcionar para todas as funções: TeX-arg-input-fileapresenta um localsinalizador para esse comportamento (este sinalizador é, por exemplo, definido como tfor include).

Aparentemente, você pode substituir qualquer outra configuração apenas adicionando outra entrada para o comando, portanto:

(add-hook 'LaTeX-mode-hook 
  (lambda nil 
     (TeX-add-symbols '("input" (TeX-arg-input-file "File" t)))))

Uma última solução, se você tiver sessões duradouras do emacs, é simplesmente deixá-lo ir. Parece que a fase "pesquisando arquivos" armazena em cache seus resultados, portanto deve ser chamada apenas uma vez por sessão.

T. Verron
fonte
Impressionante! Eu estava esperando um pouco de hack, acho que subestimei o auctex.
Malabarba 25/09
11
Hmpf, parece que o hack foi realmente o caminho a percorrer, veja minha edição. Se a solução hacky atender melhor às suas necessidades, informe-me para que eu possa reorganizar a resposta.
T. Verron
11
Você está certo, para usar pacotes que seriam indesejáveis. Obrigado pela atualização. Realmente armazena em cache os resultados, mas um atraso de ~ 1min é suficiente para me incomodar, mesmo que seja apenas uma vez por buffer.
Malabarba 25/09
11
Eu reorganizei o conteúdo. Olhando o código novamente, eu estava errado TeX-global-input-files(a variável que contém o resultado da pesquisa) não é local do buffer, portanto, a pesquisa deve ocorrer apenas uma vez por sessão do emacs . Talvez isso seja mais interessante se isso acontecer de forma assíncrona, porém, um congelamento de ~ 1min é realmente muito longo.
T. Verron