# HG changeset patch # User Oleksandr Gavenko # Date 1320918058 -7200 # Node ID 336ca735965840d5c4a33f7be0181c264a998c86 # Parent 4c2010d424edc30569cd5b305c8021031dc3386b Allow post to file. Provide hook to render and publish file. diff -r 4c2010d424ed -r 336ca7359658 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