Emacs. Completion systems
Системы завершения Emacs.
Содержание
1 Общая информация
2 Фреймворки
2.1 Ido
- Документация: https://www.gnu.org/software/emacs/manual/html_node/ido/index.html.
- Включён в Emacs по умолчанию.
- Отображает кандидатов по горизонтали, а не по вертикали.
- Пакет
ido-vertical-mode
который заставляет Ido отображать кандидатов вертикально, а не горизонтально. - Не поддерживает какие-либо команды из коробки (только буферы и файлы).
2.2 Helm
- Emacs. Автодополнение. Helm
- Репозиторий: https://github.com/emacs-helm/helm.
- Имеет очень много функций и большое количество пакетов, которые с ним интегрированы.
- Количество возможностей даже излишне.
2.3 Ivy
- Репозиторий: https://github.com/abo-abo/swiper#ivy.
- Минимальная альтернатива Helm с более простым интерфейсом.
- Реализация переусложнена (большой технический долг).
- Первоначально Ivy был разработан для использования в качестве бэкэнда для Swiper пакета буферного поиска, который изначально использовал Helm.
- Когда Ivy стал интерактивным пакетом выбора более общего назначения, было добавлено больше специальных случаев, чтобы попытаться заставить различные команды работать правильно.
- Ivy отклоняется от API завершения Emacs и изобретает свой собственный API с дополнительными функциями, жертвуя возможностью повторного использования.
2.4 Icomplete
- Документация: https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html.
- Встроенный пакет Emacs для интерактивного выбора.
- В основном это то же самое, что и стандартный
completing-read
, за исключением того, что доступные кандидаты отображаются в минибуфере по мере ввода. - Кандидаты отображаются горизонтально (по умолчанию).
- Это можно изменить с помощью некоторой ручной настройки, включая настройку
icomplete-separator
.
- Это можно изменить с помощью некоторой ручной настройки, включая настройку
- Серьезная проблема юзабилити Icomplete заключается в том, что способ выбора кандидата из нижней части списка очень неинтуитивен.
- Документация Icomplete в основном отсутствует.
- Существует пакет для настройки Icomplete:
icomplete-vertical
. - Наиболее совместимый с API расширенный пользовательский интерфейс для завершения.
2.5 Vertico
- Репозиторий: https://github.com/minad/vertico.
- Минималистичная система, основанная на стандартном интерфейсе Emacs.
- Расширяет систему завершения по умолчанию аналогично Icomplete и поэтому полностью совместим со всеми функциями
completing-read
API. - Поддерживает как горизонтальное, так и вертикальное отображение.
- Предоставляет быстрые клавиши и действия отображения в стиле Avy для отображения завершений в буфере.
- Поддерживает циклический перебор кандидатов.
2.6 Icicles
- Информация: https://www.emacswiki.org/emacs/Icicles.
- Пакет, похожий на Helm.
- Можно загрузить только вручную с EmacsWiki.
- Был удалён из MELPA из-за консенсуса сообщества о том, что этот механизм распространения имеет неприемлемые риски для безопасности.
2.7 Snails
- Репозиторий: https://github.com/manateelazycat/snails.
- Поддерживает нечёткий поиск из коробки.
- Как и Ivy, он идёт по пути переноса каждой возможной команды в бэкенд, а не использует существующие интерфейсы Emacs для обработки всех возможных команд.
2.8 Sallet
- Репозиторий: https://github.com/Fuco1/sallet.
- Идёт по пути предоставления оболочек для всех возможных команд, а не реализует их все через существующий
completing-read
интерфейс. - Отсутствует документация для пользователя.
2.9 Raven
- Репозиторий: https://github.com/chameco/raven.
- Использует вертикальную моду.
- Слабо разработан.
2.10 Swiper
- Репозиторий: https://github.com/abo-abo/swiper#swiper.
- Пакет поиска в буфере, использующий интерфейс Ivy и тесно связанный с реализацией Ivy.
2.11 Selectrum
- Репозиторий: https://github.com/radian-software/selectrum.
- Кодовая база Selectrum проста и лаконична.
- Selectrum предоставляет ограниченный набор функций.
- Selectrum основывается на стандартном API завершения Emacs, и пытается предоставить наилучший пользовательский интерфейс для этого API.
- Selectrum не поддерживает функции, которые нарушают работу
completing-read
API.
2.12 CTRLF
- Репозиторий: https://github.com/radian-software/ctrlf.
- Переработанный с нуля интерфейс поиска в буфере.
2.13 Consult
- Репозиторий: https://github.com/minad/consult.
- Предоставляет команду
consult-line
, которая ведет себя аналогично Swiper.