Allow post to file. Provide hook to render and publish file.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Thu, 10 Nov 2011 11:40:58 +0200
changeset 811 336ca7359658
parent 810 4c2010d424ed
child 812 2a406d085196
Allow post to file. Provide hook to render and publish file.
stmcrblog-mode.el
--- a/stmcrblog-mode.el	Thu Nov 10 10:29:44 2011 +0200
+++ b/stmcrblog-mode.el	Thu Nov 10 11:40:58 2011 +0200
@@ -33,6 +33,67 @@
         version-string))
     ))
 
+(defvar stmcrblog-file "~/.stmcrblog"
+  "Blog entries storage file name.")
+
+(defvar stmcrblog-after-add-entry-hook nil
+  "`stmcrblog-after-add-entry-hook' called after adding entries.
+You can use this hook to render and publish `stmcrblog-file'.")
+
+(defun stmcrblog-add-entry (msg)
+  "Add post to blog.
+Automatically set time to current value. Only first line of MSG
+was added.
+
+`stmcrblog-after-add-entry-hook' called after adding entries. You
+can use this hook to render and publish `stmcrblog-file'."
+  (let (pos)
+    (setq pos (string-match "\n" msg))
+    (when pos
+      (setq msg (substring msg 0 pos)))
+    (save-excursion ;save-window-excursion
+      (find-file stmcrblog-file)
+      (beginning-of-buffer)
+      (insert
+       (format-time-string "%Y-%m-%d %H:%M" (current-time))
+       " "
+       msg
+       "\n")
+      (save-buffer)
+      (kill-buffer)
+      )
+    (run-hooks 'stmcrblog-after-add-entry-hook)
+    ))
+
+(defvar stmcrblog-buffer-name "*stmcrblog-entry*"
+  "`stmcrblog' buffer name for composing editing message")
+
+(defun stmcrblog-post-edit (&optional msg)
+  (let (
+        (buffer (get-buffer-create stmcrblog-buffer-name))
+        (current-buffer (current-buffer))
+        )
+    (switch-to-buffer buffer)
+    (local-key-binding )
+    (kill-buffer buffer)
+    (error "not-implemented")
+    ))
+
+(defun stmcrblog-post (&optional prefix start end)
+  "Post entry.
+Interactively, in Transient Mark mode when the mark is active,
+operate on the contents of the region. Otherwise, open
+`stmcrblog-buffer-name' buffer for message editing."
+  (interactive "P\nr")
+  (let ( msg )
+    (when (and (called-interactively-p 'interactive) transient-mark-mode mark-active)
+      (setq msg (buffer-substring-no-properties start end))
+      )
+    (if msg
+        (stmcrblog-add-entry msg)
+      )
+  ))
+
 (provide 'stmcrblog-mode)
 
 ;;; stmcrblog-mode.el ends here