Accélérez la macro d'insertion TeX sur \ entrée

10

Dans latex-modequand je l' utilise TeX-insert-macropour saisir une \input{...} macro, auctex offre commodément la fin du nom de fichier, ce qui est génial. Cependant, il semble chercher beaucoup d'endroits pour compiler la liste d'achèvement, car emacs se bloque pendant près d'une minute sur mon pauvre petit ordinateur portable.

Existe-t-il un moyen TeX-insert-macrode proposer une complétion de nom de fichier stupide?
Par "stupide", je veux dire celui que vous obtenez en appelant find-file. La plupart du temps, le fichier que je veux saisir n'est qu'à un répertoire, ce serait donc plus que correct.

Si ce n'est pas possible, existe-t-il un autre moyen d'accélérer?
J'ai remarqué que lorsque j'insère la \includemacro, la liste des noms de fichiers est beaucoup plus courte, donc il y a peut-être un moyen d'utiliser cette liste pour la \input macro également.

Malabarba
la source
Il y a aussi cdlatex-insert-filenamequi vient avec le paquetage cdlatex. Je trouve cela utile pour insérer des fichiers graphiques dans des environnements de figures.
Vamsi

Réponses:

6

Vous avez quelques solutions:

Tout d' abord, il y a une variable personnalisation de ce comportement: TeX-arg-input-file-search.

Si TeX-arg-input-filedevrait rechercher des fichiers. Si la valeur est t, les fichiers du chemin de recherche de TeX sont recherchés et fournis pour être complétés. Le nom du fichier est ensuite inséré sans répertoire ni extension. Si la valeur est nulle, le nom du fichier peut être spécifié manuellement et est inséré avec un chemin relatif au répertoire du fichier du tampon actuel et avec l'extension. Si la valeur est ask, vous êtes invité à indiquer la méthode à utiliser à chaque TeX-arg-input-fileappel.

Cette documentation n'est, à mon humble avis, pas assez claire, mais sa définition nilsemble faire l'affaire.

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

Cette variable affecte toutes les fonctions qui font appel TeX-arg-input-file, y compris input, includeet usepackage. Pour ce dernier, ce comportement peut être inattendu.

Ensuite, il existe une solution plus hacky qui devrait fonctionner pour toutes les fonctions: TeX-arg-input-filedispose d'un localindicateur pour ce comportement (cet indicateur est par exemple défini sur tfor include).

Apparemment, vous pouvez remplacer tout autre paramètre en ajoutant simplement une autre entrée pour la commande, donc:

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

Une dernière solution, si vous avez des sessions emacs de longue durée, est de simplement laisser tomber. Il semble que la phase de "recherche de fichiers" cache ses résultats, il ne doit donc être appelé qu'une seule fois par session.

T. Verron
la source
Impressionnant! Je m'attendais à un peu de piratage, je suppose que j'ai sous-estimé auctex.
Malabarba
1
Hmpf, il semble que le hack était bien le chemin à parcourir, voir mon montage. Si la solution hacky convient mieux à vos besoins, dites-le-moi afin que je puisse réorganiser la réponse.
T. Verron
1
Vous avez raison, pour un package d'utilisation qui ne serait pas souhaitable. Merci pour la mise à jour. Il met en effet en cache les résultats, mais un délai de ~ 1min suffit pour me déranger même si ce n'est qu'une fois par tampon.
Malabarba
1
J'ai réorganisé le contenu. En regardant à nouveau le code, je me suis trompé TeX-global-input-files(la variable contenant le résultat de la recherche) n'est pas tampon local, donc la recherche ne devrait avoir lieu qu'une seule fois par session emacs . Peut-être que ce serait plus intéressant si cela pouvait arriver de manière asynchrone, cependant, un gel de ~ 1min est en effet trop long.
T. Verron