Otomatik tamamlama AucTeX modunda nasıl yapılır?


11

auto-complete(Ac) AucTeXmodundayken çalışmayı istiyorum . Tüm paketleri paket kurulumuyla MELPA'dan alıyorum.

Bu init.eldosyadaki ilgili kodum :

(require 'package)
(package-initialize)
(require 'auto-complete-config)
(ac-config-default)   
(global-auto-complete-mode t)

gördüğünüz gibi, ben acküresel olarak ayarlı olmama rağmen, içinde görünmüyor AucTeX. Bununla birlikte, bu emacswiki'deki talimatları izleyerek , acdurum çubuğunda mod, AucTeXancak çalışmayan, karakterler yazarak otomatik tamamlama görüntülenmedi.

Notlar
Emacs 24.4, Windows 7 32bit ve paketleri altında güncellendi.


Senin problemin ac LaTex modunda iken yasnippet birlikte ya da yalnız çalışmak mı? İkinci durumda, AUCTeX ile ac kullanıyorum.
giordano

1, acile iyi yapmak istiyorum auctex. yasnippetLateks içinde bazı kullanıcı tanımlı snippet'ler için de kullandığımdan bahsettim . Kodunuzu sağlayana kadar engel olup yasolmayacağını söyleyemem ac.
doktora

Ton, lütfen! Yaptırmayı deneyin yasnippetotomatik tamamlama ve AUCTeX iş olarak birlikte @giordano önerilen olmadığını görmek için. Evet ise, sorun dahil edilmesidir yasnippet. Öyleyse, muhtemelen otomatik tamamlama kurulumunuzdur.
Dan

Onu yasnippetinit.el'den kaldırdığımı unutabiliriz. Sorun kurulumu en muhtemelen auctexve ac.
doktora

1
Christopher Monsanto github.com/monsanto/auto-complete-auctex paketine bakınız . Test etmedim.
İsim

Yanıtlar:


11

Web'de uzun bir araştırma yaptıktan ve ackod satır satır incelemek için yasnippetmakinemde birçok denemeyle belgelerin dikkatli bir şekilde incelendikten sonra , herhangi bir confict olmadan da çalışabilen (opioinal) bu çözümü buldum.

bunu kendi sıranıza koyun init.elveya .emacsdiziye dikkat edin:

(require 'package)
(package-initialize)

;; yasnippet code 'optional', before auto-complete
(require 'yasnippet)
(yas-global-mode 1)

;; auto-complete setup, sequence is important
(require 'auto-complete)
(add-to-list 'ac-modes 'latex-mode) ; beware of using 'LaTeX-mode instead
(require 'ac-math) ; package should be installed first 
(defun my-ac-latex-mode () ; add ac-sources for latex
   (setq ac-sources
         (append '(ac-source-math-unicode
           ac-source-math-latex
           ac-source-latex-commands)
                 ac-sources)))
(add-hook 'LaTeX-mode-hook 'my-ac-latex-mode)
(setq ac-math-unicode-in-math-p t)
(ac-flyspell-workaround) ; fixes a known bug of delay due to flyspell (if it is there)
(add-to-list 'ac-modes 'org-mode) ; auto-complete for org-mode (optional)
(require 'auto-complete-config) ; should be after add-to-list 'ac-modes and hooks
(ac-config-default)
(setq ac-auto-start nil)            ; if t starts ac at startup automatically
(setq ac-auto-show-menu t)
(global-auto-complete-mode t) 

Notlar:
olarak belirtilen belgelere ait ac, ekleme ac-modesve kancalar yüklemeden önce yapılmalıdır (ac-config-default).

Bazıları TAB, bir şekilde daha sonra başka bir şeyi yok edeceği için ihtiyaç duymadığım ve önermediğim anahtarla oynamak için bazı kodlar koymayı önerdi . Ancak, insanların daha önce böyle bir şey koyduklarını gördüm global-auto-complete:

(ac-set-trigger-key "TAB")
(ac-set-trigger-key "<tab>")  

Eklediğim kadar (ac-flyspell-workaround)otomatik tamamlama ben flyspell kullandığından AUCTeX kullanmadan düşünmek çok yavaştı. Bu hata dokümantasyonda da belirtilmiştir. Teşekkürler!

Bonus
Belgeden, kullanıcı tanımlı bir sözlük (ler) ekleyebileceğinden çok açık olmasa da bilmekten memnun oldum! Bunu denedim ve iyi çalıştım.

bu iki require-auto-completesatırı yukarıdaki satırdan hemen sonra ekleyin :

(add-to-list 'ac-dictionary-directories "~/.emacs.d/.dict") ; make sure this folder exists
(add-to-list 'ac-user-dictionary-files "~/.emacs.d/.dict/custom-dict.txt") ; put any name to your `.txt` file  

Şimdi .txtdosyanıza favori tamamlama adaylarınızı ekleyin. Kendinizi 4 harften daha kısa adaylardan kurtarın, buna değmezler! Benzer kelimelerinizi satır beslemeyle veya RET.

.txtDosyadaki içerik örneği :

inconsistencies
foobaremaild@foobar.com
do-not-put-your-password-here
long-line-in-any-programming-language-of-your-like

Emacs ile LaTeX / AUCTeX'te otomatik tamamlamanın tadını çıkarın!


anında elispbu .txtdiktatörlüğe yazarken ve herhangi bir çaba sarf etmeden ekleyerek, herhangi bir işaretli sözcüğü bir arabellek içine atmak için bir işlev olsa iyi olurdu !
doktora

6

Yukarıdaki yorumumda söylediğim gibi, paket auto-complete-auctexde sorunu çözebilir. İkisini de test ettim ve ikisi de iyi çalışıyor. Ekran görüntüleri vererek @doctorate ve yukarıdaki paketin çözümünü karşılaştırmak güzel olurdu . Eğer $\sig$yazarsam, doktora kodu böyle bir şey verir

resim açıklamasını buraya girin

ve pakette auto-complete-auctexki böyle bir şey veriyor

resim açıklamasını buraya girin

Eklendi: @giordano'nun çözümünün de burada çalıştığını belirtmeliyim , burada bir ekran görüntüsü:

resim açıklamasını buraya girin


Bazı ekstra özelliklere sahip auto-completeolsa auto-complete-auctexda ana paket olmalı bence . Deneyeceğim ve gerekirse rapor edeceğim. Teşekkürler
doktora

2
Paketi yükledim ancak tamamlamalarla birlikte pop-up'ı açamıyorum ... Bunu nasıl yaptınız ve bu konuda bazı belgeler var mı?
Raven

@ Raven "Gerçekten" çalıştığından emin değilim. Ancak doktora kaçınmak için söylediği SEKME anahtar adımları eklerseniz, SEKME tuşuna basmak (benim için) işe yarar.
Chill2Macht

4

auto-completeİlgili yapılandırmam aşağıdadır :

(require 'package)
(package-initialize)
(require 'auto-complete-config)
(ac-config-default)

;; Activate auto-complete for latex modes (AUCTeX or Emacs' builtin one).
(add-to-list 'ac-modes 'latex-mode)

;; Activate ac-math.
(eval-after-load "latex"
  '(when (featurep 'auto-complete)
     ;; See https://github.com/vspinu/ac-math
     (require 'ac-math)
     (defun ac-latex-mode-setup ()       ; add ac-sources to default ac-sources
       (setq ac-sources
         (append '(ac-source-math-unicode ac-source-math-latex ac-source-latex-commands)
             ac-sources)))
     (add-hook 'LaTeX-mode-hook 'ac-latex-mode-setup)))

Gördüğünüz gibi, AUCTeX için özel bir şey yok, standart yapılandırması auto-complete. İçin yapılandırma ac-mathweb sitesinde açıklanmıştır. Eğer kullanmıyorsanız ac-mathYapılandırmanızdan tek mantıklı farktır (add-to-list 'ac-modes 'latex-mode).


-1: Kullanın package-initialize. Beğenmeyebilirsiniz, ancak lütfen load-pathyanıtlarınızda manuel yönetim gibi kötü uygulamaları önermeyin .
lunaryorn

2
@lunaryorn Kötü uygulamalar önerdiğimi sanmıyorum, açıkça sadece yardımcı bir paket yüklemek için kirli bir saldırı olduğunu yazdım. package-initializeYine de daha sonra kullanarak cevabı geliştirmeye çalışacağım .
Giordano
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.