Ускорить 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 ищутся и предоставляются для завершения. Имя файла затем вставляется без каталога и расширения. Если значение равно nil, имя файла может быть указано вручную и вставлено с путем относительно каталога текущего файла буфера и с расширением. Если значение равно 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, это просто отпустить его. Кажется, что фаза «поиска файлов» кэширует свои результаты, поэтому ее следует вызывать только один раз за сеанс.


Потрясающие! Я ожидал немного взломать, думаю, я недооценил auctex.
Малабарба

1
Хммм, кажется, что взлом действительно был путь, см. Мое редактирование. Если хакерское решение лучше соответствует вашим потребностям, пожалуйста, скажите мне, чтобы я мог изменить ответ.
Т. Веррон

1
Вы правы, для использования упаковки это было бы нежелательно. Спасибо за обновления. Он действительно кеширует результаты, но задержка ~ 1 минуты достаточно, чтобы беспокоить меня, даже если она составляет только один раз для каждого буфера.
Малабарба

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