Как мога да маркирам навиците на организацията като направени в миналото

Редовно отбелязвам навиците като ИЗВЪРШЕНИ в деня след извършване на дейността. Модулът за навици автоматично актуализира куп дати в метаданните, когато правя това, но датата винаги е днес. Тогава трябва ръчно да редактирам състоянията SCHEDULED, LOGBOOK и LAST_REPEAT.

Има ли начин да маркирате навик като ГОТОВ за един минал ден? Така че вместо да правя C-c C-t d (имам "d", настроено като "ГОТОВО"), мога да получа подкана, която ме пита за среща.


person Naomi Slater    schedule 21.08.2014    source източник


Отговори (2)


И аз от известно време исках да направя това и вашият въпрос ме вдъхнови най-накрая да го разбера.

Има функция, наречена "org-todo-yesterday." По подразбиране той не е съпоставен с никакви ключове, но винаги можете да го извикате с M-x org-todo-yesterday (или да го съпоставите, ако го използвате често). За мен той се поврежда, защото извиква „трето“, което не е дефинирана функция в моята инсталация.

За по-обща функция, която ни подканва за датата и маркира нещата като свършени към този момент, можем да добавим тази функция (вдъхновена от org-todo-yesterday) към нашия emacs init файл. Ще действа така, сякаш сте приключили нещата в 23:59 на целевата дата, което, надяваме се, е достатъчно добро.

(defun dk/org-todo-custom-date (&optional arg)
  "Like org-todo-yesterday, but prompt the user for a date. The time
of change will be 23:59 on that day"
  (interactive "P")
  (let* ((hour (nth 2 (decode-time
                       (org-current-time))))
         (daysback (- (date-to-day (current-time-string)) (org-time-string-to-absolute (org-read-date))))
         (org-extend-today-until (+ 1 (* 24 (- daysback 1)) hour))
         (org-use-effective-time t)) ; use the adjusted timestamp for logging
    (if (eq major-mode 'org-agenda-mode)
      (org-agenda-todo arg)
      (org-todo arg))))
person Daniel Kessler    schedule 24.01.2015
comment
изглежда org-extend-today-until промяната на друга стойност няма ефект, винаги задавайте ден до вчера. - person driftcrow; 28.02.2016
comment
@driftcrow Прав си. Употребата трябва да се е променила наскоро. Ще видя за актуализиране на функцията. - person Daniel Kessler; 16.03.2016
comment
org-todo-yesterday работи чудесно за мен (emacs 25.1.1 на OSX el capitan). Благодаря! - person Jay; 15.10.2016
comment
Алтернативно работещо решение може да бъде намерено на emacs.stackexchange.com/a/9451/315 - person holocronweaver; 27.11.2016
comment
Изглежда, че последният запис за повторение и ГОТОВО в дневника няма да бъдат въведени правилно с тази функция. - person xji; 20.04.2019

Ще работи ли това? Това просто завършва навика и го пренасрочва за днес

(defun org-todo-yesterday2 (&optional arg)
  (interactive "P")
  (org-todo-yesterday arg)
  (org-schedule arg (format-time-string "%Y-%m-%d")
  )
)
person gs1w04    schedule 04.12.2020