Mode helm dan LaTeX

9

Ketika saya menjalankan perintah LaTeX-environment(terikat C-c C-esecara default) Helm dengan benar memilih dari daftar semua lingkungan yang relevan (yaitu daftar yang sama yang saya dapatkan tanpa Helm dihidupkan). Prompt berbunyi "Jenis lingkungan: (default foo)" di mana 'foo' adalah nilai yang disimpan LaTeX-default-environment(yang pada gilirannya diatur ke apa pun yang akhirnya saya gunakan dalam panggilan terakhir ke LaTeX-environment). Namun, jika saya menekan return sekarang, saya mendapatkan lingkungan 'abstrak', entri pertama di buffer Helm.

Bagaimana saya bisa membuat Helm dihormati LaTeX-default-environment?

Patrick Steele
sumber

Jawaban:

7

Kamu tidak bisa . Menurut helmpenulis itu adalah kesalahan AUCTEX karena tidak menggunakan completing-readdengan benar yang membuat helm-modemengembalikan kandidat kata demi kata. Solusi yang mungkin dijelaskan dalam utas tertaut yang membuat penulis AUCTEX memperbaiki bug untuk setiap instance completing-readatau menambalnya sendiri.

Untuk melakukan yang terakhir, yang berikut ini harus berfungsi (belum teruji, sebagian besar kode diambil dari 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
sumber
Terima kasih, tebak si penanya harus memperbarui pemasangan AUCTEX-nya lalu dan memeriksa apakah ini memperbaikinya. Jika tidak, cuplikan di atas masih berlaku.
wasamasa