GNU EMACS для технических писателей
285 subscribers
11 photos
19 files
87 links
Настройка, использование, хаки
Download Telegram
Главная проблема 9 каналов из 10, касающихся Emacs, заключается в том, что там обсуждают не Emacs. org-mode, DooM Emacs, Emacs Prelude, Evil, ошибки при работе фрагментов кода, взятых со StackOverflow, и хорошо если не из вопроса, а из ответов...
По возможности избегайте чтения таких каналов: может сложиться впечатление, что Emacs состоит из одних только проблем.
👌7🙈3
Если вы до сих пор не используете Counsel, то самое время попробовать:


;; 📦 COUNSEL
;; https://elpa.gnu.org/packages/counsel.html
;; Автодополнение на основе Ivy
(use-package counsel
:ensure t
:bind
(:map global-map
("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)
("M-y" . counsel-yank-pop)
("C-h f" . counsel-describe-function)
("C-h v" . counsel-describe-variable)
("C-h l" . counsel-find-library)
("C-c c" . counsel-compile)
("C-c g" . counsel-git)
("C-x 8 RET" . counsel-unicode-char)))


В Counsel встроено множество команд, заменяющих собой стандартные команды. Главное удобство заключается в поиске. Например, counsel-M-x фильтрует записи по регулярному выражению прямо во время ввода команды!

Если вы ранее настроили Helm, не забудьте отключить часть его функций, чтобы не было конфликтов.

#counsel
Пакет colorful-mode.el обновился до стабильной версии 1.1.0. Он используется для отображения цветов в буферах. Если вы часто работаете с CSS или HTML-кодом, то вам этот пакет будет полезен тем, что фон строки с кодом цвета типа #FF2200 будет иметь именно этот оттенок красного! Также пакет распознаёт коды типа cyan, red, black и тому подобное.
Техписам тоже будет полезен при настройке тем AsciiDoc или Sphinx.


;; 📦 COLORFUL-MODE
;; https://github.com/DevelopmentCool2449/colorful-mode
;; Отображение цветов прямо в буфере. Наследник `raibow-mode.el'.
(use-package colorful-mode
:ensure t
:hook ((css-mode
emacs-lisp-mode
web-mode) . colorful-mode))


https://github.com/DevelopmentCool2449/colorful-mode
CSS-файл с активным colorful-mode.
👍4
А вы знали, что для ReStructured Text и Sphinx существует LSP-сервер? А он есть и называется Esbonio. Сегодня мне удалось его настроить вопреки инструкциям с сайта разработчиков, поэтому в ближайшем обновлении книги на Boosty будет целая глава про это. Всем остальным придётся ждать 3 месяца 😊
hl-line.el — это встроенный пакет. Всё, что он делает — подсвечивает активную строку. Конечно, у нас есть Pulsar и Beacon, но hl-line-mode не конфликтует с ними, а образует симбиоз. Единственное, что могу посоветовать — выбирайте тему оформления так, чтобы в ней подсвеченная строка нормально читалась. Например, в doom-monokai-pro приходилось напрягать глаза, зато в ef-autumn всё в порядке.

(require 'hl-line)
(global-hl-line-mode 1)


Впрочем, с use-package тоже можно:

(use-package hl-line
:config (global-hl-line-mode 1))
👍2
Жызнь с hl-line-mode и без него.
2
На Boosty опубликовано техническое обновление книги. В AsciiDoc пустые строки являются частью синтаксиса, и иногда из-за этого одна глава "прилипает" к другой. Вставил пустые строки в начало, кажется, всех файлов, кроме src/index.adoc. Сейчас структура оглавления должна быть корректной. Обо всех найденных ошибках можете писать мне на почту dunmaksim@yandex.ru или в Telegram-канал с обсуждением книги.
👍3
В книгу вчера были добавлены описания того, как работать с окнами Emacs. Частично продублирую контент сюда.

[C-x 0] — закрыть активное окно.
[C-x 1] — сделать активное окно единственным. Все прочие окна будут закрыты.
[C-x 2] — разделить активное окно горизонтальной чертой.
[C-x 3] — разделить активное окно вертикальной чертой.
[C-x 4 1] и [C-x 4 4] — это префиксы. Указанная после них команда будет принудительно выполнена в том же самом окне или в отдельном соответственно. Кстати, существует несколько сокращений по умолчанию. Например, не нужно отдельно вызывать Dired, достаточно нажать [C-x 4 d], и указанный каталог будет открыт в новом окне.
👍2🔥1
Какое действие выполняет последовательность [C-x 4 f]?
Anonymous Quiz
8%
Запуск find-grep
63%
Запуск find-file
29%
Создаёт окно и перемещает в него курсор
Пожалуй, постановка последнего опроса не вполне корректна, ведь при выполнении find-file-other-window формально Emacs создаёт новое окно и перемещает в него курсор. Постараюсь в следующий раз формулировать вопросы и ответы без спешки.
Надоело, что в русской раскладке не работает команда dired-up-directory, привязанная к [^]. Решил проблему радикально:
(keymap-set dired-mode-map ":" 'dired-up-directory)
👍2🤯1
Последнее время дичайше обновляются разные пакеты:

1. Counsel и Ivy до 0.15.0. Используется для быстрого поиска. Может заменить собой [M-x], тогда команды можно будет искать не по начальным буквам, а по регулярным выражениям. Но не только их. counsel-load-theme отличная замена для load-theme, а counsel-describe-function — для describe-function. Странно, что этот пакет (точнее, семейство пакетов) до сих пор не стали встроенными.
2. Eglot до 1.18. Это такая реализация интерфейса для LSP-сервера от проекта GNU.
4. Jinx до 1.12. Наконец-то нормальная проверка орфографии, в том числе для мультиязычных текстов. В отличие от Flyspell автоматически проверяет весь буфер, а не только введённые строки.
5. Org до 9.7.24. Про этот режим можно отдельную книгу написать. Органайзер, список дел, список задач и так далее.
👍8
В разработке Emacs используется SemVer, но не совсем обычный. Версии с минорным 0 — это версии для разработчиков, а вот если минорная версия 1 и выше, то это уже считается релиз для повседневного пользования. Именно поэтому так странно выглядит история версий:

29.0 — для разработчиков;
29.1 — релиз;
30.0 — для разработчиков;
30.1 — релиз.
👍8
Маленькая хитрость: в русской раскладке не работает сочетание [M-@], потому что при этом вводится не собака, а двойная кавычка. Но поскольку команда mark-word используется довольно часто, а сочетание [M-"] ни к чему не привязано, имеет смысл добавить в init.el такую строку:

(keymap-global-set "M-\"" 'mark-word) ;; Чтобы в RU раскладке тоже работало
👍1
В продолжение последнего поста надо бы объяснить, что такое метод ввода и чем он отличается от раскладки.

Раскладка — это размещение клавиш на клавиатуре.
Метод ввода — реакция компьютера на нажатие клавиш или их последовательностей. Например, в некоторых методах ввода последовательные нажатия нескольких клавиш приводят к вводу одного символа (или лигатуры).

Для Emacs "родной" является раскладка EN/US QWERTY. Все нажатия клавиш он по умолчанию обрабатывает только в этой раскладке. Если на уровне системы вы включите для окна Emacs раскладку RU, то сочетания клавиш перестанут работать.

Решений несколько:

1. Установите пакет reverse-im. Это костыль, который не всегда работает хорошо. Например, [M-@] (mark-word) работать не будет, ведь в русской раскладке вместо @ вводится двойная кавычка ".


;; 📦 REVERSE-IM
;; https://github.com/a13/reverse-im.el
;; Чтобы сочетания клавиш работали в любой раскладке.
(use-package reverse-im
:ensure t
:custom
(reverse-im-input-methods '("russian-computer"))
:config
(reverse-im-mode 1))


2. Используйте переключение методов ввода внутри Emacs вместо смены раскладки на уровне системы. При этом желательно настроить на уровне системы отдельную раскладку для каждого окна и сделать EN раскладкой по умолчанию.

Список методов ввода Emacs определяет автоматически на основе списка локалей, установленных в системе. Для некоторых локалей могут быть доступны несколько методов ввода, но активен будет только один, который по умолчанию.

Для смены метода ввода в Emacs нажмите [C-\]. В строке статуса появится дополнительная метка RU. Ещё одно нажатие вернёт метод ввода к значению по умолчанию.

Если вы работаете более чем с двумя методами ввода, для включения нужного используйте команду set-input-method [C-x RET C-\]. По умолчанию для русского языка доступны методы russian-computer и russian-typewriter (как на печатных машинках).
5👍3