Mercurial > hg > dotemacs
changeset 33:0479db13b7e8
Add stripes-mode
author | Jordi Gutiérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Thu, 06 Jan 2011 10:20:55 -0600 |
parents | 249fd639fea9 |
children | bc465cea7922 |
files | dotemacs.el plugins/stripes.el |
diffstat | 2 files changed, 157 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/dotemacs.el +++ b/dotemacs.el @@ -74,7 +74,8 @@ '(diff-refine-change ((((class color) (min-colors 88) (background dark)) (:background "#004090")))) '(diff-removed ((t (:foreground "red")))) '(ecb-tag-header-face ((((class color) (background dark)) (:background "DarkGreen")))) - '(show-ws-tab ((t (:background "Black"))))) + '(show-ws-tab ((t (:background "Black")))) + '(stripes-face ((t (:background "#444"))))) (add-to-list 'load-path "~/.emacs.d/plugins/")
new file mode 100644 --- /dev/null +++ b/plugins/stripes.el @@ -0,0 +1,155 @@ +;;; stripes.el --- alternate the background color of lines + +;; Copyright (C) 2003 Michael Schierl + +;; Author: Michael Schierl <schierlm-public@gmx.de> +;; Created: 02 October 2003 +;; Keywords: list alternation color +;; Version: 0.2 + +(defconst stripes-version "0.2" + "Version of color alternation mode.") + +;; This file is not part of GNU Emacs. + +;; 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 2, 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 GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; highlights every even line with an alternative background +;; color. Useful for buffers that display lists of any kind - as a +;; guide for your eyes to follow these lines. + +;; when invoked with a numeric prefix arg, color that many lines +;; instead of every other line. + +;; Put this file into your load path, +;; (require 'stripes) and do a (turn-on-stripes-mode) +;; whenever you need this (e.g. in hooks). + +;; Changelog + +; --- Version 0.2 (2003-11-01) + +;; - added autoload cookies +;; - added turn-on method (for hooks) +;; - prefix arg specifies how many lines to treat as one line +;; - renamed the file from stripes-mode.el to stripes.el to +;; make the name fit into the Emacs file naming conventions +;; - widen all restrictions when refreshing + +; --- Version 0.1 (2003-10-02) + +;;; Code: +(defvar stripes-mode nil) +(make-variable-buffer-local 'stripes-mode) + +(defvar stripes-lcount 1) +(make-variable-buffer-local 'stripes-lcount) + +(or (assq 'stripes-mode minor-mode-alist) + (setq minor-mode-alist + (cons '(stripes-mode " ==") + minor-mode-alist))) + +(defface stripes-face + `((t (:background "#f4f4f4"))) + "Face for alternate lines." + :group 'stripes) + +;;;###autoload +(defun stripes-mode (arg) + "Toggle Color alternation mode. +With prefix ARG, enable Color alternation mode iff arg is nonzero. In +that case the numeric arg (unless it is made by (multiple) +`\\[universal-argument]'s) specifies the number of subsequent lines +that should +be in one color (without alternation)." + (interactive "P") + (setq stripes-mode + (if (null arg) + (not stripes-mode) + (> (prefix-numeric-value arg) 0))) + (setq stripes-lcount + (if (numberp arg) + arg + 1)) + (force-mode-line-update) + (if stripes-mode + (stripes-create) + (stripes-remove)) + (if (interactive-p) + (if stripes-mode + (if (= stripes-lcount 1) + (message "Color alternation mode enabled") + (message "Color alternation mode (%i lines) enabled" + stripes-lcount)) + (message "Color alternation mode disabled")))) + +;;;###autoload +(defun turn-on-stripes-mode () + "Turn on color alternation mode. +Useful for adding to a major mode hook variable. +Example: + (add-hook 'gnus-summary-mode-hook 'turn-on-stripes-mode) +to automatically turn on color alternation when viewing the Gnus +article buffer." + (interactive) + (stripes-mode 1)) + +(defun stripes-remove () + "Remove all alternation colors." + (let ((oli (overlays-in (point-min) (point-max))) ol) + (while oli + (setq ol (car oli) + oli (cdr oli)) + (when (eq (overlay-get ol 'face) 'stripes-face) + (delete-overlay ol))))) + +(defun stripes-create () + "Colors lines in current buffer alternatively. +This will not monitor changes of the buffer." + (save-excursion + (save-restriction + (widen) + (stripes-remove) + (goto-char (point-min)) + (while (not (eobp)) + (forward-line stripes-lcount) + (let ((ppp (point)) + ovl) + (unless (eobp) + (forward-line stripes-lcount) + (setq ovl (make-overlay ppp (point))) + (overlay-put ovl 'face 'stripes-face))))))) + +(defun stripes-after-change-function (beg end length) + "After change function for color alternation mode. +Refreshes all the highlighting. This is slow, but as mostly lists are +not changed that often, it should be acceptable. Arguments BEG END +and LENGTH are not used." + (if stripes-mode + (stripes-create))) + +(add-hook 'after-change-functions + 'stripes-after-change-function) + +;; legacy provide (if you have installed an old version as well) +(provide 'stripes-mode) + +(provide 'stripes) + +;;; stripes.el ends here