view etc/Emacs.ad @ 5146:88bd4f3ef8e4

make lrecord UID's have a separate UID space for each object, resurrect debug SOE code in extents.c -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-03-15 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (c_readonly): * alloc.c (deadbeef_memory): * alloc.c (make_compiled_function): * alloc.c (make_button_data): * alloc.c (make_motion_data): * alloc.c (make_process_data): * alloc.c (make_timeout_data): * alloc.c (make_magic_data): * alloc.c (make_magic_eval_data): * alloc.c (make_eval_data): * alloc.c (make_misc_user_data): * alloc.c (noseeum_make_marker): * alloc.c (ADDITIONAL_FREE_string): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_once_early): * bytecode.c (print_compiled_function): * bytecode.c (mark_compiled_function): * casetab.c: * casetab.c (print_case_table): * console.c: * console.c (print_console): * database.c (print_database): * database.c (finalize_database): * device-msw.c (sync_printer_with_devmode): * device-msw.c (print_devmode): * device-msw.c (finalize_devmode): * device.c: * device.c (print_device): * elhash.c: * elhash.c (print_hash_table): * eval.c (print_multiple_value): * eval.c (mark_multiple_value): * events.c (deinitialize_event): * events.c (print_event): * events.c (event_equal): * extents.c: * extents.c (soe_dump): * extents.c (soe_insert): * extents.c (soe_delete): * extents.c (soe_move): * extents.c (extent_fragment_update): * extents.c (print_extent_1): * extents.c (print_extent): * extents.c (vars_of_extents): * frame.c: * frame.c (print_frame): * free-hook.c: * free-hook.c (check_free): * glyphs.c: * glyphs.c (print_image_instance): * glyphs.c (print_glyph): * gui.c: * gui.c (copy_gui_item): * hash.c: * hash.c (NULL_ENTRY): * hash.c (KEYS_DIFFER_P): * keymap.c (print_keymap): * keymap.c (MARKED_SLOT): * lisp.h: * lrecord.h: * lrecord.h (LISP_OBJECT_UID): * lrecord.h (set_lheader_implementation): * lrecord.h (struct old_lcrecord_header): * lstream.c (print_lstream): * lstream.c (finalize_lstream): * marker.c (print_marker): * marker.c (marker_equal): * mc-alloc.c (visit_all_used_page_headers): * mule-charset.c: * mule-charset.c (print_charset): * objects.c (print_color_instance): * objects.c (print_font_instance): * objects.c (finalize_font_instance): * opaque.c (print_opaque): * opaque.c (print_opaque_ptr): * opaque.c (equal_opaque_ptr): * print.c (internal_object_printer): * print.c (enum printing_badness): * rangetab.c (print_range_table): * rangetab.c (range_table_equal): * specifier.c (print_specifier): * specifier.c (finalize_specifier): * symbols.c: * symbols.c (print_symbol_value_magic): * tooltalk.c: * tooltalk.c (print_tooltalk_message): * tooltalk.c (print_tooltalk_pattern): * window.c (print_window): * window.c (debug_print_window): (1) Make lrecord UID's have a separate UID space for each object. Otherwise, with 20-bit UID's, we rapidly wrap around, especially when common objects like conses and strings increment the UID value for every object created. (Originally I tried making two UID spaces, one for objects that always print readably and hence don't display the UID, and one for other objects. But certain objects like markers for which a UID is displayed are still generated rapidly enough that UID overflow is a serious issue.) This also has the advantage of making UID values smaller, hence easier to remember -- their main purpose is to make it easier to keep track of different objects of the same type when debugging code. Make sure we dump lrecord UID's so that we don't have problems with pdumped and non-dumped objects having the same UID. (2) Display UID's consistently whenever an object (a) doesn't consistently print readably (objects like cons and string, which always print readably, can't display a UID), and (b) doesn't otherwise have a unique property that makes objects of a particular type distinguishable. (E.g. buffers didn't and still don't print an ID, but the buffer name uniquely identifies the buffer.) Some types, such as event, extent, compiled-function, didn't always (or didn't ever) display an ID; others (such as marker, extent, lstream, opaque, opaque-ptr, any object using internal_object_printer()) used to display the actual machine pointer instead. (3) Rename NORMAL_LISP_OBJECT_UID to LISP_OBJECT_UID; make it work over all Lisp objects and take a Lisp object, not a struct pointer. (4) Some misc cleanups in alloc.c, elhash.c. (5) Change code in events.c that "deinitializes" an event so that it doesn't increment the event UID counter in the process. Also use deadbeef_memory() to overwrite memory instead of doing the same with custom code. In the process, make deadbeef_memory() in alloc.c always available, and delete extraneous copy in mc-alloc.c. Also capitalize all uses of 0xDEADBEEF. Similarly in elhash.c call deadbeef_memory(). (6) Resurrect "debug SOE" code in extents.c. Make it conditional on DEBUG_XEMACS and on a `debug-soe' variable, rather than on SOE_DEBUG. Make it output to stderr, not stdout. (7) Delete some custom print methods that were identical to external_object_printer().
author Ben Wing <ben@xemacs.org>
date Mon, 15 Mar 2010 16:35:38 -0500
parents ea7a6c12df45
children 388762703a21
line wrap: on
line source

! This is the app-defaults file for XEmacs.
!
! This used to be identical to sample.Xresources, but the resources
! below have been rewritten to be as general as possible to avoid
! overriding user resources.  Other than the form rewriting, both
! files should be kept in sync. 
! 
! The resources below are loaded into the XEmacs executable at compile-time:
! changes to .../etc/Emacs.ad made after XEmacs has been built will have no
! effect.
! 
! However, you may copy .../etc/Emacs.ad to /usr/share/X11/app-defaults/Emacs
! (or whatever the standard app-defaults directory is at your site) to cause
! it to be consulted at run-time.  (Do this only for site-wide customizations:
! personal customizations should be put into ~/.Xresources instead.)
! Note that the file must be named Emacs, not XEmacs.
! 
! See the NEWS file (C-h n) or XEmacs manual (C-h i) for a description of
! the various resources and the syntax for setting them.


! Colors and backgrounds.
! ======================
! The contrasts of these colors will cause them to map to the appropriate
! one of "black" or "white" on monochrome systems.
! 
! The valid color names on your system can be found by looking in the file
! `rgb.txt', usually found in /usr/lib/X11/ or /usr/openwin/lib/X11/.

! Set the modeline colors.
!Emacs.modeline*attributeForeground:	Black
!Emacs.modeline*attributeBackground:	Gray75

! Set the color of the text cursor.
!Emacs.text-cursor*attributeBackground:	Red3

! If you want to set the color of the mouse pointer, do this:
! Emacs.pointer*attributeForeground:	Black
! If you want to set the background of the mouse pointer, do this:
! Emacs.pointer*attributeBackground:	White
! Note that by default, the pointer foreground and background are the same
! as the default face.

! Set the menubar colors.  This overrides the default foreground and
! background colors specified above.
*menubar*Foreground:			Gray30
*menubar*Background:			Gray80
! This is for buttons in the menubar.  
! Yellow would be better, but that would map to white on monochrome.
*menubar*buttonForeground:		Blue
*XlwMenu*highlightForeground:		Red
*XlwMenu*titleForeground:		Maroon
*XlwMenu*selectColor:			ForestGreen
*XmToggleButton*selectColor:		ForestGreen

! Specify the colors of popup menus.
*popup*Foreground:			Black
*popup*Background:			Gray80

! Specify the colors of the various sub-widgets of the dialog boxes.
*dialog*Foreground:			Black
! #A5C0C1 is a shade of blue
*dialog*Background:			#A5C0C1
! The following three are for Motif dialog boxes ...
*dialog*XmTextField*Background:		WhiteSmoke
*dialog*XmText*Background:		WhiteSmoke
*dialog*XmList*Background:		WhiteSmoke
! While this one is for Athena dialog boxes.
*dialog*Command*Background:		WhiteSmoke

! Xlw Scrollbar colors
*XlwScrollBar*Foreground:		Gray30
*XlwScrollBar*Background:		Gray80
*XmScrollBar*Foreground:		Gray30
*XmScrollBar*Background:		Gray80

!
! The Lucid Scrollbar supports two added resources, SliderStyle is either
! "plain" (default) or "dimple".  Dimple puts a small dimple in the middle
! of the slider that depresses when the slider is clicked on.  ArrowPosition is
! either "opposite" (default) or "same".  Opposite puts the arrows at opposite
! of the scrollbar, same puts both arrows at the same end, like the Amiga.
!
! Emacs*XlwScrollBar.SliderStyle:    dimple
! Emacs*XlwScrollBar.ArrowPosition:  opposite


!
! If you want to turn off a toolbar, set its height or width to 0.
! The correct size value is not really arbitrary.  We only control it
! this way in order to avoid excess frame resizing when turning the
! toolbars on and off.
!
! To change the heights and widths of the toolbars:
!
! Emacs.topToolBarHeight:		37
! Emacs.bottomToolBarHeight:		0
! Emacs.leftToolBarWidth:		0
! Emacs.rightToolBarWidth:		0

!*topToolBarShadowColor:			Gray90
!*bottomToolBarShadowColor:		Gray40
!*backgroundToolBarColor:		Gray80
*toolBarShadowThickness:		2


! If you want to turn off vertical scrollbars, or change the default
! pixel width of the vertical scrollbars, do it like this (0 width
! means no vertical scrollbars):
! 
! Emacs.scrollBarWidth: 0
! 
! To change it for a particular frame, do this:
! 
! Emacs*FRAME-NAME.scrollBarWidth: 0


! If you want to turn off horizontal scrollbars, or change the default
! pixel height of the horizontal scrollbars, do it like this (0 height
! means no horizontal scrollbars):
! 
! Emacs.scrollBarHeight: 0
! 
! To change it for a particular frame, do this:
! 
! Emacs*FRAME-NAME.scrollBarHeight: 0


! To dynamically change the labels used for menubar buttons...
! 
! Emacs*XlwMenu.resourceLabels: True
! Emacs*XlwMenu.newFrame.labelString: Open Another Window

! To have the Motif scrollbars on the left instead of the right, do this:
! 
! Emacs*scrollBarPlacement: BOTTOM_LEFT
!
! To have the Athena scrollbars on the right, use `BOTTOM_RIGHT' instead

! To have Motif scrollbars act more like Xt scrollbars...
!
! Emacs*XmScrollBar.translations: #override \n\
!     <Btn1Down>:     PageDownOrRight(0)    \n\
!     <Btn3Down>:     PageUpOrLeft(0)

! Fonts.
! ======
! XEmacs requires the use of XLFD (X Logical Font Description) format font
! names, which look like
! 
! 	*-courier-medium-r-*-*-*-120-*-*-*-*-*-*
! 
! if you use any of the other, less strict font name formats, some of which
! look like
! 		lucidasanstypewriter-12
! and		fixed
! and		9x13
! 
! then XEmacs won't be able to guess the names of the bold and italic versions.
! All X fonts can be referred to via XLFD-style names, so you should use those
! forms.  See the man pages for X(1), xlsfonts(1), and xfontsel(1).


! The default font for the text area of XEmacs is chosen at run-time
! by lisp code which tries a number of different possibilities in order
! of preference.  If you wish to override it, use this:
! 
! Emacs.default.attributeFont:  -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*

! If you choose a font which does not have an italic version, you can specify
! some other font to use for it here:
! 
! Emacs.italic.attributeFont:  -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-*
!
! If you choose a font which does not have a bold-italic version,
! you can specify some other font to use for it here:
! 
! Emacs.bold-italic.attributeFont:  -*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-*
! 
! And here is how you would set the background color of the `highlight' face,
! but only on the screen named `debugger':
! 
! Emacs*debugger.highlight.attributeBackground:		PaleTurquoise
! 
! See the NEWS file (C-h n) for a more complete description of the resource
! syntax of faces.


! Font of the modeline, menubar and pop-up menus.
! Note that the menubar resources do not use the `face' syntax, since they
! are X toolkit widgets and thus outside the domain of XEmacs proper.
! 
! When X Font Sets are enabled with ./configure --with-xfs (eg, for
! multilingual menubars and XIM), some .font resources (those specific to
! the Lucid widget set) are ignored in favor of .fontSet resources.  This
! example shows how to add fonts for Japanese menubars:
!
! *menubar*FontSet:	-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
!			-*-*-*-*-*-*-*-120-*-jisx0208.1983-0
!
*menubar*Font:			-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*
*popup*Font:			-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*
*menubar*FontSet:		-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
 			        -*-*-*-*-*-*-*-120-*-iso10646-1, \
 			        -*-*-*-*-*-*-*-120-*-jisx0208.1983-0, \
 			        -*-*-*-*-*-*-*-120-*-jisx0201.1976-0
*popup*FontSet:			-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \
   			        -*-*-*-*-*-*-*-120-*-iso10646-1, \
 			        -*-*-*-*-*-*-*-120-*-jisx0208.1983-0, \
 			        -*-*-*-*-*-*-*-120-*-jisx0201.1976-0

! Gui elements share this font
!
Emacs.gui-element.attributeFont:  -*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-*

! Font in the Motif dialog boxes.
! (Motif uses `fontList' while most other things use `font' - if you don't
! know why you probably don't want to.)
! 
*XmDialogShell*FontList:	-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*
*XmTextField*FontList:		-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*
*XmText*FontList:		-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*
*XmList*FontList:		-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*

! Font in the Athena dialog boxes.
! I think 14-point looks nicer than 12-point.
! Some people use 12-point anyway because you get more text, but
! there's no purpose at all in doing this for dialog boxes.

*Dialog*Font:			-*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-*

! Dialog box translations.
! =======================

! This accelerator binds <return> in a dialog box to <activate> on button1
*dialog*button1.accelerators:#override\
<KeyPress>Return: ArmAndActivate()\n\
<KeyPress>KP_Enter: ArmAndActivate()\n\
Ctrl<KeyPress>m: ArmAndActivate()\n

! Translations to make the TextField widget behave more like XEmacs
*XmTextField*translations: #override\n\
	!<Key>osfBackSpace:	delete-previous-character()\n\
	!<Key>osfDelete:	delete-previous-character()\n\
	!Ctrl<Key>h: 		delete-previous-character()\n\
	!Ctrl<Key>d: 		delete-next-character()\n\
	!Meta<Key>osfDelete:	delete-previous-word()\n\
	!Meta<Key>osfBackSpace:	delete-previous-word()\n\
	!Meta<Key>d:		delete-next-word()\n\
	!Ctrl<Key>k:		delete-to-end-of-line()\n\
	!Ctrl<Key>g:		process-cancel()\n\
	!Ctrl<Key>b:		backward-character()\n\
	!<Key>osfLeft:		backward-character()\n\
	!Ctrl<Key>f:		forward-character()\n\
	!<Key>osfRight:		forward-character()\n\
	!Meta<Key>b:		backward-word()\n\
	!Meta<Key>osfLeft:	backward-word()\n\
	!Meta<Key>f:		forward-word()\n\
	!Meta<Key>osfRight:	forward-word()\n\
	!Ctrl<Key>e:		end-of-line()\n\
	!Ctrl<Key>a:		beginning-of-line()\n\
	!Ctrl<Key>w:		cut-clipboard()\n\
	!Meta<Key>w:		copy-clipboard()\n\
	<Btn2Up>:		copy-primary()\n

! With the XEmacs typeahead it's better to not have space be bound to
! ArmAndActivate() for buttons that appear in dialog boxes.  This is
! not 100% Motif compliant but the benefits far outweight the
! compliancy problem.  
*dialog*XmPushButton*translations:#override\n\
    <Btn1Down>:         Arm()\n\
    <Btn1Down>,<Btn1Up>: Activate()\
			Disarm()\n\
    <Btn1Down>(2+):     MultiArm()\n\
    <Btn1Up>(2+):       MultiActivate()\n\
    <Btn1Up>:           Activate()\
		        Disarm()\n\
    <Key>osfSelect:  	ArmAndActivate()\n\
    <Key>osfActivate:   ArmAndActivate()\n\
    <Key>osfHelp:	Help()\n\
    ~Shift ~Meta ~Alt <Key>Return:	ArmAndActivate()\n\
    <EnterWindow>:      Enter()\n\
    <LeaveWindow>:      Leave()\n

! Native Widget translations
! ======================= 
Emacs*Text*translations: #override\n\
	<Btn1Down>:	widget-focus-in() select-start()\n

! XIM input method style 
! ======================= 

! ximStyles is a (whitespace or comma-separated) list of XIMStyles in
! order of user's preference.  
! Choose a subset of the following styles or reorder to taste
*ximStyles: XIMPreeditPosition|XIMStatusArea\
            XIMPreeditPosition|XIMStatusNothing\
            XIMPreeditPosition|XIMStatusNone\
            XIMPreeditNothing|XIMStatusArea\
            XIMPreeditNothing|XIMStatusNothing\
            XIMPreeditNothing|XIMStatusNone\
            XIMPreeditNone|XIMStatusArea\
            XIMPreeditNone|XIMStatusNothing\
            XIMPreeditNone|XIMStatusNone

! XIM Preedit and Status foreground and background
*EmacsFrame.ximForeground: black
*EmacsFrame.ximBackground: white

! XIM fontset (defaults to system fontset default)
! *EmacsFrame.FontSet: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*