X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/92373b84792d665bc673763142415c439dd027d5..11d300dba0c28dad55a14b42b96d7aee32f5bd5d:/lisp/tempo.el diff --git a/lisp/tempo.el b/lisp/tempo.el index 4c04f51f60..4c58a4bca9 100644 --- a/lisp/tempo.el +++ b/lisp/tempo.el @@ -1,7 +1,8 @@ ;;; tempo.el --- Flexible template insertion + ;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. -;; Author: David K}gedal +;; Author: David K}gedal ;; Created: 16 Feb 1994 ;; K}gedal's last version number: 1.2.4 ;; Keywords: extensions, languages, tools @@ -19,8 +20,9 @@ ;; 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, 675 Mass Ave, Cambridge, MA 02139, USA. +;; 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: @@ -50,7 +52,7 @@ ;; a non-nil argument). ;; More flexible templates can be created by including lisp symbols, -;; which will be evaluated as variables, or lists, which will will be +;; which will be evaluated as variables, or lists, which will be ;; evaluated as lisp expressions. ;; See the documentation for tempo-define-template for the different @@ -99,36 +101,47 @@ ;; tempo.el. Thanks. ;; Nelson Minar -;; Richard Stallman +;; Richard Stallman ;; Lars Lindberg ;; Glen Whitney ;;; Code: -;; (provide 'tempo) - ;;; User options -(defvar tempo-interactive nil +(defgroup tempo nil + "Flexible template insertion." + :prefix "tempo-" + :group 'tools) + +(defcustom tempo-interactive nil "*Prompt user for strings in templates. If this variable is non-nil, `tempo-insert' prompts the -user for text to insert in the templates") +user for text to insert in the templates" + :type 'boolean + :group 'tempo) -(defvar tempo-insert-region nil +(defcustom tempo-insert-region nil "*Automatically insert current region when there is a `r' in the template -If this variable is NIL, `r' elements will be treated just like `p' +If this variable is nil, `r' elements will be treated just like `p' elements, unless the template function is given a prefix (or a non-nil -argument). If this variable is non-NIL, the behaviour is reversed. +argument). If this variable is non-nil, the behaviour is reversed. -In Transient Mark mode, this option is unused.") +In Transient Mark mode, this option is unused." + :type 'boolean + :group 'tempo) -(defvar tempo-show-completion-buffer t - "*If non-NIL, show a buffer with possible completions, when only -a partial completion can be found") +(defcustom tempo-show-completion-buffer t + "*If non-nil, show a buffer with possible completions, when only +a partial completion can be found" + :type 'boolean + :group 'tempo) -(defvar tempo-leave-completion-buffer nil - "*If NIL, a completion buffer generated by \\[tempo-complete-tag] -disappears at the next keypress; otherwise, it remains forever.") +(defcustom tempo-leave-completion-buffer nil + "*If nil, a completion buffer generated by \\[tempo-complete-tag] +disappears at the next keypress; otherwise, it remains forever." + :type 'boolean + :group 'tempo) ;;; Internal variables @@ -182,16 +195,16 @@ should be replaced with a template.") "Element handlers for user-defined elements. A list of symbols which are bound to functions that take one argument. This function should return something to be sent to `tempo-insert' if -it recognizes the argument, and NIL otherwise") +it recognizes the argument, and nil otherwise.") (defvar tempo-named-insertions nil - "Temporary storage for named insertions") + "Temporary storage for named insertions.") (defvar tempo-region-start (make-marker) - "Region start when inserting around the region") + "Region start when inserting around the region.") (defvar tempo-region-stop (make-marker) - "Region stop when inserting around the region") + "Region stop when inserting around the region.") ;; Make some variables local to every buffer @@ -203,23 +216,6 @@ it recognizes the argument, and NIL otherwise") ;;; Functions -;;; First some useful functions and macros - -(defun tempo-mapc (fun lst) - (if (null lst) nil - (funcall fun (car lst)) - (tempo-mapc fun (cdr lst)))) - -(defmacro tempo-dolist (il &rest forms) - (let ((i (car il)) - (l (car (cdr il)))) - (list 'tempo-mapc - (list 'function (append (list 'lambda - (list i)) - forms)) - l))) -(put 'tempo-dolist 'lisp-indent-function 1) - ;; ;; tempo-define-template @@ -244,7 +240,7 @@ The elements in ELEMENTS can be of several types: - The symbol 'r. If `tempo-insert' is called with ON-REGION non-nil the current region is placed here. Otherwise it works like 'p. - (p PROMPT ) If `tempo-interactive' is non-nil, the - user is prompted in the minbuffer with PROMPT for a string to be + user is prompted in the minibuffer with PROMPT for a string to be inserted. If the optional parameter NAME is non-nil, the text is saved for later insertion with the `s' tag. If there already is something saved under NAME that value is used instead and no @@ -406,7 +402,7 @@ possible." "Compatibility hack for tempo-insert-prompt. PROMPT can be either a prompt string, or a list of arguments to tempo-insert-prompt, or nil." - (if (consp prompt) ; not NIL either + (if (consp prompt) ; not nil either (apply 'tempo-insert-prompt prompt) (tempo-insert-prompt prompt))) @@ -524,7 +520,7 @@ and insert the results." (setq string (funcall tempo-insert-string-functions string))) ((listp tempo-insert-string-functions) - (tempo-dolist (fn tempo-insert-string-functions) + (dolist (fn tempo-insert-string-functions) (setq string (funcall fn string)))) (t (error "Bogus value in tempo-insert-string-functions: %s" @@ -632,7 +628,7 @@ Whenever it is needed again it will be rebuilt." (defun tempo-build-collection () "Build a collection of all the tags and return it. -If `tempo-dirty-collection' is NIL, the old collection is reused." +If `tempo-dirty-collection' is nil, the old collection is reused." (prog1 (or (and (not tempo-dirty-collection) tempo-collection) @@ -683,10 +679,10 @@ If a single match is found, the corresponding template is expanded in place of the matching string. If a partial completion or no match at all is found, and SILENT is -non-NIL, the function will give a signal. +non-nil, the function will give a signal. If a partial completion is found and `tempo-show-completion-buffer' is -non-NIL, a buffer containing possible completions is displayed." +non-nil, a buffer containing possible completions is displayed." ;; This function may look like a hack, but this is how I want it to ;; work. @@ -739,7 +735,7 @@ Returns non-nil if an expansion was made and nil otherwise. This could as an example be used in a command that is bound to the space bar, and looks something like this: -(defun tempo-space () +\(defun tempo-space () (interactive \"*\") (or (tempo-expand-if-complete) (insert \" \")))"