Accelerare TeX-insert-macro su \ input


10

In latex-modequando uso TeX-insert-macrodi digitare un \input{...} macro, AucTeX offre comodamente completamento nome del file, che è grande. Tuttavia, sembra cercare molti posti per compilare l'elenco di completamento, perché emacs si blocca per quasi un minuto sul mio povero laptop.

C'è un modo per TeX-insert-macrooffrire il completamento stupido del nome file?
Per "stupido" intendo quello che ottieni quando chiami find-file. Il più delle volte il file che voglio inserire è solo a una directory di distanza, quindi sarebbe più che soddisfacente.

Se ciò non è possibile, c'è un altro modo per accelerarlo?
Ho notato che quando inserisco la \includemacro l'elenco dei nomi dei file è molto più breve, quindi forse c'è un modo di usare quell'elenco anche per la \input macro.


C'è anche quello cdlatex-insert-filenameche viene fornito con il pacchetto cdlatex. Lo trovo utile per inserire file grafici in ambienti figura.
Vamsi,

Risposte:


6

Hai alcune soluzioni:

In primo luogo, v'è una variabile di personalizzazione di questo comportamento: TeX-arg-input-file-search.

Se TeX-arg-input-filedovrebbe cercare i file. Se il valore è t, i file nel percorso di ricerca di TeX vengono cercati e forniti per il completamento. Il nome del file viene quindi inserito senza directory ed estensione. Se il valore è zero, il nome del file può essere specificato manualmente e viene inserito con un percorso relativo alla directory del file del buffer corrente e con estensione. Se il valore è ask, viene richiesto il metodo da utilizzare ogni volta che TeX-arg-input-fileviene chiamato.

Questo pezzo di documentazione non è abbastanza chiaro, ma impostarlo su nilsembra fare il lavoro.

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

Questa variabile influenza tutte le funzioni che richiedono TeX-arg-input-file, tra cui input, includee usepackage. Per quest'ultimo, questo comportamento potrebbe essere inaspettato.

Quindi c'è una soluzione più confusa che dovrebbe funzionare per tutte le funzioni: TeX-arg-input-filepresenta un localflag per questo comportamento (questo flag è ad esempio impostato su tfor include).

Apparentemente, puoi sovrascrivere qualsiasi altra impostazione semplicemente aggiungendo un'altra voce per il comando, quindi:

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

Un'ultima soluzione, se hai sessioni emacs di lunga durata, è semplicemente lasciarla andare. Sembra che la fase di "ricerca dei file" memorizzi nella cache i risultati, quindi dovrebbe essere chiamata solo una volta per sessione.


Eccezionale! Mi aspettavo un po 'di un trucco, suppongo di aver sottovalutato auctex.
Malabarba,

1
Hmpf, sembra che l'hacking fosse davvero la strada da percorrere, vedi la mia modifica. Se la soluzione hacky si adatta meglio alle tue esigenze, per favore dimmelo in modo da poter riordinare la risposta.
T. Verron,

1
Hai ragione, per un pacco che sarebbe indesiderabile. Grazie per l'aggiornamento. Effettivamente memorizza nella cache i risultati, ma un ritardo di ~ 1min è sufficiente a disturbarmi anche se è solo una volta per buffer.
Malabarba,

1
Ho riorganizzato il contenuto. Guardando di nuovo il codice, ho sbagliato, TeX-global-input-files(la variabile che contiene il risultato della ricerca) non è buffer-local, quindi la ricerca dovrebbe avvenire una sola volta per sessione di emacs . Forse questo sarebbe più interessante se potesse accadere in modo asincrono, tuttavia un congelamento di ~ 1min è davvero troppo lungo.
T. Verron,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.