From: Richard Lawrence <email@example.com> To: Christopher Causer <firstname.lastname@example.org>, orgmode <email@example.com> Subject: Re: clock-table and hooking that into org-capture file+olp+datetree Date: Sat, 30 Jan 2021 18:09:36 +0100 [thread overview] Message-ID: <87im7ez6zz.fsf@aquinas> (raw) In-Reply-To: <firstname.lastname@example.org> Hi Christopher and all, "Christopher Causer" <email@example.com> writes: >> Note that org-datetree-find-date has a slightly annoying interface, in >> that you need to provide a list of three integers representing a >> calendar date. > > Yes, that is a little awkward. What I did think of using was substrings to extract the date from the picker interface. > > #+BEGIN_SRC emacs-lisp > (defun org-date-picker-to-list () > (let* ((date-string (org-read-date)) > (year (substring date-string 0 4)) > (month (substring date-string 5 7)) > (day (substring date-string 8 10))) > (mapcar 'string-to-number (list month day year)))) > #+END_SRC > > Does that look sensible? As sensible as anything :) I recently added my version, using decode-time and nth, as a helper function to my .emacs. I feel sure that it must already exist *somewhere* in Emacs but I searched quite a while for it and didn't find it. I will use this again below: #+begin_src emacs-lisp (defun time-as-calendar-date (time) "Convert time in Emacs' time format to a calendar date list (MONTH DAY YEAR)" (let ((parsed-time (decode-time time))) (list (nth 4 parsed-time) (nth 3 parsed-time) (nth 5 parsed-time)))) #+end_src > My two next things to tackle are > > 1. A hook to run the function when I run org-capture. Here you might find it useful to grab the value of the :default-time key from org-capture-plist (which should contain either the time you entered at the date prompt during capture, or the current time, in Emacs' time format). Then, using the functions above, you can say something like this in your hook: #+being_src emacs-lisp (let* ((default-time (plist-get org-capture-plist :default-time)) (date (time-as-calendar-date default-time))) (org-update-clocktable-on-date date)) #+end_src > 2. Changing the org-clock-report options in your function above, but not the defaults. > > For the second point, is there some trick to swap a global variable for the run of a function? The variable in this case would be org-clocktable-defaults. Emacs Lisp has dynamic scope by default, which makes this is pretty easy in general: just set the value you want to use in a let form around the code that uses this variable, like: (let ((org-clocktable-defaults your-custom-value-here)) ...) > Thank you so much Richard. You've probably saved me days of going through the org-mode documentation and source. No problem! That's what this list is for. I recently spent a fair amount of time digging through the datetree stuff myself, so I was glad to have a chance to share what I learned. -- Best, Richard
next prev parent reply other threads:[~2021-01-30 17:11 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-29 22:32 Christopher Causer 2021-01-30 8:40 ` Christopher Causer 2021-01-30 12:53 ` Richard Lawrence 2021-01-30 16:32 ` Christopher Causer 2021-01-30 17:09 ` Richard Lawrence [this message] 2021-01-30 22:40 ` Christopher Causer 2021-02-02 5:15 ` Kyle Meyer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=87im7ez6zz.fsf@aquinas \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --subject='Re: clock-table and hooking that into org-capture file+olp+datetree' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).