Как выполнять запросы автозаполнения в фоновом режиме?

Я очень рад режиму автозавершения emacs. Но моя кодовая база велика, и иногда, когда я набираю текст и пытаюсь получить завершение, он ищет все возможные слова и зависает. Это очень раздражает.

Есть ли способ запустить поиск в фоновом режиме в параллельном процессе, чтобы emacs по-прежнему реагировал на действия пользователя. И только если точка остается на месте, когда запрос завершен, предложите автозаполнение?

Например, ввод с клавиатуры является основным процессом и никогда не может быть отложен, а автозаполнение работает как остаток ресурсов компьютера.

1 ответ

emacs-jedi делает это точно для автозавершения Python. Вы можете отправить запрос в фоновый процесс, используя init свойство, а затем сохранить результат где-нибудь. в candidate свойство, вы можете обработать сохраненный результат, чтобы передать его в автозаполнение. Вот определение источника переменного тока. Пожалуйста, посмотрите на источник для деталей.

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

https://github.com/tkf/emacs-ipython-notebook также использует аналогичную технику, но я думаю, что emacs-jedi легче читать.

Другие вопросы по тегам