Mercurial > hg > xemacs-beta
comparison src/faces.c @ 793:e38acbeb1cae
[xemacs-hg @ 2002-03-29 04:46:17 by ben]
lots o' fixes
etc/ChangeLog: New file.
Separated out all entries for etc/ into their own ChangeLog.
Includes entries for the following files:
etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad,
etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL,
etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS,
etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL,
etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se,
etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh,
etc/custom/example-themes/europe-theme.el,
etc/custom/example-themes/ex-custom-file,
etc/custom/example-themes/example-theme.el, etc/e/eterm.ti,
etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1,
etc/gnuserv.README, etc/package-index.LATEST.gpg,
etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm,
etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs,
etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E,
etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm,
etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm,
etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar,
etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1,
etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL,
etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el,
etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\*
unicode/unicode-consortium/8859-16.TXT: New file.
mule/english.el: Define this charset now, since a bug was fixed that formerly
prevented it.
mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be
integers.
Makefile.in.in: Always include gui.c, to fix compile error when TTY-only.
EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo().
Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate
nearly all uses of Lisp_String * in favor of Lisp_Object, and
correct macros so most of them favor Lisp_Object.
Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings,
but at level `debug' (usually ignored). Use it when instantiating
specifiers, so problems can be debugged. Move
log-warning-minimum-level into C so that we can optimize
ERROR_ME_DEBUG_WARN.
Fix warning levels consistent with new definitions.
Add default_ and parent fields to char table; not yet implemented.
New fun Dynarr_verify(); use for further error checking on Dynarrs.
Rearrange code at top of lisp.h in conjunction with dynarr changes.
Fix eifree(). Use Eistrings in various places
(format_event_object(), where_is_to_char(), and callers thereof)
to avoid fixed-size strings buffers. New fun write_eistring().
Reindent and fix GPM code to follow standards.
Set default MS Windows font to Lucida Console (same size as
Courier New but less interline spacing, so more lines fit).
Increase default frame size on Windows to 50 lines. (If that's too
big for the workspace, the frame will be shrunk as necessary.)
Fix problem with text files with no newlines (). (Change
`convert-eol' coding system to use `nil' for autodetect,
consistent with make-coding-system.)
Correct compile warnings in vm-limit.c.
Fix handling of reverse-direction charsets to avoid errors when
opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el.
Recode some object printing methods to use write_fmt_string()
instead of a fixed buffer and sprintf.
Turn on display of png comments as warnings (level `info'), now
that they're unobtrusive.
Revamped the sound documentation.
Fixed bug in redisplay w.r.t. hscroll/truncation/continuation
glyphs causing jumping up and down of the lines, since they're
bigger than the line size. (It was seen most obviously when
there's a horizontal scroll bar, e.g. do C-h a glyph or something
like that.) The problem was that the glyph-contrib-p setting on
glyphs was ignored even if it was set properly, which it wasn't
until now.
author | ben |
---|---|
date | Fri, 29 Mar 2002 04:49:13 +0000 |
parents | 943eaba38521 |
children | a5954632b187 |
comparison
equal
deleted
inserted
replaced
792:4e83fdb13eb9 | 793:e38acbeb1cae |
---|---|
1 /* "Face" primitives | 1 /* "Face" primitives |
2 Copyright (C) 1994 Free Software Foundation, Inc. | 2 Copyright (C) 1994 Free Software Foundation, Inc. |
3 Copyright (C) 1995 Board of Trustees, University of Illinois. | 3 Copyright (C) 1995 Board of Trustees, University of Illinois. |
4 Copyright (C) 1995, 1996, 2001 Ben Wing. | 4 Copyright (C) 1995, 1996, 2001, 2002 Ben Wing. |
5 Copyright (C) 1995 Sun Microsystems, Inc. | 5 Copyright (C) 1995 Sun Microsystems, Inc. |
6 | 6 |
7 This file is part of XEmacs. | 7 This file is part of XEmacs. |
8 | 8 |
9 XEmacs is free software; you can redistribute it and/or modify it | 9 XEmacs is free software; you can redistribute it and/or modify it |
569 { | 569 { |
570 if (NILP (memq_no_quit (charset, | 570 if (NILP (memq_no_quit (charset, |
571 XFACE (face)->charsets_warned_about))) | 571 XFACE (face)->charsets_warned_about))) |
572 { | 572 { |
573 #ifdef MULE | 573 #ifdef MULE |
574 if (! UNBOUNDP (charset)) | 574 if (!UNBOUNDP (charset)) |
575 warn_when_safe | 575 warn_when_safe |
576 (Qfont, Qwarning, | 576 (Qfont, Qnotice, |
577 "Unable to instantiate font for face %s, charset %s", | 577 "Unable to instantiate font for charset %s, face %s", |
578 string_data (symbol_name | 578 XSTRING_DATA (symbol_name |
579 (XSYMBOL (XFACE (face)->name))), | 579 (XSYMBOL (XCHARSET_NAME (charset)))), |
580 string_data (symbol_name | 580 XSTRING_DATA (symbol_name |
581 (XSYMBOL (XCHARSET_NAME (charset))))); | 581 (XSYMBOL (XFACE (face)->name)))); |
582 else | 582 else |
583 #endif | 583 #endif |
584 warn_when_safe (Qfont, Qwarning, | 584 warn_when_safe (Qfont, Qnotice, |
585 "Unable to instantiate font for face %s", | 585 "Unable to instantiate font for face %s", |
586 string_data (symbol_name | 586 XSTRING_DATA (symbol_name |
587 (XSYMBOL (XFACE (face)->name)))); | 587 (XSYMBOL (XFACE (face)->name)))); |
588 XFACE (face)->charsets_warned_about = | 588 XFACE (face)->charsets_warned_about = |
589 Fcons (charset, XFACE (face)->charsets_warned_about); | 589 Fcons (charset, XFACE (face)->charsets_warned_about); |
590 } | 590 } |
591 retval = Vthe_null_font_instance; | 591 retval = Vthe_null_font_instance; |
781 face = Ffind_face (name); | 781 face = Ffind_face (name); |
782 if (!NILP (face)) | 782 if (!NILP (face)) |
783 return face; | 783 return face; |
784 | 784 |
785 f = allocate_face (); | 785 f = allocate_face (); |
786 XSETFACE (face, f); | 786 face = wrap_face (f); |
787 | 787 |
788 f->name = name; | 788 f->name = name; |
789 f->doc_string = doc_string; | 789 f->doc_string = doc_string; |
790 f->foreground = Fmake_specifier (Qcolor); | 790 f->foreground = Fmake_specifier (Qcolor); |
791 set_color_attached_to (f->foreground, face, Qforeground); | 791 set_color_attached_to (f->foreground, face, Qforeground); |
884 | 884 |
885 /* When making the initial terminal device, there is no Lisp code | 885 /* When making the initial terminal device, there is no Lisp code |
886 loaded, so we can't do this. */ | 886 loaded, so we can't do this. */ |
887 if (initialized) | 887 if (initialized) |
888 { | 888 { |
889 Lisp_Object tdevice; | 889 Lisp_Object tdevice = wrap_device (d); |
890 XSETDEVICE (tdevice, d); | 890 |
891 call_critical_lisp_code (d, Qinit_device_faces, tdevice); | 891 call_critical_lisp_code (d, Qinit_device_faces, tdevice); |
892 } | 892 } |
893 } | 893 } |
894 | 894 |
895 void | 895 void |
897 { | 897 { |
898 /* When making the initial terminal device, there is no Lisp code | 898 /* When making the initial terminal device, there is no Lisp code |
899 loaded, so we can't do this. */ | 899 loaded, so we can't do this. */ |
900 if (initialized) | 900 if (initialized) |
901 { | 901 { |
902 Lisp_Object tframe; | 902 Lisp_Object tframe = wrap_frame (frm); |
903 XSETFRAME (tframe, frm); | 903 |
904 | 904 |
905 /* DO NOT change the selected frame here. If the debugger goes off | 905 /* DO NOT change the selected frame here. If the debugger goes off |
906 it will try and display on the frame being created, but it is not | 906 it will try and display on the frame being created, but it is not |
907 ready for that yet and a horrible death will occur. Any random | 907 ready for that yet and a horrible death will occur. Any random |
908 code depending on the selected-frame as an implicit arg should be | 908 code depending on the selected-frame as an implicit arg should be |
1082 cachel->font[offs] = new_val; | 1082 cachel->font[offs] = new_val; |
1083 return new_val; | 1083 return new_val; |
1084 } | 1084 } |
1085 | 1085 |
1086 new_val = face_property_matching_instance (face, Qfont, charset, domain, | 1086 new_val = face_property_matching_instance (face, Qfont, charset, domain, |
1087 /* #### look into ERROR_ME_NOT */ | 1087 /* #### look into error flag */ |
1088 ERROR_ME_NOT, 1, Qzero); | 1088 ERROR_ME_DEBUG_WARN, 1, Qzero); |
1089 if (UNBOUNDP (new_val)) | 1089 if (UNBOUNDP (new_val)) |
1090 { | 1090 { |
1091 bound = 0; | 1091 bound = 0; |
1092 new_val = face_property_matching_instance (face, Qfont, | 1092 new_val = face_property_matching_instance (face, Qfont, |
1093 charset, domain, | 1093 charset, domain, |
1094 /* #### look into | 1094 /* #### look into error |
1095 ERROR_ME_NOT */ | 1095 flag */ |
1096 ERROR_ME_NOT, 0, Qzero); | 1096 ERROR_ME_DEBUG_WARN, 0, |
1097 Qzero); | |
1097 } | 1098 } |
1098 if (!UNBOUNDP (cachel->font[offs]) && !EQ (new_val, cachel->font[offs])) | 1099 if (!UNBOUNDP (cachel->font[offs]) && !EQ (new_val, cachel->font[offs])) |
1099 cachel->dirty = 1; | 1100 cachel->dirty = 1; |
1100 cachel->font_updated[offs] = 1; | 1101 cachel->font_updated[offs] = 1; |
1101 cachel->font[offs] = new_val; | 1102 cachel->font[offs] = new_val; |
1205 int must_finish_frobbing = ! WINDOW_FACE_CACHEL (w, DEFAULT_INDEX); | 1206 int must_finish_frobbing = ! WINDOW_FACE_CACHEL (w, DEFAULT_INDEX); |
1206 struct face_cachel new_cachel; | 1207 struct face_cachel new_cachel; |
1207 Lisp_Object domain; | 1208 Lisp_Object domain; |
1208 | 1209 |
1209 reset_face_cachel (&new_cachel); | 1210 reset_face_cachel (&new_cachel); |
1210 XSETWINDOW (domain, w); | 1211 domain = wrap_window (w); |
1211 update_face_cachel_data (&new_cachel, domain, face); | 1212 update_face_cachel_data (&new_cachel, domain, face); |
1212 Dynarr_add (w->face_cachels, new_cachel); | 1213 Dynarr_add (w->face_cachels, new_cachel); |
1213 | 1214 |
1214 /* The face's background pixmap have not yet been frobbed (see comment | 1215 /* The face's background pixmap have not yet been frobbed (see comment |
1215 int update_face_cachel_data), so we have to do it now */ | 1216 int update_face_cachel_data), so we have to do it now */ |
1412 { | 1413 { |
1413 struct face_cachel *cachel = WINDOW_FACE_CACHEL (w, elt); | 1414 struct face_cachel *cachel = WINDOW_FACE_CACHEL (w, elt); |
1414 | 1415 |
1415 if (EQ (cachel->face, face)) | 1416 if (EQ (cachel->face, face)) |
1416 { | 1417 { |
1417 Lisp_Object window; | 1418 Lisp_Object window = wrap_window (w); |
1418 XSETWINDOW (window, w); | 1419 |
1419 if (!cachel->updated) | 1420 if (!cachel->updated) |
1420 update_face_cachel_data (cachel, window, face); | 1421 update_face_cachel_data (cachel, window, face); |
1421 return elt; | 1422 return elt; |
1422 } | 1423 } |
1423 } | 1424 } |
1569 struct extent_fragment *ef) | 1570 struct extent_fragment *ef) |
1570 { | 1571 { |
1571 struct face_cachel cachel; | 1572 struct face_cachel cachel; |
1572 int len = Dynarr_length (ef->extents); | 1573 int len = Dynarr_length (ef->extents); |
1573 face_index findex = 0; | 1574 face_index findex = 0; |
1574 Lisp_Object window; | |
1575 XSETWINDOW (window, w); | |
1576 | 1575 |
1577 /* Optimize the default case. */ | 1576 /* Optimize the default case. */ |
1578 if (len == 0) | 1577 if (len == 0) |
1579 return DEFAULT_INDEX; | 1578 return DEFAULT_INDEX; |
1580 else | 1579 else |
1693 } | 1692 } |
1694 | 1693 |
1695 void | 1694 void |
1696 update_frame_face_values (struct frame *f) | 1695 update_frame_face_values (struct frame *f) |
1697 { | 1696 { |
1698 Lisp_Object frm; | 1697 Lisp_Object frm = wrap_frame (f); |
1699 | 1698 |
1700 XSETFRAME (frm, f); | |
1701 update_EmacsFrame (frm, Qforeground); | 1699 update_EmacsFrame (frm, Qforeground); |
1702 update_EmacsFrame (frm, Qbackground); | 1700 update_EmacsFrame (frm, Qbackground); |
1703 update_EmacsFrame (frm, Qfont); | 1701 update_EmacsFrame (frm, Qfont); |
1704 } | 1702 } |
1705 | 1703 |
2039 /* printer device */ | 2037 /* printer device */ |
2040 inst_list = Fcons (Fcons (list1 (Qmsprinter), | 2038 inst_list = Fcons (Fcons (list1 (Qmsprinter), |
2041 build_string (*mswfontptr)), | 2039 build_string (*mswfontptr)), |
2042 inst_list); | 2040 inst_list); |
2043 } | 2041 } |
2042 /* Use Lucida Console rather than Courier New if it exists -- the | |
2043 line spacing is much less, so many more lines fit with the same | |
2044 size font. (And it's specifically designed for screens.) */ | |
2045 inst_list = Fcons (Fcons (list1 (Qmswindows), | |
2046 build_string ("Lucida Console:Regular:10::")), | |
2047 inst_list); | |
2044 } | 2048 } |
2045 #endif /* HAVE_MS_WINDOWS */ | 2049 #endif /* HAVE_MS_WINDOWS */ |
2046 | 2050 |
2047 set_specifier_fallback (Fget (Vdefault_face, Qfont, Qnil), inst_list); | 2051 set_specifier_fallback (Fget (Vdefault_face, Qfont, Qnil), inst_list); |
2048 } | 2052 } |