X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fsieve-mode.el;h=78927009fc6f61216d8d79e2a301f014cd89cf6b;hb=4d483be7c75f8b4b53f4dc651191b80e37702bd2;hp=3b461e19af5070a3a719f1001220f933e0e849d0;hpb=74b3d8c1c16d0f18e5213d097f79232ebf4aeb1a;p=gnus diff --git a/lisp/sieve-mode.el b/lisp/sieve-mode.el index 3b461e19a..78927009f 100644 --- a/lisp/sieve-mode.el +++ b/lisp/sieve-mode.el @@ -1,24 +1,24 @@ ;;; sieve-mode.el --- Sieve code editing commands for Emacs -;; Copyright (C) 2001 Free Software Foundation, Inc. + +;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +;; 2010 Free Software Foundation, Inc. ;; Author: Simon Josefsson -;; This file is not part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs 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. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs 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 +;; 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. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -44,14 +44,11 @@ ;; version 1.1 change file extension into ".siv" (official one) ;; added keymap and menubar to hook into sieve-manage ;; 2001-10-31 version 1.2 committed to Oort Gnus -;; -;; $Id: sieve-mode.el,v 1.7 2001/03/07 17:47:23 jas Exp $ ;;; Code: -(autoload 'sieve-manage "sieve-manage") -(autoload 'sieve-upload "sieve-manage") -(require 'easymenu) +(autoload 'sieve-manage "sieve") +(autoload 'sieve-upload "sieve") (eval-when-compile (require 'font-lock)) @@ -66,20 +63,86 @@ ;; Font-lock +(defvar sieve-control-commands-face 'sieve-control-commands + "Face name used for Sieve Control Commands.") + +(defface sieve-control-commands + '((((type tty) (class color)) (:foreground "blue" :weight light)) + (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) + (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) + (((class color) (background light)) (:foreground "Orchid")) + (((class color) (background dark)) (:foreground "LightSteelBlue")) + (t (:bold t))) + "Face used for Sieve Control Commands." + :group 'sieve) +;; backward-compatibility alias +(put 'sieve-control-commands-face 'face-alias 'sieve-control-commands) +(put 'sieve-control-commands-face 'obsolete-face "22.1") + +(defvar sieve-action-commands-face 'sieve-action-commands + "Face name used for Sieve Action Commands.") + +(defface sieve-action-commands + '((((type tty) (class color)) (:foreground "blue" :weight bold)) + (((class color) (background light)) (:foreground "Blue")) + (((class color) (background dark)) (:foreground "LightSkyBlue")) + (t (:inverse-video t :bold t))) + "Face used for Sieve Action Commands." + :group 'sieve) +;; backward-compatibility alias +(put 'sieve-action-commands-face 'face-alias 'sieve-action-commands) +(put 'sieve-action-commands-face 'obsolete-face "22.1") + +(defvar sieve-test-commands-face 'sieve-test-commands + "Face name used for Sieve Test Commands.") + +(defface sieve-test-commands + '((((type tty) (class color)) (:foreground "magenta")) + (((class grayscale) (background light)) + (:foreground "LightGray" :bold t :underline t)) + (((class grayscale) (background dark)) + (:foreground "Gray50" :bold t :underline t)) + (((class color) (background light)) (:foreground "CadetBlue")) + (((class color) (background dark)) (:foreground "Aquamarine")) + (t (:bold t :underline t))) + "Face used for Sieve Test Commands." + :group 'sieve) +;; backward-compatibility alias +(put 'sieve-test-commands-face 'face-alias 'sieve-test-commands) +(put 'sieve-test-commands-face 'obsolete-face "22.1") + +(defvar sieve-tagged-arguments-face 'sieve-tagged-arguments + "Face name used for Sieve Tagged Arguments.") + +(defface sieve-tagged-arguments + '((((type tty) (class color)) (:foreground "cyan" :weight bold)) + (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) + (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) + (((class color) (background light)) (:foreground "Purple")) + (((class color) (background dark)) (:foreground "Cyan")) + (t (:bold t))) + "Face used for Sieve Tagged Arguments." + :group 'sieve) +;; backward-compatibility alias +(put 'sieve-tagged-arguments-face 'face-alias 'sieve-tagged-arguments) +(put 'sieve-tagged-arguments-face 'obsolete-face "22.1") + + (defconst sieve-font-lock-keywords (eval-when-compile (list ;; control commands (cons (regexp-opt '("require" "if" "else" "elsif" "stop")) - 'font-lock-keyword-face) + 'sieve-control-commands-face) ;; action commands (cons (regexp-opt '("fileinto" "redirect" "reject" "keep" "discard")) - 'font-lock-keyword-face) + 'sieve-action-commands-face) ;; test commands (cons (regexp-opt '("address" "allof" "anyof" "exists" "false" "true" "header" "not" "size" "envelope")) - 'font-lock-builtin-face) - (cons "\\Sw+:\\sw+" 'font-lock-constant-face)))) + 'sieve-test-commands-face) + (cons "\\Sw+:\\sw+" + 'sieve-tagged-arguments-face)))) ;; Syntax table @@ -108,9 +171,10 @@ ;; Key map definition -(defvar sieve-mode-map +(defvar sieve-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-c\C-l" 'sieve-upload) + (define-key map "\C-c\C-c" 'sieve-upload-and-bury) (define-key map "\C-c\C-m" 'sieve-manage) map) "Key map used in sieve mode.") @@ -121,6 +185,7 @@ "Menubar used in sieve mode.") ;; Code for Sieve editing mode. +(autoload 'easy-menu-add-item "easymenu") ;;;###autoload (define-derived-mode sieve-mode c-mode "Sieve" @@ -136,8 +201,9 @@ Turning on Sieve mode runs `sieve-mode-hook'." (set (make-local-variable 'comment-end) "") ;;(set (make-local-variable 'comment-start-skip) "\\(^\\|\\s-\\);?#+ *") (set (make-local-variable 'comment-start-skip) "#+ *") - (set (make-local-variable 'font-lock-defaults) - '(sieve-font-lock-keywords nil nil ((?_ . "w")))) + (unless (featurep 'xemacs) + (set (make-local-variable 'font-lock-defaults) + '(sieve-font-lock-keywords nil nil ((?_ . "w"))))) (easy-menu-add-item nil nil sieve-mode-menu)) ;; Menu