Modo Helm e LaTeX

9

Quando executo o comando LaTeX-environment(vinculado C-c C-epor padrão), o Helm seleciona adequadamente de uma lista de todos os ambientes relevantes (ou seja, a mesma lista que eu obteria sem o Helm ativado). O prompt diz "Tipo de ambiente: (foo padrão)" onde 'foo' é o valor armazenado LaTeX-default-environment(que, por sua vez, é definido como o que acabei usando na última chamada para LaTeX-environment). Se eu pressionar return agora, no entanto, recebo um ambiente "abstrato", a primeira entrada no buffer Helm.

Como posso fazer com que o Helm respeite LaTeX-default-environment?

Patrick Steele
fonte

Respostas:

7

Você não pode . Segundo helmo autor, a culpa é da AUCTEX por não usar completing-readcorretamente, o que faz com que helm-modeo candidato retorne literalmente. Uma possível solução alternativa é descrita no encadeamento vinculado, que está fazendo com que os autores da AUCTEX corrijam o erro para cada instância completing-readou o remendam por conta própria.

Para fazer isso, o seguinte deve funcionar (não testado, a maioria dos códigos extraídos do 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
fonte
5
Já corrigido a montante .
Giordano #
Obrigado, acho que o questionador precisa atualizar sua instalação do AUCTEX e verificar se isso corrige. Caso contrário, o snippet acima ainda deve ser aplicado.
wasamasa