emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Use date in Easy Templates?


From: John Kitchin
Subject: Re: [O] Use date in Easy Templates?
Date: Fri, 21 Feb 2014 10:26:20 -0500

I solved a similar problem to this with yasnippets:

http://kitchingroup.cheme.cmu.edu/blog/2014/02/16/A-dynamic-snippet-for-a-task-due-7-days-from-now/

You can dynamically evaluate lisp code in the snippet when it is expanded. That way you can get whatever format suits you!

John

-----------------------------------
John Kitchin
Associate Professor
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
http://kitchingroup.cheme.cmu.edu



On Sun, Feb 16, 2014 at 2:33 PM, Rainer M Krug <address@hidden> wrote:


On 02/16/14, 19:08 , Nick Dokos wrote:
> Rainer M Krug <address@hidden> writes:
>
>> is it possible to insert the actual date into Easy Templates?
>>

That's what I thought as well.

>
> No - but it's not difficult to crib the %file code and add %date:
>
> --8<---------------cut here---------------start------------->8---
> (defun org-complete-expand-structure-template (start cell)
>   "Expand a structure template."
>   (let* ((musep (org-bound-and-true-p org-mtags-prefer-muse-templates))
>        (rpl (nth (if musep 2 1) cell))
>        (ind ""))
>     (delete-region start (point))
>     (when (string-match "\\`#\\+" rpl)
>       (cond
>        ((bolp))
>        ((not (string-match "\\S-" (buffer-substring (point-at-bol) (point))))
>       (setq ind (buffer-substring (point-at-bol) (point))))
>        (t (newline))))
>     (setq start (point))
>     (if (string-match "%file" rpl)
>       (setq rpl (replace-match
>                  (concat
>                   "\""
>                   (save-match-data
>                     (abbreviate-file-name (read-file-name "Include file: ")))
>                   "\"")
>                  t t rpl)))
> ;;; ADDED CODE
>     (if (string-match "%date" rpl)
>       (setq rpl (replace-match
>                   (save-match-data
>                     (format-time-string "%Y-%m-%d" (current-time)))
>                  t t rpl)))
> ;;; END OF ADDED CODE
>     (setq rpl (mapconcat 'identity (split-string rpl "\n")
>                        (concat "\n" ind)))
>     (insert rpl)
>     (if (re-search-backward "\\?" start t) (delete-char 1))))
>
> --8<---------------cut here---------------end--------------->8---
>
> However, the next thing somebody will ask is a different format for the
> date which will require YACV[fn:1]. But maybe one exists already?
>
> And the next thing is more of these %thingies... so it would be better
> to add yet another layer to the function, so that arbitrary %thingies
> can be added by customizing YACV, probably an alist of
>
>  ("thingie" . thingie-function)
>
> pairs...

That sounds like a good idea which would make the Easy Templates more
powerful.

Cheers,

Rainer

>
> Footnotes:
>
> [fn:1] Yet Another Customization Variable :-)
>

--
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
Biology, UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :       +33 - (0)9 53 10 27 44
Cell:       +33 - (0)6 85 62 59 98
Fax :       +33 - (0)9 58 10 27 44

Fax (D):    +49 - (0)3 21 21 25 22 44

email:      address@hidden

Skype:      RMkrug



reply via email to

[Prev in Thread] Current Thread [Next in Thread]