summaryrefslogtreecommitdiffstats
path: root/.emacs.d/site-lisp/eltuki.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/site-lisp/eltuki.el')
-rw-r--r--.emacs.d/site-lisp/eltuki.el52
1 files changed, 43 insertions, 9 deletions
diff --git a/.emacs.d/site-lisp/eltuki.el b/.emacs.d/site-lisp/eltuki.el
index 4815108..224e9ab 100644
--- a/.emacs.d/site-lisp/eltuki.el
+++ b/.emacs.d/site-lisp/eltuki.el
@@ -46,10 +46,20 @@
:group 'eltuki
:type 'string)
+(define-skeleton eltuki-post
+ "Create a post template for eltuki."
+ ""
+ "#+TITLE: " (skeleton-read "Title: ") "\n"
+ "#+TIMESTAMP: \n"
+ "#+TAGS: " (skeleton-read "Tags (comma separated): ") "\n"
+ "\n"
+ _)
+
(defun eltuki-new-post ()
(interactive)
(switch-to-buffer (get-buffer-create "*eltuki*"))
- (org-mode))
+ (org-mode)
+ (eltuki-post))
(defun eltuki-get-title ()
(save-excursion
@@ -163,9 +173,13 @@
(eltuki-slugify-string (eltuki-get-title))))
(defun eltuki-write-content (dir)
- (with-current-buffer (org-export-region-as-html
- (point-min) (point-max) t "*eltuki-html*")
- (write-region (point-min) (point-max) (concat dir "/content"))))
+ (let ((org-export-with-toc nil)
+ (filename (concat dir "/content")))
+ (with-current-buffer (org-export-region-as-html
+ (point-min) (point-max) t "*eltuki-html*")
+ (write-region (point-min) (point-max) filename)
+ (kill-buffer))
+ filename))
(defun eltuki-write-metadata (dir)
(let ((timestamp (eltuki-get-timestamp))
@@ -173,7 +187,8 @@
(status (eltuki-get-status))
(title (eltuki-get-title))
(name (eltuki-slugify-string (eltuki-get-title)))
- (commentstatus (eltuki-get-comment-status)))
+ (commentstatus (eltuki-get-comment-status))
+ (filename (concat dir "/metadata")))
(with-temp-buffer
(insert "timestamp: " timestamp "\n"
"tags: " tags "\n"
@@ -181,17 +196,36 @@
"title: " title "\n"
"name: " name "\n"
"comment_status: " commentstatus)
- (write-region (point-min) (point-max) (concat dir "/metadata")))))
+ (write-region (point-min) (point-max) filename))
+ filename))
+
+(defun eltuki-save-org (buffer dir)
+ (let ((filename (concat dir "/post.org")))
+ (with-current-buffer buffer
+ (write-file filename))
+ filename))
+
+(defun eltuki-git-add (file)
+ (shell-command (concat "cd " eltuki-blog-dir "; git add '" (expand-file-name file) "'")))
+
+(defun eltuki-commit ()
+ (shell-command (concat "cd " eltuki-blog-dir "; git commit -m \"new post: \\\"" (eltuki-get-title)
+ "\\\"\"")))
(defun eltuki-finish ()
(interactive)
- (let ((buffer (get-buffer "*eltuki*"))
+ (let ((buffer (or (get-buffer "*eltuki*")
+ (current-buffer)))
(dest (eltuki-get-directory)))
(unless (file-exists-p dest)
(mkdir dest))
- (eltuki-write-content dest)
- (eltuki-write-metadata dest)
+ (mapc #'eltuki-git-add
+ (list (eltuki-write-content dest)
+ (eltuki-write-metadata dest)
+ (eltuki-save-org buffer dest)))
+
+ (eltuki-commit)
(kill-buffer buffer)))
(provide 'eltuki)