Прискорити TeX-вставку-макрос на \ введення


10

В , latex-modeколи я використовую , TeX-insert-macroщоб ввести \input{...} макрос, AucTeX зручно пропонує завершення імені файлу, який є великим. Однак, схоже, шукають багато місць для складання списку завершень, оскільки Emacs майже хвилину висить на моєму бідному маленькому ноутбуці.

Чи є спосіб TeX-insert-macroзапропонувати німе завершення назви файлу?
Під "тупою" я маю на увазі ту, яку ви отримуєте при дзвінку find-file. Більшу частину часу файл, який я хочу ввести, - це лише один каталог, так що це було б більше ніж добре.

Якщо це неможливо, чи є інший спосіб прискорити це?
Я помітив, коли я вставляю \includeмакрос, список імен файлів набагато коротший, тому, можливо, є спосіб використовувати цей список і для \input макросу.


Є також, cdlatex-insert-filenameщо поставляється з пакетом cdlatex. Я вважаю корисним для вставлення графічних файлів у графічні середовища.
Вамсі

Відповіді:


6

У вас є кілька рішень:

По- перше, є змінна налаштування такої поведінки: TeX-arg-input-file-search.

Якщо TeX-arg-input-fileслід шукати файли. Якщо значення t, файли в шляху пошуку TeX шукаються та надаються для завершення. Потім ім'я файлу вставляється без каталогу та розширення. Якщо значення дорівнює нулю, ім'я файлу можна вказати вручну і вставити з доріжкою відносно каталогу файлу поточного буфера та з розширенням. Якщо значення є ask, вас запитують метод, який використовується щоразу, коли TeX-arg-input-fileвикликається.

Цей документ є, звичайно, недостатньо зрозумілим, але, nilздається, це робить цю роботу.

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

Ці змінні впливають на всі функції , які викликають TeX-arg-input-file, в тому числі input, includeі usepackage. Для останнього така поведінка може бути несподіваною.

Тоді є більш хакітне рішення, яке повинно працювати для всіх функцій: TeX-arg-input-fileмістить localпрапор для такої поведінки (наприклад, цей прапор встановлений tдля include).

Мабуть, ви можете змінити будь-які інші налаштування, просто додавши інший запис для команди, так:

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

Останнє рішення, якщо у вас є тривалі сесії emacs, - це просто відпустити його. Здається, що фаза "пошуку файлів" кешує свої результати, тому її потрібно викликати лише один раз на сеанс.


Дивовижно! Я очікував трохи зламування, гадаю, я недооцінив ауктекс.
Малабарба

1
Hmpf, здається, що хак справді був шляхом, дивіться мою редагування. Якщо хакі-рішення краще відповідає вашим потребам, скажіть, будь ласка, щоб я міг переставити відповідь.
Т. Веррон

1
Ви маєте рацію, оскільки використання упаковки було б небажаним. Дякуємо за оновлення. Це дійсно кешує результати, але затримки на ~ 1 хв достатньо, щоб мене турбувати, навіть якщо це лише один раз на буфер.
Малабарба

1
Я переставив зміст. Подивившись на код знову, я помилився TeX-global-input-files(змінна, що містить результат пошуку), не є локальним буфером, тому пошук повинен відбуватися лише один раз за сеанс emacs . Можливо, це було б цікавіше, якби це могло статися асинхронно, хоча заморожування ~ 1 хв справді занадто довге.
Т. Веррон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.