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.


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.


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
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.