Emacs. Пакет universal sidecar
2026-10-12
·
3 мин. для прочтения
Emacs. Пакет universal sidecar.
Содержание
1 Общая информация
Репозиторий:
Доступен в MELPA.
universal-sidecar— это пакет для Emacs, который создаёт боковой буфер (sidecar), показывающий контекстную информацию о текущем активном буфере.Позволяет выводить в отдельной панели различные секции с данными.
Пакет требует
magit(точнее,magit-section).
2 Загрузка
(require 'universal-sidecar)
3 Базовая настройка
3.1 Активация и деактивация
M-x universal-sidecar-toggle: открыть/закрыть sidecar-буфер для текущего фрейма.M-x universal-sidecar-insinuate— автоматически обновлять sidecar.M-x universal-sidecar-uninsinuate— отменить автоматическое обновление.
(universal-sidecar-insinuate)
3.2 Имя буфера
- Формат имени sidecar-буфера задаётся переменной
universal-sidecar-buffer-name-format, которая должна содержать%F— описание фрейма:
(setq universal-sidecar-buffer-name-format "*Sidecar: %F*")
3.3 Таймер обновления
- Если
universal-sidecar-enable-timerнеnil, sidecar будет обновляться по таймеру простоя. - Время настраивается через
universal-sidecar-refresh-time:
(setq universal-sidecar-enable-timer t
universal-sidecar-refresh-time 1.0) ; секунды
3.4 Игнорирование буферов
- Буферы можно исключить из отображения в sidecar с помощью регулярного выражения
universal-sidecar-ignore-buffer-regexpили хукаuniversal-sidecar-ignore-buffer-functions:
(setq universal-sidecar-ignore-buffer-regexp "^ \\*Minibuf")
4 Настройка секций
- Секции — это блоки информации, отображаемые в sidecar.
- Они задаются переменной
universal-sidecar-sections.
4.1 Добавление секции
(add-to-list 'universal-sidecar-sections 'buffer-git-status)
add-to-listдобавляет элемент в начало списка.- Можно использовать
setqс явным списком:
(setq universal-sidecar-sections
'(buffer-git-status
buffer-file-name
buffer-major-mode))
4.2 Передача аргументов
- Некоторые секции принимают ключевые аргументы.
- Например,
buffer-git-statusподдерживает:show-renames(по умолчаниюt). - Чтобы отключить отображение переименований:
(setq universal-sidecar-sections
'((buffer-git-status :show-renames nil)
buffer-file-name))
4.3 Встроенные секции
- Пакет предоставляет несколько готовых секций:
buffer-git-status— статус Git для текущего файла.buffer-file-name— имя файла.buffer-major-mode— основной режим.buffer-minor-modes— активные минорные режимы.buffer-position— позиция курсора.buffer-project— информация о проекте (если используетсяproject.el).
4.4 Создание собственной секции
- Секция — это функция, которая принимает буфер и вставляет информацию с помощью
magit-section:
(defun my/sidecar-buffer-size (buffer)
"Показать размер BUFFER в байтах."
(magit-insert-section (sidecar-buffer-size)
(magit-insert-heading "Размер буфера:")
(insert (format "%s байт" (buffer-size buffer)))))
(add-to-list 'universal-sidecar-sections 'my/sidecar-buffer-size)
5 Настройка отображения
5.1 Формат ID буфера
- Имя sidecar-буфера в списке буферов формируется с помощью
universal-sidecar-buffer-id-formatиuniversal-sidecar-buffer-id-formatters. - Последняя — это alist пар символ/функция, где функция принимает буфер и возвращает строку:
(setq universal-sidecar-buffer-id-format "%f")
(setq universal-sidecar-buffer-id-formatters
'((?f . (lambda (buf) (buffer-name buf)))))
5.2 Шрифтофикация
- Для подсветки секций используйте
universal-sidecar-fontify-as. - Макрос позволяет временно установить буфер-локальные переменные перед включением режима:
(universal-sidecar-fontify-as my-section
((my-local-var t))
(emacs-lisp-mode))
6 Продвинутая настройка
6.1 Автоматическое открытие sidecar
- Можно настроить автоматическое открытие sidecar при входе в определённые режимы:
(add-hook 'prog-mode-hook
(lambda ()
(unless (get-buffer-window universal-sidecar-buffer-name-format)
(universal-sidecar-toggle))))
6.2 Интеграция с project.el
- Если вы используете
project.el, можно добавить секцию с информацией о проекте:
(add-to-list 'universal-sidecar-sections 'buffer-project)
6.3 Настройка universal-sidecar-advise-commands
- Переменная
universal-sidecar-advise-commandsсодержит список команд, после выполнения которых sidecar должен обновляться. - Можно дополнить её своими командами:
(add-to-list 'universal-sidecar-advise-commands 'my-command)
