Tryb Helm i LaTeX

9

Kiedy uruchamiam polecenie LaTeX-environment( C-c C-edomyślnie powiązane ) Helm poprawnie wybiera z listy wszystkich odpowiednich środowisk (tj. Z tej samej listy, którą dostałbym bez włączonego Helma). Podpowiedź brzmi: „Typ środowiska: (domyślny foo)”, gdzie „foo” jest wartością zapisaną w LaTeX-default-environment(która z kolei jest ustawiona na to, czego użyłem w ostatnim wywołaniu LaTeX-environment). Jeśli jednak wrócę teraz return, otrzymam „abstrakcyjne” środowisko, pierwszy wpis w buforze steru.

Jak sprawić, by Hełm szanował LaTeX-default-environment?

Patrick Steele
źródło

Odpowiedzi:

7

Nie możesz . Według helmautora jest to wina AUCTEX za completing-readnieprawidłowe użycie, przez co helm-modezwraca kandydata dosłownie. Możliwe obejście jest opisane w łączonym wątku, który albo powoduje, że autorzy AUCTEX naprawiają błąd dla każdego wystąpienia, completing-readalbo samodzielnie go załatuje .

Aby to zrobić, następujące elementy powinny działać (nieprzetestowane, większość kodu pochodzi z 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
źródło
Dzięki, domyślam się, że pytający musi zaktualizować swoją instalację AUCTEX i sprawdzić, czy to naprawia. Jeśli nie, powyższy fragment kodu powinien nadal obowiązywać.
wasamasa