Преди няколко седмици/u/jamJam20 попита за "най-използваните свойства на организационния режим". Използвам свойства като част от проследяването на диетата си в организационен режим и най-накрая стигнах до това как да напиша как работи системата ми:

проследяване

Включвам първата част тук, тъй като тя обяснява организационната страна на нещата.

Използвам тази система, за да проследя колко тежа, както и колко калории консумирам за един ден. Има много приложения и онлайн услуги, които предоставят тази функционалност, но предпочитам да притежавам данните си в отворен формат, който мога да използвам другаде.

Тъй като работя от вкъщи и винаги имам отворена сесия на Emacs, имаше смисъл за мен да се опитам да използвам Emacs по някакъв начин.

Моята настройка използва следните функционалности на Emacs и org-режим:

  • Индивидуални заглавия в организационен режим за всеки ден
  • свойства на организационния режим за съхраняване на теглото ми
  • таблици в организационен режим и формули за електронни таблици
  • улавяне на организацията за претегляне
  • Някои функции elisp за добавяне на отделни записи за храна

Нека разгледаме по-отблизо как всичко това се вписва.

Настройка на диетичен файл

Файлът ми за диета изглежда така (със свити заглавия):

Опитах се форматът на файла да бъде възможно най-опростен. Всеки ден има свой собствен запис под главния заглавие "Daily Logs". Основният заглавие "Daily Logs" се използва от org-capture, за да намери къде да поставите нови елементи.

Свойството SEQ_TODO от най-високо ниво се използва за задаване на състояние „готово“ за всяко заглавие. Използвам три различни типа заглавия:

  • CAL-IN: За дни, в които не съм въвел цялата информация за диетата си. Обикновено има само един от тях отворен в даден момент.
  • CAL-OUT: За завършени дни, когато всички данни са окончателни.
  • CAL-CANCEL: За дни, в които проследявам теглото, но не и информацията за калориите. Използвам това за неделя, дни, в които излизам да ям или когато имам планирани социални събития.

Ежедневни записи

Ежедневният запис изглежда по следния начин:

Това е доста проста таблица, която използва някаква магия в организационен режим за изчисляване на суми. Графата "Калории" обикновено е "калории на грам", но за някои елементи това е "калории на елемент". По същия начин колоната за количество или се отнася до теглото в грамове или броя на консумираните артикули.

Частта # + TBFLM: под таблицата е формула за електронна таблица в режим на организация. Той използва две формули:

  • $ 5 = $ 3 * $ 4: Задава колона 5 (колоната "Общо") на Калории x Количество. индексите на колоните в организационен режим започват от 1, а не от 0.
  • $ LR5 = vsum (@ 2 $ 5 . @ - I $ 5): Изчислява общото количество консумирани калории през деня. Той използва относителни препратки, така че да работи, без значение колко реда.

Разделът за електронни таблици в ръководството за организационен режим навлиза подробно в формулите. Отне ми известно време, за да го хвана, но това е наистина мощна система.

Претегляне

Използвам org-capture-template за моите претегляния. Претеглям се всяка сутрин, в зависимост от графика си.

org-capture е обвързан с C-c o r, а след това моят шаблон за претегляне е обвързан с w. Затова всеки ден пускам C-c o r w, въвеждам теглото си, след което използвам C-c C-c, за да го запиша в диетичния си файл. И това е.

Моят шаблон за заснемане е по-долу:

Добавяне на нови записи за храна

Имам няколко elisp функции, които използвам за добавяне на нови данни. Основната функция е org-diet-copy, която е свързана с C-c C-C .

org-diet-copy се използва на ред от друга таблица. Той копира името на храната, количеството калории и количеството в горната таблица и заменя клеймото с текущата дата и час.

Процесът на добавяне на нов запис обикновено протича по следния начин:

Натиснете C-s, за да потърсите храната, която искам да добавя. Ако исках да добавя нов запис за „пържени картофи“, вероятно щях да направя нещо като „C-s fren“, за да намеря първия запис „пържени картофи“.

Натиснете C-c C-C, за да копирате записа в моя активен ден.

Заменете количеството с каквото и да е количество, което съм изял. Опитвам се да запазвам същия размер на порциите за закуска и закуски, така че това не винаги е необходимо.

Изпълнете M-x org-table-kalculate, за да актуализирате таблицата.

Това е проста система, но работи достатъчно добре. В крайна сметка мога да добавя функция, която подканва за храна и количество и след това автоматично попълва количеството калории.

Всички функции, които използвам, са по-долу:

Част втора съдържа рубиновия код, който използвам за конвертиране на моя файл в организационен режим в json.