annotate tests/gutter-test.el @ 5124:623d57b7fbe8 ben-lisp-object

separate regular and disksave finalization, print method fixes. Create separate disksave method and make the finalize method only be for actual object finalization, not disksave finalization. Fix places where 0 was given in place of a printer -- print methods are mandatory, and internal objects formerly without a print method now must explicitly specify internal_object_printer(). Change the defn of CONSOLE_LIVE_P to avoid problems in some weird situations. -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-01-20 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (very_old_free_lcrecord): * alloc.c (disksave_object_finalization_1): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (sweep_lcrecords_1): * buffer.c: * bytecode.c: * bytecode.c (Fcompiled_function_p): * chartab.c: * console-impl.h: * console-impl.h (CONSOLE_TYPE_P): * console.c: * console.c (set_quit_events): * data.c: * data.c (Fmake_ephemeron): * database.c: * database.c (finalize_database): * database.c (Fclose_database): * device-msw.c: * device-msw.c (finalize_devmode): * device-msw.c (allocate_devmode): * device.c: * elhash.c: * elhash.c (finalize_hash_table): * eval.c: * eval.c (bind_multiple_value_limits): * event-stream.c: * event-stream.c (finalize_command_builder): * events.c: * events.c (mark_event): * extents.c: * extents.c (finalize_extent_info): * extents.c (uninit_buffer_extents): * faces.c: * file-coding.c: * file-coding.c (finalize_coding_system): * file-coding.h: * file-coding.h (struct coding_system_methods): * file-coding.h (struct detector): * floatfns.c: * floatfns.c (extract_float): * fns.c: * fns.c (Fidentity): * font-mgr.c (finalize_fc_pattern): * font-mgr.c (finalize_fc_config): * frame.c: * glyphs.c: * glyphs.c (finalize_image_instance): * glyphs.c (unmap_subwindow_instance_cache_mapper): * gui.c: * gui.c (gui_error): * keymap.c: * lisp.h (struct Lisp_Symbol): * lrecord.h: * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (finalize_lstream): * lstream.c (disksave_lstream): * marker.c: * marker.c (finalize_marker): * mule-charset.c (make_charset): * number.c: * objects.c: * objects.c (finalize_color_instance): * objects.c (finalize_font_instance): * opaque.c: * opaque.c (make_opaque_ptr): * process-nt.c: * process-nt.c (nt_finalize_process_data): * process-nt.c (nt_deactivate_process): * process.c: * process.c (finalize_process): * procimpl.h (struct process_methods): * scrollbar.c: * scrollbar.c (free_scrollbar_instance): * specifier.c (finalize_specifier): * symbols.c: * toolbar.c: * toolbar.c (Ftoolbar_button_p): * tooltalk.c: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_finalizer): * ui-gtk.c (allocate_emacs_gtk_boxed_data): * window.c: * window.c (finalize_window): * window.c (mark_window_as_deleted): Separate out regular and disksave finalization. Instead of a FOR_DISKSAVE argument to the finalizer, create a separate object method `disksaver'. Make `finalizer' have only one argument. Go through and separate out all finalize methods into finalize and disksave. Delete lots of thereby redundant disksave checking. Delete places that signal an error if we attempt to disksave -- all of these objects are non-dumpable and we will get an error from pdump anyway if we attempt to dump them. After this is done, only one object remains that has a disksave method -- lstream. Change DEFINE_*_LISP_OBJECT_WITH_PROPS to DEFINE_*_GENERAL_LISP_OBJECT, which is used for specifying either property methods or disksave methods (or in the future, any other less-used methods). Remove the for_disksave argument to finalize_process_data. Don't provide a disksaver for processes because no one currently needs it. Clean up various places where objects didn't provide a print method. It was made mandatory in previous changes, and all methods now either provide their own print method or use internal_object_printer or external_object_printer. Change the definition of CONSOLE_LIVE_P to use the contype enum rather than looking into the conmeths structure -- in some weird situations with dead objects, the conmeths structure is NULL, and printing such objects from debug_print() will crash if we try to look into the conmeths structure.
author Ben Wing <ben@xemacs.org>
date Wed, 20 Jan 2010 07:05:57 -0600
parents 8a653fbe5c27
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4781
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
1 ;;; Copyright (C) 1998 Andy Piper
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
2
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
3 ;;; This file is part of XEmacs.
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
4
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
5 ;;; XEmacs is free software; you can redistribute it and/or modify it
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
6 ;;; under the terms of the GNU General Public License as published by
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
7 ;;; the Free Software Foundation; either version 2, or (at your
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
8 ;;; option) any later version.
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
9
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
10 ;;; XEmacs is distributed in the hope that it will be useful, but
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
11 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
12 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
13 ;;; General Public License for more details.
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
14
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
15 ;;; You should have received a copy of the GNU General Public License
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
16 ;;; along with XEmacs; see the file COPYING. If not, write to the Free
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
17 ;;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
18 ;;; Boston, MA 02110-1301, USA.
8a653fbe5c27 Add copyright and GPL v2 or later notices to Andy Piper's contributions, with
Jerry James <james@xemacs.org>
parents: 863
diff changeset
19
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
20 (setq str "Hello\nAgain")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
21 (setq str-ext (make-extent 0 5 str))
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
22 (set-extent-begin-glyph
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
23 str-ext
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
24 (make-glyph [xpm :file "../etc/xemacs-icon.xpm"]))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
25 (set-extent-property str-ext 'mouse-face 'highlight)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
26
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
27 (setq str2 "Hello\n")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
28 (setq str2-ext (make-extent 0 1 str2))
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
29 (set-extent-begin-glyph
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
30 str2-ext
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
31 (make-glyph
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
32 [button :width 5 :height 1
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
33 :face modeline-mousable
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
34 :callback (set-specifier bottom-gutter-visible-p '(str2))
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
35 :descriptor "ok" :selected t]))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
36
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
37 (set-specifier bottom-gutter-height 'autodetect)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
38 (set-specifier bottom-gutter-border-width 2)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
39
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
40 (set-gutter-element
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
41 bottom-gutter 'str
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
42 (make-glyph
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
43 [layout :orientation vertical :margin-width 4
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
44 :vertically-justify center :horizontally-justify left
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
45 :items ([string :data "Fontifying glyphs.c..."]
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
46 [layout :orientation horizontal
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
47 :items
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
48 ([progress-gauge :value 0 :pixel-height 24
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
49 :pixel-width 250 :descriptor
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
50 "Progress"]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
51 [button :pixel-height 24
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
52 :descriptor " Stop "
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
53 :callback (quote quit)])])]))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
54
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
55 (set-gutter-element-visible-p bottom-gutter-visible-p 'str t)
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
56 (set-gutter-element left-gutter 'str2 str2)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
57 (set-gutter-element-visible-p left-gutter-visible-p 'str2 t)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 398
diff changeset
58