Конфигурация EMACS для технических писателей
Все необходимые пакеты устанавливаются автоматически при запуске редактора. Для управления конфигурацией используются возможности пакета use-package.
В этой конфигурации используются (в алфавитном порядке):
abbrev-mode
Встроенный пакет для использования аббревиатур — последовательностей, автоматически заменяемых на более длинные слова и предложения.
ace-window
Пакет для управления окнами Emacs. Я использую его для быстрого перехода между окнами с помощью сочетания Alt+o.
adoc-mode
Пакет для поддержки AsciiDoc.
aggressive-indent
Принудительное выравнивание кода. Особенно полезен этот пакет для работы с init.el
.
ansible
Поддержка синтаксиса для конфигураций Ansible. Дополнительный режим, расширяющий возможности yaml-mode
.
bind-key
Обёртки над функциями Emacs, используемыми для привязки клавиш.
checkdoc
Встроенный пакет, используемый для проверки документации пакетов Emacs Lisp.
company
Автодополнение. Используется в основном при работе с текстами программ.
conf-mode
Встроенный пакет для работы с конфигурационными файлами форматов INI и CONF.
css-mode
Встроенный пакет для работы с файлами CSS.
desktop
Встроенный пакет для сохранение состояния Emacs между сессиями.
Документация Emacs: Saving Emacs Sessions
diff-hl
Подсветка незафиксированных изменений.
dired
Встроенный пакет для управления файлами.
Документация Emacs: Dired, the Directory Editor
display-line-numbers
Встроенный пакет для отображения номеров строк.
dockerfile-mode
Поддержка конфигурационных файлов Docker.
doom-modeline
Строка статуса, используемая проектом DooM EMACS. Выглядит отлично, поддерживает иконки и тонкую настройку внешнего вида.
doom-themes
Темы из проекта DooM EMACS. Мне больше всего нравится monokai-pro
.
edit-indirect
Позволяет открыть буфер с фрагментом кода и нужным основным режимом во время работы с другим буфером. Например, код на Python, вставленный в Markdown-файл, откроется с основным режимом anaconda-mode
и всеми его преимуществами: автодополнение, подсветка синтаксиса и т. д. Чтобы открыть фрагмент кода в другом буфере, нужно нажать [C-c ’], чтобы сохранить изменения — [C-c C-c], закрыть буфер без сохранения изменений — [C-c C-k].
editorconfig
Поддержка EditoConfig. Использование этой штуки задаёт правила форматирования текста на уровне проекта: TAB vs SPACES, типы концов строк и т. д.
elec-pair
Встроенный пакет для автоматической вставки парной скобки.
Flycheck
Автоматическая проверка синтаксиса с помощью статических анализаторов. Отличная замена Flymake.
format-all
Форматирование кода с помощью внешних средств, например, standard
для JavaScript, black
для Python и т. д.
js2-mode
Расширенная поддержка языка программирования JavaScript. Обладает значительно большими возможностями, чем встроенный режим javascript-mode
.
Magit
Текстово-графичекий интерфейс для работы с системой контроля версий Git.
multiple-cursors
Поддержка мультикурсорности. Для редактирования выделенных строк нужно нажать [C-S-c C-Sc].
Projectile
Работа с проектами. Аналог встроенного пакета project.el
, предоставляющий дополнительные возможности.
Pulsar
Вспыхивание строки, к которой перемещён курсор. Помогает лучше ориентироваться среди множества открытых фреймов и окон.
python-mode
Базовая поддержка языка программирования Python.
rainbow-delimiters
Парные скобки отображаются одним цветом.
terraform-mode
Поддержка синтаксиса конфигурационных файлов Terraform.
treemacs
Дерево файлов в отдельном окне. Отличная замена устаревшему neotree
.
undo-tree
Замена стандартной системы Undo/Redo, используемой в EMACS, на более удобную.
vagrant
Поддержка конфигурационных файлов Vagrant.
web-mode
Режим работы с Web-файлами: HTML, CSS.
which-key
Показывает подсказки с комбинациями клавиш, привязанным к командам.
whitespace
Встроенный пакет, отображающий невидимые символы: пробелы, табуляции, переходы на новую строку и т. п.
ws-butler
Старый, но очень полезный пакет: позволяет работать с большими файлами так, будто включен режим удаления висячих пробелов, но затрагивает только изменённые строки.
yaml-mode
Поддержка синтаксиса языка разметки YAML.
yasnippet
Поддержка сниппетов: развёртывания небольших фрагментов текста в заранее подготовленные большие блоки.
yasnippet-snippets
Набор сниппетов для yasnippet
.