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 }