aboutsummaryrefslogtreecommitdiffstats
path: root/src/xfaces.c
diff options
context:
space:
mode:
authorJimmy Aguilar Mena2019-09-04 17:27:28 +0200
committerJimmy Aguilar Mena2019-10-14 14:18:39 +0200
commitbc8db39775eb3af36a45d51130cd4dbd3b3e7210 (patch)
tree9d7d643568943137bc436a7ecd021b2e07245e0e /src/xfaces.c
parentf9206f34d63104c50659a15d3615646a09df87bf (diff)
downloademacs-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.c40
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");