Mode Helm et LaTeX

9

Lorsque j'exécute la commande LaTeX-environment(liée C-c C-epar défaut), Helm sélectionne correctement dans une liste de tous les environnements pertinents (c'est-à-dire la même liste que j'obtiendrais sans Helm activé). L'invite indique "Type d'environnement: (foo par défaut)" où 'foo' est la valeur stockée dans LaTeX-default-environment(qui est à son tour définie sur tout ce que j'ai fini par utiliser lors du dernier appel à LaTeX-environment). Cependant, si je clique sur Entrée maintenant, j'obtiens un environnement «abstrait», la première entrée dans le tampon Helm.

Comment puis-je faire respecter Helm LaTeX-default-environment?

Patrick Steele
la source

Réponses:

7

Tu ne peux pas . Selon helml'auteur, c'est la faute d'AUCTEX pour ne pas avoir utilisé completing-readcorrectement ce qui fait helm-moderenvoyer le candidat mot pour mot. Une solution de contournement possible est décrite dans le thread lié qui oblige les auteurs d'AUCTEX à corriger le bogue pour chaque instance de completing-readou à le corriger vous-même.

Pour ce faire, les éléments suivants devraient fonctionner (non testé, la plupart du code provient d'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
la source
5
Déjà fixé en amont .
giordano
Merci, devinez que le questionneur doit mettre à jour son installation AUCTEX et vérifier si cela le corrige. Sinon, l'extrait ci-dessus doit toujours s'appliquer.
wasamasa