AucTeX 모드에서 자동 완성 작업을 수행하는 방법은 무엇입니까?


11

모드에 auto-complete있을 때 (ac)가 작동하기를 원합니다 AucTeX. 패키지 설치로 MELPA에서 모든 패키지를 얻습니다.

이것은 init.el파일의 관련 코드입니다 .

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

보시 ac다시피 전 세계적으로 설정 하고 있지만에 표시되지 않습니다 AucTeX. 그러나이 emacswiki의 지시 사항에 따라 ac모드가 상태 표시 줄에 표시 AucTeX되었지만 작동하지 않고 문자를 입력하여 자동 완성되지 않았습니다.

노트
윈도우 7 32 비트 및 패키지에서 이맥스 24.4 업데이트되었습니다.


당신의 문제는 LaTex 모드에있는 동안 혼자 작업을하는 것입니다. 후자의 경우 많은 작업없이 AUCTeX와 함께 ac를 사용합니다.
giordano

첫째, 나는 ac잘하고 싶다 auctex. yasnippet라텍스로 사용자 정의 스 니펫을 사용하기 위해 사용했기 때문에 언급 했습니다. 따라서 귀하가 코드를 제공 할 때까지 yas의 방법을 알 수 없습니다 ac.
박사 학위

톤, 제발! 복용 시도 yasnippet자동 완성 및 AUCTeX 작업이 함께 같은 @giordano 제안 있는지. 그렇다면 문제가에 포함 된 것입니다 yasnippet. 그렇다면 자동 완성 설정일 것입니다.
Dan

yasnippetinit.el에서 제거한 것을 잊을 수 있습니다. 문제는 아마도 auctex및 의 설정에 ac있습니다.
박사

1
Christopher Monsanto github.com/monsanto/auto-complete-auctex 의 패키지를 참조하십시오 . 나는 그것을 테스트하지 않았습니다.
이름

답변:


11

웹에서 오랜 연구를 수행하고 한 ac줄씩 코드를 검사하기 위해 컴퓨터에서 많은 시험을 통해 문서를 신중하게 검토 한 후에 는 yasnippet아무런 해결책 없이도 (선택적) 작동 할 수있는이 솔루션을 생각해 냈습니다.

이것을 당신 의 순서로 처리 init.el하거나 .emacs돌보는 것 :

(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) 

참고 :
설명서 에 언급 된대로 ac추가 ac-modes및 후크는로드하기 전에 수행해야합니다 (ac-config-default).

일부는 TAB내가 필요하지 않은 키로 재생할 코드를 넣을 것을 제안 했지만 나중에 다른 것을 파괴 할 것이기 때문에 권장하지 않습니다. 그러나 나는 사람들이 바로 앞에 이런 것을 넣는 것을 보았습니다 global-auto-complete.

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

내가 (ac-flyspell-workaround)자동 완성을 추가 할 때까지 flyspell을 사용하기 때문에 Auctex에서 사용하기에는 너무 느 렸습니다. 이 버그는 설명서에서도 언급되었습니다. 감사!

보너스
나는 문서에서 알게되어 기뻤지 만 어떻게 명확하지는 않지만 사용자 정의 사전을 추가 할 수 있습니다! 나는 이것을 시도하고 잘 작동했다.

require-auto-complete위 두 줄 바로 뒤에이 두 줄을 추가하십시오 .

(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  

이제 .txt파일에 완성 후보를 추가하십시오. 4 글자 미만의 후보자로부터 자신을 구하십시오. 가치가 없습니다! 같은 단어를 줄 바꿈 또는로 구분하여 입력하십시오 RET.

.txt파일 내용의 예 :

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

Emacs와 함께 LaTeX / AUCTeX에서 자동 완성을 즐기십시오!


elisp해당 .txt사전에 쓰는 동안 버퍼에 표시된 단어를 던지고 많은 노력없이 추가 하는 기능 이 있다면 좋을 것입니다 !
박사

6

위의 의견에서 말했듯이 패키지 auto-complete-auctex는 문제를 해결할 수도 있습니다. 나는 둘 다 테스트했으며 둘 다 잘 작동합니다. 스크린 샷을 제공하여 @doctorate 와 위 패키지 의 솔루션을 비교하는 것이 좋습니다 . 내가 쓰면 $\sig$박사 학위 코드는 다음과 같이됩니다.

여기에 이미지 설명을 입력하십시오

패키지의 내용 auto-complete-auctex은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

추가 : @ giordano 의 솔루션이 작동 한다는 것을 언급해야합니다 . 여기 스크린 샷 :

여기에 이미지 설명을 입력하십시오


추가 기능이있을 수 있지만 auto-complete기본 패키지가되어야 한다고 생각 합니다 auto-complete-auctex. 나는 그것을 시도하고 필요한 경우보고합니다. 감사합니다
박사 과정

2
패키지를 설치했지만 완료로 팝업을 열 수 없습니다 ... 어떻게했으며 어떻게해야합니까?
Raven

@Raven "정말"작동하는지 확실하지 않습니다. 그러나 박사 학위 소지자가 말한 TAB 주요 단계를 추가하면 TAB을 누르면 작동합니다.
Chill2Macht

4

다음은 내 auto-complete관련 구성입니다.

(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)))

보시다시피 AUCTeX에는 특별한 것이 없으며 표준 구성입니다 auto-complete. 구성 ac-math은 웹 사이트에 설명되어 있습니다. 를 사용하지 않으면 ac-math구성과의 유일한 차이점은 (add-to-list 'ac-modes 'latex-mode)입니다.


-1 :을 사용하십시오 package-initialize. 마음에 들지 않을 수도 있지만 load-path답변에 수동 관리 와 같은 나쁜 습관을 권장하지 마십시오 .
lunaryorn

2
@lunaryorn 나는 나쁜 습관을 권장하지 않는다고 생각합니다. 보조 패키지를로드하는 것은 더러운 해킹이라고 분명히 썼습니다. package-initialize어쨌든 나중에 사용하여 답변을 개선하려고 노력할 것 입니다.
giordano
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.