aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scrumelo.el39
1 files changed, 21 insertions, 18 deletions
diff --git a/scrumelo.el b/scrumelo.el
index a6212c2..54c15bd 100644
--- a/scrumelo.el
+++ b/scrumelo.el
@@ -57,6 +57,12 @@
params))
,@body))
+(defmacro with-scrumelo-buffer (&rest body)
+ "Set the current buffer to `scrumelo-project-file' and run BODY."
+ (declare (indent 0))
+ `(with-current-buffer (find-file-noselect scrumelo-project-file)
+ ,@body))
+
(defun scrumelo--css (href)
"Return a link pointing to HREF."
`(link (@ (href ,href) (rel "stylesheet") (type "text/css"))))
@@ -100,14 +106,13 @@
"Parse data from HTTPCON and write a new scrum story using it."
(elnode-method httpcon
(POST
- (let ((buffer (find-file-noselect scrumelo-project-file)))
- (with-scrumelo-http-params (role necessity headline) httpcon
- (with-current-buffer buffer
- (goto-char (point-max))
- (insert "\n* TODO " headline)
- (org-set-property "Role" role)
- (org-set-property "Necessity" necessity)
- (save-buffer))))
+ (with-scrumelo-http-params (role necessity headline) httpcon
+ (with-scrumelo-buffer
+ (goto-char (point-max))
+ (insert "\n* TODO " headline)
+ (org-set-property "Role" role)
+ (org-set-property "Necessity" necessity)
+ (save-buffer)))
(elnode-send-redirect httpcon "/"))))
(defun scrumelo--send-json (httpcon obj)
@@ -118,9 +123,8 @@
(defun scrumelo-story-json (httpcon)
"Repsond to HTTPCON with some json info about a story."
(let* ((story (match-string 1 (elnode-http-mapping httpcon)))
- (buffer (find-file-noselect scrumelo-project-file))
(entry (cdr (org-id-find story))))
- (with-current-buffer buffer
+ (with-scrumelo-buffer
(goto-char entry)
(scrumelo--send-json
httpcon (list (cons 'Assignee (org-entry-get (point) "Assignee"))
@@ -140,14 +144,13 @@
(defun scrumelo-main-json (request)
"Respond to REQUEST with the json info for the main page."
- (let ((buffer (find-file-noselect scrumelo-project-file)))
- (with-current-buffer buffer
- (scrumelo--send-json
- request (cl-map 'vector #'identity
- (delq nil
- (org-map-entries
- #'scrumelo--org-entry-to-list
- nil nil 'comment)))))))
+ (with-scrumelo-buffer
+ (scrumelo--send-json
+ request (cl-map 'vector #'identity
+ (delq nil
+ (org-map-entries
+ #'scrumelo--org-entry-to-list
+ nil nil 'comment))))))
(defun scrumelo-handler (httpcon)
"Send the right requests in HTTPCON to the right functions."