Mempercepat TeX-insert-macro on \ input

10

Di latex-modesaat saya menggunakan TeX-insert-macromengetik \input{...} makro, AUCTeX nyaman menawarkan nama file selesai, yang besar. Namun, tampaknya mencari banyak tempat untuk mengkompilasi daftar penyelesaian, karena emacs hang selama hampir satu menit di laptop kecil saya yang malang.

Apakah ada cara untuk TeX-insert-macromenawarkan penyelesaian nama file bodoh?
Dengan "bodoh", maksud saya yang Anda dapatkan saat menelepon find-file. Sebagian besar waktu file yang ingin saya input hanya berjarak satu direktori, jadi itu akan lebih baik.

Jika itu tidak mungkin, apakah ada cara lain untuk mempercepatnya?
Saya perhatikan ketika saya memasukkan \includemakro daftar nama file jauh lebih pendek, jadi mungkin ada cara untuk menggunakan daftar itu untuk \input makro juga.

Malabarba
sumber
Ada juga cdlatex-insert-filenameyang dilengkapi dengan paket cdlatex. Saya merasa sangat membantu untuk menyisipkan file grafik ke lingkungan gambar.
Vamsi

Jawaban:

6

Anda memiliki beberapa solusi:

Pertama, ada variabel menyesuaikan perilaku ini: TeX-arg-input-file-search.

Jika TeX-arg-input-fileharus mencari file. Jika nilainya t, file dalam jalur pencarian TeX dicari dan disediakan untuk penyelesaian. Nama file kemudian dimasukkan tanpa direktori dan ekstensi. Jika nilainya nol, nama file dapat ditentukan secara manual dan dimasukkan dengan path relatif ke direktori file buffer saat ini dan dengan ekstensi. Jika nilainya ask, Anda akan diminta untuk menggunakan metode setiap kali TeX-arg-input-filedipanggil.

Bagian dari dokumentasi ini, imho, tidak cukup jelas, tetapi mengaturnya nilsepertinya melakukan pekerjaan itu.

(setq TeX-arg-input-file-search nil)

Variabel ini memengaruhi semua fungsi yang memanggil TeX-arg-input-file, termasuk input, includedan usepackage. Untuk yang terakhir, perilaku ini mungkin tidak terduga.

Lalu ada solusi yang lebih rumit yang harus bekerja untuk semua fungsi: TeX-arg-input-filefitur localbendera untuk perilaku ini (bendera ini misalnya diatur ke tuntuk include).

Tampaknya, Anda dapat mengganti pengaturan lain dengan hanya menambahkan entri lain untuk perintah, jadi:

(add-hook 'LaTeX-mode-hook 
  (lambda nil 
     (TeX-add-symbols '("input" (TeX-arg-input-file "File" t)))))

Solusi terakhir, jika Anda memiliki sesi emac yang tahan lama, adalah membiarkannya begitu saja. Tampaknya fase "mencari file" menyimpan hasilnya, sehingga harus dipanggil hanya sekali per sesi.

T. Verron
sumber
Luar biasa! Saya mengharapkan sedikit hack, kira saya meremehkan auctex.
Malabarba
1
Hmpf, sepertinya peretasan memang cara untuk pergi, lihat edit saya. Jika solusi peretasan sesuai dengan kebutuhan Anda dengan lebih baik, tolong beritahu saya agar saya dapat mengatur ulang jawabannya.
T. Verron
1
Anda benar, untuk paket yang tidak diinginkan. Terima kasih atas pembaruannya. Memang cache hasil, tetapi penundaan ~ 1 menit sudah cukup mengganggu saya bahkan jika itu hanya sekali per buffer.
Malabarba
1
Saya mengatur ulang konten. Melihat kode lagi, saya salah, TeX-global-input-files(variabel yang berisi hasil pencarian) bukan buffer-local, jadi pencarian harus terjadi hanya sekali per sesi emacs . Mungkin ini akan lebih menarik jika itu bisa terjadi secara asinkron, meskipun, pembekuan ~ 1 menit memang terlalu lama.
T. Verron