Helm- und LaTeX-Modus

9

Wenn ich den Befehl ausführe LaTeX-environment( C-c C-estandardmäßig gebunden ), wählt Helm ordnungsgemäß aus einer Liste aller relevanten Umgebungen aus (dh dieselbe Liste, die ich ohne eingeschalteten Helm erhalten würde). Die Eingabeaufforderung lautet "Umgebungstyp: (Standard foo)", wobei 'foo' der Wert ist, in dem gespeichert wird LaTeX-default-environment(der wiederum auf den Wert gesetzt ist, den ich beim letzten Aufruf von verwendet habe LaTeX-environment). Wenn ich jetzt auf Return drücke, erhalte ich jedoch eine 'abstrakte' Umgebung, den ersten Eintrag im Helm-Puffer.

Wie kann ich Helm dazu bringen, zu respektieren LaTeX-default-environment?

Patrick Steele
quelle

Antworten:

7

Das kannst du nicht . Laut dem helmAutor ist es AUCTEX 'Fehler, nicht completing-readrichtig zu verwenden, was die helm-modeRückgabe des Kandidaten wörtlich macht. Eine mögliche Problemumgehung wird im verknüpften Thread beschrieben, der entweder die Autoren von AUCTEX dazu bringt, den Fehler für jede Instanz von zu beheben completing-readoder ihn selbst zu patchen.

Um letzteres zu tun, sollte Folgendes funktionieren (ungetestet, der meiste Code stammt aus 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
quelle
Vielen Dank, der Fragesteller muss dann seine AUCTEX-Installation aktualisieren und prüfen, ob dies das Problem behebt. Wenn nicht, sollte das obige Snippet weiterhin gelten.
Wasamasa