diff options
author | Jimmy Aguilar Mena <spacibba@aol.com> | 2019-03-19 00:03:12 +0100 |
---|---|---|
committer | Jimmy Aguilar Mena <spacibba@aol.com> | 2019-05-03 23:34:29 +0200 |
commit | 4eae844beccf04d1d09e67ba12dac2423e924af1 (patch) | |
tree | eb7320a60a7f1c7649ee97a91e98f6264d1d293a /src | |
parent | 942f68a539bc516ef578be108a9c967722f0175e (diff) | |
download | emacs-4eae844beccf04d1d09e67ba12dac2423e924af1.tar.gz |
Display-fill-column-indicator NEWS info.
*etc/NEWS: Added information about the fill-column-indicator mode.
*lisp/faces.el: Added a face for the display fill column indicator.
Diffstat (limited to 'src')
-rw-r--r-- | src/xdisp.c | 63 |
1 files changed, 46 insertions, 17 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index f1609664277..c6f8133a838 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -20164,17 +20164,26 @@ append_space_for_newline (struct it *it, bool default_face_p) same place than the line */ if (!NILP (Vdisplay_fill_column_indicator) && (it->w->pseudo_window_p == 0) - && FIXNATP (Vdisplay_fill_column_indicator_column) + && (!NILP (Vdisplay_fill_column_indicator_column)) && FIXNATP (Vdisplay_fill_column_indicator_character)) { + int fill_column_indicator_column = -1; + + if (EQ (Vdisplay_fill_column_indicator_column, Qt) + && FIXNATP (BVAR (current_buffer, fill_column))) + fill_column_indicator_column = + XFIXNAT (BVAR (current_buffer, fill_column)); + else if (FIXNATP (Vdisplay_fill_column_indicator_column)) + fill_column_indicator_column = + XFIXNAT (Vdisplay_fill_column_indicator_column); + struct font *font = default_face->font ? default_face->font : FRAME_FONT (it->f); const int char_width = font->average_width ? font->average_width : font->space_width; - const int fill_column = - XFIXNAT (Vdisplay_fill_column_indicator_column); + const int column_x = - char_width * fill_column + it->lnum_pixel_width; + char_width * fill_column_indicator_column + it->lnum_pixel_width; if (it->current_x == column_x) { @@ -20416,18 +20425,26 @@ extend_face_to_end_of_line (struct it *it) active */ if (!NILP (Vdisplay_fill_column_indicator) && (it->w->pseudo_window_p == 0) - && FIXNATP (Vdisplay_fill_column_indicator_column) + && (!NILP (Vdisplay_fill_column_indicator_column)) && FIXNATP (Vdisplay_fill_column_indicator_character)) { + int fill_column_indicator_column = -1; + + if (EQ (Vdisplay_fill_column_indicator_column, Qt) + && FIXNATP (BVAR (current_buffer, fill_column))) + fill_column_indicator_column = + XFIXNAT (BVAR (current_buffer, fill_column)); + else if (FIXNATP (Vdisplay_fill_column_indicator_column)) + fill_column_indicator_column = + XFIXNAT (Vdisplay_fill_column_indicator_column); + struct font *font = default_face->font ? default_face->font : FRAME_FONT (f); const int char_width = font->average_width ? font->average_width : font->space_width; - const int fill_column = - XFIXNAT (Vdisplay_fill_column_indicator_column); - - const int column_x = char_width * fill_column + it->lnum_pixel_width; + const int column_x = char_width * fill_column_indicator_column + + it->lnum_pixel_width; if ((it->current_x <= column_x) && (column_x <= it->last_visible_x)) @@ -20606,14 +20623,23 @@ extend_face_to_end_of_line (struct it *it) it->face_id = face->id; /* Display fill-column-line if mode is active */ - if (!NILP (Vdisplay_fill_column_indicator)) + if (!NILP (Vdisplay_fill_column_indicator) + && (!NILP (Vdisplay_fill_column_indicator_column)) + && FIXNATP (Vdisplay_fill_column_indicator_character)) { - const int fill_column_indicator_line = - XFIXNAT (Vdisplay_fill_column_indicator_column) - + it->lnum_pixel_width; + int fill_column_indicator_column = -1; + + if (EQ (Vdisplay_fill_column_indicator_column, Qt) + && FIXNATP (BVAR (current_buffer, fill_column))) + fill_column_indicator_column = + XFIXNAT (BVAR (current_buffer, fill_column)); + else if (FIXNATP (Vdisplay_fill_column_indicator_column)) + fill_column_indicator_column = + XFIXNAT (Vdisplay_fill_column_indicator_column); + do { - if (it->current_x == fill_column_indicator_line) + if (it->current_x == fill_column_indicator_column) { const int saved_face = it->face_id; it->face_id = @@ -33382,9 +33408,12 @@ either `relative' or `visual'. */); Fmake_variable_buffer_local (Qdisplay_fill_column_indicator); DEFVAR_LISP ("display-fill-column-indicator-column", Vdisplay_fill_column_indicator_column, - doc: /* Column to draw the indicator when `display-fill-column-indicator' is non-nil. -The default value is the variable `fill-column' if not other value is given. */); - Vdisplay_fill_column_indicator_column = Qnil; + doc: /* Column to draw the fill column indicator when +`display-fill-column-indicator' is non-nil. The default value is t +which means that the indicator will use the `fill-column' variable. If +a numeric value is set, the indicator will be drawn in that column +independently of the `fill-column' value. */); + Vdisplay_fill_column_indicator_column = Qt; DEFSYM (Qdisplay_fill_column_indicator_column, "display-fill-column-indicator-column"); Fmake_variable_buffer_local (Qdisplay_fill_column_indicator_column); |