2013-02-08 3 views
5

나는 emacs 자동 완성 모드에 매우 흥분하고있다. 하지만 내 코드베이스가 크고 때로는 입력 할 때 완성을 시도 할 때 모든 가능한 단어를 검색하여 중단됩니다. 그것은 매우 성가신 일입니다.백그라운드에서 자동 완성 쿼리를 수행하는 방법은 무엇입니까?

백그라운드에서 병렬 프로세스로 검색을 실행하는 방법이 있습니까? 이맥스는 여전히 사용자 작업에 응답합니다. 그리고 쿼리가 끝나면 포인트가 유지되는 경우에만 자동 완성을 제안 하시겠습니까?

마찬가지로 키보드 입력은 기본 프로세스이므로 지연 될 수 없으며 자동 완성이 컴퓨터 리소스의 나머지로 작동합니다.

답변

3

emacs-jedi 정확하게 파이썬 자동 완성을위한 것입니다. init property을 사용하여 백그라운드 프로세스에 요청을 보내고 그 결과를 어딘가에 저장할 수 있습니다. candidate 속성에서 저장된 결과를 처리하여 자동 완성으로 전달할 수 있습니다. 다음은 ac-source 정의입니다. 자세한 내용은 출처를 확인하십시오.

(ac-define-source jedi-direct 
    '((candidates . jedi:ac-direct-matches) 
    (prefix . jedi:ac-direct-prefix) 
    (init . jedi:complete-request) 
    (requires . -1))) 

emacs-ipython-notebook도 유사한 기술을 사용하지만 이맥스 - 제다이 쉽게 읽을 것 같다.

+0

제가 배웠던 것처럼, 그것은 파이썬을위한 것입니다. 그리고 나는 읽기 문자로 보편적 인 자동 완성을위한 일반적인 메커니즘이 필요하다. TAGS 등에서. – Necto

+0

아마도 내 대답은 오해의 소지가있었습니다. 그러나 당신은 어쨌든 기술을 사용할 수 있습니다 (init를 사용하여 요청 등). 백그라운드 프로세스와 통신하려면 일종의 RPC를 사용해야합니다. emacs-jedi처럼 [EPC] (https://github.com/kiwanami/emacs-epc)를 사용하는 것도 하나의 가능성입니다. 범용 RPC이며 Perl, Python 및 elisp 구현이 있습니다. – tkf

관련 문제