Mercurial > hg > xemacs-beta
changeset 96:dbb370e3c29e r20-0final
Import from CVS: tag r20-0final
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:12:40 +0200 |
parents | e8c07a565f9c |
children | 498bf5da1c90 |
files | CHANGES-beta ChangeLog lisp/ChangeLog lisp/bytecomp/bytecomp.el lisp/cl/cl-macs.el lisp/modes/cperl-mode.el lisp/packages/font-lock.el lisp/packages/ps-print.el lisp/prim/minibuf.el lisp/tm/tm-image.el man/ChangeLog man/lispref/building.texi man/lispref/extents.texi man/new-users-guide/custom2.texi src/ChangeLog src/extents.c src/extents.h src/frame.c src/mule-coding.c |
diffstat | 19 files changed, 175 insertions(+), 243 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 09:12:11 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:12:40 2007 +0200 @@ -1,5 +1,6 @@ -*- indented-text -*- to 20.0 final +-- Replicating extents are history -- Miscellaneous bug fixes to 20.0 final
--- a/ChangeLog Mon Aug 13 09:12:11 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:12:40 2007 +0200 @@ -1,14 +1,18 @@ +Fri Feb 7 19:21:34 1997 Steven L Baur <steve@altair.xemacs.org> + + * XEmacs 20.0try3 is released. + Wed Feb 5 18:03:06 1997 Steven L Baur <steve@altair.xemacs.org> - * XEmacs 20.0 is released. + * XEmacs 20.0try2 is released. -Wed Feb 3 19:39:08 1997 Steven L Baur <steve@altair.xemacs.org> +Mon Feb 3 19:39:08 1997 Steven L Baur <steve@altair.xemacs.org> * XEmacs 19.15-b92 is released. Sat Feb 1 18:17:38 1997 Steven L Baur <steve@altair.xemacs.org> - * XEmacs 20.0 is released. + * XEmacs 20.0try1 is released. * XEmacs 19.15-b91 AKA XEmacs '97 NOT! is released. Sat Feb 1 00:00:48 1997 Steven L Baur <steve@altair.xemacs.org>
--- a/lisp/ChangeLog Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:12:40 2007 +0200 @@ -1,3 +1,37 @@ +Fri Feb 7 03:09:32 1997 Alastair Burt <burt@dfki.uni-sb.de> + + * bytecomp/bytecomp.el (byte-compile-insert-header): Correct + typo. + +Thu Feb 6 17:14:32 1997 Steven L Baur <steve@altair.xemacs.org> + + * packages/font-lock.el (font-lock-fontify-keywords-region): + Correct bounds checking in case the keywords regexp is not + properly anchored. + + * packages/ps-print.el: Update maintainer address. + +Thu Feb 6 12:35:39 1997 Bill Dubuque <wgd@martigny.ai.mit.edu> + + * cl/cl-macs.el (cl-do-proclaim): Correct addition of bound + variables to `byte-compile-bound-variables'. + +Thu Feb 6 01:07:56 1997 Steven L Baur <steve@altair.xemacs.org> + + * bytecomp/bytecomp.el (byte-compile-warn-about-unused-variables): + Reverse previous patch. + + * prim/minibuf.el (use-dialog-box): Rename from + should-use-dialog-box. + (should-use-dialog-box-p): Use it. + + * bytecomp/bytecomp.el (byte-compile-warn-about-unused-variables): + cell is not a cons when the cl declare macro is used. + +Wed Feb 5 21:37:13 1997 Hrvoje Niksic <hniksic@bjesomar.srce.hr> + + * modes/cperl-mode.el: Provide 'cperl-mode. + Tue Feb 4 11:51:25 1997 Greg Klanderman <greg@alphatech.com> * modes/make-mode.el: Remove `makefile-runtime-macros-list' from
--- a/lisp/bytecomp/bytecomp.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/bytecomp/bytecomp.el Mon Aug 13 09:12:40 2007 +0200 @@ -3,7 +3,7 @@ ;;; Copyright (C) 1985-1987, 1991-1994 Free Software Foundation, Inc. ;;; Copyright (C) 1996 Ben Wing. -;; Author: Jamie Zawinski <jwz@lucid.com> +;; Author: Jamie Zawinski <jwz@netscape.com> ;; Hallvard Furuseth <hbf@ulrik.uio.no> ;; Keywords: internal @@ -1224,18 +1224,20 @@ (not (eq (car rest) 'new-scope))) (setq cell (car rest)) (if (and (= 0 (logand byte-compile-referenced-bit (cdr cell))) - ;; Don't warn about declared-but-unused arguments, for two - ;; reasons: first, the arglist structure might be imposed by - ;; external forces, and we don't have (declare (ignore x)) yet; - ;; and second, inline expansion produces forms like + ;; Don't warn about declared-but-unused arguments, + ;; for two reasons: first, the arglist structure + ;; might be imposed by external forces, and we don't + ;; have (declare (ignore x)) yet; and second, inline + ;; expansion produces forms like ;; ((lambda (arg) (byte-code "..." [arg])) x) - ;; which we can't (ok, well, don't) recognise as containing a - ;; reference to arg, so every inline expansion would generate - ;; a warning. (If we had `ignore' then inline expansion could - ;; emit an ignore declaration.) + ;; which we can't (ok, well, don't) recognise as + ;; containing a reference to arg, so every inline + ;; expansion would generate a warning. (If we had + ;; `ignore' then inline expansion could emit an + ;; ignore declaration.) (= 0 (logand byte-compile-arglist-bit (cdr cell))) - ;; Don't warn about defvars because this is a legitimate special - ;; binding. + ;; Don't warn about defvars because this is a + ;; legitimate special binding. (not (byte-compile-defvar-p (car cell)))) (setq unreferenced (cons (car cell) unreferenced))) (setq rest (cdr rest))) @@ -1705,7 +1707,7 @@ "\n(if (and (boundp 'emacs-version)\n" "\t (or (and (boundp 'epoch::version) epoch::version)\n" "\t (and (not (string-match \"XEmacs\" emacs-version))\n" - "\t (string-lessp emacs-version \"19.29\"))n" + "\t (string-lessp emacs-version \"19.29\"))\n" "\t (string-lessp emacs-version \"19.14\")))\n" " (error \"`" ;; prin1-to-string is used to quote backslashes.
--- a/lisp/cl/cl-macs.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/cl/cl-macs.el Mon Aug 13 09:12:40 2007 +0200 @@ -1399,7 +1399,10 @@ (cond ((eq (car-safe spec) 'special) (if (boundp 'byte-compile-bound-variables) (setq byte-compile-bound-variables - (append (cdr spec) byte-compile-bound-variables)))) + ;; todo: this should compute correct binding bits vs. 0 + (append (mapcar #'(lambda (v) (cons v 0)) + (cdr spec)) + byte-compile-bound-variables)))) ((eq (car-safe spec) 'inline) (while (setq spec (cdr spec))
--- a/lisp/modes/cperl-mode.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/modes/cperl-mode.el Mon Aug 13 09:12:40 2007 +0200 @@ -32,7 +32,7 @@ ;;; Corrections made by Ilya Zakharevich ilya@math.mps.ohio-state.edu ;;; XEmacs changes by Peter Arius arius@informatik.uni-erlangen.de -;; $Id: cperl-mode.el,v 1.1.1.1 1996/12/18 22:42:48 steve Exp $ +;; $Id: cperl-mode.el,v 1.2 1997/02/08 03:26:07 steve Exp $ ;;; To use this mode put the following into your .emacs file: @@ -4526,3 +4526,7 @@ (cperl-get-help) (setq cperl-help-shown t)))) (cperl-lazy-install))) + +(provide 'cperl-mode) + +;;; cperl-mode.el ends here
--- a/lisp/packages/font-lock.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/packages/font-lock.el Mon Aug 13 09:12:40 2007 +0200 @@ -1158,12 +1158,13 @@ ;; Find an occurrence of `matcher' from `start' to `end'. (setq keyword (car keywords) matcher (car keyword)) (goto-char start) - (while (if (stringp matcher) - (re-search-forward matcher end t) - (funcall matcher end)) + (while (and (< (point) end) + (if (stringp matcher) + (re-search-forward matcher end t) + (funcall matcher end))) ;; Apply each highlight to this instance of `matcher', which may be ;; specific highlights or more keywords anchored to `matcher'. - (setq highlights (cdr keyword)) + (setq highlights (cdr keyword)) (while highlights (if (numberp (car (car highlights))) (font-lock-apply-highlight (car highlights))
--- a/lisp/packages/ps-print.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/packages/ps-print.el Mon Aug 13 09:12:40 2007 +0200 @@ -3,7 +3,7 @@ ;; Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. ;; Author: Jim Thompson (was <thompson@wg2.waii.com>) -;; Maintainer: Jacques Duthen <duthen@cegelec-red.fr> +;; Maintainer: Jacques Duthen <duthen@club-internet.fr> ;; Keywords: print, PostScript ;; Time-stamp: <97/01/29 23:21:25 tjchol01> ;; Version: 3.05 @@ -2445,15 +2445,16 @@ (/ x-color-value ps-print-color-scale)) (defun ps-color-values (x-color) - (cond ((fboundp 'x-color-values) + (cond ((fboundp 'color-instance-rgb-components) + (if (ps-color-device) + (color-instance-rgb-components + (if (color-instance-p x-color) x-color + (if (color-specifier-p x-color) + (make-color-instance (color-name x-color)) + (make-color-instance x-color)))) + (error "No available function to determine X color values."))) + ((fboundp 'x-color-values) (x-color-values x-color)) - ((and (fboundp 'color-instance-rgb-components) - (ps-color-device)) - (color-instance-rgb-components - (if (color-instance-p x-color) x-color - (if (color-specifier-p x-color) - (make-color-instance (color-name x-color)) - (make-color-instance x-color))))) (t (error "No available function to determine X color values.")))) (defun ps-face-attributes (face)
--- a/lisp/prim/minibuf.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/prim/minibuf.el Mon Aug 13 09:12:40 2007 +0200 @@ -158,7 +158,7 @@ map) "Minibuffer keymap used by shell-command and related commands.") -(defvar should-use-dialog-box t +(defvar use-dialog-box t "Variable controlling usage of the dialog box. If nil, the dialog box will never be used, even in response to mouse events.") @@ -2007,11 +2007,11 @@ event, and checks whether dialog-support exists and the current device supports dialog boxes. -The dialog box is totally disabled if the variable `should-use-dialog-box' +The dialog box is totally disabled if the variable `use-dialog-box' is set to nil." (and (featurep 'dialog) (device-on-window-system-p) - should-use-dialog-box + use-dialog-box (or force-dialog-box-use (button-press-event-p last-command-event) (button-release-event-p last-command-event)
--- a/lisp/tm/tm-image.el Mon Aug 13 09:12:11 2007 +0200 +++ b/lisp/tm/tm-image.el Mon Aug 13 09:12:40 2007 +0200 @@ -7,7 +7,7 @@ ;; Dan Rich <drich@morpheus.corp.sgi.com> ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Created: 1995/12/15 -;; Version: $Id: tm-image.el,v 1.2 1996/12/28 21:03:14 steve Exp $ +;; Version: $Id: tm-image.el,v 1.3 1997/02/08 03:26:13 steve Exp $ ;; Keywords: mail, news, MIME, multimedia, image, picture, X-Face @@ -224,14 +224,15 @@ (mime-decode-region beg end encoding) (let ((data (buffer-string)) (minor (assoc-value ctype mime-viewer/image-converter-alist)) - gl) + gl e) (delete-region (point-min)(point-max)) (while (progn (setq gl (make-glyph (vector minor :data data))) (eq (image-instance-type (glyph-image-instance gl)) 'text) )) - (make-annotation gl (point) 'text) + (setq e (make-extent (point) (point))) + (set-extent-end-glyph e gl) ) (insert "\n") ))
--- a/man/ChangeLog Mon Aug 13 09:12:11 2007 +0200 +++ b/man/ChangeLog Mon Aug 13 09:12:40 2007 +0200 @@ -1,3 +1,8 @@ +Thu Feb 6 22:57:09 1997 Steven L Baur <steve@altair.xemacs.org> + + * lispref/extents.texi (Duplicable Extents): replicable extents + are history. + Wed Jan 29 19:59:41 1997 Steven L Baur <steve@altair.xemacs.org> * xemacs-faq.texi (Q1.1.1): Correct typos.
--- a/man/lispref/building.texi Mon Aug 13 09:12:11 2007 +0200 +++ b/man/lispref/building.texi Mon Aug 13 09:12:40 2007 +0200 @@ -134,8 +134,8 @@ @example @group (emacs-version) - @result{} "XEmacs 19.14 [Lucid] (i586-unknown-linux1.2.13) - of Wed Mar 6 1996 on nene" + @result{} "XEmacs 20.0 [Lucid] (i586-unknown-linux2.0.18) + of Wed Feb 6 1997 on nene" @end group @end example @@ -157,7 +157,7 @@ @defvar emacs-version The value of this variable is the version of Emacs being run. It is a -string, e.g. @code{"19.14 XEmacs Lucid"}. +string, e.g. @code{"20.0 XEmacs Lucid"}. @end defvar The following two variables did not exist before FSF GNU Emacs version @@ -166,12 +166,12 @@ @defvar emacs-major-version The major version number of Emacs, as an integer. For XEmacs version -19.14, the value is 19. +20.0, the value is 20. @end defvar @defvar emacs-minor-version The minor version number of Emacs, as an integer. For XEmacs version -19.14, the value is 14. +20.0, the value is 0. @end defvar @node Pure Storage
--- a/man/lispref/extents.texi Mon Aug 13 09:12:11 2007 +0200 +++ b/man/lispref/extents.texi Mon Aug 13 09:12:40 2007 +0200 @@ -553,17 +553,9 @@ kill, yank, and undo commands will restore or copy it. @xref{Duplicable Extents}. -@item replicating -(Boolean) Meaningful only in conjunction with @code{duplicable}. If -set, actions that cause an extent to be copied from a buffer to a string -cause the original extent to be recorded in the copy (as the copied -extent's parent), so that when the extent is copied back into the -buffer, @code{eq}ness between the original extent and the re-inserted -extent is maintained whenever possible. @xref{Duplicable Extents}. - @item unique -(Boolean) Meaningful only in conjunction with @code{duplicable} and -@code{replicating}. When this is set, there may be only one instance of +(Boolean) Meaningful only in conjunction with @code{duplicable}. +When this is set, there may be only one instance of this extent attached at a time. @xref{Duplicable Extents}. @item invisible @@ -765,8 +757,7 @@ that you cannot create an inheritance loop -- this is explicitly disallowed. - Parent extents are used to implement the ``replicating'' property -(@pxref{Duplicable Extents}) and extents over the modeline. + Parent extents are used to implement the extents over the modeline. @defun set-extent-parent extent parent This function sets the parent of @var{extent} to @var{parent}. @@ -793,30 +784,14 @@ @node Duplicable Extents @section Duplicable Extents @cindex duplicable extent -@cindex replicating extents @cindex unique extents @cindex extent replica @cindex extent, duplicable -@cindex extent, replicating @cindex extent, unique If an extent has the @code{duplicable} property, it will be copied into strings, so that kill, yank, and undo commands will restore or copy it. - If a duplicable extent also has the @code{replicating} property, the -extent itself is not actually copied; rather, a pointer to it is -stored, along with the start and end positions of the extent. (This -is done by making the copied extent a child of the original extent. -Formerly, this was done by creating a special object called an -@dfn{extent replica}. Extent replicas no longer exist, but all the -functionality is available in a cleaner and more general fashion -using the @code{replicating} property.) This means that, e.g., -if you copy a replacting extent into the kill ring, then change the -properties of the extent, then paste the kill-ring text back into the -buffer, the newly-inserted extent will have the property changes you -just made to the original extent, and not the property values at the -time the text was copied into the kill ring. - Specifically: @itemize @bullet @@ -837,42 +812,8 @@ back into a buffer. @item -If a duplicable extent has the @code{replicating} property, then when -it is copied into a string, the parent of the new extent is set to the -extent it was copied from. - -@item -When an extent with the @code{replicating} property is copied from -a string back into a buffer: - -@itemize @minus -@item -If the extent's parent was detached from this buffer, it is reattached -at the new range. - -@item -If the extent's parent is attached to this buffer and is contiguous with -or overlaps the new range, it is simply extended to include that range. -Note that in this case the extent's @code{paste-function} is not called -(see below). - -@item -If the extent's parent was detached from another buffer, it is copied -as if by @code{copy-extent} and attached at the new range. - -@item -If the extent's parent is attached to another buffer, or is attached to -this buffer and does not overlap the new range, it is copied as if by -@code{copy-extent} and attached at the new range. However, if the -extent's parent has the @code{unique} property, this action is inhibited -and nothing happens. -@end itemize - -@item When @code{concat} is called on strings, the extents in the strings are -copied into the resulting string. If two or more replicating extents -with the same parent end up overlapping or abutting in the resulting -string, they are merged into a single extent. +copied into the resulting string. @item When @code{substring} is called on a string, the relevant extents @@ -883,10 +824,8 @@ deletion, or inserted by @code{insert-extent} or string insertion, the action is recorded by the undo mechanism so that it can be undone later. Note that if an extent gets detached and then a later undo causes the -extent to get reinserted, the new extent will be `eq' to the original -extent if and only if the extent has the @code{replicating} property -set. This is the same as what happens when a string is cut and then -pasted back in. +extent to get reinserted, the new extent will not be `eq' to the original +extent. @item Extent motion, face changes, and attachment via @code{make-extent} are
--- a/man/new-users-guide/custom2.texi Mon Aug 13 09:12:11 2007 +0200 +++ b/man/new-users-guide/custom2.texi Mon Aug 13 09:12:40 2007 +0200 @@ -419,13 +419,13 @@ @noindent If you want to write your own menus, you can look at some of the examples in -@file{/usr/local/lib/xemacs-19.13/lisp/packages/big-menubar.el} file. +@file{/usr/local/lib/xemacs-20.0/lisp/packages/big-menubar.el} file. @end itemize For more information on initializing your @file{.emacs} file, @xref{Init File,,,,XEmacs User's Manual}. You should also look at -@file{/usr/local/lib/xemacs-19.13/etc/sample.emacs}, which is a sample +@file{/usr/local/lib/xemacs-20.0/etc/sample.emacs}, which is a sample @file{.emacs} file. It contains some of the commonly desired customizations in Emacs.
--- a/src/ChangeLog Mon Aug 13 09:12:11 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 09:12:40 2007 +0200 @@ -1,3 +1,26 @@ +Fri Feb 7 11:36:56 1997 Steven L Baur <steve@altair.xemacs.org> + + * mule-coding.c (Fdecode_coding_region): Make explicit call to + `barf_if_buffer_read_only'. + (Fencode_coding_region): Ditto. + +Thu Feb 6 22:39:39 1997 Steven L Baur <steve@altair.xemacs.org> + + * extents.c (syms_of_extents): Remove references to replicating + extents. + + * extents.h (struct extent): Remove references to replicating + extents. + +Thu Feb 6 01:11:43 1997 Jareth Hein <jhod@po.iijnet.or.jp> + + * mule-coding.c (ENCODE_SJIS): Correct typo. + +Thu Feb 6 01:10:22 1997 Steven L Baur <steve@altair.xemacs.org> + + * frame.c (delete_frame_internal): Protect against deletion of + frames with living popup children. + Wed Feb 5 17:13:17 1997 David Moore <dmoore@UCSD.EDU> * emacs.c (main_1): Try to avoid collisions against potentially
--- a/src/extents.c Mon Aug 13 09:12:11 2007 +0200 +++ b/src/extents.c Mon Aug 13 09:12:40 2007 +0200 @@ -445,7 +445,6 @@ /* Qhighlight defined in general.c */ Lisp_Object Qunique; Lisp_Object Qduplicable; -Lisp_Object Qreplicating; Lisp_Object Qdetachable; Lisp_Object Qpriority; Lisp_Object Qmouse_face; @@ -2959,12 +2958,11 @@ if (!NILP (extent_read_only (anc))) *bp++ = '%'; if (!NILP (extent_mouse_face (anc))) *bp++ = 'H'; if (extent_unique_p (anc)) *bp++ = 'U'; - else if (extent_replicating_p (anc)) *bp++ = 'R'; else if (extent_duplicable_p (anc)) *bp++ = 'D'; if (!NILP (extent_invisible (anc))) *bp++ = 'I'; if (!NILP (extent_read_only (anc)) || !NILP (extent_mouse_face (anc)) || - extent_unique_p (anc) || extent_replicating_p (anc) || + extent_unique_p (anc) || extent_duplicable_p (anc) || !NILP (extent_invisible (anc))) *bp++ = ' '; @@ -5078,26 +5076,13 @@ string into a buffer, the extents are copied back into the buffer. - replicating Meaningful only in conjunction with `duplicable'. - If this flag is set, extents that are copied from - buffers into strings are made children of the - original extent. When the string is pasted back - into a buffer, the same extent (i.e. the `eq' - predicate applies) that was originally in the - buffer will be used if possible -- i.e. if the - extent is detached or the paste location abuts or - overlaps the extent. This behavior is compatible - with the old "extent replica" behavior and was - apparently required by Energize. - - unique Meaningful only in conjunction with `duplicable' - and `replicating'. When this is set, there may be - only one instance of this extent attached at a - time: if it is copied to the kill ring and then - yanked, the extent is not copied. If, however, it - is killed (removed from the buffer) and then - yanked, it will be re-attached at the new - position. + unique Meaningful only in conjunction with `duplicable'. + When this is set, there may be only one instance + of this extent attached at a time: if it is copied + to the kill ring and then yanked, the extent is + not copied. If, however, it is killed (removed + from the buffer) and then yanked, it will be + re-attached at the new position. invisible If the value is non-nil, text under this extent may be treated as not present for the purpose of @@ -5153,8 +5138,7 @@ `inside-margin', or `outside-margin') of the extent's begin glyph. - end-glyph-layout The layout policy of the extent's end glyph. -*/ + end-glyph-layout The layout policy of the extent's end glyph. */ (extent, property, value)) { /* This function can GC if property is `keymap' */ @@ -5167,8 +5151,6 @@ extent_unique_p (e) = !NILP (value); else if (EQ (property, Qduplicable)) extent_duplicable_p (e) = !NILP (value); - else if (EQ (property, Qreplicating)) - extent_replicating_p (e) = !NILP (value); else if (EQ (property, Qinvisible)) set_extent_invisible (e, value); else if (EQ (property, Qdetachable)) @@ -5255,7 +5237,6 @@ else if (EQ (property, Qend_open)) RETURN_FLAG (end_open); else if (EQ (property, Qunique)) RETURN_FLAG (unique); else if (EQ (property, Qduplicable)) RETURN_FLAG (duplicable); - else if (EQ (property, Qreplicating)) RETURN_FLAG (replicating); else if (EQ (property, Qdetachable)) RETURN_FLAG (detachable); #undef RETURN_FLAG /* Support (but don't document...) the obvious antonyms. */ @@ -5358,7 +5339,6 @@ result = Fcons (sym, Fcons (Qt, result)) CONS_FLAG (end_open, Qend_open); CONS_FLAG (start_open, Qstart_open); - CONS_FLAG (replicating, Qreplicating); CONS_FLAG (detachable, Qdetachable); CONS_FLAG (duplicable, Qduplicable); CONS_FLAG (unique, Qunique); @@ -5618,14 +5598,6 @@ end + closure->from)) return 0; e = copy_extent (extent, start, end, closure->string); - if (extent_replicating_p (extent)) - { - Lisp_Object e_obj = Qnil, extent_obj = Qnil; - - XSETEXTENT (e_obj, e); - XSETEXTENT (extent_obj, extent); - Fset_extent_parent (e_obj, extent_obj); - } } return 0; @@ -5693,62 +5665,12 @@ if (!extent_duplicable_p (extent)) return 0; - if (!extent_replicating_p (extent)) - { - if (!inside_undo && - !run_extent_paste_function (extent, new_start, new_end, - closure->buffer)) - return 0; - copy_extent (extent, new_start, new_end, closure->buffer); - } - else - { - Bytind parstart = 0; - Bytind parend = 0; - Lisp_Object parent_obj = extent_parent (extent); - EXTENT parent; - - if (!EXTENTP (parent_obj)) - return 0; - parent = XEXTENT (parent_obj); - if (!EXTENT_LIVE_P (parent)) - return 0; - - if (!extent_detached_p (parent)) - { - parstart = extent_endpoint_bytind (parent, 0); - parend = extent_endpoint_bytind (parent, 1); - } - -/* #### remove this crap */ -#ifdef ENERGIZE - /* Energize extents like toplevel-forms can only be pasted - in the buffer they come from. This should be parametrized - in the generic extent objects. Right now just silently - skip the extents if it's not from the same buffer. - */ - if (!EQ (extent_object (parent), closure->buffer) - && energize_extent_data (parent)) - return 0; -#endif - - /* If this is a `unique' extent, and it is currently attached - somewhere other than here (non-overlapping), then don't copy - it (that's what `unique' means). If however it is detached, - or if we are inserting inside/adjacent to the original - extent, then insert_extent() will simply reattach it, which - is what we want. - */ - if (extent_unique_p (parent) - && !extent_detached_p (parent) - && (!EQ (extent_object (parent), closure->buffer) - || parend > new_end - || parstart < new_start)) - return 0; - - insert_extent (parent, new_start, new_end, - closure->buffer, !inside_undo); - } + if (!inside_undo && + !run_extent_paste_function (extent, new_start, new_end, + closure->buffer)) + return 0; + copy_extent (extent, new_start, new_end, closure->buffer); + return 0; } @@ -5801,13 +5723,6 @@ struct copy_string_extents_1_arg *closure = (struct copy_string_extents_1_arg *) arg; - if (extent_replicating_p (extent) && - EQ (extent_parent (extent), closure->parent_in_question)) - { - closure->found_extent = extent; - return 1; /* stop mapping */ - } - return 0; } @@ -5831,35 +5746,6 @@ new_start = old_start + closure->new_pos - closure->old_pos; new_end = old_end + closure->new_pos - closure->old_pos; - if (extent_replicating_p (extent)) - { - struct copy_string_extents_1_arg closure_1; - - closure_1.parent_in_question = extent_parent (extent); - closure_1.found_extent = 0; - - /* When adding a replicating extent, we need to make sure - that there isn't an existing replicating extent referring - to the same parent extent that abuts or overlaps. If so, - we merge with that extent rather than adding anew. */ - map_extents_bytind (closure->old_pos, closure->old_pos + closure->length, - copy_string_extents_1_mapper, - (void *) &closure, closure->new_string, 0, - /* get all extents that abut the region */ - ME_END_CLOSED | ME_ALL_EXTENTS_CLOSED); - if (closure_1.found_extent) - { - Bytecount exstart = - extent_endpoint_bytind (closure_1.found_extent, 0); - Bytecount exend = - extent_endpoint_bytind (closure_1.found_extent, 1); - exstart = min (exstart, new_start); - exend = max (exend, new_end); - set_extent_endpoints (closure_1.found_extent, exstart, exend, Qnil); - return 0; - } - } - copy_extent (extent, old_start + closure->new_pos - closure->old_pos, old_end + closure->new_pos - closure->old_pos, @@ -6662,7 +6548,6 @@ /* defsymbol (&Qhighlight, "highlight"); in faces.c */ defsymbol (&Qunique, "unique"); defsymbol (&Qduplicable, "duplicable"); - defsymbol (&Qreplicating, "replicating"); defsymbol (&Qdetachable, "detachable"); defsymbol (&Qpriority, "priority"); defsymbol (&Qmouse_face, "mouse-face");
--- a/src/extents.h Mon Aug 13 09:12:11 2007 +0200 +++ b/src/extents.h Mon Aug 13 09:12:40 2007 +0200 @@ -75,7 +75,8 @@ unsigned int unused9 : 1; /* 9 unused */ unsigned int unique : 1; /* 10 there may be only one attached */ unsigned int duplicable : 1; /* 11 copied to strings by kill/undo */ - unsigned int replicating : 1; /* 12 invoke old extent-replica behav.*/ + unsigned int REPLICATING : 1; /* 12 invoke old extent-replica behav.*/ + /* Not used any more */ unsigned int detachable : 1; /* 13 extent detaches if text deleted */ unsigned int internal : 1; /* 14 used by map-extents etc. */ unsigned int unused15 : 1; /* 15 unused */ @@ -283,7 +284,6 @@ #define extent_end_open_p(e) extent_normal_field (e, end_open) #define extent_unique_p(e) extent_normal_field (e, unique) #define extent_duplicable_p(e) extent_normal_field (e, duplicable) -#define extent_replicating_p(e) extent_normal_field (e, replicating) #define extent_detachable_p(e) extent_normal_field (e, detachable) #define extent_internal_p(e) extent_normal_field (e, internal)
--- a/src/frame.c Mon Aug 13 09:12:11 2007 +0200 +++ b/src/frame.c Mon Aug 13 09:12:40 2007 +0200 @@ -1278,6 +1278,29 @@ } } + /* Test for popup frames hanging around. */ + /* Deletion of a parent frame with popups is deadly. */ + { + Lisp_Object frmcons, devcons, concons; + + FRAME_LOOP_NO_BREAK (frmcons, devcons, concons) + { + Lisp_Object this = XCAR (frmcons); + + + if (! EQ (this, frame) + && EQ (frame, DEVMETH_OR_GIVEN(XDEVICE(XCAR(devcons)), + get_frame_parent, + (XFRAME(this)), + Qnil))) + { + /* We've found a popup frame whose parent is this frame. */ + signal_simple_error + ("Attempt to delete a frame with live popups", frame); + } + } + } + /* Before here, we haven't made any dangerous changes (just checked for error conditions). Now run the delete-frame-hook. Remember that user code there could do any number of dangerous things, including
--- a/src/mule-coding.c Mon Aug 13 09:12:11 2007 +0200 +++ b/src/mule-coding.c Mon Aug 13 09:12:40 2007 +0200 @@ -1991,6 +1991,9 @@ struct gcpro gcpro1, gcpro2; get_buffer_range_char (buf, start, end, &b, &e, 0); + + barf_if_buffer_read_only (buf, b, e); + coding_system = Fget_coding_system (coding_system); instream = make_lisp_buffer_input_stream (buf, b, e, 0); outstream = make_lisp_buffer_output_stream (buf, b, 0); @@ -2379,6 +2382,9 @@ struct gcpro gcpro1, gcpro2; get_buffer_range_char (buf, start, end, &b, &e, 0); + + barf_if_buffer_read_only (buf, b, e); + coding_system = Fget_coding_system (coding_system); instream = make_lisp_buffer_input_stream (buf, b, e, 0); outstream = make_lisp_buffer_output_stream (buf, b, 0); @@ -2486,7 +2492,7 @@ #define ENCODE_SJIS(c1, c2, sj1, sj2) \ do { \ - int I1 = c1, I2 = sj2; \ + int I1 = c1, I2 = c2; \ if (I1 & 1) \ sj1 = (I1 >> 1) + ((I1 < 0xdf) ? 0x31 : 0x71), \ sj2 = I2 - ((I2 >= 0xe0) ? 0x60 : 0x61); \