M-x find-grep

Обнаружила в емаксе такую полезняшку, как M-x find-grep. Предлагает запустить примерно такую команду:

find . -type f -exec grep —color -nH —null -e {} +

Которую, естественно, можно менять по вкусу, см man find и man grep. Шаблончики для find — до exec (собственно, -type -f — уже такой шаблончик, говорит «ищем в файлах», «.» перед этим — указание места, тоже можно менять), для grep — после -e. Получается поиск только по выбранным в первой половине команды файлам с собиранием результатов в буфер, с быстрым переходом по результатам.

Мне оказалось удобно там, где надо искать по слишком большому проекту. Какой-нибудь projectile-ag или projectile-rg ищут слишком долго и/или выдают слишком много не того. «Запустила поиск, ушла готовить обед» неудобно, если несколько раз за день :)

Работает, понятно, при наличии find и grep в окрестностях.

мелкие емаксовые приятности

helm-projectile — моё нынешнее очень счастье. Потому что в основном своём текстописательном проекте я уже начала теряться. Найти то, что уже написано — это искалками типа ag, а вот обозреть потенциально подходящие файлы, чтоб приткнуть некоторый новый текст — затруднялась… Теперь не затрудняюсь. Правда, ограничение на количество предлагаемых вариантов пришлось сделать больше умолчательных 100. )

helm-recoll — вполне подсказка, в каких книгах есть интересующее, какие свои файлы я могу захотеть открыть, если ищу «вот это». Не показывает контекст и всё такое, но список файлов даёт.
Если помаленьку заводить отдельные recoll-овые конфиги для отдельных папок и тем, видимо, будет полезно. А индексировать совсем файлопомойку — это, как я поняла, в любом случае занятие примерно бессмысленное, но жрущее уйму места под индекс. Независимо от emacs и helm.

dired сортирует файлы по датам, если ему сказать s.

UPD от 2021.05.29. helm-projectile так и использую, а вот с recoll продолжает не ладиться. И не recoll тут виноват. А мои какие-то не очень удачные практики хранения файлов.

Emacs: интерактивная справка по клавиатуре для забывчивых.

Итак, знакомая ситуация: вы помните префикс команды и вроде бы помните, что дальше, но как бы не совсем 🙂 describe-key тут очевидно не катит, а вот хорошо было бы иметь подсказку по не полностью набранной команде? Йес! which-key-mode — показывает попап с доступными завершениями набора, например C-x-а-чего-там-дальше?..

Надо только подождать чуть-чуть, что получается само при такой задумчивости.

https://github.com/justbur/emacs-which-key

Источник: Emacs: интерактивная справка по клавиатуре для забывчивых.

Утренние страницы и emacs

Если вы тоже пишете утренние страницы по Джулии Кэмерон, учтите, некто Sean Levin позаботился, чтоб это было удобно делать в emacs, см. https://github.com/slevin/mpages.

Всё просто. M-x mpages, и emacs откроет сегодняшний файл, а заодно запустит счётчик слов и часы — сколько времени заняло написание. Пишите, сохраняйте. Когда напишете, сколько надо, закройте и забудьте. И не думайте ни одной лишней мысли об этом.

Ставится mpages из melpa. Настроек всего ничего: куда складывать файлы, сколько слов хотите написать (750 по умолчанию), как часто обновлять количество слов и затраченное время (1с по умолчанию), это через M-x customize.

Зачем нужны утренние страницы? А как получится. Сама Джулия Кэмерон в своих книгах советует не думать об этом лишнего, просто садиться и писать, а там увидите. Три страницы, примерно 750 слов. Советует писать от руки, но сама же пишет, что нет неправильного способа писать утренние страницы. Важно писать. Каждый день.

И всё.

Notmuch, или удобная почта в emacs

Удобные способы работы с электронной почтой — наверное, не менее важно, чем удобная одежда или обувь. Так же незаметны, когда есть, и так же ужасно бесит, когда нет. И так же, как с обувью, разным людям удобно разное.

Моё удобно сейчас — это notmuch + notmuch-emacs. В заметной степени это — поисковичок, умеющий метки. На движке xapian. С интерфейсом для emacs.

  • Мои этак 75 тысяч писем — вообще не напрягают. Поиск по адресам, поиск по текстам, поиск по сабжам, поиск по тегам… — влёт (https://notmuchmail.org/searching/). Удаление больших количеств — не совсем влёт, но «запустила команду и чуток подождала», а не кнопочки натыкивать.
  • Распознаёт дубли, умеет обращаться с ними как с одним письмом.
  • Notmuch не пытается лезть в интернет сам. И это офигенно правильно, потому что интернет разный бывает. А емакс мне нужен — реагирующий. Почту я получаю mbsync(isync)-ом, отправляю через exim. В общем-то, и для написания почты используются существующие возможности emacs (собстно, message-mode), и замечательно, ибо нефиг изобретать уже изобретённые колёса.
  • Удобная сортировка позволяет минимально заморачиваться на ручную обработку почты.
  • Неплохо читает html. Не передаёт красот оформления, и хорошо — там часто уйма лишнего. Но вполне читает и отвечает. Это, кстати, было проблемой раньше — либо неудобный подход, либо только текстовая почта.

Читать далее

Автоизбавление от уже ненужных буферов в emacs

MidnightMode — для выполнения чего-либо автоматически с некоторой регулярностью. Так сказать, отчасти аналог cron. Обычно применяется для удаления ненужных буферов. И я не оригинальна. Ура, у меня теперь не будет необходимости закрывать всё то, что я понаоткрывала и оставила! Читать далее

Emacs, org-mode, mpv — для расшифровки аудио

Была необходимость расшифровать аудиозапись. Нашла чудесное: mpv.el. Функции для управления плеером mpv из emacs. Не обычный плеер, а именно удобное для расшифровки. Гонять по многу раз с одного места, возвращаться на короткие промежутки, ставить отметки времени в файле… Читать далее

Hello World

Пробую писать из любимого текстового редактора непосредственно.

Вдруг это поможет вернуться к здешнему блогу.

И знаете, org2blog/wp — штука, которая стоит внимания. Шанс вернуться — весьма немалый :)

Нашла полезный совет. C-u M-x org2blog/wp-post-subtree — чтобы сразу публиковать запись, а не класть в черновики вордпресса.

Dict, dictem и Emacs — словари на кончиках пальцев

Словари я люблю, уверена, что их должно быть много, и все «на кончиках пальцев». Дабы легко уяснять, что означает конкретное слово, или как это будет на другом языке, или что мне там будет актуально — всё это может быть полезно, обо всём этом не хотелось бы задумываться.

Разумеется, я пробовала разные словари, в том числе как любителю и пользователю Emacs мне приглянулось сочетание dictd+dict+dictem. Это же так естественно — легко обращаться к словарям именно там, где они нужны, там, где я пишу тексты.

Читать далее

Как из скрипта получить орг-модное расписание :)

Мой кусочек счастья :) Некоторое время назад у меня была мысль слать себе расписание на день письмом, и теперь я могу к ней вернуться. Возможность получить это самое расписание из скрипта я искала долго, но мне не приходило в голову искать в разделе Hacking. Вроде как не по чину. А тут вдруг раз, и нашла. Расписание (agenda) и список тудушек, и прочее полезное вполне можно получить из скрипта и в скрипт :)

Да, на всякий случай. Это для тех, кто пользуется емаксом, и конкретно замечательным планировщиком, тудушником, учётчиком времени… в общем, org-mode.

org-batch-agenda — создаёт расписание и выводит его на STDOUT. Принимает строку как параметр.

Строка длиной в один символ воспринимается как выбор одной из org-agenda-custom-commands, то есть соответствует клавишам, которые предлагается нажать на выбор после «C-c a». «a» — для собственно расписания, «t» — для списка todo, «L’ — список событий по времени, «#» — «застрявшие» проекты… В общем, тут простор, смотрите сами, настраивайте, ежели что.

Например,

emacs -batch -l ~/.emacs.d/init.el -eval '(org-batch-agenda "t")' 

выведет список дел, которые неплохо бы сделать. Если не обидится на что-нибудь по пути. Мне довольно много из конфига вычистить пришлось. Хорошо, что я сразу под это дело отдельный файл завела. :)

Если параметр длиннее одного символа, то emacs будет искать совпадающие теги. + добавляет тег, — исключает. Не очень представляю, как это использовать в мирной жизни. Ну-у, предположим, я ищу, что собиралась купить, когда пойду на :рынок:, но чтоб это было не :еда: — вдруг ещё что надо, а я только про еду и помню. Затем распечатать, или ещё что, неважно. Заодно вот и причина, по которой в теги нельзя слова с дефисами, увы…

emacs -batch -l ~/.emacs.d/init.el -eval '(org-batch-agenda "+рынок-еда")'

Всякие параметры можно задавать прямо в той же команде:

emacs -batch -l ~/.emacs.d/init.el -eval '(org-batch-agenda "a" org-agenda-span 20 org-agenda-include-diary nil org-agenda-files (quote ("~/org/rabota_blin.org" "~/org/sessia.org")))'

Хе, хорошо, что я это просто придумала, а то аж страшно стало. Расписание на 20 дней строго из двух названных файлов, и без содержимого diary.

`org-agenda-span` — количество дней. Или число — в днях, или словом — day, week, month или year. С трудом представляю, зачем может понадобиться year, конечно.

А ещё есть org-batch-agenda-csv, которая также на STDOUT выдаёт всё то же, но уже как csv, то есть — поля, разделённые запятыми. Категория, заголовок, тип, тудушное ключевое слово (если есть), метки (включая унаследованные), дату (если из-за неё выбрано), время (аналогично), ещё какую-то строку (кажется, если отсчитывается промежуток до дедлайна, он будет тут), приоритет установленный, приоритет посчитанный. Самое оно скрипту скормить :)

http://orgmode.org/org.html#Extracting-Agenda-Information — подробнее, понятнее и на английском. :)

И, кстати, про отдельный конфиг для таких случаев. При старте emacs обычно загружается уйма всего, большая часть которой в этом конкретном случае не нужна. Чтоб не запускать лишнего, конфиги стоит чистить. И что-то вычищается непосредственно из пользовательского конфига, что-то — нет. Править конфиги глобальные нам ни к чему, в остальное-то время результат нас устраивает.

Так вот, у emacs есть опция –no-site-file. Но чтобы при её использовании всё заработало, мне пришлось добавить в конфиг, в начало, строчки

(load "/usr/share/emacs/site-lisp/debian-startup.elc")

Загружает что-то полезное, без чего всё обижалось (разумеется, у меня дебиан. :))

Из моего же поста на welinux — http://welinux.ru/post/4889/

Дополнено 2019-01-10 Чт 12:24