Добрый день!
У меня сегодня нет электричества, поэтому пишу с калькулятора на солнечных батареях. Предыдущие 2 недели я болел, но это не значит, что обновления книги на Boosty не будет. Будет! Добавится новая глава про настройки ядра.
Вот тут немножко остановимся.
Ядро Emacs написано на языке C, а пакеты для него – на языке Emacs Lisp.
Большая часть настроек описана именно в файлах с расширением
А вот настройки ядра хранятся в коде на языке C, и чтобы использовать их, про них нужно знать. Загрузку модуля делать не нужно.
Могут ли эти настройки быть вам полезны? Ещё как! Настройки ядра это (включая но не ограничиваясь):
1. Создание lock-файлов.
2. Пищание.
3. Поведение TAB.
4. Внешний вид курсора.
5. Настройки сборщика мусора.
И многое, многое другое.
У меня сегодня нет электричества, поэтому пишу с калькулятора на солнечных батареях. Предыдущие 2 недели я болел, но это не значит, что обновления книги на Boosty не будет. Будет! Добавится новая глава про настройки ядра.
Вот тут немножко остановимся.
Ядро Emacs написано на языке C, а пакеты для него – на языке Emacs Lisp.
Большая часть настроек описана именно в файлах с расширением
.el
. Для использования этих настроек надо загрузить соответствующий модуль и вызвать customize-set-variables
(use-package
неявно делает то же самое в блоке :custom
).А вот настройки ядра хранятся в коде на языке C, и чтобы использовать их, про них нужно знать. Загрузку модуля делать не нужно.
Могут ли эти настройки быть вам полезны? Ещё как! Настройки ядра это (включая но не ограничиваясь):
1. Создание lock-файлов.
2. Пищание.
3. Поведение TAB.
4. Внешний вид курсора.
5. Настройки сборщика мусора.
И многое, многое другое.
👍13
Сервер GNU ELPA обновил ключ GPG, который используется для подписи пакетов. Это создаёт определённые проблемы при загрузке и установке пакетов из архива GNU ELPA. Решений несколько:
1. Правильное решение: импорт нового ключа в связку GPG:
2. Неправильный путь: выключение проверки подписей на уровне GNU Emacs:
Это решение плохое по нескольким причинам сразу, но основная — проверка подписи выключается не только для GNU ELPA, а для всех архивов вообще. По возможности избегайте.
3. Пользователи Seahorse могут использовать эту утилиту для загрузки ключей:
3.1. Запустите Seahorse.
3.2. Нажмите кнопку вызова главного меню и выберите Параметры.
3.3. Нажмите кнопку Добавить сервер ключей.
3.4. Выберите тип Сервер ключей HTTPS, а в поле Узел укажите
3.5. Закройте окно Параметры и выберите в главном меню Найти ключ в из сети (да, там опечатка).
3.6. В окне Найти ключи в сети введите идентификатор ключа
3.7. В окне со списком найденных ключей нажмите кнопку загрузки.
1. Правильное решение: импорт нового ключа в связку GPG:
gpg --keyserver keyserver.ubuntu.com --recv-keys 645357D2883A0966
2. Неправильный путь: выключение проверки подписей на уровне GNU Emacs:
(customize-set-variable
'package-check-signature nil)
Это решение плохое по нескольким причинам сразу, но основная — проверка подписи выключается не только для GNU ELPA, а для всех архивов вообще. По возможности избегайте.
3. Пользователи Seahorse могут использовать эту утилиту для загрузки ключей:
3.1. Запустите Seahorse.
3.2. Нажмите кнопку вызова главного меню и выберите Параметры.
3.3. Нажмите кнопку Добавить сервер ключей.
3.4. Выберите тип Сервер ключей HTTPS, а в поле Узел укажите
keyserver.ubuntu.com
. Поле с номером порта заполнять не нужно.3.5. Закройте окно Параметры и выберите в главном меню Найти ключ в из сети (да, там опечатка).
3.6. В окне Найти ключи в сети введите идентификатор ключа
645357D2883A0966
и нажмите кнопку Искать.3.7. В окне со списком найденных ключей нажмите кнопку загрузки.
✍3👍1
IMenu
Никакого отношения к корпорации Apple эта функция Emacs не имеет. А что это вообще такое? Это интерактивное меню, позволяющее быстро переходить к нужным местам в коде.
Если в вашем файле есть несколько разделов, заголовки и так далее, то это будет работать.
1. Нажмите [M-g i], и Emacs покажет список с компонентами первого уровня.
2. Выберите нужный пункт и нажмите [RET].
3. Если в выбранном пункте есть подпункты, Emacs их покажет.
4. Повторяйте шаги 2 и 3 до тех пор, пока не найдёте нужное. В последний момент Emacs переместит вас в нужное место.
Как использовать IMenu на практике? Для навигации в больших файлах, когда вам примерно известно, что и где находится, и вы просто хотите быстро перейти к нужному месту, а использовать закладки или регистры — не хотите.
Почитать в документации на сайте GNU: https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html
Никакого отношения к корпорации Apple эта функция Emacs не имеет. А что это вообще такое? Это интерактивное меню, позволяющее быстро переходить к нужным местам в коде.
Если в вашем файле есть несколько разделов, заголовки и так далее, то это будет работать.
1. Нажмите [M-g i], и Emacs покажет список с компонентами первого уровня.
2. Выберите нужный пункт и нажмите [RET].
3. Если в выбранном пункте есть подпункты, Emacs их покажет.
4. Повторяйте шаги 2 и 3 до тех пор, пока не найдёте нужное. В последний момент Emacs переместит вас в нужное место.
Как использовать IMenu на практике? Для навигации в больших файлах, когда вам примерно известно, что и где находится, и вы просто хотите быстро перейти к нужному месту, а использовать закладки или регистры — не хотите.
Почитать в документации на сайте GNU: https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html
www.gnu.org
Imenu (GNU Emacs Manual)
Next: Which Function Mode, Previous: Moving by Sentences, Up: Top-Level Definitions, or Defuns [Contents][Index]
👍6🔥1
Только что под руку подвернулся хороший пример использования регулярных выражений. Разберём его.
Списки можно оформлять по-разному, но, например, в документации Yandex Cloud принят подход, при котором в конце строк ставится точка с запятой, если все строки состоят только из одного предложения. В конце последнего элемента списка ставится точка.
Допустим, у нас уже есть список версий Ubuntu:
Ну, в чём проблема сделать из этого списка такой же, как в первом случае? Просто заменим точки на точку с запятой. Ничего плохого ведь не случится, правда?
Так, погодите-ка. А почему точка в номере версии тоже стала точкой с запятой? Нам этого не надо. Сейчас можно и руками поправить. Но представьте, что у вас список из 50 элементов. В таком случае задачу поможет решить регулярное выражение.
Нам нужно найти точку, стоящую в конце строки.
Символ
Символ конца строки обозначается знаком
Давайте сделаем замену:
1. Выделите список и вызовите команду
2. Введите выражение
3. Введите строку замены
4. Исправьте точку с запятой на точку в последнем элементе списка.
Поздравляю! С помощью регулярных выражений вы сэкономили себе немного времени.
Списки можно оформлять по-разному, но, например, в документации Yandex Cloud принят подход, при котором в конце строк ставится точка с запятой, если все строки состоят только из одного предложения. В конце последнего элемента списка ставится точка.
Версии Debian:
* 12 Bookworm;
* 11 Bullseye;
* 10 Buster;
* 9 Stretch.
Допустим, у нас уже есть список версий Ubuntu:
Версии Ubuntu:
* 14.04 Trusty Tahr.
* 16.04 Xenial Xerus.
* 18.04 Bionic Beaver.
* 20.04 Focal Fossa.
* 22.04 Jammy Jellyfish.
Ну, в чём проблема сделать из этого списка такой же, как в первом случае? Просто заменим точки на точку с запятой. Ничего плохого ведь не случится, правда?
Версии Ubuntu:
* 14;04 Trusty Tahr;
* 16;04 Xenial Xerus;
* 18;04 Bionic Beaver;
* 20;04 Focal Fossa;
* 22;04 Jammy Jellyfish;
Так, погодите-ка. А почему точка в номере версии тоже стала точкой с запятой? Нам этого не надо. Сейчас можно и руками поправить. Но представьте, что у вас список из 50 элементов. В таком случае задачу поможет решить регулярное выражение.
Нам нужно найти точку, стоящую в конце строки.
Символ
.
в регулярных выражениях означает "вообще любой символ", поэтому её надо экранировать:\.
Символ конца строки обозначается знаком
$
:\.$
Давайте сделаем замену:
1. Выделите список и вызовите команду
replace-regexp
.2. Введите выражение
\.$
и нажмите [RET].3. Введите строку замены
;
и нажмите [RET].4. Исправьте точку с запятой на точку в последнем элементе списка.
Поздравляю! С помощью регулярных выражений вы сэкономили себе немного времени.
👍5🔥2
На Boosty вышла новая версия книги, с IComplete, Vertico, Helm и Counsel. Порядок глав мне сейчас не очень нравится. Я даже подумываю отказаться от деления книги на главы по алхимическому принципу.
https://boosty.to/simple-emacs/posts/3be25add-53b5-41c1-918e-034ce37022c4?share=post_link
https://boosty.to/simple-emacs/posts/3be25add-53b5-41c1-918e-034ce37022c4?share=post_link
boosty.to
v25.08.05 - Максим Дунаевский
Posted on Aug 05 2025
👍5
gnu-emacs-for-technical-writers-25.02.09-white.pdf
5.3 MB
А это старая версия книги, от 9 февраля этого года.
Имеет ли смысл использовать Shell внутри Emacs, когда у нас есть GNOME Terminal и другие оболочки? Я вижу как минимум два удобства:
1. С содержимым буфера
2. В командной строке можно использовать kill ring. Это значит, что вы можете вставить любой из множества фрагментов, ранее помещённых в kill-ring.
1. С содержимым буфера
*shell*
можно работать как и с любым другим буфером: копировать, вставлять, вырезать.2. В командной строке можно использовать kill ring. Это значит, что вы можете вставить любой из множества фрагментов, ранее помещённых в kill-ring.
👍5❤1
Как в Emacs получить справку? Очень просто: все последовательности для получения справки начинаются с [C-h] (help). Дальше уже немного сложнее, но всё равно логично:
[C-h b] — bindings, привязки (клавиш);
[C-h c] — commands, команды;
[C-h k] — keys, клавиши;
[C-h m] — modes, режимы.
Запомнить приведённые выше команды и сочетания клавиш несложно. Как видите, здесь есть определённая логика, основанная на первых буквах связанных английских слов. Это основные команды. Остальные можете подсмотреть в минибуфере сами.
Самая интересная из перечисленных последовательностей — [C-h k], потому что она требует продолжениябанкета ввода. Нажмите какую-нибудь последовательность, и Emacs выведет информацию о ней: что за команда, к какому пакету относится и так далее.
[C-h b] — bindings, привязки (клавиш);
[C-h c] — commands, команды;
[C-h k] — keys, клавиши;
[C-h m] — modes, режимы.
Запомнить приведённые выше команды и сочетания клавиш несложно. Как видите, здесь есть определённая логика, основанная на первых буквах связанных английских слов. Это основные команды. Остальные можете подсмотреть в минибуфере сами.
Самая интересная из перечисленных последовательностей — [C-h k], потому что она требует продолжения
👍4