diff options
| author | Jimmy Aguilar Mena | 2019-09-04 17:27:28 +0200 |
|---|---|---|
| committer | Jimmy Aguilar Mena | 2019-10-14 14:18:39 +0200 |
| commit | bc8db39775eb3af36a45d51130cd4dbd3b3e7210 (patch) | |
| tree | 9d7d643568943137bc436a7ecd021b2e07245e0e /src/xfaces.c | |
| parent | f9206f34d63104c50659a15d3615646a09df87bf (diff) | |
| download | emacs-bc8db39775eb3af36a45d51130cd4dbd3b3e7210.tar.gz emacs-bc8db39775eb3af36a45d51130cd4dbd3b3e7210.zip | |
Added face parameter :extend.
This is an initial change to add a parameter :extend that will be used
in the display engine later.
Diffstat (limited to 'src/xfaces.c')
| -rw-r--r-- | src/xfaces.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/xfaces.c b/src/xfaces.c index c7d6990f505..889bf83561c 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -1590,6 +1590,7 @@ the WIDTH times as wide as FACE on FRAME. */) | |||
| 1590 | #define LFACE_FONT(LFACE) AREF ((LFACE), LFACE_FONT_INDEX) | 1590 | #define LFACE_FONT(LFACE) AREF ((LFACE), LFACE_FONT_INDEX) |
| 1591 | #define LFACE_INHERIT(LFACE) AREF ((LFACE), LFACE_INHERIT_INDEX) | 1591 | #define LFACE_INHERIT(LFACE) AREF ((LFACE), LFACE_INHERIT_INDEX) |
| 1592 | #define LFACE_FONTSET(LFACE) AREF ((LFACE), LFACE_FONTSET_INDEX) | 1592 | #define LFACE_FONTSET(LFACE) AREF ((LFACE), LFACE_FONTSET_INDEX) |
| 1593 | #define LFACE_EXTEND(LFACE) AREF ((LFACE), LFACE_EXTEND_INDEX) | ||
| 1593 | #define LFACE_DISTANT_FOREGROUND(LFACE) \ | 1594 | #define LFACE_DISTANT_FOREGROUND(LFACE) \ |
| 1594 | AREF ((LFACE), LFACE_DISTANT_FOREGROUND_INDEX) | 1595 | AREF ((LFACE), LFACE_DISTANT_FOREGROUND_INDEX) |
| 1595 | 1596 | ||
| @@ -1633,6 +1634,10 @@ check_lface_attrs (Lisp_Object attrs[LFACE_VECTOR_SIZE]) | |||
| 1633 | || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX]) | 1634 | || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX]) |
| 1634 | || STRINGP (attrs[LFACE_UNDERLINE_INDEX]) | 1635 | || STRINGP (attrs[LFACE_UNDERLINE_INDEX]) |
| 1635 | || CONSP (attrs[LFACE_UNDERLINE_INDEX])); | 1636 | || CONSP (attrs[LFACE_UNDERLINE_INDEX])); |
| 1637 | eassert (UNSPECIFIEDP (attrs[LFACE_EXTEND_INDEX]) | ||
| 1638 | || IGNORE_DEFFACE_P (attrs[LFACE_EXTEND_INDEX]) | ||
| 1639 | || SYMBOLP (attrs[LFACE_EXTEND_INDEX]) | ||
| 1640 | || STRINGP (attrs[LFACE_EXTEND_INDEX])); | ||
| 1636 | eassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX]) | 1641 | eassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX]) |
| 1637 | || IGNORE_DEFFACE_P (attrs[LFACE_OVERLINE_INDEX]) | 1642 | || IGNORE_DEFFACE_P (attrs[LFACE_OVERLINE_INDEX]) |
| 1638 | || SYMBOLP (attrs[LFACE_OVERLINE_INDEX]) | 1643 | || SYMBOLP (attrs[LFACE_OVERLINE_INDEX]) |
| @@ -2512,6 +2517,13 @@ merge_face_ref (struct window *w, | |||
| 2512 | err_msgs, named_merge_points)) | 2517 | err_msgs, named_merge_points)) |
| 2513 | err = true; | 2518 | err = true; |
| 2514 | } | 2519 | } |
| 2520 | else if (EQ (keyword, QCextend)) | ||
| 2521 | { | ||
| 2522 | if (EQ (value, Qt) || NILP (value)) | ||
| 2523 | to[LFACE_EXTEND_INDEX] = value; | ||
| 2524 | else | ||
| 2525 | err = true; | ||
| 2526 | } | ||
| 2515 | else | 2527 | else |
| 2516 | err = true; | 2528 | err = true; |
| 2517 | 2529 | ||
| @@ -3030,6 +3042,17 @@ FRAME 0 means change the face on all frames, and change the default | |||
| 3030 | old_value = LFACE_INVERSE (lface); | 3042 | old_value = LFACE_INVERSE (lface); |
| 3031 | ASET (lface, LFACE_INVERSE_INDEX, value); | 3043 | ASET (lface, LFACE_INVERSE_INDEX, value); |
| 3032 | } | 3044 | } |
| 3045 | else if (EQ (attr, QCextend)) | ||
| 3046 | { | ||
| 3047 | if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)) | ||
| 3048 | { | ||
| 3049 | CHECK_SYMBOL (value); | ||
| 3050 | if (!EQ (value, Qt) && !NILP (value)) | ||
| 3051 | signal_error ("Invalid extend face attribute value", value); | ||
| 3052 | } | ||
| 3053 | old_value = LFACE_EXTEND (lface); | ||
| 3054 | ASET (lface, LFACE_EXTEND_INDEX, value); | ||
| 3055 | } | ||
| 3033 | else if (EQ (attr, QCforeground)) | 3056 | else if (EQ (attr, QCforeground)) |
| 3034 | { | 3057 | { |
| 3035 | /* Compatibility with 20.x. */ | 3058 | /* Compatibility with 20.x. */ |
| @@ -3503,7 +3526,9 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource", | |||
| 3503 | value = face_boolean_x_resource_value (value, true); | 3526 | value = face_boolean_x_resource_value (value, true); |
| 3504 | else if (EQ (attr, QCweight) || EQ (attr, QCslant) || EQ (attr, QCwidth)) | 3527 | else if (EQ (attr, QCweight) || EQ (attr, QCslant) || EQ (attr, QCwidth)) |
| 3505 | value = intern (SSDATA (value)); | 3528 | value = intern (SSDATA (value)); |
| 3506 | else if (EQ (attr, QCreverse_video) || EQ (attr, QCinverse_video)) | 3529 | else if (EQ (attr, QCreverse_video) |
| 3530 | || EQ (attr, QCinverse_video) | ||
| 3531 | || EQ (attr, QCextend)) | ||
| 3507 | value = face_boolean_x_resource_value (value, true); | 3532 | value = face_boolean_x_resource_value (value, true); |
| 3508 | else if (EQ (attr, QCunderline) | 3533 | else if (EQ (attr, QCunderline) |
| 3509 | || EQ (attr, QCoverline) | 3534 | || EQ (attr, QCoverline) |
| @@ -3727,6 +3752,8 @@ frames). If FRAME is omitted or nil, use the selected frame. */) | |||
| 3727 | value = LFACE_SWIDTH (lface); | 3752 | value = LFACE_SWIDTH (lface); |
| 3728 | else if (EQ (keyword, QCinherit)) | 3753 | else if (EQ (keyword, QCinherit)) |
| 3729 | value = LFACE_INHERIT (lface); | 3754 | value = LFACE_INHERIT (lface); |
| 3755 | else if (EQ (keyword, QCextend)) | ||
| 3756 | value = LFACE_EXTEND (lface); | ||
| 3730 | else if (EQ (keyword, QCfont)) | 3757 | else if (EQ (keyword, QCfont)) |
| 3731 | value = LFACE_FONT (lface); | 3758 | value = LFACE_FONT (lface); |
| 3732 | else if (EQ (keyword, QCfontset)) | 3759 | else if (EQ (keyword, QCfontset)) |
| @@ -3754,7 +3781,9 @@ Value is nil if ATTR doesn't have a discrete set of valid values. */) | |||
| 3754 | 3781 | ||
| 3755 | if (EQ (attr, QCunderline) || EQ (attr, QCoverline) | 3782 | if (EQ (attr, QCunderline) || EQ (attr, QCoverline) |
| 3756 | || EQ (attr, QCstrike_through) | 3783 | || EQ (attr, QCstrike_through) |
| 3757 | || EQ (attr, QCinverse_video) || EQ (attr, QCreverse_video)) | 3784 | || EQ (attr, QCinverse_video) |
| 3785 | || EQ (attr, QCreverse_video) | ||
| 3786 | || EQ (attr, QCextend)) | ||
| 3758 | result = list2 (Qt, Qnil); | 3787 | result = list2 (Qt, Qnil); |
| 3759 | 3788 | ||
| 3760 | return result; | 3789 | return result; |
| @@ -4784,6 +4813,9 @@ gui_supports_face_attributes_p (struct frame *f, | |||
| 4784 | || (!UNSPECIFIEDP (attrs[LFACE_INVERSE_INDEX]) | 4813 | || (!UNSPECIFIEDP (attrs[LFACE_INVERSE_INDEX]) |
| 4785 | && face_attr_equal_p (attrs[LFACE_INVERSE_INDEX], | 4814 | && face_attr_equal_p (attrs[LFACE_INVERSE_INDEX], |
| 4786 | def_attrs[LFACE_INVERSE_INDEX])) | 4815 | def_attrs[LFACE_INVERSE_INDEX])) |
| 4816 | || (!UNSPECIFIEDP (attrs[LFACE_EXTEND_INDEX]) | ||
| 4817 | && face_attr_equal_p (attrs[LFACE_EXTEND_INDEX], | ||
| 4818 | def_attrs[LFACE_EXTEND_INDEX])) | ||
| 4787 | || (!UNSPECIFIEDP (attrs[LFACE_FOREGROUND_INDEX]) | 4819 | || (!UNSPECIFIEDP (attrs[LFACE_FOREGROUND_INDEX]) |
| 4788 | && face_attr_equal_p (attrs[LFACE_FOREGROUND_INDEX], | 4820 | && face_attr_equal_p (attrs[LFACE_FOREGROUND_INDEX], |
| 4789 | def_attrs[LFACE_FOREGROUND_INDEX])) | 4821 | def_attrs[LFACE_FOREGROUND_INDEX])) |
| @@ -5362,6 +5394,9 @@ realize_default_face (struct frame *f) | |||
| 5362 | ASET (lface, LFACE_FONTSET_INDEX, Qnil); | 5394 | ASET (lface, LFACE_FONTSET_INDEX, Qnil); |
| 5363 | } | 5395 | } |
| 5364 | 5396 | ||
| 5397 | if (UNSPECIFIEDP (LFACE_EXTEND (lface))) | ||
| 5398 | ASET (lface, LFACE_EXTEND_INDEX, Qnil); | ||
| 5399 | |||
| 5365 | if (UNSPECIFIEDP (LFACE_UNDERLINE (lface))) | 5400 | if (UNSPECIFIEDP (LFACE_UNDERLINE (lface))) |
| 5366 | ASET (lface, LFACE_UNDERLINE_INDEX, Qnil); | 5401 | ASET (lface, LFACE_UNDERLINE_INDEX, Qnil); |
| 5367 | 5402 | ||
| @@ -6539,6 +6574,7 @@ syms_of_xfaces (void) | |||
| 6539 | DEFSYM (QCstrike_through, ":strike-through"); | 6574 | DEFSYM (QCstrike_through, ":strike-through"); |
| 6540 | DEFSYM (QCbox, ":box"); | 6575 | DEFSYM (QCbox, ":box"); |
| 6541 | DEFSYM (QCinherit, ":inherit"); | 6576 | DEFSYM (QCinherit, ":inherit"); |
| 6577 | DEFSYM (QCextend, ":extend"); | ||
| 6542 | 6578 | ||
| 6543 | /* Symbols used for Lisp face attribute values. */ | 6579 | /* Symbols used for Lisp face attribute values. */ |
| 6544 | DEFSYM (QCcolor, ":color"); | 6580 | DEFSYM (QCcolor, ":color"); |