Allow post to file. Provide hook to render and publish file.
--- 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