# HG changeset patch # User Oleksandr Gavenko # Date 1320924915 -7200 # Node ID bbccd98759164a283845a9bd883379adf3a286ee # Parent a4cbbc50ee76882b328cf6cb6fa702fd6c6b5e44# Parent 9712975c42632e0a6a9fc93e6669636297611758 merged diff -r 9712975c4263 -r bbccd9875916 .emacs-my --- a/.emacs-my Wed Nov 09 10:03:47 2011 +0200 +++ b/.emacs-my Thu Nov 10 13:35:15 2011 +0200 @@ -463,8 +463,11 @@ (defvar my-scroll-margin 4) (setq-default - scroll-step 1 - scroll-conservatively my-scroll-margin + ;; Set to zero as this recomment documentation. + scroll-step 0 + ;; If the value is greater than 100, redisplay will never recenter point, but + ;; will always scroll just enough text to bring point into view + scroll-conservatively 1000 scroll-preserve-screen-position t ) @@ -1234,13 +1237,26 @@ (setq gnus-site-init-file "~/.gnus.el") ;; Store gnus specific files to '~/.gnus'. -(setq gnus-directory "~/.gnus") -(setq message-directory "~/.gnus/mail") -(setq nnml-directory "~/.gnus/nnml-mail") -(setq gnus-article-save-directory "~/.gnus/saved") -(setq gnus-kill-files-directory "~/.gnus/scores") -(setq gnus-cache-directory "~/.gnus/cache") -(setq spam-directory "~/.gnus/spam/") +(setq + gnus-directory "~/.gnus" + gnus-agent-directory "~/.gnus/agent/" + gnus-article-save-directory "~/.gnus/saved" + gnus-kill-files-directory "~/.gnus/scores" + gnus-cache-directory "~/.gnus/cache" + mail-source-directory "~/.gnus/mail" + message-directory "~/.gnus/mail" + message-auto-save-directory "~/.gnus/autosave" + ;; message-signature-directory + mailcap-download-directory "~/.gnus/mailcap" + nnml-directory "~/.gnus/nnml-mail" + spam-directory "~/.gnus/spam/" + smime-certificate-directory "~/.gnus/certs/" + nnfolder-directory "~/.gnus/archive" + nnfolder-active-file "~/.gnus/archive/active" +) + +;; Remove gnus-ignored-newsgroups to show all GMail folders. +(setq gnus-ignored-newsgroups nil) ;; (require 'spam) ;; (setq gnus-spam-process-newsgroups @@ -1290,7 +1306,7 @@ gnus-sum-thread-tree-indent " " gnus-sum-thread-tree-leaf-with-other "├► " gnus-sum-thread-tree-root "" - gnus-sum-thread-tree-single-leaf "╰► " + gnus-sum-thread-tree-single-leaf "└► " gnus-sum-thread-tree-vertical "│" )) @@ -1346,6 +1362,12 @@ ;; (add-hook 'message-sent-hook 'gnus-score-followup-article) ;; (add-hook 'message-sent-hook 'gnus-score-followup-thread) +;; (setq gnus-home-score-file +;; ;; All groups that match the regexp `"\\.emacs"' +;; '(("\\.emacs" "emacs.SCORE") +;; ;; All the comp groups in one score file +;; ("^comp" "comp.SCORE"))) + ;; (setq imap-log t) ;; (setq mail-user-agent 'mh-e-user-agent) @@ -1353,14 +1375,28 @@ ;; `gnus-score-followup-thread' ;; `gnus-score-followup-article' +(custom-set-faces '(gnus-summary-cancelled ((t (:foreground "plum" :background nil)))) ) -;; (setq gnus-use-adaptive-scoring t) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(message "bbdb") -;; (setq gnus-home-score-file -;; ;; All groups that match the regexp `"\\.emacs"' -;; '(("\\.emacs" "emacs.SCORE") -;; ;; All the comp groups in one score file -;; ("^comp" "comp.SCORE"))) +(setq + bbdb-offer-save 1 + bbdb-use-pop-up t + bbdb-electric-p t + bbdb-popup-target-lines 1 + ) + +(setq bbdb-complete-name-full-completion t) +(setq bbdb-completion-type 'primary-or-name) +(setq bbdb-complete-name-allow-cycling t) + +(setq bbdb-file "~/.gnus/bbdb") + +;; (bbdb-initialize 'gnus 'message) +;; (bbdb-insinuate-message) +;; (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (message "jabber") diff -r 9712975c4263 -r bbccd9875916 Makefile --- a/Makefile Wed Nov 09 10:03:47 2011 +0200 +++ b/Makefile Thu Nov 10 13:35:15 2011 +0200 @@ -87,6 +87,7 @@ $(EMACS) --batch \ --eval='(let ( (generated-autoload-file "~/.emacs.d/my-lisp/autoload-my.el") ) (update-directory-autoloads "~/.emacs.d/my-lisp") )' ./.emacs-autogen.sh $(HOME)/.emacs-autogen + install -m 775 stmcrblog.sh $(HOME)/usr/bin/stmcrblog .PHONY: uninstall uninstall: diff -r 9712975c4263 -r bbccd9875916 stmcrblog-mode.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stmcrblog-mode.el Thu Nov 10 13:35:15 2011 +0200 @@ -0,0 +1,116 @@ +;;; stmcrblog-mode.el --- static micro-blogging engine from Emacs + +;; Copyright (C) 2011 by Oleksandr Gavenko + +;; You can do anything with this file without any warranty. + +;; Author: Oleksandr Gavenko +;; Maintainer: Oleksandr Gavenko +;; Created: 2011-11-10 +;; Version: 0.1 +;; Keywords: blog, microblog, blogging, gtd + +;;; Commentary: +;; +;; Very pure release. + +;;; Code: + +(defconst stmcrblog-major-version 0 + "stmcrblog major version.") + +(defconst stmcrblog-minor-version 1 + "stmcrblog major version.") + +(defun stmcrblog-version (&optional here) + "Return stmcrblog version." + (interactive "P") + (let ( (version-string (format "stmcrblog %d.%d" stmcrblog-major-version stmcrblog-minor-version)) ) + (if here + (insert version-string) + (if (called-interactively-p 'interactive) + (message "%s" version-string) + 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 ( + (coding-system-for-read 'utf-8) + (coding-system-for-write 'utf-8) + 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") + )) + +;;;###autoload +(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) + ) + )) + +;;;###autoload +(defun stmcrblog-post-current-line (prefix) + "Post current line. +With prefix remove current line." + (interactive "P") + (stmcrblog-add-entry (buffer-substring-no-properties (line-beginning-position) (line-end-position))) + (when prefix + (move-beginning-of-line 1) + (kill-line) + ) + ) + +(provide 'stmcrblog-mode) + +;;; stmcrblog-mode.el ends here diff -r 9712975c4263 -r bbccd9875916 stmcrblog.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stmcrblog.sh Thu Nov 10 13:35:15 2011 +0200 @@ -0,0 +1,44 @@ +#!/bin/bash + +# Example of this script using: +# (defun my-stmcrblog-after-add-entry-hook () +# (shell-command (concat "stmcrblog " stmcrblog-file " /srv/www/htdocs/jobdoneblog.html")) +# ) +# (add-hook 'stmcrblog-after-add-entry-hook 'my-stmcrblog-after-add-entry-hook) +# (global-set-key (kbd "C-c y") 'stmcrblog-post-current-line) + +in=$1 +out=$2 + +if [[ ! -f $in ]]; then + echo Input file not found. + exit 1 +fi +if [[ -z $out ]]; then + echo I don\'t know where is output file... + exit 1 +fi + +{ + echo '' + echo '' + echo ' ' + echo ' Job done blog.' + echo '' + echo '' + echo '

Job done blog.

' + + echo '
    ' + + sed -e 's|^\([[:digit:]-]\+\) \([[:digit:]:]\+\) \(.*\)|
  • \1 \2 \3
  • |' + + echo '
' + + echo '
' + echo ' Oleksandr Gavenko' + echo '
' + echo '' + echo '' + +} <$in >$out +