;;; my-time.el -- Time related extensions for emacs core -*- lexical-binding: t -*- ;; Copyright (C) 2023 Free Software Foundation. ;; Author: Yuchen Pei ;; Package-Requires: ((emacs "28.2")) ;; This file is part of dotfiles. ;; dotfiles is free software: you can redistribute it and/or modify it ;; under the terms of the GNU Affero General Public License as ;; published by the Free Software Foundation, either version 3 of the ;; License, or (at your option) any later version. ;; dotfiles is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; Affero General Public License for more details. ;; You should have received a copy of the GNU Affero General Public ;; License along with dotfiles. If not, see ;; . ;;; Commentary: ;; Time related extensions for emacs core. Covers time, date, diary, etc. ;;; Code: ;; To be called from diary-sexp-entry, where DATE, ENTRY are bound. (defun my-diary-offset (sexp days) "Offsetted diary entry. Entry applies if the date is DAYS days after another diary-sexp SEXP." (with-no-warnings (defvar date) (defvar entry)) (integerp days) (let ((date (calendar-gregorian-from-absolute (- (calendar-absolute-from-gregorian date) days)))) (eval sexp))) (defun my-appt-display-window (min-to-appt new-time appt-msg) (or (listp min-to-appt) (setq min-to-appt (list min-to-appt) appt-msg (list appt-msg))) (org-notify (format "In %s minutes: %s" (car min-to-appt) (car appt-msg)))) (provide 'my-time) ;;; my-time.el ends here