To: vim_dev@googlegroups.com Subject: Patch 7.4.2109 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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. Files: src/option.h, src/screen.c, runtime/doc/options.txt *** ../vim-7.4.2108/src/option.h 2016-07-16 14:46:51.131240585 +0200 --- src/option.h 2016-07-27 23:08:37.760127050 +0200 *************** *** 454,463 **** EXTERN char_u *p_dy; /* 'display' */ EXTERN unsigned dy_flags; #ifdef IN_OPTION_C ! static char *(p_dy_values[]) = {"lastline", "uhex", NULL}; #endif #define DY_LASTLINE 0x001 ! #define DY_UHEX 0x002 EXTERN int p_ed; /* 'edcompatible' */ #ifdef FEAT_WINDOWS EXTERN char_u *p_ead; /* 'eadirection' */ --- 454,464 ---- EXTERN char_u *p_dy; /* 'display' */ EXTERN unsigned dy_flags; #ifdef IN_OPTION_C ! static char *(p_dy_values[]) = {"lastline", "truncate", "uhex", NULL}; #endif #define DY_LASTLINE 0x001 ! #define DY_TRUNCATE 0x002 ! #define DY_UHEX 0x004 EXTERN int p_ed; /* 'edcompatible' */ #ifdef FEAT_WINDOWS EXTERN char_u *p_ead; /* 'eadirection' */ *** ../vim-7.4.2108/src/screen.c 2016-07-24 21:58:39.716057524 +0200 --- src/screen.c 2016-07-27 23:15:56.959956353 +0200 *************** *** 2018,2024 **** && wp->w_lines[idx].wl_valid && wp->w_lines[idx].wl_lnum == lnum && lnum > wp->w_topline ! && !(dy_flags & DY_LASTLINE) && srow + wp->w_lines[idx].wl_size > wp->w_height #ifdef FEAT_DIFF && diff_check_fill(wp, lnum) == 0 --- 2018,2024 ---- && wp->w_lines[idx].wl_valid && wp->w_lines[idx].wl_lnum == lnum && lnum > wp->w_topline ! && !(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,2144 **** --- 2139,2159 ---- 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" */ { /* *** ../vim-7.4.2108/runtime/doc/options.txt 2016-05-24 10:46:41.659541832 +0200 --- runtime/doc/options.txt 2016-07-27 23:21:41.968680055 +0200 *************** *** 2617,2627 **** 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. uhex Show unprintable characters hexadecimal as instead of using ^C and ~C. *'eadirection'* *'ead'* 'eadirection' 'ead' string (default "both") global --- 2623,2639 ---- 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. "@@@" 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 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 *** ../vim-7.4.2108/src/version.c 2016-07-27 22:56:43.734928810 +0200 --- src/version.c 2016-07-27 23:22:22.896291392 +0200 *************** *** 760,761 **** --- 760,763 ---- { /* Add new patch number below this line */ + /**/ + 2109, /**/ -- BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow? ARTHUR: What do you mean? An African or European swallow? BRIDGEKEEPER: Er ... I don't know that ... Aaaaarrrrrrggghhh! BRIDGEKEEPER is cast into the gorge. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///