GNU EMACS для технических писателей
285 subscribers
11 photos
19 files
87 links
Настройка, использование, хаки
Download Telegram
Настроили режимы на базе TreeSitter?
Anonymous Poll
48%
Да
37%
Нет, не хочу
15%
Нет, не получается
Про иконочные шрифты.

Раньше автор каждого пакета или библиотеки предпочитал иметь всё своё. Но постепенно этот подход заменил другой: пишем только уникальный код, а общие компоненты выносим в библиотеки. Так появились DLL / so-файлы.

В Emacs авторы многих пакетов пошли тем же путём: «Зачем писать собственную поддержку иконок, если можно использовать другой пакет?»

Раньше для иконок использовали файлы формата ICO. Потом JPG и PNG. В какой-то момент все перешли в вектор – SVG. Однако, самый мощный прорыв случился в момент появления иконочных шрифтов. Вместо букв и цифр их глифы рисуют картинки. Вроде бы сейчас даже появилась спецификация, позволяющая раскрашивать эти картинки разными цветами, а не основным цветом шрифта. Впрочем, вернёмся к Emacs.

Основные «киты» – это пакеты all-the-icons и nerd-icons. В обоих есть команды для загрузки нужных шрифтов – all-the-icons-install-fonts и вы не поверите nerd-icons-install-fonts. В Windows эти шрифты потом надо ещё и установить. В Linux достаточно обновить кеш шрифтов.
👍4
Нужна ли книга "Git простым языком"? Без неё читать главу про Magit сложновато, как мне кажется.
Anonymous Poll
80%
Да
20%
Нет
Как увеличить размер окна по высоте (при условии, что есть куда)? Очень просто: [C-x ^].
Но эта команда увеличивает высоту окна только на один символ! А как увеличить на 5?

Простое и брутальное решение: [C-u 5 C-x ^].

А попроще можно? Конечно! Включите глобальный дополнительный режим repeat-mode!

(use-package repeat
:config (repeat-mode 1))


Что он делает? После первого вызова некоторых команд он переходит в режим повтора. Это значит, что в минибуфере будет выводиться подсказка с названием доступных клавиш, и нажатие каждой из них будет работать так, будто вы нажали всю последовательность целиком.

Ещё раз, попроще. Для изменения размера окна используются эти последовательности:

[C-x ^] — выше
[C-x v] — ниже
[C-x }] — шире
[C-x {] — уже

Но теперь после нажатия любой из этих последовательностей Emacs перейдёт в режим повтора, и для изменения размеров активного окна нужно будет нажать не последовательность, а всего одну клавишу:

[^] — выше
[v] — ниже
[}] — шире
[{] — уже

И пока вы не нажмёте [C-g] или клавишу, не входящую в список для повтора, это поведение будет работать. В следующем посте будет GIF, демонстрирующий это поведение.

Кстати, при изменении размера шрифта repeat-mode тоже крайне полезен!
👍81
magit.pdf
150.2 KB
Добрый день, мои чюваки!

Я решил переписать с нуля главу про Magit. Выкладываю её на всеобщее обозрение для оценки читаемости и понятности.

Подписчики на Boosty чуть позже получат книгу, где эта глава будет переписана с учётом ваших замечаний и предложений. Так же там будет множество примеров использования Magit для выполнения типовых операций.
🔥9👍1
На Boosty опубликована новая версия книги. Глава про Magit переписана с нуля на основе ваших комментариев. Надеюсь, стало попроще.
Пока не описаны cherry-pick, stash и некоторые варианты, предложенные в комментариях. Это на следующее обновление.
5
Есть ли разница между [RET] и [C-j]?

На первый взгляд — нет. Но на самом деле [RET] учитывает настройки отступов и старается им соответствовать. Когда вы работаете с файлами ReStructured Text или Python это особенно заметно, т. к. Emacs не только переносит курсор на новую строку, но ещё и вставляет нужное (по его мнению) количество пробелов:

*  Элемент списка
Позиция курсора после нажатия [RET].


С [C-j] история попроще — заканчиваем эту строку и просто переносим курсор в начало следующей, без магии отступов:

*  Элемент списка
Позиция курсора после нажатия [C-j].


Зачем я вам об этом рассказываю? С целью экономии вашего времени: если отступ не нужен — используйте [C-j], а если нужен — [RET].
👍7
Многие утилиты при сборке проекта любят раскрашивать вывод в разные цвета с помощью последовательностей типа \033[0:31m и подобных. Bash заменяет эти последовательности на соответствующий цвет, получается красивый вывод: ошибки красные, успех зелёный, где-то жирность добавляют.

В Emacs по умолчанию буфер *compile* выводит всё как есть. При сборке проектов Sphinx в буфере нет цветов, зато есть последовательности, используемые для раскраски текста, и выглядит это некрасиво. Но это легко исправить:

;; 📦 ANSI-COLOR
(use-package ansi-color
:custom
(ansi-color-for-compilation-mode t "Расцветка буфера *compile*")
:hook
(compilation-filter . ansi-color-compilation-filter))
👍4
При работе над справочником по настройкам which-key я заметил, что по умолчанию этот пакет не хочет использовать все возможности Unicode. Исправим это:

;; 📦 WHICH-KEY MODE
;; https://elpa.gnu.org/packages/which-key.html
;; Показывает подсказки к сочетаниям клавиш.
(use-package which-key
:ensure t
:delight ""
:custom
(which-key-computer-remaps t "Выводить актуальные сочетания клавиш, а не «как должно быть»")
(which-key-dont-use-unicode nil "Используем Unicode")
(which-key-idle-delay 2 "Задержка появления подсказки")
(which-key-idle-secondary-delay 0.05 "Ещё одна задержка появления подсказки")
(which-key-show-major-mode t "То же самое что и [C-h m], но в формате which-key")
:config
(progn
(which-key-mode 1)
(which-key-setup-minibuffer)
(which-key-setup-side-window-right))) ;; Показывать подсказки справа


Влияет это буквально на три настройки: индикатор сокращённой строки (ellipsis), разделитель, перепривязанные клавиши. Но меня больше интересуют первые две настройки, всё ради них. Раньше было так:

DEL : backward-kill-sentence + : balance-windows
ESC : repeat-complex-command - : shrink-window-if-larget-t..
RET : +prefix . : set-fill-prefix
SPC : rectangle-mark-mode 0 : delete-window
TAB : indent-rigidly 1 : delete-other-windows


Теперь будет так:

DEL → backward-kill-sentence + → balance-windows
ESC → repeat-complex-command - → shrink-window-if-larget-t…
RET → +prefix . → set-fill-prefix
SPC → rectangle-mark-mode 0 → delete-window
TAB → indent-rigidly 1 → delete-other-windows

Главное чтобы используемый шрифт это всё поддерживал, иначе вместо и будет пустота.
👍6
Доброй ночи, дорогие подписчики!
На Boosty новая версия книги: https://boosty.to/simple-emacs/posts/30596aa2-0cd7-4ef4-9229-85e2135a350c?share=success_publish_link

Основные изменения:

1. Переписано описание базовых команд по выделению, вырезанию, копированию и вставке текста.
2. Исправлено несколько косяков в вёрстке.
3. Исправлены некоторые орфографические ошибки.
4. Добавлена инструкция как получить справку прямо в Emacs.
👍7
Увековечим великое:
Вкатился в Emacs с третьей попытки и так и остался. Емакс – это не редактор, и даже не ОС. Емакс – это манифестация коллективного аутизма, выраженная в коде. Примерно как мальчики на пляже собираются и строят замки из песка вместе, без какого-либо планирования и процесса, так же сборище поехавших аутистов собрались и сделали Емакс. Это было просто неизбежно. Емакс не мог не быть написан.

Оригинал: https://www.linux.org.ru/forum/desktop/17998582?cid=17998705
👍6🔥511
Одна из особенностей Antora в том, что исходники документации лежат в одном репозитории (мы рассматриваем самый простой случай), а для сборки надо запускать команды в другом. Как решить эту проблему? Довольно просто. Я использую Projectile, поэтому добавил в свой .dir-locals.el каждого репозитория с исходниками документации такое:

((nil . ((projectile-project-compilation-cmd . "cd ../antora && make"))))


Как использовать? Да как обычно: [C-x p p c RET]. Наверное, можно забиндить на какую-нибудь F-клавишу, но мне туда лень тянуться.
Добрый день, друзья!
Новости:
1. На Boosty новая версия книги: https://boosty.to/simple-emacs/posts/9e5fcb7a-d4ac-4b7a-a5d2-05411d1c7a30
2. Теперь не обязательно оформлять подписку, можно покупать отдельные посты.
3. В каждом посте будут доступны форматы EPUB и PDF, причём PDF в светлой теме оформления и Monokai.
4. В Telegram-канал книга будет выкладываться только в белой теме и с задержкой в полгода.
👍7
По мотивам сегодняшнего обсуждения в чате.

Я не люблю стрелочки. Чтобы их использовать, надо сдвинуть правую руку с её обычной позиции на ширину ладони вправо. Если у вас полноразмерная клавиатура, то ещё дальше. На ноутбуках клавиши со стрелками часто делают маленькими. Т. е. выделять текст удобнее с помощью команд Emacs, а не зажав Shift и двигая стрелки. Однако, есть несколько исключений, которые я сделал для себя.

Начнём с того, как стрелки называются в Emacs:

<left>
<right>
<up>
<down>

;; 📦 WINDMOVE
;; Встроенный пакет для быстрого переключения окон.
;; Перемещение между окнами Emacs.
(use-package windmove
:config
(progn
(windmove-default-keybindings 'ctrl)
(windmove-swap-states-default-keybindings 'meta)))


windmove это встроенный пакет, его даже не надо устанавливать отдельно. Что он даёт? После его активации вы можете переходить между окнами Emacs, зажав Ctrl и нужную стрелку. Например, хотите перейти в окно справа от активного? Нажмите [C-<right>]. В обычном режиме для этого нужно было бы нажимать [C-x o] или [C-x O], т. е. на одну клавишу больше.

Некоторые режимы, например, Magit и IBuffer, а также компиляция, любят создавать собственные окна, т. е. ломать существующий порядок. На них тоже есть управа — встроенный пакет winner:

;; 📦 WINNER-MODE
;; Встроенный пакет для управления состояниями окон.
;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Convenience.html
;; Для управления конфигурациями окон используются последовательности
;; [C-c <left>] и [C-c <right>]
(use-package winner
:config
(winner-mode 1))


После его активации состояние окон (всех окон! всех сразу!) можно менять с помощью [C-c <left>] или [C-c <right>]: влево — отмена, вправо — отмена отмены.

Примечание: в использовании Emacs нет догм. Нет "единственно верного пути" типа "настоящий емаксер не пользуется стрелками". Как вам удобно, так и делайте.
👍6🔥3