Anonymous avatar Anonymous committed 87c87ae

Add overlay.el, add provide 'feture for all files that did not previously
have it.

Comments (0)

Files changed (9)

+1998-01-17  SL Baur  <steve@altair.xemacs.org>
+
+	* Makefile (ELCS): Add overlay.elc.
+
+	* package-info.in: Update provides tag.
+
+	* ebuff-menu.el: Provide 'ebuff-menu as a feature.
+
+	* echistory.el: Provide 'echistory as a feature.
+
+	* macros.el: Provide 'macros as a feature.
+
+	* novice.el: Provide 'novice as a feature.
+
+	* debug.el: Provide 'debug as a feature.
+
 1998-01-11  SL Baur  <steve@altair.xemacs.org>
 
 	* Makefile (VERSION): Updated package build procedure.
 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
 
-VERSION = 1.07
+VERSION = 1.08
 PACKAGE = xemacs-base
 PKG_TYPE = regular
 REQUIRES =
 	chistory.elc comint.elc comint-xemacs.elc compile.elc debug.elc \
 	ebuff-menu.elc echistory.elc ehelp.elc edmacro.elc electric.elc \
 	enriched.elc env.elc facemenu.elc helper.elc imenu.elc \
-	iso-syntax.elc macros.elc novice.elc outline.elc passwd.elc pp.elc \
-	regi.elc ring.elc shell.elc skeleton.elc sort.elc thing.elc \
-	time-stamp.elc timezone.elc xbm-button.elc xpm-button.elc
+	iso-syntax.elc macros.elc novice.elc outline.elc overlay.elc \
+	passwd.elc pp.elc regi.elc ring.elc shell.elc skeleton.elc sort.elc \
+	thing.elc time-stamp.elc timezone.elc xbm-button.elc xpm-button.elc
 
 include ../../XEmacs.rules
 
       (set-buffer standard-output)
       (help-mode))))
 
+(provide 'debug)
+
 ;;; debug.el ends here
       (message "Buffer %s does not exist!" bufnam)
       (sit-for 4))))
 
+(provide 'ebuff-menu)
+
 ;;; ebuff-menu.el ends here
       (progn (message "")
 	     (throw 'electric-history-quit nil))))
 
+(provide 'echistory)
+
 ;;; echistory.el ends here
       (set-marker end-marker nil)
       (set-marker next-line-marker nil))))
 
+(provide 'macros)
+
 ;;; macros.el ends here
    (insert "(put '" (symbol-name command) " 'disabled t)\n")
    (save-buffer)))
 
+(provide 'novice)
+
 ;;; novice.el ends here
+;;; overlay.el --- overlay support.
+
+;; Copyright (C) 1997 Free Software Foundation, Inc.
+
+;; Author: Joe Nuspl <nuspl@sequent.com>
+;; Maintainer: XEmacs Development Team (in <hniksic@srce.hr> incarnation)
+;; Keywords: internal
+
+;; 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, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Synched up with: Not in FSF.
+
+;;; Commentary:
+
+;; Unlike the text-properties interface, these functions are in fact
+;; totally useless in XEmacs.  They are a more or less straightforward
+;; interface to the much better extent API, provided exclusively for
+;; GNU Emacs compatibility.  If you notice an incompatibility not
+;; mentioned below, be sure to mention it.  Anyways, you should really
+;; not use this.
+
+;; Known incompatibilities with the FSF interface:
+
+;; 1. There is not an `overlay' type.  Any extent with non-nil
+;;    'overlay property is considered an "overlay".
+;;
+;; 2. Some features of FSF overlays have not been implemented in
+;;    extents (or are unneeded).  Specifically, those are the
+;;    following special properties: window, insert-in-front-hooks,
+;;    insert-behind-hooks, and modification-hooks.  Some of these will
+;;    probably be implemented for extents in the future.
+;;
+;; 3. In FSF, beginning and end of an overlay are markers, which means
+;;    that you can use `insert-before-markers' to change insertion
+;;    property of overlay.  It will not work in this emulation, and we
+;;    have no plans of providing it.
+;;
+;; 4. The `overlays-in' and `overlays-at' functions in some cases
+;;    don't work as they should.  To be fixed RSN.
+;;
+;; 5. Finally, setting or modification of overlay properties specific
+;;    to extents will have unusual results.  While (overlay-put
+;;    overlay 'start-open t) does nothing under FSF, it has a definite
+;;    effect under XEmacs.  This is solved by simply avoiding such
+;;    names (see `set-extent-property' for a list).
+
+;; Some functions were broken; fixed-up by Hrvoje Niksic, June 1997.
+
+
+;;; Code:
+
+(defun overlayp (object)
+  "Return t if OBJECT is an overlay."
+  (and (extentp object)
+       (extent-property object 'overlay)))
+
+(defun make-overlay (beg end &optional buffer front-advance rear-advance)
+  "Create a new overlay with range BEG to END in BUFFER.
+If omitted, BUFFER defaults to the current buffer.
+BEG and END may be integers or markers.
+The fourth arg FRONT-ADVANCE, if non-nil, makes the
+front delimiter advance when text is inserted there.
+The fifth arg REAR-ADVANCE, if non-nil, makes the
+rear delimiter advance when text is inserted there."
+  (if (null buffer)
+      (setq buffer (current-buffer))
+    (check-argument-type 'bufferp buffer))
+  (when (> beg end)
+    (setq beg (prog1 end (setq end beg))))
+
+  (let ((overlay (make-extent beg end buffer)))
+    (set-extent-property overlay 'overlay t)
+    (if front-advance
+	(set-extent-property overlay 'start-open t)
+      (set-extent-property overlay 'start-closed t))
+    (if rear-advance
+	(set-extent-property overlay 'end-closed t)
+      (set-extent-property overlay 'end-open t))
+
+    overlay))
+
+(defun move-overlay (overlay beg end &optional buffer)
+  "Set the endpoints of OVERLAY to BEG and END in BUFFER.
+If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.
+If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current
+buffer."
+  (check-argument-type 'overlayp overlay)
+  (if (null buffer)
+      (setq buffer (extent-object overlay)))
+  (if (null buffer)
+      (setq buffer (current-buffer)))
+  (check-argument-type 'bufferp buffer)
+  (and (= beg end)
+       (extent-property overlay 'evaporate)
+       (delete-overlay overlay))
+  (when (> beg end)
+    (setq beg (prog1 end (setq end beg))))
+  (set-extent-endpoints overlay beg end buffer)
+  overlay)
+
+(defun delete-overlay (overlay)
+  "Delete the overlay OVERLAY from its buffer."
+  (check-argument-type 'overlayp overlay)
+  (detach-extent overlay)
+  nil)
+
+(defun overlay-start (overlay)
+  "Return the position at which OVERLAY starts."
+  (check-argument-type 'overlayp overlay)
+  (extent-start-position overlay))
+
+(defun overlay-end (overlay)
+  "Return the position at which OVERLAY ends."
+  (check-argument-type 'overlayp overlay)
+  (extent-end-position overlay))
+
+(defun overlay-buffer (overlay)
+  "Return the buffer OVERLAY belongs to."
+  (check-argument-type 'overlayp overlay)
+  (extent-object overlay))
+
+(defun overlay-properties (overlay)
+  "Return a list of the properties on OVERLAY.
+This is a copy of OVERLAY's plist; modifying its conses has no effect on
+OVERLAY."
+  (check-argument-type 'overlayp overlay)
+  (extent-properties overlay))
+
+(defun overlays-at (pos)
+  "Return a list of the overlays that contain position POS."
+  (overlays-in pos pos))
+
+(defun overlays-in (beg end)
+  "Return a list of the overlays that overlap the region BEG ... END.
+Overlap means that at least one character is contained within the overlay
+and also contained within the specified region.
+Empty overlays are included in the result if they are located at BEG
+or between BEG and END."
+  (mapcar-extents #'identity nil nil beg end
+		  'all-extents-closed-open 'overlay))
+
+(defun next-overlay-change (pos)
+  "Return the next position after POS where an overlay starts or ends.
+If there are no more overlay boundaries after POS, return (point-max)."
+  (let ((next (point-max))
+	tmp)
+    (map-extents
+     (lambda (overlay ignore)
+	    (when (or (and (< (setq tmp (extent-start-position overlay)) next)
+			   (> tmp pos))
+		      (and (< (setq tmp (extent-end-position overlay)) next)
+			   (> tmp pos)))
+	      (setq next tmp))
+       nil)
+     nil pos nil nil 'all-extents-closed-open 'overlay)
+    next))
+
+(defun previous-overlay-change (pos)
+  "Return the previous position before POS where an overlay starts or ends.
+If there are no more overlay boundaries before POS, return (point-min)."
+  (let ((prev (point-min))
+	tmp)
+    (map-extents
+     (lambda (overlay ignore)
+       (when (or (and (> (setq tmp (extent-end-position overlay)) prev)
+		      (< tmp pos))
+		 (and (> (setq tmp (extent-start-position overlay)) prev)
+		      (< tmp pos)))
+	 (setq prev tmp))
+       nil)
+     nil nil pos nil 'all-extents-closed-open 'overlay)
+    prev))
+
+(defun overlay-lists ()
+  "Return a pair of lists giving all the overlays of the current buffer.
+The car has all the overlays before the overlay center;
+the cdr has all the overlays after the overlay center.
+Recentering overlays moves overlays between these lists.
+The lists you get are copies, so that changing them has no effect.
+However, the overlays you get are the real objects that the buffer uses."
+  (or (boundp 'xemacs-internal-overlay-center-pos)
+      (overlay-recenter (1+ (/ (- (point-max) (point-min)) 2))))
+  (let ((pos xemacs-internal-overlay-center-pos)
+	before after)
+    (map-extents (lambda (overlay ignore)
+		   (if (> pos (extent-end-position overlay))
+		       (push overlay before)
+		     (push overlay after))
+		   nil)
+		 nil nil nil nil 'all-extents-closed-open 'overlay)
+    (cons (nreverse before) (nreverse after))))
+
+(defun overlay-recenter (pos)
+  "Recenter the overlays of the current buffer around position POS."
+  (set (make-local-variable 'xemacs-internal-overlay-center-pos) pos))
+
+(defun overlay-get (overlay prop)
+  "Get the property of overlay OVERLAY with property name PROP."
+  (check-argument-type 'overlayp overlay)
+  (let ((value (extent-property overlay prop))
+	category)
+    (if (and (null value)
+	     (setq category (extent-property overlay 'category)))
+	(get category prop)
+      value)))
+
+(defun overlay-put (overlay prop value)
+  "Set one property of overlay OVERLAY: give property PROP value VALUE."
+  (check-argument-type 'overlayp overlay)
+  (cond ((eq prop 'evaporate)
+	 (set-extent-property overlay 'detachable value))
+	((eq prop 'before-string)
+	 (set-extent-property overlay 'begin-glyph
+			      (make-glyph (vector 'string :data value))))
+	((eq prop 'after-string)
+	 (set-extent-property overlay 'end-glyph
+			      (make-glyph (vector 'string :data value))))
+	((eq prop 'local-map)
+	 (set-extent-property overlay 'keymap value))
+	((memq prop '(window insert-in-front-hooks insert-behind-hooks
+			     modification-hooks))
+	 (error "cannot support overlay '%s property under XEmacs"
+		prop)))
+  (set-extent-property overlay prop value))
+
+(provide 'overlay)
+
+;;; overlay.el ends here
    filename FILENAME
    md5sum MD5SUM
    size SIZE
-   provides (add-log advice annotations assoc case-table chistory comint-xemacs comint compile edmacro ehelp electric enriched env facemenu helper imenu iso-syntax outline passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button)
+   provides (add-log advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu helper imenu iso-syntax macros novice outline overlay passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button)
    requires (REQUIRES)
    type regular
 ))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.