[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] [PATCH] org-capture - using `file' as template
From: |
Johan Friis |
Subject: |
[Orgmode] [PATCH] org-capture - using `file' as template |
Date: |
Wed, 14 Jul 2010 03:30:43 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Setting up capture to use templates from file in the latest git seemed
to cause some errors. I looked into it and wrote this small patch. It
could probably use some love, seeing as I am quite new to org-mode,
elisp and emacs in general.
The error I was getting was related to testing (string-match ...) on
a list. The fix is to check if txt is a list before doing the test. In
addition I updated the customize interface to use `file' instead of
`file-contents'. This seems to be the current way of doing things.
Please note: This is my first time posting here. Please let me know if
there are some rules to follow that I missed. And thanks for a great
piece of software :)
Regards,
Johan
diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index 2cb6876..da0925c 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -285,7 +285,7 @@ calendar | %:type %:date"
(choice :tag "Template"
(string)
(list :tag "File"
- (const :format "" file-contents)
+ (const :format "" file)
(file :tag "Template file"))
(list :tag "Function"
(const :format "" function)
@@ -981,14 +981,15 @@ Point will remain at the first line after the inserted
text."
(org-capture-put :key (car entry) :description (nth 1 entry)
:target (nth 3 entry))
(let ((txt (nth 4 entry)) (type (or (nth 2 entry) 'entry)))
- (when (or (not txt) (not (string-match "\\S-" txt)))
- ;; The template may be empty or omitted for special types.
- ;; Here we insert the default templates for such cases.
- (cond
- ((eq type 'item) (setq txt "- %?"))
- ((eq type 'checkitem) (setq txt "- [ ] %?"))
- ((eq type 'table-line) (setq txt "| %? |"))
- ((member type '(nil entry)) (setq txt "* %?\n %a"))))
+ (when (or (not txt) (not (listp txt)))
+ (when (or (not txt) (not (string-match "\\S-" txt)))
+ ;; The template may be empty or omitted for special types.
+ ;; Here we insert the default templates for such cases.
+ (cond
+ ((eq type 'item) (setq txt "- %?"))
+ ((eq type 'checkitem) (setq txt "- [ ] %?"))
+ ((eq type 'table-line) (setq txt "| %? |"))
+ ((member type '(nil entry)) (setq txt "* %?\n %a")))))
(org-capture-put :template txt :type type)))
(defun org-capture-goto-target (&optional template-key)
- [Orgmode] [PATCH] org-capture - using `file' as template,
Johan Friis <=