annotate lisp/cus-face.el @ 4981:4aebb0131297

Cleanups/renaming of EXTERNAL_TO_C_STRING and friends -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. src/ChangeLog addition: 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * gui-x.c (menu_separator_style_and_to_external): * gui-x.c (add_accel_and_to_external): * gui-x.c (button_item_to_widget_value): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c.
author Ben Wing <ben@xemacs.org>
date Fri, 05 Feb 2010 11:02:24 -0600
parents 69a1eda3da06
children 5502045ec510
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;;; cus-face.el -- Support for Custom faces.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 ;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 ;; Maintainer: Hrvoje Niksic <hniksic@xemacs.org>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 ;; Keywords: help, faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 ;; Version: 1.9960-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3027
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
11 ;;; Synched with: Not synched.
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
12
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 ;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 ;; See `custom.el'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 ;;; Code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 707
diff changeset
19 ;; it is now safe to put the `provide' anywhere. if an error occurs while
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 707
diff changeset
20 ;; loading, all provides (and fsets) will be undone. put it first to
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 707
diff changeset
21 ;; prevent require/provide loop with custom and cus-face.
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 707
diff changeset
22 (provide 'cus-face)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 (require 'custom)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ;; To elude the warnings for font functions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 (eval-when-compile
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 (require 'font))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;;; Declaring a face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 (defun custom-declare-face (face spec doc &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 "Like `defface', but FACE is evaluated as a normal argument."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 ;; (when (fboundp 'pureload)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 ;; (error "Attempt to declare a face during dump"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 ;; #### should we possibly reset force-face here?
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 (unless (get face 'face-defface-spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 (put face 'face-defface-spec spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 (unless (find-face face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 ;; If the user has already created the face, respect that.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 (let ((value (or (get face 'saved-face) spec))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 (frames (relevant-custom-frames))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 ;; Create global face.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 (make-empty-face face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 (face-display-set face value nil '(custom))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 ;; Create frame local faces
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 (while frames
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 (setq frame (car frames)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 frames (cdr frames))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 (face-display-set face value frame '(custom)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 (init-face-from-resources face)))
4535
69a1eda3da06 Distinguish vars and functions in #'symbol-file, #'describe-{function,variable}
Aidan Kehoe <kehoea@parhasard.net>
parents: 3918
diff changeset
53 ;; Don't record SPEC until we see it causes no errors.
69a1eda3da06 Distinguish vars and functions in #'symbol-file, #'describe-{function,variable}
Aidan Kehoe <kehoea@parhasard.net>
parents: 3918
diff changeset
54 (put face 'face-defface-spec spec)
69a1eda3da06 Distinguish vars and functions in #'symbol-file, #'describe-{function,variable}
Aidan Kehoe <kehoea@parhasard.net>
parents: 3918
diff changeset
55 (push (cons 'defface face) current-load-list)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 (when (and doc (null (face-doc-string face)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 (set-face-doc-string face doc))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 (custom-handle-all-keywords face args 'custom-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 (run-hooks 'custom-define-hook))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 ;;; Font Attributes.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
64 ;; Consider adding the stuff in the XML font model here.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 (defconst custom-face-attributes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 '((:foreground (color :tag "Foreground"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 :value ""
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 :help-echo "Set foreground color.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 set-face-foreground face-foreground-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 (:background (color :tag "Background"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 :value ""
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 :help-echo "Set background color.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 set-face-background face-background-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 (:size (editable-field :format "Size: %v"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 Text size (e.g. 9pt or 2mm).")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 custom-set-face-font-size custom-face-font-size)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 (:family (editable-field :format "Font Family: %v"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 Name of font family to use (e.g. times).")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 custom-set-face-font-family custom-face-font-family)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 (:background-pixmap (editable-field :format "Background pixmap: %v"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 Name of background pixmap file.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 set-face-background-pixmap custom-face-background-pixmap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 (:dim (toggle :format "%[Dim%]: %v\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 :help-echo "Control whether the text should be dimmed.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 set-face-dim-p face-dim-p)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 (:bold (toggle :format "%[Bold%]: %v\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 :help-echo "Control whether a bold font should be used.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 custom-set-face-bold custom-face-bold)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 (:italic (toggle :format "%[Italic%]: %v\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 Control whether an italic font should be used.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 custom-set-face-italic custom-face-italic)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 (:underline (toggle :format "%[Underline%]: %v\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 Control whether the text should be underlined.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 set-face-underline-p face-underline-p)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 (:strikethru (toggle :format "%[Strikethru%]: %v\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 Control whether the text should be strikethru.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 set-face-strikethru-p face-strikethru-p)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 (:inverse-video (toggle :format "%[Inverse Video%]: %v\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 :help-echo "\
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 Control whether the text should be inverted. Works only on TTY-s")
3027
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
107 set-face-reverse-p face-reverse-p)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
108 (:inherit
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
109 (repeat :tag "Inherit"
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
110 :help-echo "List of faces to inherit attributes from."
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
111 (face :Tag "Face" default))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
112 ;; FSF 21.3
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
113 ; ;; filter to make value suitable for customize
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
114 ; (lambda (real-value)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
115 ; (cond ((or (null real-value) (eq real-value 'unspecified))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
116 ; nil)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
117 ; ((symbolp real-value)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
118 ; (list real-value))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
119 ; (t
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
120 ; real-value)))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
121 ; ;; filter to make customized-value suitable for storing
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
122 ; (lambda (cus-value)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
123 ; (if (and (consp cus-value) (null (cdr cus-value)))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
124 ; (car cus-value)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
125 ; cus-value))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
126 custom-set-face-inherit custom-face-inherit))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
127 "Alist of face attributes.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
129 The elements are lists of the form (KEY TYPE SET GET) where:
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
130 KEY is a symbol identifying the attribute.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
131 TYPE is a widget type for editing the attribute.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
132 SET is a function for setting the attribute value.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
133 GET is a function for getting the attribute value.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
135 The SET function should take three arguments: the face to modify, the
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 value of the attribute, and optionally the frame where the face should
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 be changed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 The GET function should take two arguments, the face to examine, and
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
140 optionally the frame where the face should be examined.")
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 (defun face-custom-attributes-set (face frame tags &rest atts)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 "For FACE on FRAME set the attributes [KEYWORD VALUE]....
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 Each keyword should be listed in `custom-face-attributes'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 If FRAME is nil, set the default face."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 (while atts
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 (let* ((name (nth 0 atts))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 (value (nth 1 atts))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 (fun (nth 2 (assq name custom-face-attributes))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 (setq atts (cdr (cdr atts)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 (condition-case nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 (funcall fun face value frame tags)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 (error nil)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 (defun face-custom-attributes-get (face frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 "For FACE on FRAME get the attributes [KEYWORD VALUE]....
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 Each keyword should be listed in `custom-face-attributes'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 If FRAME is nil, use the default face."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 (condition-case nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 ;; Attempt to get `font.el' from w3.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 (require 'font)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 (error nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 (let ((atts custom-face-attributes)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 att result get)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 (while atts
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 (setq att (car atts)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 atts (cdr atts)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 get (nth 3 att))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 (condition-case nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 ;; This may fail if w3 doesn't exist.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 (when get
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 (let ((answer (funcall get face frame)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 (unless (equal answer (funcall get 'default frame))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 (when (widget-apply (nth 1 att) :match answer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 (setq result (cons (nth 0 att) (cons answer result)))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 (error nil)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 result))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 (defsubst custom-face-get-spec (symbol)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 (or (get symbol 'customized-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 (get symbol 'saved-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 (get symbol 'face-defface-spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 ;; Attempt to construct it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 (list (list t (face-custom-attributes-get
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 symbol (selected-frame))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 (defun custom-set-face-bold (face value &optional frame tags)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 "Set the bold property of FACE to VALUE."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 (if value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 (make-face-bold face frame tags)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 (make-face-unbold face frame tags)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 ;; Really, we should get rid of these font.el dependencies... They
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 ;; are still presenting a problem with dumping the faces (font.el is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 ;; too bloated for us to dump). I am thinking about hacking up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 ;; font-like functionality myself for the sake of this file. It will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 ;; probably be to-the-point and more efficient.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 (defun custom-face-bold (face &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 "Return non-nil if the font of FACE is bold."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 (let* ((font (apply 'face-font-name face args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 ;; Gag
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 (fontobj (font-create-object font)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 (font-bold-p fontobj)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 (defun custom-set-face-italic (face value &optional frame tags)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 "Set the italic property of FACE to VALUE."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 (if value
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 (make-face-italic face frame tags)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 (make-face-unitalic face frame tags)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 (defun custom-face-italic (face &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 "Return non-nil if the font of FACE is italic."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 (let* ((font (apply 'face-font-name face args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 ;; Gag
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 (fontobj (font-create-object font)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 (font-italic-p fontobj)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 (defun custom-face-background-pixmap (face &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 "Return the name of the background pixmap file used for FACE."
3027
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
223 (let ((image (apply 'specifier-instance
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
224 (face-background-pixmap face) args)))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
225 (and image
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 (image-instance-file-name image))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227
3027
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
228 (defun custom-set-face-inherit (face value &optional frame tags)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
229 "Set FACE to inherit its properties from another face."
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
230 (if (listp value) (setq value (car value))) ;; #### Temporary hack!
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
231 (if (find-face value)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
232 (set-face-parent face value frame tags)))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
233
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
234 (defun custom-face-inherit (face &rest args)
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
235 "Return the value (instance) of the `inherit' property for FACE."
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
236 ;; #### Major, temporary hack!
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
237 (let ((spec (apply 'specifier-instantiator
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
238 (face-font face) args)))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
239 (and spec (vector spec) (aref spec 0))))
7efd3a9bbcfb [xemacs-hg @ 2005-10-25 11:28:23 by ben]
ben
parents: 771
diff changeset
240
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
241 ;; This consistently fails to dtrt
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
242 ;;(defun custom-set-face-font-size (face size &optional locale tags)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
243 ;; "Set the font of FACE to SIZE."
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
244 ;; ;; #### should this call have tags in it?
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
245 ;; (let* ((font (apply 'face-font-name face (list locale)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
246 ;; ;; Gag
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
247 ;; (fontobj (font-create-object font)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
248 ;; (set-font-size fontobj size)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
249 ;; (apply 'font-set-face-font face fontobj locale tags)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
250
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
251 ;; From Jan Vroonhof -- see faces.el
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 (defun custom-set-face-font-size (face size &optional locale tags)
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
253 "Set the font of FACE to SIZE."
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
254 (make-face-size face size locale tags))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 (defun custom-face-font-size (face &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 "Return the size of the font of FACE as a string."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 (let* ((font (apply 'face-font-name face args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 ;; Gag
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 (fontobj (font-create-object font)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 (format "%s" (font-size fontobj))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
263 ;; Jan suggests this may not dtrt
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
264 ;;(defun custom-set-face-font-family (face family &optional locale tags)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
265 ;; "Set the font of FACE to FAMILY."
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
266 ;; ;; #### should this call have tags in it?
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
267 ;; (let* ((font (apply 'face-font-name face (list locale)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
268 ;; ;; Gag
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
269 ;; (fontobj (font-create-object font)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
270 ;; (set-font-family fontobj family)
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
271 ;; (apply 'font-set-face-font face fontobj locale tags)))
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
272
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
273 ;; From Jan Vroonhof -- see faces.el
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 (defun custom-set-face-font-family (face family &optional locale tags)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 "Set the font of FACE to FAMILY."
707
a307f9a2021d [xemacs-hg @ 2001-12-20 05:49:28 by andyp]
andyp
parents: 444
diff changeset
276 (make-face-family face family locale tags))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 (defun custom-face-font-family (face &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 "Return the name of the font family of FACE."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 (let* ((font (apply 'face-font-name face args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 ;; Gag
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 (fontobj (font-create-object font)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 (font-family fontobj)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 (defun custom-set-face-update-spec (face display plist)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 "Customize the FACE for display types matching DISPLAY, merging
3918
049dc907c17a [xemacs-hg @ 2007-04-22 19:58:27 by aidan]
aidan
parents: 3842
diff changeset
288 in the new items from PLIST."
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 (let ((spec (face-spec-update-all-matching (custom-face-get-spec face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 display plist)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 (put face 'customized-face spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 (face-spec-set face spec nil '(custom))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 ;;; Initializing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 (defun custom-set-faces (&rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 "Initialize faces according to user preferences.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 This asociates the setting with the USER theme.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 The arguments should be a list where each entry has the form:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 (FACE SPEC [NOW [COMMENT]])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 SPEC will be stored as the saved value for FACE. If NOW is present
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 and non-nil, FACE will also be created according to SPEC.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 COMMENT is a string comment about FACE.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 See `defface' for the format of SPEC."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 (apply #'custom-theme-set-faces 'user args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 (defun custom-theme-set-faces (theme &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 "Initialize faces according to settings specified by args.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 Records the settings as belonging to THEME.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 See `custom-set-faces' for a description of the arguments ARGS."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 (custom-check-theme theme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 (let ((immediate (get theme 'theme-immediate)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 (while args
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 (let ((entry (car args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 (if (listp entry)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 (let ((face (nth 0 entry))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 (spec (nth 1 entry))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 (now (nth 2 entry))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 (comment (nth 3 entry)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 (put face 'saved-face spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 (custom-push-theme 'theme-face face theme 'set spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 (put face 'saved-face-comment comment)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 (when (or now immediate)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 (put face 'force-face (if now 'rogue 'immediate)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 (when (or now immediate (find-face face))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 (put face 'face-comment comment)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 (unless (find-face face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 (make-empty-face face))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 (face-spec-set face spec nil '(custom)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 (setq args (cdr args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 ;; Old format, a plist of FACE SPEC pairs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 (let ((face (nth 0 args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 (spec (nth 1 args)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 (put face 'saved-face spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 (custom-push-theme 'theme-face face theme 'set spec))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 (setq args (cdr (cdr args))))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 (defun custom-theme-face-value (face theme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 "Return spec of FACE in THEME if the THEME modifies the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 FACE. Nil otherwise."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 (car-safe (custom-theme-value theme (get face 'theme-face))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 (defun custom-theme-reset-internal-face (face to-theme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 (let ((spec (custom-theme-face-value face to-theme))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 was-in-theme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 (setq was-in-theme spec)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 (setq spec (or spec (get face 'standard-value)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 (when spec
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 (put face 'save-face was-in-theme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 (when (or (get face 'force-face) (find-face face))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 (unless (find-face face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 (make-empty-face face))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 (face-spec-set face spec)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 spec))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 (defun custom-theme-reset-faces (theme &rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 "Reset the value of the face to values previously defined.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
366 Associate this setting with THEME.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 ARGS is a list of lists of the form
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 (face to-theme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 This means reset face to its value in to-theme."
3842
1c2a46ea1f78 [xemacs-hg @ 2007-02-22 16:53:20 by stephent]
stephent
parents: 3027
diff changeset
373 (custom-check-theme theme)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 (mapc #'(lambda (arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 (apply #'custom-theme-reset-internal-face arg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 (custom-push-theme (car arg) 'theme-face theme 'reset (cadr arg)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 (defun custom-reset-faces (&rest args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 "Reset the value of the face to values previously defined.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
382 Associate this setting with the 'user' theme.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
384 ARGS is defined as for `custom-theme-reset-faces'."
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 (apply #'custom-theme-reset-faces 'user args))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 ;;; The End.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 ;; cus-face.el ends here