Mercurial > hg > xemacs-beta
diff lisp/obsolete.el @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | 8de8e3f6228a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/obsolete.el Mon Aug 13 11:28:15 2007 +0200 @@ -0,0 +1,390 @@ +;;; obsolete.el --- obsoleteness support + +;; Copyright (C) 1985-1994, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1994, 1995 Amdahl Corporation. +;; Copyright (C) 1995 Sun Microsystems. + +;; Maintainer: XEmacs Development Team +;; Keywords: internal, dumped + +;; This file is part of XEmacs. + +;; XEmacs 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. + +;; XEmacs 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 XEmacs; see the file COPYING. If not, write to the +;; Free Software Foundation, 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Synched up with: Not in FSF. + +;;; Commentary: + +;; This file is dumped with XEmacs. + +;; The obsoleteness support used to be scattered throughout various +;; source files. We put the stuff in one place to remove the junkiness +;; from other source files and to facilitate creating/updating things +;; like sysdep.el. + +;;; Code: + +(defsubst define-obsolete-function-alias (oldfun newfun) + "Define OLDFUN as an obsolete alias for function NEWFUN. +This makes calling OLDFUN equivalent to calling NEWFUN and marks OLDFUN +as obsolete." + (define-function oldfun newfun) + (make-obsolete oldfun newfun)) + +(defsubst define-compatible-function-alias (oldfun newfun) + "Define OLDFUN as a compatible alias for function NEWFUN. +This makes calling OLDFUN equivalent to calling NEWFUN and marks OLDFUN +as provided for compatibility only." + (define-function oldfun newfun) + (make-compatible oldfun newfun)) + +(defsubst define-obsolete-variable-alias (oldvar newvar) + "Define OLDVAR as an obsolete alias for variable NEWVAR. +This makes referencing or setting OLDVAR equivalent to referencing or +setting NEWVAR and marks OLDVAR as obsolete. +If OLDVAR was bound and NEWVAR was not, Set NEWVAR to OLDVAR. + +Note: Use this before any other references (defvar/defcustom) to NEWVAR" + (let ((needs-setting (and (boundp oldvar) (not (boundp newvar)))) + (value (and (boundp oldvar) (symbol-value oldvar)))) + (defvaralias oldvar newvar) + (make-obsolete-variable oldvar newvar) + (and needs-setting (set newvar value)))) + +(defsubst define-compatible-variable-alias (oldvar newvar) + "Define OLDVAR as a compatible alias for variable NEWVAR. +This makes referencing or setting OLDVAR equivalent to referencing or +setting NEWVAR and marks OLDVAR as provided for compatibility only." + (defvaralias oldvar newvar) + (make-compatible-variable oldvar newvar)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; device stuff + +(make-compatible-variable 'window-system "use (console-type)") + +(defun x-display-color-p (&optional device) + "Return t if DEVICE is a color device." + (eq 'color (device-class device))) +(make-compatible 'x-display-color-p 'device-class) + +(define-function 'x-color-display-p 'x-display-color-p) +(make-compatible 'x-display-color-p 'device-class) + +(defun x-display-grayscale-p (&optional device) + "Return t if DEVICE is a grayscale device." + (eq 'grayscale (device-class device))) +(make-compatible 'x-display-grayscale-p 'device-class) + +(define-function 'x-grayscale-display-p 'x-display-grayscale-p) +(make-compatible 'x-display-grayscale-p 'device-class) + +(define-compatible-function-alias 'x-display-pixel-width 'device-pixel-width) +(define-compatible-function-alias 'x-display-pixel-height 'device-pixel-height) +(define-compatible-function-alias 'x-display-planes 'device-bitplanes) +(define-compatible-function-alias 'x-display-color-cells 'device-color-cells) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; events + +(define-obsolete-function-alias 'menu-event-p 'misc-user-event-p) +(make-obsolete-variable 'unread-command-char 'unread-command-events) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; extents + +(make-obsolete 'set-window-dot 'set-window-point) + +(define-obsolete-function-alias 'extent-buffer 'extent-object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; frames +(defun frame-first-window (frame) + "Return the topmost, leftmost window of FRAME. +If omitted, FRAME defaults to the currently selected frame." + (frame-highest-window frame 0)) +(make-compatible 'frame-first-window 'frame-highest-window) + +(define-obsolete-variable-alias 'initial-frame-alist 'initial-frame-plist) +(define-obsolete-variable-alias 'minibuffer-frame-alist + 'minibuffer-frame-plist) +(define-obsolete-variable-alias 'pop-up-frame-alist 'pop-up-frame-plist) +(define-obsolete-variable-alias 'special-display-frame-alist + 'special-display-frame-plist) + +;; Defined in C. + +(define-obsolete-variable-alias 'default-frame-alist 'default-frame-plist) +(define-obsolete-variable-alias 'default-x-frame-alist 'default-x-frame-plist) +(define-obsolete-variable-alias 'default-tty-frame-alist + 'default-tty-frame-plist) + +(make-compatible 'frame-parameters 'frame-property) +(defun frame-parameters (&optional frame) + "Return the parameters-alist of frame FRAME. +It is a list of elements of the form (PARM . VALUE), where PARM is a symbol. +The meaningful PARMs depend on the kind of frame. +If FRAME is omitted, return information on the currently selected frame. + +See the variables `default-frame-plist', `default-x-frame-plist', and +`default-tty-frame-plist' for a description of the parameters meaningful +for particular types of frames." + (or frame (setq frame (selected-frame))) + ;; #### This relies on a `copy-sequence' of the user properties in + ;; `frame-properties'. Removing that would make `frame-properties' more + ;; efficient but this function less efficient, as we couldn't be + ;; destructive. Since most callers now use `frame-parameters', we'll + ;; do it this way. Should probably change this at some point in the + ;; future. + (destructive-plist-to-alist (frame-properties frame))) + +(make-compatible 'modify-frame-parameters 'set-frame-properties) +(defun modify-frame-parameters (frame alist) + "Modify the properties of frame FRAME according to ALIST. +ALIST is an alist of properties to change and their new values. +Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol. +The meaningful PARMs depend on the kind of frame. + +See `set-frame-properties' for built-in property names." + ;; it would be nice to be destructive here but that's not safe. + (set-frame-properties frame (alist-to-plist alist))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; faces + +(define-obsolete-function-alias 'list-faces-display 'edit-faces) +(define-obsolete-function-alias 'list-faces 'face-list) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; paths + +(defvar Info-default-directory-list nil + "This used to be the initial value of Info-directory-list. +If you want to change the locations where XEmacs looks for info files, +set Info-directory-list.") +(make-obsolete-variable 'Info-default-directory-list 'Info-directory-list) + +(defvar init-file-user nil + "This used to be the name of the user whose init file was read at startup.") +(make-obsolete-variable 'init-file-user 'load-user-init-file-p) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; hooks + +(make-compatible-variable 'lisp-indent-hook 'lisp-indent-function) +(make-compatible-variable 'comment-indent-hook 'comment-indent-function) +(make-obsolete-variable 'temp-buffer-show-hook + 'temp-buffer-show-function) +(make-obsolete-variable 'inhibit-local-variables + "use `enable-local-variables' (with the reversed sense).") +(make-obsolete-variable 'suspend-hooks 'suspend-hook) +(make-obsolete-variable 'first-change-function 'first-change-hook) +(make-obsolete-variable 'before-change-function + "use before-change-functions; which is a list of functions rather than a single function.") +(make-obsolete-variable 'after-change-function + "use after-change-functions; which is a list of functions rather than a single function.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; insertion and deletion + +(define-compatible-function-alias 'insert-and-inherit 'insert) +(define-compatible-function-alias 'insert-before-markers-and-inherit + 'insert-before-markers) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; keymaps + +(defun keymap-parent (keymap) + "Return the first parent of the given keymap." + (car (keymap-parents keymap))) +(make-compatible 'keymap-parent 'keymap-parents) + +(defun set-keymap-parent (keymap parent) + "Make the given keymap have (only) the given parent." + (set-keymap-parents keymap (if parent (list parent) '())) + parent) +(make-compatible 'set-keymap-parent 'set-keymap-parents) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; menu stuff + +(defun add-menu-item (menu-path item-name function enabled-p &optional before) + "Obsolete. See the function `add-menu-button'." + (or item-name (error "must specify an item name")) + (add-menu-button menu-path (vector item-name function enabled-p) before)) +(make-obsolete 'add-menu-item 'add-menu-button) + +(defun add-menu (menu-path menu-name menu-items &optional before) + "See the function `add-submenu'." + (or menu-name (error (gettext "must specify a menu name"))) + (or menu-items (error (gettext "must specify some menu items"))) + (add-submenu menu-path (cons menu-name menu-items) before)) +;; Can't make this obsolete. easymenu depends on it. +(make-compatible 'add-menu 'add-submenu) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; minibuffer + +(define-compatible-function-alias 'read-minibuffer + 'read-expression) ; misleading name +(define-compatible-function-alias 'read-input 'read-string) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; misc + +;; (defun user-original-login-name () +;; "Return user's login name from original login. +;; This tries to remain unaffected by `su', by looking in environment variables." +;; (or (getenv "LOGNAME") (getenv "USER") (user-login-name))) +(define-obsolete-function-alias 'user-original-login-name 'user-login-name) + +; old names +(define-obsolete-function-alias 'show-buffer 'set-window-buffer) +(define-obsolete-function-alias 'buffer-flush-undo 'buffer-disable-undo) +(make-compatible 'eval-current-buffer 'eval-buffer) +(define-compatible-function-alias 'byte-code-function-p + 'compiled-function-p) ;FSFmacs + +(define-obsolete-function-alias 'isearch-yank-x-selection + 'isearch-yank-selection) +(define-obsolete-function-alias 'isearch-yank-x-clipboard + 'isearch-yank-clipboard) + +;; too bad there's not a way to check for aref, assq, and nconc +;; being called on the values of functions known to return keymaps, +;; or known to return vectors of events instead of strings... + +(make-obsolete-variable 'executing-macro 'executing-kbd-macro) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; modeline + +(define-compatible-function-alias 'redraw-mode-line 'redraw-modeline) +(define-compatible-function-alias 'force-mode-line-update + 'redraw-modeline) ;; FSF compatibility +(define-compatible-variable-alias 'mode-line-map 'modeline-map) +(define-compatible-variable-alias 'mode-line-buffer-identification + 'modeline-buffer-identification) +(define-compatible-variable-alias 'mode-line-process 'modeline-process) +(define-compatible-variable-alias 'mode-line-modified 'modeline-modified) +(make-compatible-variable 'mode-line-inverse-video + "use set-face-highlight-p and set-face-reverse-p") +(define-compatible-variable-alias 'default-mode-line-format + 'default-modeline-format) +(define-compatible-variable-alias 'mode-line-format 'modeline-format) +(define-compatible-variable-alias 'mode-line-menu 'modeline-menu) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; mouse + +;;; (defun mouse-eval-last-sexpr (event) +;;; (interactive "@e") +;;; (save-excursion +;;; (mouse-set-point event) +;;; (eval-last-sexp nil))) + +(define-obsolete-function-alias 'mouse-eval-last-sexpr 'mouse-eval-sexp) + +(defun read-mouse-position (frame) + (cdr (mouse-position (frame-device frame)))) +(make-obsolete 'read-mouse-position 'mouse-position) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; redisplay + +(defun redraw-display (&optional device) + (if (eq device t) + (mapcar 'redisplay-device (device-list)) + (redisplay-device device))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; window-system objects + +;; the functionality of column.el has been moved into C +;; Function obsoleted for XEmacs 20.0/February 1997. +(defalias 'display-column-mode 'column-number-mode) + +(defun x-color-values (color &optional frame) + "Return a description of the color named COLOR on frame FRAME. +The value is a list of integer RGB values--(RED GREEN BLUE). +These values appear to range from 0 to 65280 or 65535, depending +on the system; white is (65280 65280 65280) or (65535 65535 65535). +If FRAME is omitted or nil, use the selected frame." + (color-instance-rgb-components (make-color-instance color))) +(make-compatible 'x-color-values 'color-instance-rgb-components) + +;; Two loser functions which shouldn't be used. +(make-obsolete 'following-char 'char-after) +(make-obsolete 'preceding-char 'char-before) + + +;; The following several functions are useful in GNU Emacs 20 because +;; of the multibyte "characters" the internal representation of which +;; leaks into Lisp. In XEmacs/Mule they are trivial and unnecessary. +;; We provide them for compatibility reasons solely. + +(defun string-to-sequence (string type) + "Convert STRING to a sequence of TYPE which contains characters in STRING. +TYPE should be `list' or `vector'. +Multibyte characters are concerned." + (ecase type + (list + (mapcar #'identity string)) + (vector + (mapvector #'identity string)))) + +(defun string-to-list (string) + "Return a list of characters in STRING." + (mapcar #'identity string)) + +(defun string-to-vector (string) + "Return a vector of characters in STRING." + (mapvector #'identity string)) + +(defun store-substring (string idx obj) + "Embed OBJ (string or character) at index IDX of STRING." + (let* ((str (cond ((stringp obj) obj) + ((characterp obj) (char-to-string obj)) + (t (error + "Invalid argument (should be string or character): %s" + obj)))) + (string-len (length string)) + (len (length str)) + (i 0)) + (while (and (< i len) (< idx string-len)) + (aset string idx (aref str i)) + (setq idx (1+ idx) i (1+ i))) + string)) + +;; ### This function is not compatible with FSF in some cases. Hard +;; to fix, because it is hard to trace the logic of the FSF function. +;; In case we need the exact behavior, we can always copy the FSF +;; version, which is very long and does lots of unnecessary stuff. +(defun truncate-string-to-width (str end-column &optional start-column padding) + "Truncate string STR to end at column END-COLUMN. +The optional 2nd arg START-COLUMN, if non-nil, specifies +the starting column; that means to return the characters occupying +columns START-COLUMN ... END-COLUMN of STR. + +The optional 3rd arg PADDING, if non-nil, specifies a padding character +to add at the end of the result if STR doesn't reach column END-COLUMN, +or if END-COLUMN comes in the middle of a character in STR. +PADDING is also added at the beginning of the result +if column START-COLUMN appears in the middle of a character in STR. + +If PADDING is nil, no padding is added in these cases, so +the resulting string may be narrower than END-COLUMN." + (or start-column + (setq start-column 0)) + (let ((len (length str))) + (concat (substring str (min start-column len) (min end-column len)) + (and padding (> end-column len) + (make-string (- end-column len) padding))))) + +(defalias 'truncate-string 'truncate-string-to-width) +(make-obsolete 'truncate-string 'truncate-string-to-width) + +;; Keywords already do The Right Thing in XEmacs +(make-compatible 'define-widget-keywords "Just use them") + +(make-obsolete 'function-called-at-point 'function-at-point) + +(provide 'obsolete) +;;; obsolete.el ends here