Helm и LaTeX mode

9

Когда я запускаю команду LaTeX-environment(с привязкой C-c C-eпо умолчанию), Helm правильно выбирает из списка всех соответствующих сред (то есть тот же список, который я получу без включенного Helm). Подсказка гласит «Тип среды: (по умолчанию foo)», где «foo» - это значение, хранящееся в LaTeX-default-environment(которое, в свою очередь, установлено на то, что я в конечном итоге использовал в последнем вызове LaTeX-environment). Однако, если я нажму клавишу возврата, я получу «абстрактную» среду, первую запись в буфере Хелма.

Как я могу заставить Хелма уважать LaTeX-default-environment?

Патрик Стил
источник

Ответы:

7

Вы не можете . По словам helmавтора, вина AUCTEX за completing-readнеправильное использование делает helm-modeдословный возврат кандидата. Возможный обходной путь описан в связанном потоке, который либо заставляет авторов AUCTEX исправлять ошибку для каждого экземпляра, completing-readлибо исправляет ее самостоятельно.

Чтобы сделать последнее, должно работать следующее (непроверенный, большая часть кода взята из AUCTEX):

(eval-after-load 'latex
  '(defun LaTeX-environment (arg)
      (interactive "*P")
      (let ((environment (completing-read (concat "Environment type: (default "
                                                  (if (TeX-near-bobp)
                                                      "document"
                                                    LaTeX-default-environment)
                                                  ") ")
                                          (LaTeX-environment-list) nil t nil
                                          'LaTeX-environment-history LaTeX-default-environment)))
        ;; Get default
        (cond ((and (zerop (length environment))
                    (TeX-near-bobp))
               (setq environment "document"))
              ((zerop (length environment))
               (setq environment LaTeX-default-environment))
              (t
               (setq LaTeX-default-environment environment)))

        (let ((entry (assoc environment (LaTeX-environment-list))))
          (if (null entry)
              (LaTeX-add-environments (list environment)))

          (if arg
              (LaTeX-modify-environment environment)
            (LaTeX-environment-menu environment))))))
wasamasa
источник
5
Уже исправлено .
Джордано
Спасибо, угадайте, что спрашивающий должен обновить свою установку AUCTEX и проверить, исправляет ли это. Если нет, то приведенный выше фрагмент все равно должен применяться.
Васамаса