Мой кусочек счастья :) Некоторое время назад у меня была мысль слать себе расписание на день письмом, и теперь я могу к ней вернуться. Возможность получить это самое расписание из скрипта я искала долго, но мне не приходило в голову искать в разделе 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