X-Git-Url: https://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgmm-utils.el;h=640eb50a0229d76adf74838f8f1bdad08b1846c4;hp=e773aa3bfac5f9570e5dca8e4bc4976c777d1f08;hb=e200fdc58ef97f1b02534d49a588c5721101b696;hpb=6521550be336e0c352246b543479630a486e289a diff --git a/lisp/gmm-utils.el b/lisp/gmm-utils.el index e773aa3bf..640eb50a0 100644 --- a/lisp/gmm-utils.el +++ b/lisp/gmm-utils.el @@ -1,39 +1,35 @@ ;;; gmm-utils.el --- Utility functions for Gnus, Message and MML -;; Copyright (C) 2006 Free Software Foundation, Inc. +;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Keywords: news ;; 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., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: ;; This library provides self-contained utility functions. The functions are ;; used in Gnus, Message and MML, but within this library there are no -;; dependencies on Gnus, Message, or MML or Gnus. +;; dependencies on Gnus, Message, or MML. ;;; Code: -(require 'wid-edit) - (defgroup gmm nil - "Utility functions for Gnus, Message and MML" + "Utility functions for Gnus, Message and MML." :prefix "gmm-" :version "22.1" ;; Gnus 5.10.9 :group 'lisp) @@ -43,20 +39,35 @@ (defcustom gmm-verbose 7 "Integer that says how verbose gmm should be. The higher the number, the more messages will flash to say what -it done. At zero, it will be totally mute; at five, it will +it did. At zero, it will be totally mute; at five, it will display most important messages; and at ten, it will keep on jabbering all the time." :type 'integer :group 'gmm) +;;;###autoload +(defun gmm-regexp-concat (regexp) + "Potentially concat a list of regexps into a single one. +The concatenation is done with logical ORs." + (cond ((null regexp) + nil) + ((stringp regexp) + regexp) + ((listp regexp) + (mapconcat (lambda (elt) (concat "\\(" elt "\\)")) + regexp + "\\|")))) + ;;;###autoload (defun gmm-message (level &rest args) "If LEVEL is lower than `gmm-verbose' print ARGS using `message'. Guideline for numbers: -1 - error messages, 3 - non-serious error messages, 5 - messages for things -that take a long time, 7 - not very important messages on stuff, 9 - messages -inside loops." +1 - error messages +3 - non-serious error messages +5 - messages for things that take a long time +7 - not very important messages on stuff +9 - messages inside loops." (if (<= level gmm-verbose) (apply 'message args) ;; We have to do this format thingy here even if the result isn't @@ -79,14 +90,18 @@ ARGS are passed to `message'." ;;;###autoload (defun gmm-widget-p (symbol) - "Non-nil iff SYMBOL is a widget." + "Non-nil if SYMBOL is a widget." (get symbol 'widget-type)) +(autoload 'widget-create-child-value "wid-edit") +(autoload 'widget-convert "wid-edit") +(autoload 'widget-default-get "wid-edit") + ;; Copy of the `nnmail-lazy' code from `nnmail.el': (define-widget 'gmm-lazy 'default "Base widget for recursive datastructures. -This is copy of the `lazy' widget in Emacs 22.1 provided for compatibility." +This is a copy of the `lazy' widget in Emacs 22.1 provided for compatibility." :format "%{%t%}: %v" :convert-widget 'widget-value-convert-widget :value-create (lambda (widget) @@ -203,8 +218,8 @@ This is copy of the `lazy' widget in Emacs 22.1 provided for compatibility." 'gnome 'retro) "Prefered tool bar style." - :type '(choice (const :tag "GNOME style" 'gnome) - (const :tag "Retro look" 'retro)) + :type '(choice (const :tag "GNOME style" gnome) + (const :tag "Retro look" retro)) :group 'gmm) (defvar tool-bar-map) @@ -217,7 +232,7 @@ Within each entry of ICON-LIST, the first element is a menu command, the second element is an icon file name and the third element is a test function. You can use \\[describe-key] to find out the name of a menu command. The fourth -and all following elements are passed a the PROPS argument to the +and all following elements are passed as the PROPS argument to the function `tool-bar-local-item'. If ZAP-LIST is a list, remove those item from the default @@ -308,11 +323,11 @@ in \"`data-directory'/images\". Then this function returns a list of directories which contains first the directory in which IMAGE was found, followed by the -value of `load-path'. If PATH is given, it is used instead of +value of `load-path'. If PATH is given, it is used instead of `load-path'. If NO-ERROR is non-nil and a suitable path can't be found, don't -signal an error. Instead, return a list of directories as before, +signal an error. Instead, return a list of directories as before, except that nil appears in place of the image directory. Here is an example that uses a common idiom to provide @@ -349,7 +364,7 @@ compatibility with versions of Emacs that lack the variable (setq image-directory-load-path dir)) ;; If `image-directory-load-path' isn't Emacs' image directory, - ;; it's probably a user preference, so use it. Then use a + ;; it's probably a user preference, so use it. Then use a ;; relative setting if possible; otherwise, use ;; `image-directory-load-path'. (cond @@ -393,7 +408,7 @@ compatibility with versions of Emacs that lack the variable (defun gmm-customize-mode (&optional mode) "Customize customization group for MODE. -If mode is nil, use `major-mode' of the curent buffer." +If mode is nil, use `major-mode' of the current buffer." (interactive) (customize-group (or mode @@ -401,6 +416,21 @@ If mode is nil, use `major-mode' of the curent buffer." (string-match "^\\(.+\\)-mode$" mode) (match-string 1 mode)))))) +(defun gmm-write-region (start end filename &optional append visit + lockname mustbenew) + "Compatibility function for `write-region'. + +In XEmacs, the seventh argument of `write-region' specifies the +coding-system." + (if (and mustbenew + (or (featurep 'xemacs) + (= emacs-major-version 20))) + (if (file-exists-p filename) + (signal 'file-already-exists + (list "File exists" filename)) + (write-region start end filename append visit lockname)) + (write-region start end filename append visit lockname mustbenew))) + (provide 'gmm-utils) ;; arch-tag: e0b60920-2ce6-40c1-bfc0-cadbbe26b602