;; -*- mode: Emacs-Lisp; mode: rainbow; -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This program is free software; you can redistribute it and/or ;;
;; modify it under the terms of the GNU General Public License as ;;
;; published by the Free Software Foundation; either version 3, or (at ;;
;; your option) any later version. ;;
;; ;;
;; This program is distributed in the hope that it will be useful, but ;;
;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;
;; General Public License for more details. ;;
;; ;;
;; You should have received a copy of the GNU General Public License ;;
;; along with this program. If not, see . ;;
;; ;;
;; Written by and Copyright (C) Francois Fleuret ;;
;; Contact for comments & bug reports ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This script automatigally count the number of characters and words
;; between "----" markers. To activate it automatically when switching
;; to text-mode, just add to your emacs.el
;;
;; (add-hook 'text-mode-hook 'tc/add-text-counters-in-modeline)
(defface tc/modeline-face
'((((background light)) (:foreground "blue4"))
(((background dark)) (:foreground "cyan")))
"The face for the alarm-vc modeline message.")
;; Counts the number of words and characters between the previous and
;; the next line of '-' (with at least four '-' in each line)
(defun tc/text-counters-string () (interactive)
(let ((a (save-excursion
(and (re-search-backward "^--.*--*$" nil t)
(match-end 0))))
(b (save-excursion
(and (re-search-forward "^--.*--*$" nil t)
(match-beginning 0)))))
(when (and a b)
(propertize (format "%dw %dc " (count-words a b) (- b a))
'face 'tc/modeline-face)
)))
;; Add the said counters into the modeline
(defun tc/add-text-counters-in-modeline () (interactive)
(add-to-list 'mode-line-buffer-identification '(:eval (tc/text-counters-string)))
)