Mercurial > hg > xemacs-beta
diff lisp/ilisp/ilisp-cpat.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | b82b59fe008d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/ilisp/ilisp-cpat.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,127 @@ +;;; -*- Mode: Emacs-Lisp -*- + +;;; ilisp-cpat.el -- + +;;; This file is part of ILISP. +;;; Version: 5.7 +;;; +;;; Copyright (C) 1990, 1991, 1992, 1993 Chris McConnell +;;; 1993, 1994 Ivan Vasquez +;;; 1994, 1995 Marco Antoniotti and Rick Busdiecker +;;; +;;; Other authors' names for which this Copyright notice also holds +;;; may appear later in this file. +;;; +;;; Send mail to 'ilisp-request@lehman.com' to be included in the +;;; ILISP mailing list. 'ilisp@lehman.com' is the general ILISP +;;; mailing list were bugs and improvements are discussed. +;;; +;;; ILISP is freely redistributable under the terms found in the file +;;; COPYING. + + + +;;; +;;; +;;; Compatability between GNU emacs 18, 19, and Lucid emacs 19. +;;; +;;; +(defconst ilisp-emacs-version-id + (cond ((string-match "Lucid" emacs-version) + (if (string-match "^19.[0-7][^0-9]" emacs-version) + 'lucid-19 + 'lucid-19-new)) + ((string-match "^19" emacs-version) + 'gnu-19) + (t 'gnu-18)) + "What version of emacs we are running.") + + +;; Hook stuff--this should really be a part of emacs-lisp anyway + +(defun ilisp-member (elt list) + (let ((result nil)) + (while list + (cond ((equal elt (car list)) + (setq result list + list nil)) + (t + (setq list (cdr list))))) + result)) + + +(defun ilisp-add-hook (hook function) + "Arguments are HOOK and FUNCTION. Add FUNCTION to HOOK's list. +FUNCTION is not added if it's already on the list." + (set hook + (if (boundp hook) + (let ((value (symbol-value hook))) + (if (and value (or (not (consp value)) (eq (car value) 'lambda))) + (setq value (cons value nil))) + (if (not (ilisp-member function value)) + (setq value (append value (list function)))) + value) + (list function)))) + +(if (not (fboundp 'add-hook)) + (fset 'add-hook 'ilisp-add-hook)) + + +;;; 'ilisp-where-is' has been moved (and corrected) to ilisp-key.el. + +;;; +;;; COMINT +;;; +;;; GNU, Lucid and 18 use different versions of comint with +;;; incompatible interface variables and functions. Hooray. +;;; + +;; Some very old COMINT versions are missing these. +(if (not (boundp 'comint-input-chunk-size)) + (setq comint-input-chunk-size 512)) +(if (not (boundp 'comint-ptyp)) + (setq comint-ptyp t)) + + +(defun ilisp-get-input-ring () + "Use instead of get-input-ring coming-input-ring or input-ring." + (cond ((eq ilisp-emacs-version-id 'lucid-19) + (get-input-ring)) + ((or (eq ilisp-emacs-version-id 'gnu-19) + (eq ilisp-emacs-version-id 'lucid-19-new)) + comint-input-ring) + (t input-ring))) + +(defun ilisp-ring-insert (ring input) + (if (eq ilisp-emacs-version-id 'lucid-19) + (ring-insert-new ring input) + (ring-insert ring input))) + +(defun ilisp-temp-buffer-show-function () + (if (eq ilisp-emacs-version-id 'gnu-18) + temp-buffer-show-hook + temp-buffer-show-function)) + +(defun ilisp-input-ring-index () + (if (or (eq ilisp-emacs-version-id 'gnu-19) + (eq ilisp-emacs-version-id 'lucid-19-new)) + comint-input-ring-index + input-ring-index)) + +(defun set-ilisp-input-ring-index (n) + (if (or (eq ilisp-emacs-version-id 'gnu-19) + (eq ilisp-emacs-version-id 'lucid-19-new)) + (setq comint-input-ring-index n) + (setq input-ring-index n))) + +(defun ilisp-input-ring-size () + (if (or (eq ilisp-emacs-version-id 'gnu-19) + (eq ilisp-emacs-version-id 'lucid-19-new)) + comint-input-ring-size + input-ring-size)) + +(defun set-ilisp-input-ring-size (n) + (if (or (eq ilisp-emacs-version-id 'gnu-19) + (eq ilisp-emacs-version-id 'lucid-19-new)) + (setq comint-input-ring-size n) + (setq input-ring-size n)))