Acelere TeX-insert-macro en \ input

10

En latex-modecuando utilizo TeX-insert-macropara escribir una \input{...} macro, auctex convenientemente ofrece nombres de archivos, que es grande. Sin embargo, parece buscar muchos lugares para compilar la lista de finalización, porque emacs se cuelga durante casi un minuto en mi pobre y pequeña computadora portátil.

¿Hay alguna forma de TeX-insert-macroofrecer una finalización de nombre de archivo tonto?
Por "tonto", me refiero al que obtienes cuando llamas find-file. La mayoría de las veces el archivo que quiero ingresar está a solo un directorio de distancia, por lo que estaría más que bien.

Si eso no es posible, ¿hay otra forma de acelerarlo?
Noté que cuando inserto la \includemacro, la lista de nombres de archivo es mucho más corta, por lo que tal vez también haya una manera de usar esa lista para la \input macro.

Malabarba
fuente
También hay uno cdlatex-insert-filenameque viene con el paquete cdlatex. Me resulta útil para insertar archivos gráficos en entornos de figuras.
Vamsi

Respuestas:

6

Tienes algunas soluciones:

En primer lugar, hay una variable personalización de este comportamiento: TeX-arg-input-file-search.

Si TeX-arg-input-filedebe buscar archivos. Si el valor es t, los archivos en la ruta de búsqueda de TeX se buscan y se proporcionan para su finalización. El nombre del archivo se inserta sin directorio y extensión. Si el valor es nulo, el nombre del archivo se puede especificar manualmente y se inserta con una ruta relativa al directorio del archivo del búfer actual y con extensión. Si el valor es ask, se le solicita el método que debe usar cada vez que TeX-arg-input-filese llama.

Esta documentación es, en mi opinión, bastante poco clara, pero configurarla nilparece hacer el trabajo.

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

Esta variable afecta a todas las funciones que llaman TeX-arg-input-file, incluidos input, includey usepackage. Para este último, este comportamiento puede ser inesperado.

Luego hay una solución más hacky que debería funcionar para todas las funciones: TeX-arg-input-filepresenta un localindicador para este comportamiento (este indicador está configurado, por ejemplo, tpara include).

Aparentemente, puede anular cualquier otra configuración simplemente agregando otra entrada para el comando, entonces:

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

Una última solución, si tiene sesiones de emacs duraderas, es simplemente dejarlo ir. Parece que la fase de "búsqueda de archivos" almacena en caché sus resultados, por lo que debería llamarse solo una vez por sesión.

T. Verron
fuente
¡Increíble! Esperaba un poco de pirateo, supongo que subestimé auctex.
Malabarba
1
Hmpf, parece que el hack fue el camino a seguir, mira mi edición. Si la solución hacky se adapta mejor a sus necesidades, dígame para que pueda reorganizar la respuesta.
T. Verron
1
Tienes razón, para usar un paquete que sería indeseable. Gracias por la actualización. De hecho, almacena en caché los resultados, pero un retraso de ~ 1 minuto es suficiente para molestarme, incluso si es solo una vez por búfer.
Malabarba
1
Reorganicé el contenido. Al mirar el código nuevamente, estaba equivocado TeX-global-input-files(la variable que contiene el resultado de la búsqueda) no es local en el búfer, por lo que la búsqueda debería ocurrir solo una vez por sesión de emacs . Tal vez esto sería más interesante si pudiera ocurrir de forma asíncrona, sin embargo, una congelación de ~ 1 minuto es realmente demasiado larga.
T. Verron