X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=poe-xemacs.el;h=59e0784d093df78f7501be14186e62383ca6851b;hb=3ed338972b9d15ea01ff17c3a8da1507a07c0eeb;hp=bc174260f128e2cf9f16d924060277e5845874ee;hpb=84dbaf3c56c012cfa8b0bee9c0ccf566236f3f2b;p=elisp%2Fapel.git diff --git a/poe-xemacs.el b/poe-xemacs.el index bc17426..59e0784 100644 --- a/poe-xemacs.el +++ b/poe-xemacs.el @@ -1,4 +1,4 @@ -;;; poe-xemacs.el --- poe submodule for XEmacs -*-byte-compile-dynamic: t;-*- +;;; poe-xemacs.el --- poe submodule for XEmacs ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko @@ -25,6 +25,9 @@ ;;; Code: +(require 'pym) + + ;;; @ color ;;; @@ -56,15 +59,14 @@ When called interactively, prompt for the name of the color to use." (condition-case nil (require 'overlay) - (error (defalias 'make-overlay 'make-extent) - (defalias 'overlayp 'extentp) - (defalias 'overlay-put 'set-extent-property) - (defalias 'overlay-buffer 'extent-buffer) - (defun move-overlay (extent start end &optional buffer) - (set-extent-endpoints extent start end) - ) - (defalias 'delete-overlay 'detach-extent) - )) + (error + (defalias 'make-overlay 'make-extent) + (defalias 'overlayp 'extentp) + (defalias 'overlay-put 'set-extent-property) + (defalias 'overlay-buffer 'extent-buffer) + (defun move-overlay (extent start end &optional buffer) + (set-extent-endpoints extent start end)) + (defalias 'delete-overlay 'detach-extent))) ;;; @ dired @@ -73,8 +75,40 @@ When called interactively, prompt for the name of the color to use." (defun-maybe dired-other-frame (dirname &optional switches) "\"Edit\" directory DIRNAME. Like `dired' but makes a new frame." (interactive (dired-read-dir-and-switches "in other frame ")) - (switch-to-buffer-other-frame (dired-noselect dirname switches)) - ) + (switch-to-buffer-other-frame (dired-noselect dirname switches))) + + +;;; @ timer +;;; + +(condition-case nil + (require 'timer) + (error + (require 'itimer) + (defun-maybe run-at-time (time repeat function &rest args) + (start-itimer (make-temp-name "rat") + `(lambda () + (,function ,@args)) + time repeat)) + (defalias 'cancel-timer 'delete-itimer) + (defun with-timeout-handler (tag) + (throw tag 'timeout)) + (defmacro-maybe with-timeout (list &rest body) + (let ((seconds (car list)) + (timeout-forms (cdr list))) + `(let ((with-timeout-tag (cons nil nil)) + with-timeout-value with-timeout-timer) + (if (catch with-timeout-tag + (progn + (setq with-timeout-timer + (run-at-time ,seconds nil + 'with-timeout-handler + with-timeout-tag)) + (setq with-timeout-value (progn . ,body)) + nil)) + (progn . ,timeout-forms) + (cancel-timer with-timeout-timer) + with-timeout-value)))))) ;;; @ to avoid bug of XEmacs 19.14 @@ -85,7 +119,7 @@ When called interactively, prompt for the name of the color to use." ;; This function was imported from Emacs 19.33. (defun file-relative-name (filename &optional directory) "Convert FILENAME to be relative to DIRECTORY -(default: default-directory). [poe-xemacs.el]" +(default: default-directory)." (setq filename (expand-file-name filename) directory (file-name-as-directory (expand-file-name @@ -95,55 +129,31 @@ When called interactively, prompt for the name of the color to use." filename)) (setq directory (file-name-directory (substring directory 0 -1)) ancestor (concat "../" ancestor))) - (concat ancestor (substring filename (match-end 0))))) - ) - - -;;; @ for anything older than XEmacs 20.2 -;;; - -;; eval-after-load is not defined in XEmacs but after-load-alist is -;; usable. See subr.el in XEmacs. - -(defun-maybe eval-after-load (file form) - "Arrange that, if FILE is ever loaded, FORM will be run at that time. -This makes or adds to an entry on `after-load-alist'. -If FILE is already loaded, evaluate FORM right now. -It does nothing if FORM is already on the list for FILE. -FILE should be the name of a library, with no directory name." - ;; Make sure there is an element for FILE. - (or (assoc file after-load-alist) - (setq after-load-alist (cons (list file) after-load-alist))) - ;; Add FORM to the element if it isn't there. - (let ((elt (assoc file after-load-alist))) - (or (member form (cdr elt)) - (progn - (nconc elt (list form)) - ;; If the file has been loaded already, run FORM right away. - (and (assoc file load-history) - (eval form))))) - form) - -;; (defun-maybe eval-after-load (file form) -;; (or (assoc file after-load-alist) -;; (setq after-load-alist (cons (list file) after-load-alist))) -;; (let ((elt (assoc file after-load-alist))) -;; (or (member form (cdr elt)) -;; (nconc elt (list form)))) -;; form) + (concat ancestor (substring filename (match-end 0)))))) ;;; @ Emacs 20.3 emulation ;;; (defalias-maybe 'line-beginning-position 'point-at-bol) - (defalias-maybe 'line-end-position 'point-at-eol) +;;; @ XEmacs 21 emulation +;;; + +;; XEmacs 20.5 and later: (set-extent-properties EXTENT PLIST) +(defun-maybe set-extent-properties (extent plist) + "Change some properties of EXTENT. +PLIST is a property list. +For a list of built-in properties, see `set-extent-property'." + (while plist + (set-extent-property extent (car plist) (cadr plist)) + (setq plist (cddr plist)))) ;;; @ end ;;; -(provide 'poe-xemacs) +(require 'product) +(product-provide (provide 'poe-xemacs) (require 'apel-ver)) ;;; poe-xemacs.el ends here