Как выполнять запросы автозаполнения в фоновом режиме?
Я очень рад режиму автозавершения 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 легче читать.