[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/extend_face_id be3b66e 13/14: Document new :extend

From: Jimmy Aguilar Mena
Subject: [Emacs-diffs] scratch/extend_face_id be3b66e 13/14: Document new :extend face attribute in manuals.
Date: Sun, 29 Sep 2019 15:49:27 -0400 (EDT)

branch: scratch/extend_face_id
commit be3b66e79366d0ca989c77f4387d33782b48de0c
Author: Jimmy Aguilar Mena <address@hidden>
Commit: Jimmy Aguilar Mena <address@hidden>

    Document new :extend face attribute in manuals.
    Some stylistic corrections too.
 doc/emacs/mark.texi      |  5 +++++
 doc/lispref/display.texi | 22 ++++++++++++++++++++++
 src/xdisp.c              |  6 ++----
 src/xfaces.c             |  7 ++++---
 4 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index bbeb4cb..f012d72 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -23,6 +23,11 @@ When the mark is active, we say also that the region is 
active; Emacs
 indicates its extent by highlighting the text within it, using the
 @code{region} face (@pxref{Face Customization}).
+This is one of the few faces that has the @code{:extend t} attribute
+by default, which implies that the same face is used to highlight the
+text and space between end of line and the window border.  To
+highlight only the text you could set this attribute to @code{nil}.
 @cindex deactivating the mark
   After certain non-motion commands, including any command that
 changes the text in the buffer, Emacs automatically @dfn{deactivates}
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index fd68208..7d4b337 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -2482,6 +2482,17 @@ faces (@pxref{Displaying Faces}).  If the face to 
inherit from is
 never merges @code{:inherit} attributes.  If a list of faces is used,
 attributes from faces earlier in the list override those from later
+@item :extend
+Whether or not this face will be extended until the end of the window.
+The value should be @code{t} to extend until end of the window using
+this face or @code{nil} fill the space between the end of the line and
+the end of the window with the default face.  When a face is conformed
+by merging multiple other faces; only those with @code{:extend t} will
+be merged to conform a new face to extend until end of window.  By
+default only @code{region} and @code{hl-line} have this attribute set
+to @code{t}.
 @end table
 @defun font-family-list &optional frame
@@ -2842,6 +2853,11 @@ This sets the @code{:inverse-video} attribute of 
@var{face} to
 This swaps the foreground and background colors of face @var{face}.
 @end deffn
+@deffn Command set-face-extend face extend &optional frame
+This sets the @code{:extend} attribute of @var{face} to
+@end deffn
   The following functions examine the attributes of a face.  They
 mostly provide compatibility with old versions of Emacs.  If you don't
 specify @var{frame}, they refer to the selected frame; @code{t} refers
@@ -2900,6 +2916,12 @@ This function returns non-@code{nil} if face @var{face} 
 a non-@code{nil} @code{:inverse-video} attribute.
 @end defun
+@defun face-extend-p face &optional frame
+This function returns non-@code{nil} if face @var{face} specifies
+a non-@code{nil} @code{:extend} attribute.
+@end defun
 @node Displaying Faces
 @subsection Displaying Faces
 @cindex displaying faces
diff --git a/src/xdisp.c b/src/xdisp.c
index 62911e0..1f67d79 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -20310,7 +20310,7 @@ append_space_for_newline (struct it *it, bool 
          const int local_default_face_id =
            lookup_basic_face (it->w, it->f, DEFAULT_FACE_ID);
          struct face* default_face =
-           FACE_FROM_ID (it->f, local_default_face_id);
+           FACE_FROM_ID_OR_NULL (it->f, local_default_face_id);
          if (FRAME_WINDOW_P (it->f))
@@ -20444,7 +20444,7 @@ append_space_for_newline (struct it *it, bool 
          g->ascent = it->max_ascent;
          g->descent = it->max_descent;
+#endif /* HAVE_WINDOW_SYSTEM  */
       it->override_ascent = -1;
       it->constrain_row_ascent_descent_p = false;
       it->current_x = saved_x;
@@ -20630,8 +20630,6 @@ extend_face_to_end_of_line (struct it *it)
-         /* Restore the face after the indicator was generated.  */
          /* If there is space after the indicator generate an
             extra empty glyph to restore the face.  Issue was
             observed in X systems.  */
diff --git a/src/xfaces.c b/src/xfaces.c
index bb514ad..ed9a538 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -2282,7 +2282,7 @@ filter_face_ref (Lisp_Object face_ref,
    of ERR_MSGS).  Use NAMED_MERGE_POINTS to detect loops in face
    inheritance or list structure; it may be 0 for most callers.
-   attr_filter is the index of a parameter that conditions the merging
+   ATTR_FILTER is the index of a parameter that conditions the merging
    for named faces (case 1) to only the face_ref where
    lface[merge_face_ref] is non-nil. To merge unconditionally set this
    value to 0.
@@ -6039,7 +6039,7 @@ compute_char_face (struct frame *f, int ch, Lisp_Object 
    which a different face is needed, as far as text properties and
    overlays are concerned.  W is a window displaying current_buffer.
-   attr_filter is passed merge_face_ref.
+   ATTR_FILTER is passed merge_face_ref.
    REGION_BEG, REGION_END delimit the region, so it can be
@@ -6122,7 +6122,8 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos,
   /* Optimize common cases where we can use the default face.  */
-  if (noverlays == 0 && NILP (prop))
+  if (noverlays == 0
+      && NILP (prop))
       SAFE_FREE ();
       return default_face->id;

reply via email to

[Prev in Thread] Current Thread [Next in Thread]