author | Oleksandr Gavenko <gavenkoa@gmail.com> |
Thu, 10 Nov 2011 13:32:26 +0200 | |
changeset 816 | ad19fb10943e |
parent 815 | d4bdfd8b5fc9 |
child 827 | 8a775af1d487 |
permissions | -rwxr-xr-x |
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
1 |
;;; stmcrblog-mode.el --- static micro-blogging engine from Emacs |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
2 |
|
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
3 |
;; Copyright (C) 2011 by Oleksandr Gavenko <gavenkoa@gmail.com> |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
4 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
5 |
;; You can do anything with this file without any warranty. |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
6 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
7 |
;; Author: Oleksandr Gavenko <gavenkoa@gmail.com> |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
8 |
;; Maintainer: Oleksandr Gavenko <gavenkoa@gmail.com> |
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
9 |
;; Created: 2011-11-10 |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
10 |
;; Version: 0.1 |
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
11 |
;; Keywords: blog, microblog, blogging, gtd |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
12 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
13 |
;;; Commentary: |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
14 |
;; |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
15 |
;; Very pure release. |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
16 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
17 |
;;; Code: |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
18 |
|
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
19 |
(defconst stmcrblog-major-version 0 |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
20 |
"stmcrblog major version.") |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
21 |
|
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
22 |
(defconst stmcrblog-minor-version 1 |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
23 |
"stmcrblog major version.") |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
24 |
|
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
25 |
(defun stmcrblog-version (&optional here) |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
26 |
"Return stmcrblog version." |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
27 |
(interactive "P") |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
28 |
(let ( (version-string (format "stmcrblog %d.%d" stmcrblog-major-version stmcrblog-minor-version)) ) |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
29 |
(if here |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
30 |
(insert version-string) |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
31 |
(if (called-interactively-p 'interactive) |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
32 |
(message "%s" version-string) |
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
33 |
version-string)) |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
34 |
)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
35 |
|
811
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
36 |
(defvar stmcrblog-file "~/.stmcrblog" |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
37 |
"Blog entries storage file name.") |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
38 |
|
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
39 |
(defvar stmcrblog-after-add-entry-hook nil |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
40 |
"`stmcrblog-after-add-entry-hook' called after adding entries. |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
41 |
You can use this hook to render and publish `stmcrblog-file'.") |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
42 |
|
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
43 |
(defun stmcrblog-add-entry (msg) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
44 |
"Add post to blog. |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
45 |
Automatically set time to current value. Only first line of MSG |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
46 |
was added. |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
47 |
|
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
48 |
`stmcrblog-after-add-entry-hook' called after adding entries. You |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
49 |
can use this hook to render and publish `stmcrblog-file'." |
812
2a406d085196
Set coding system for blog storage to utf-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
811
diff
changeset
|
50 |
(let ( |
2a406d085196
Set coding system for blog storage to utf-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
811
diff
changeset
|
51 |
(coding-system-for-read 'utf-8) |
2a406d085196
Set coding system for blog storage to utf-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
811
diff
changeset
|
52 |
(coding-system-for-write 'utf-8) |
2a406d085196
Set coding system for blog storage to utf-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
811
diff
changeset
|
53 |
pos |
2a406d085196
Set coding system for blog storage to utf-8.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
811
diff
changeset
|
54 |
) |
811
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
55 |
(setq pos (string-match "\n" msg)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
56 |
(when pos |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
57 |
(setq msg (substring msg 0 pos))) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
58 |
(save-excursion ;save-window-excursion |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
59 |
(find-file stmcrblog-file) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
60 |
(beginning-of-buffer) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
61 |
(insert |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
62 |
(format-time-string "%Y-%m-%d %H:%M" (current-time)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
63 |
" " |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
64 |
msg |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
65 |
"\n") |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
66 |
(save-buffer) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
67 |
(kill-buffer) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
68 |
) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
69 |
(run-hooks 'stmcrblog-after-add-entry-hook) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
70 |
)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
71 |
|
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
72 |
(defvar stmcrblog-buffer-name "*stmcrblog-entry*" |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
73 |
"`stmcrblog' buffer name for composing editing message") |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
74 |
|
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
75 |
(defun stmcrblog-post-edit (&optional msg) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
76 |
(let ( |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
77 |
(buffer (get-buffer-create stmcrblog-buffer-name)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
78 |
(current-buffer (current-buffer)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
79 |
) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
80 |
(switch-to-buffer buffer) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
81 |
(local-key-binding ) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
82 |
(kill-buffer buffer) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
83 |
(error "not-implemented") |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
84 |
)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
85 |
|
813
cd42d50dcef0
Add 'autoload's for stmcrblog mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
812
diff
changeset
|
86 |
;;;###autoload |
811
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
87 |
(defun stmcrblog-post (&optional prefix start end) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
88 |
"Post entry. |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
89 |
Interactively, in Transient Mark mode when the mark is active, |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
90 |
operate on the contents of the region. Otherwise, open |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
91 |
`stmcrblog-buffer-name' buffer for message editing." |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
92 |
(interactive "P\nr") |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
93 |
(let ( msg ) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
94 |
(when (and (called-interactively-p 'interactive) transient-mark-mode mark-active) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
95 |
(setq msg (buffer-substring-no-properties start end)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
96 |
) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
97 |
(if msg |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
98 |
(stmcrblog-add-entry msg) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
99 |
) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
100 |
)) |
336ca7359658
Allow post to file. Provide hook to render and publish file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
810
diff
changeset
|
101 |
|
814
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
102 |
;;;###autoload |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
103 |
(defun stmcrblog-post-current-line (prefix) |
815 | 104 |
"Post current line. |
105 |
With prefix remove current line." |
|
814
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
106 |
(interactive "P") |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
107 |
(stmcrblog-add-entry (buffer-substring-no-properties (line-beginning-position) (line-end-position))) |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
108 |
(when prefix |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
109 |
(move-beginning-of-line 1) |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
110 |
(kill-line) |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
111 |
) |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
112 |
) |
91b9a35fc284
Add post current line function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
813
diff
changeset
|
113 |
|
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
114 |
(provide 'stmcrblog-mode) |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
115 |
|
810
4c2010d424ed
Add base 'stmcrblog' mode code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
572
diff
changeset
|
116 |
;;; stmcrblog-mode.el ends here |