Цифровой садик - приветственная

Цифровой садик - приветственная | Полный список всего, что тут есть | RSS | Подписаться через follow.it

05.01.2023

emacs

Дивной красоты текстовый редактор и текстовый интерфейс много к чему.

Ещё прекрасно учит смирению, так как:

О прекрасности емакса

Пожалуй, справедливо сказано, что это в первую очередь не редактор (хотя редактор там тоже есть), это среда для жизни.

https://old.computerra.ru/features/206939/ - для сравнения идея. https://www.ianbicking.org/the-vs-emacs.html - про то, что реализация совершенно напрасно не учла опыт емакса.

Емакс весьма не идеален, зато существует. Действительно не (только) редактор. Потому что среда и инфраструктура для приложений, интерпретатор языка Emacs Lisp, конструктор текстового редактора. Малая часть программы реализована на языке С (отвечает за базовое взаимодействие с ОС, ввод-вывод, отрисовку окон), а весь основной функционал — на Emacs Lisp (elisp).

Базовый способ взаимодействовать с чем-то - редактирование текста. Работа с текстом как метафора много чего. Умеет работать с тем, что получается представить как текст, и кое с чем ещё. Включает в себя ряд приложений. Управляется командами и сочетаниями клавиш, менюшек не хватает, хотя и меню там переделываются вполне так на лету, при переключении из одного буфера в другой, а ещё уйма текстовых выбиралок, дополнялок и вообще.

Вообще, есть идея о том, что емакс это такой себе UI тулкит типа GTK или Qt, в котором удобно создавать текстовые интерфейсы: https://ambrevar.xyz/emacs-everywhere/ (https://t.me/zettelmacs/217)

приколочка

https://grundik.livejournal.com/379781.html - про команду M-x butterfly и комикс http://xkcd.com/378/.

С чего начинать, если вдруг захотелось освоить

  • поставить сам emacs.
  • просмотреть туториал по C-h t,
  • русскоязычным - поставить reverse-im.
  • минимально освоить org-mode,
  • завести literate конфиг, чтоб не потеряться в своём конфиге :).
  • для цеттелькастена - поставить org-roam. :)
  • Начать читать мануал, который по C-h r.
  • И разговаривать о том, чего хочется, чтоб получить удобную свою среду. https://t.me/emacs_ru - прекрасное место для таких разговоров :)

    И да, я в курсе, что это не исчерпывающее изложение, что надо сделать. Я подумаю, чем дополнять.

И возможно, https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-en.org, но вот тут я не согласна с базовой там идеей, что свой конфиг - скорее не нужен, а надо брать какой-то достаточно массовый фреймворк, и радоваться, что за тебя решили все проблемы.

Готовые «фреймворки»

Попытки конфигов для начинающих, таких, чтоб дальше переделывать под себя было удобно

snapshot emacs

2021-07-27 20:42:12 +0300 - устала дожидаться, когда в дебиане обновят :)

Учитывать, что при переходе на snapshot и обратно, надо выбирать нужный emacsclient.

sudo update-alternatives --config emacsclient

https://www.masteringemacs.org/article/whats-new-in-emacs-27-1

Полезные ссылки

В целом про емакс

Тг

Конфиги

Ссылки и заметки про какие-то отдельные штуки, не доросшие до странички

неразобранное

запуск всякого и руление этим

  • https://git.sr.ht/~swflint/time-block - можно менять поведение с учётом времени. Типа, блокировать «не то» в рабочее время. Или нерабочее. Или ещё как-то :)
  • M-x proced - список процессов
  • https://github.com/bard/emacs-run-command - кажется, премилая штука для запуска всякого внешнего, по умолчанию в compilation-mode. (https://github.com/semenInRussia/emacs-run-command-recipes некоторый набор готовых рецептов для неё. Но кукбук оригинала мне пока интереснее). 2022-02-08
  • run-with-idle-timer secs repeat function &rest args Set up a timer which runs the next time Emacs is idle for secs seconds. The value of secs may be a number or a value of the type returned by current-idle-time. If repeat is nil, the timer runs just once, the first time Emacs remains idle for a long enough time. More often repeat is non-nil, which means to run the timer each time Emacs remains idle for secs seconds. https://www.gnu.org/software/emacs/manual/html_node/elisp/Idle-Timers.html

всякие символы

  • "C-x 8 C-m acute comb RET" - вставление всяких символов.
  • Когда проблемы с вставлением символа - A standard hack here too is to use the literal character escape thing. Type C-q and then space. It’s a bit like using \ in a literal string in programming. quoted-insert is an interactive compiled Lisp function in ‘simple.el’. It is bound to C-q. (quoted-insert ARG) Read next input character and insert it. This is useful for inserting control characters. With argument, insert ARG copies of the character. If the first character you type after this command is an octal digit, you should type a sequence of octal digits that specify a character code. Any nondigit terminates the sequence. If the terminator is a RET, it is discarded; any other terminator is used itself as input. The variable ‘read-quoted-char-radix’ specifies the radix for this feature; set it to 10 or 16 to use decimal or hex instead of octal.
  • https://gitlab.com/link2xt/yoficator - ёфикатор.
  • whitespace-mode - отображает скрытые символы, пробелы, табуляции.
  • https://www.emacswiki.org/emacs/TypographicalPunctuationMarks
  • http://zahardzhan.github.io/2010/russian-typography-in-emacs.html

таблички и считалки

  • jupiter и ein - времен, когда пыталась въехать в обработку данных.
  • emacsql-sqlite - тож смутно помню, что зачем-то было, и что-то было ж хорошее о нём.
  • esqlite - мод для скулайта. https://github.com/mhayashi1120/Emacs-esqlite
  • literate-calc https://github.com/sulami/literate-calc-mode.el - Displays inline results for calculations, supports variables and updates as you type. Тормозил как не знаю что.
  • https://www.gnu.org/software/emacs/manual/html_mono/ses.html - таблички. В орг-моде в src-блоке, похоже, работать не хочет, но само по себе может быть интересно.

емаксокартинки

  • https://github.com/walseb/blimp, обёртка над imagemagick. Периодически пробую, но пока не освоилась.
  • пипетка взять цвет пикселя. Grabc без граф интерфейса. Просто C-u M-! grabc RET (в смысле, запустить из емакса консольную команду) И оно сразу в буфер вставляется. grabc поставила. А вот переключать окна после запуска grabc не судьба вообще, жаль.

The radar chart

Точно помню, что получилось :)

is also known as web chart, spider chart, star chart, cobweb chart, star plot, irregular polygon, polar chart, or kiviat diagram.

В большинстве случаев наглядностью не балует. Но, можно сравнивать общее впечатление, можно смотреть баланс направлений.

управление файлами

password-generator

Generate a password and insert it in-place. Such functions provided:

  • password-generator-numeric - generate PIN-code or any other numeric password.
  • password-generator-simple - simple password for most websites.
  • password-generator-phonetic - easy to remember password.
  • password-generator-strong - strong password and still suitable for most web sites with strange password requirements to used special chars.
  • password-generator-words - generate rememberable password from top used 1500 english words.
  • password-generator-custom - generate custome password from your alphabete.

Use C-u <length> password-generator-simple to specify length of generated password. This works with other functions too.

See full docs here: http://github.com/vandrlexay/emacs-password-genarator

timestamps - вставить и обновлять актуальную дату

https://www.emacswiki.org/emacs/TimeStamp

В конфиг:

(add-hook 'before-save-hook 'time-stamp)  

The default ‘time-stamp-pattern’ in Emacs is roughly this,

"8/Time-stamp:[ \t]+\\\\?[\"<]+%:y-%02m-%02d %02H:%02M:%02S %u\\\\?[\">]"

Можно настроить свой через Local Variables в файле или Directory Variables в .dir-locals.el каталога (действует и на подкаталоги).

У меня есть такой .dir-locals.el.

((org-mode . (
	    (time-stamp-pattern . "8/#\\+date: <%04Y-%02m-%02d %02H:%02M:%02S %Z>")
            (time-stamp-time-zone . "Europe/Moscow")
	   )
))

diminish - меньше текста в модлайне

Оччень полезная штука. Позволяет убрать minor-моды из modeline, или заменить текст на свой. На прочую работу мода не влияет.

(require 'diminish)
(diminish 'anzu-mode)
(diminish 'abbrev-mode)

И что там ещё неинтересно видеть.

Вариант с заменой текста:

(diminish 'abbrev-mode "Abv")

нумерация строк

  • M-x display-line-numbers-mode
  • nlinum - этот надо ставить, если зачем-то нужен.
  • некогдашний linum - не рекомендуется использовать

file local variable

consider a file local variable set in each file. The shortest, most general way to set one of these is to include the following in the first line of the target file:

-*- eval: (auto-revert-mode 1); -*-

In source files, the text can follow a comment delimiter (//, \verb|#|, etc). You can run M-x add-file-local-variable-propline to have Emacs generate this for you automatically, or M-x add-file-local-variable for a format that uses the bottom of your file instead of the top.

M-x поинтереснее или smex - не использую

https://github.com/nonsequitur/smex/

Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a convenient interface to your recently and most frequently used commands. And to all the other commands, too.

The commands are displayed in an Ido completion buffer, ordered by relevance. The 7 most recently executed commands come first, the rest are sorted by frequency of use, command length and in alphabetical order.

Ido completion in 10 seconds: Typing selects matching commands: e.g. 'lnmd' matches 'line-number-mode'. C-s/C-r switches to the next/previous match. Enter executes the selected command.

smex-major-mode-commands runs Smex, limited to commands that are relevant to the active major mode.

C-h f, while Smex is active, runs describe-function on the currently selected command.

M-. jumps to the definition of the selected command.

C-h w shows the key bindings for the selected command. (Via where-is.)

smex-show-unbound-commands shows frequently used commands that have no key bindings.

У меня жило недолго, потому что делало емакс огорчительно задумчивым.

Автозакрывание ненужных буферов через какое-то время

Вместе с удобными способами открывать и благодаря тому, что как-то открытые буферы не особо мешают, позволяет вообще не особо помнить, что открыто, что не открыто, и не особо заморачиваться закрыванием. Иногда закрываю вручную, конечно :) Изредка. :)

Midnight

https://www.emacswiki.org/emacs/MidnightMode Для выполнения чего-либо автоматом и с некоторой регулярностью. Обычно применяется для удаления ненужных буферов. И я не оригинальна.

(require 'midnight)
(midnight-mode 1)

Когда выполнять.

(midnight-delay-set 'midnight-delay "4:30am")

Другой вариант - в секундах после полуночи.

Если хочется, чтоб задание выполнялось чаще:

(setq midnight-period 7200) ;; (eq (* 2 60 60) "2 hours")

Что, собстна, делаем-то.

(add-hook 'midnight-hook 'clean-buffer-list)
clean buffer list}

https://www.emacswiki.org/emacs/CleanBufferList Запускаем через midnight-mode.

Вычищать буферы старше одного дня.

(setq clean-buffer-list-delay-general 1)

Вычищать «специальные» буферы старше 6 часов.

(setq clean-buffer-list-delay-special (* 3 3600))

Настроить, какие «специальные». (По умолчанию “*Help*”, “*Apropos*”,“*Buffer List*”,“*Compile-Log*”,“*info*”,“*vc*”, “*vc-diff*” or “*diff*”.)

Убираем маны, кастомайз, поиски.

(add-to-list 'clean-buffer-list-kill-buffer-names
                 '("*buffer-selection*"
                   "*ag search text*"
                   "*vc-change-log*"))
(add-to-list 'clean-buffer-list-kill-regexps
                 '("\\`\\*Customize .*\\*\\'"
                   "\\`\\*\\(Wo\\)?Man .*\\*\\'"))

Никогда не удаляет “*scratch*”, “*Messages*”, “*server*”, минибуферы (называются “*Minibuf-”), показываемые на момент буферы, буферы с процессами и внутренние буферы, которые никогда не показываются, буферы с изменёнными файлами.

Настроить и это.

(add-to-list 'clean-buffer-list-kill-never-buffer-names
                 '("*eshell*"
                   "*ielm*"
                   "*mail*"
                   "*w3m*"
                   "*w3m-cache*"))

(add-to-list 'clean-buffer-list-kill-never-regexps
                 '("\\`\\*tramp/.*\\*\\`"
                   "\\`\\*ftp .*\\*\\`"))

Пишет, что делает в Messages.

про открывание файлов - задумчивость

[2022-12-01 Чт] Поймала себя на том, что временами мешает необходимость соображать, что мне сейчас нужно: открыть файл по адресу, открыть проект и файл в нём, открыть другой файл в открытом проекте по имени файла, открыть заметку в org-roam. Это всё делается сочетаниями клавиш, все «близко» в памяти рук, но руки временами делают не то, приходится отменять начатое и делать заново уже нужное.

И то ли надо делать так, чтоб было легко переключиться на другой вариант, если первый сделанный по рефлексу не прокатил. То ли избавляться от каких-то вариантов, но каких? То ли надо делать так, чтоб вообще не получалось делать «не приходя в сознание». Пока не знаю.


Если у вас есть мысли, комментарии, предложения или отклики по поводу этой страницы или этого цифрового сада в целом, напишите мне сообщение через Яндекс.Форму или на agnessa@agnessa.pp.ru. Мне ооочень интересно!

Задонатить.


An IndieWeb Webring 🕸💍