mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 7.4.2109
Problem: Setting 'display' to "lastline" is a drastic change, while omitting it results in lots of "@" lines. Solution: Add "truncate" to show "@@@" for a truncated line.
This commit is contained in:
parent
adfc5c2f9c
commit
ad9c2a08f0
@ -2623,11 +2623,17 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Change the way text is displayed. This is comma separated list of
|
||||
flags:
|
||||
lastline When included, as much as possible of the last line
|
||||
in a window will be displayed. When not included, a
|
||||
last line that doesn't fit is replaced with "@" lines.
|
||||
in a window will be displayed. "@@@" is put in the
|
||||
last columns of the last screen line to indicate the
|
||||
rest of the line is not displayed.
|
||||
truncate Like "lastline", but "@@@" is displayed in the first
|
||||
column of the last screen line. Overrules "lastline".
|
||||
uhex Show unprintable characters hexadecimal as <xx>
|
||||
instead of using ^C and ~C.
|
||||
|
||||
When neither "lastline" or "truncate" is included, a last line that
|
||||
doesn't fit is replaced with "@" lines.
|
||||
|
||||
*'eadirection'* *'ead'*
|
||||
'eadirection' 'ead' string (default "both")
|
||||
global
|
||||
|
@ -454,10 +454,11 @@ EXTERN char_u *p_dir; /* 'directory' */
|
||||
EXTERN char_u *p_dy; /* 'display' */
|
||||
EXTERN unsigned dy_flags;
|
||||
#ifdef IN_OPTION_C
|
||||
static char *(p_dy_values[]) = {"lastline", "uhex", NULL};
|
||||
static char *(p_dy_values[]) = {"lastline", "truncate", "uhex", NULL};
|
||||
#endif
|
||||
#define DY_LASTLINE 0x001
|
||||
#define DY_UHEX 0x002
|
||||
#define DY_TRUNCATE 0x002
|
||||
#define DY_UHEX 0x004
|
||||
EXTERN int p_ed; /* 'edcompatible' */
|
||||
#ifdef FEAT_WINDOWS
|
||||
EXTERN char_u *p_ead; /* 'eadirection' */
|
||||
|
17
src/screen.c
17
src/screen.c
@ -2018,7 +2018,7 @@ win_update(win_T *wp)
|
||||
&& wp->w_lines[idx].wl_valid
|
||||
&& wp->w_lines[idx].wl_lnum == lnum
|
||||
&& lnum > wp->w_topline
|
||||
&& !(dy_flags & DY_LASTLINE)
|
||||
&& !(dy_flags & (DY_LASTLINE | DY_TRUNCATE))
|
||||
&& srow + wp->w_lines[idx].wl_size > wp->w_height
|
||||
#ifdef FEAT_DIFF
|
||||
&& diff_check_fill(wp, lnum) == 0
|
||||
@ -2139,6 +2139,21 @@ win_update(win_T *wp)
|
||||
wp->w_filler_rows = wp->w_height - srow;
|
||||
}
|
||||
#endif
|
||||
else if (dy_flags & DY_TRUNCATE) /* 'display' has "truncate" */
|
||||
{
|
||||
int scr_row = W_WINROW(wp) + wp->w_height - 1;
|
||||
|
||||
/*
|
||||
* Last line isn't finished: Display "@@@" in the last screen line.
|
||||
*/
|
||||
screen_puts_len((char_u *)"@@", 2, scr_row, W_WINCOL(wp),
|
||||
hl_attr(HLF_AT));
|
||||
screen_fill(scr_row, scr_row + 1,
|
||||
(int)W_WINCOL(wp) + 2, (int)W_ENDCOL(wp),
|
||||
'@', ' ', hl_attr(HLF_AT));
|
||||
set_empty_rows(wp, srow);
|
||||
wp->w_botline = lnum;
|
||||
}
|
||||
else if (dy_flags & DY_LASTLINE) /* 'display' has "lastline" */
|
||||
{
|
||||
/*
|
||||
|
@ -758,6 +758,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2109,
|
||||
/**/
|
||||
2108,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user