summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1449
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1449')
-rw-r--r--data/vim/patches/8.1.1449669
1 files changed, 0 insertions, 669 deletions
diff --git a/data/vim/patches/8.1.1449 b/data/vim/patches/8.1.1449
deleted file mode 100644
index f25f6f880..000000000
--- a/data/vim/patches/8.1.1449
+++ /dev/null
@@ -1,669 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1449
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.1449
-Problem: Popup text truncated at end of screen.
-Solution: Move popup left if needed. Add the "fixed" property to disable
- that. (Ben Jackson , closes #4466)
-Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h,
- src/testdir/test_popupwin.vim
-
-
-*** ../vim-8.1.1448/runtime/doc/popup.txt 2019-06-01 22:49:23.697685695 +0200
---- runtime/doc/popup.txt 2019-06-02 14:40:53.019846834 +0200
-***************
-*** 65,72 ****
- It can be limited with the "maxwidth" property. You can use spaces to
- increase the width or the "minwidth" property.
-
-! By default the 'wrap' option is set, so that no text disappears. However, if
-! there is not enough space, some text may be invisible.
-
- Vim tries to show the popup in the location you specify. In some cases, e.g.
- when the popup would go outside of the Vim window, it will show it somewhere
---- 65,74 ----
- It can be limited with the "maxwidth" property. You can use spaces to
- increase the width or the "minwidth" property.
-
-! By default the 'wrap' option is set, so that no text disappears. Otherwise,
-! if there is not enough space then the window is shifted left in order to
-! display more text. This can be disabled with the "fixed" property. Also
-! disabled when right-aligned.
-
- Vim tries to show the popup in the location you specify. In some cases, e.g.
- when the popup would go outside of the Vim window, it will show it somewhere
-***************
-*** 78,85 ****
-
- TODO:
-
-- Example how to use syntax highlighting of a code snippet.
--
- Scrolling: When the screen scrolls up for output of an Ex command, what
- happens with popups?
- 1. Stay where they are. Problem: listed text may go behind and can't be read.
---- 80,85 ----
-***************
-*** 93,104 ****
- - Fix positioning with border and padding.
- - Why does 'nrformats' leak from the popup window buffer???
- - Make redrawing more efficient and avoid flicker.
-! Store popup info in a mask, use the mask in screen_line()
-! Keep mask until next update_screen(), find differences and redraw affected
-! windows/lines
- Fix redrawing problem with completion.
- Fix redrawing problem when scrolling non-current window
-- Fix redrawing the statusline on top of a popup
- - Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
- Use NOT_IN_POPUP_WINDOW for more commands.
- - Invoke filter with character before mapping?
---- 93,104 ----
- - Fix positioning with border and padding.
- - Why does 'nrformats' leak from the popup window buffer???
- - Make redrawing more efficient and avoid flicker.
-! First draw popups, creating a mask, use the mask in screen_line() when
-! drawing other windows and stuff. Mask contains zindex of popups.
-! Keep mask until next update_screen(), use when drawing status lines.
-! Remove update_popup() calls after draw_tabline()/updating statusline
- Fix redrawing problem with completion.
- Fix redrawing problem when scrolling non-current window
- - Disable commands, feedkeys(), CTRL-W, etc. in a popup window.
- Use NOT_IN_POPUP_WINDOW for more commands.
- - Invoke filter with character before mapping?
-***************
-*** 327,407 ****
- |popup-props|.
-
- The second argument of |popup_create()| is a dictionary with options:
-! line screen line where to position the popup; can use a
- number or "cursor", "cursor+1" or "cursor-1" to use
- the line of the cursor and add or subtract a number of
-! lines; if omitted the popup is vertically centered,
-! otherwise "pos" is used.
-! col screen column where to position the popup; can use a
- number or "cursor" to use the column of the cursor,
-! "cursor+99" and "cursor-99" to add or subtract a
-! number of columns; if omitted the popup is
-! horizontally centered, otherwise "pos" is used
- pos "topleft", "topright", "botleft" or "botright":
- defines what corner of the popup "line" and "col" are
- used for. When not set "topleft" is used.
- Alternatively "center" can be used to position the
- popup in the center of the Vim window, in which case
- "line" and "col" are ignored.
-! flip when TRUE (the default) and the position is relative
- to the cursor, flip to below or above the cursor to
- avoid overlap with the |popupmenu-completion| or
-! another popup with a higher "zindex"
- {not implemented yet}
-! maxheight maximum height
-! minheight minimum height
-! maxwidth maximum width
-! minwidth minimum width
-! hidden when TRUE the popup exists but is not displayed; use
- `popup_show()` to unhide it.
- {not implemented yet}
-! tab when -1: display the popup on all tabs; when 0 (the
-! default): display the popup on the current tab;
-! otherwise the number of the tab page the popup is
-! displayed on; when invalid the current tab is used
- {only -1 and 0 are implemented}
-! title text to be displayed above the first item in the
-! popup, on top of any border
- {not implemented yet}
-! wrap TRUE to make the lines wrap (default TRUE)
-! highlight highlight group name to use for the text, stored in
-! the 'wincolor' option
-! padding list with numbers, defining the padding
-! above/right/below/left of the popup (similar to CSS);
-! an empty list uses a padding of 1 all around; the
-! padding goes around the text, inside any border;
-! padding uses the 'wincolor' highlight; Example: [1, 2,
-! 1, 3] has 1 line of padding above, 2 columns on the
-! right, 1 line below and 3 columns on the left
-! border list with numbers, defining the border thickness
-! above/right/below/left of the popup (similar to CSS);
-! only values of zero and non-zero are recognized;
-! an empty list uses a border all around
-! borderhighlight list of highlight group names to use for the border;
-! when one entry it is used for all borders, otherwise
-! the highlight for the top/right/bottom/left border
-! borderchars list with characters, defining the character to use
-! for the top/right/bottom/left border; optionally
- followed by the character to use for the
-! topleft/topright/botright/botleft corner; when the
-! list has one character it is used for all; when
-! the list has two characters the first is used for the
-! border lines, the second for the corners; by default
-! a double line is used all around when 'encoding' is
-! "utf-8", otherwise ASCII characters are used.
-! zindex priority for the popup, default 50
-! time time in milliseconds after which the popup will close;
-! when omitted |popup_close()| must be used.
- moved "cell": close the popup if the cursor moved at least
-! one screen cell; "word" allows for moving within
-! |<cword>|, "WORD" allows for moving within |<cWORD>|,
- a list with two numbers specifies the start and end
-! column
- {not implemented yet}
-! filter a callback that can filter typed characters, see
-! |popup-filter|
-! callback a callback to be used when the popup closes, e.g. when
-! using |popup_filter_menu()|, see |popup-callback|.
-
- Depending on the "zindex" the popup goes under or above other popups. The
- completion menu (|popup-menu|) has zindex 100. For messages that occur for a
---- 327,426 ----
- |popup-props|.
-
- The second argument of |popup_create()| is a dictionary with options:
-! line Screen line where to position the popup. Can use a
- number or "cursor", "cursor+1" or "cursor-1" to use
- the line of the cursor and add or subtract a number of
-! lines. If omitted the popup is vertically centered.
-! The first line is 1.
-! col Screen column where to position the popup. Can use a
- number or "cursor" to use the column of the cursor,
-! "cursor+9" or "cursor-9" to add or subtract a number
-! of columns. If omitted the popup is horizontally
-! centered. The first column is 1.
- pos "topleft", "topright", "botleft" or "botright":
- defines what corner of the popup "line" and "col" are
- used for. When not set "topleft" is used.
- Alternatively "center" can be used to position the
- popup in the center of the Vim window, in which case
- "line" and "col" are ignored.
-! fixed When FALSE (the default), and:
-! - "pos" is "botleft" or "topleft", and
-! - "wrap" is off, and
-! - the popup would be truncated at the right edge of
-! the screen, then
-! the popup is moved to the left so as to fit the
-! contents on the screen. Set to TRUE to disable this.
-! flip When TRUE (the default) and the position is relative
- to the cursor, flip to below or above the cursor to
- avoid overlap with the |popupmenu-completion| or
-! another popup with a higher "zindex".
- {not implemented yet}
-! maxheight Maximum height of the contents, excluding border and
-! padding.
-! minheight Minimum height of the contents, excluding border and
-! padding.
-! maxwidth Maximum width of the contents, excluding border and
-! padding.
-! minwidth Minimum width of the contents, excluding border and
-! padding.
-! hidden When TRUE the popup exists but is not displayed; use
- `popup_show()` to unhide it.
- {not implemented yet}
-! tab When -1: display the popup on all tabs.
-! When 0 (the default): display the popup on the current
-! tab.
-! Otherwise the number of the tab page the popup is
-! displayed on; when invalid the current tab is used.
- {only -1 and 0 are implemented}
-! title Text to be displayed above the first item in the
-! popup, on top of any border. If there is no top
-! border on line of padding is added to put the title on.
- {not implemented yet}
-! wrap TRUE to make the lines wrap (default TRUE).
-! highlight Highlight group name to use for the text, stored in
-! the 'wincolor' option.
-! padding List with numbers, defining the padding
-! above/right/below/left of the popup (similar to CSS).
-! An empty list uses a padding of 1 all around. The
-! padding goes around the text, inside any border.
-! Padding uses the 'wincolor' highlight.
-! Example: [1, 2, 1, 3] has 1 line of padding above, 2
-! columns on the right, 1 line below and 3 columns on
-! the left.
-! border List with numbers, defining the border thickness
-! above/right/below/left of the popup (similar to CSS).
-! Only values of zero and non-zero are recognized.
-! An empty list uses a border all around.
-! borderhighlight List of highlight group names to use for the border.
-! When one entry it is used for all borders, otherwise
-! the highlight for the top/right/bottom/left border.
-! Example: ['TopColor', 'RightColor', 'BottomColor,
-! 'LeftColor']
-! borderchars List with characters, defining the character to use
-! for the top/right/bottom/left border. Optionally
- followed by the character to use for the
-! topleft/topright/botright/botleft corner.
-! Example: ['-', '|', '-', '|', '┌', '┐', '┘', '└']
-! When the list has one character it is used for all.
-! When the list has two characters the first is used for
-! the border lines, the second for the corners.
-! By default a double line is used all around when
-! 'encoding' is "utf-8", otherwise ASCII characters are
-! used.
-! zindex Priority for the popup, default 50.
-! time Time in milliseconds after which the popup will close.
-! When omitted |popup_close()| must be used.
- moved "cell": close the popup if the cursor moved at least
-! one screen cell.
-! "word" allows for moving the cursor within |<cword>|
-! "WORD" allows for moving the cursor within |<cWORD>|
- a list with two numbers specifies the start and end
-! column outside of which the popup will close
- {not implemented yet}
-! filter A callback that can filter typed characters, see
-! |popup-filter|.
-! callback A callback that is called when the popup closes, e.g.
-! when using |popup_filter_menu()|, see |popup-callback|.
-
- Depending on the "zindex" the popup goes under or above other popups. The
- completion menu (|popup-menu|) has zindex 100. For messages that occur for a
-*** ../vim-8.1.1448/src/popupwin.c 2019-06-02 13:22:08.368507012 +0200
---- src/popupwin.c 2019-06-02 14:43:16.359086768 +0200
-***************
-*** 84,89 ****
---- 84,91 ----
- if (nr > 0)
- wp->w_wantcol = nr;
-
-+ wp->w_popup_fixed = dict_get_number(dict, (char_u *)"fixed") != 0;
-+
- str = dict_get_string(dict, (char_u *)"pos", FALSE);
- if (str != NULL)
- {
-***************
-*** 379,384 ****
---- 381,387 ----
- int maxwidth;
- int center_vert = FALSE;
- int center_hor = FALSE;
-+ int allow_adjust_left = !wp->w_popup_fixed;
-
- wp->w_winrow = 0;
- wp->w_wincol = 0;
-***************
-*** 412,421 ****
- }
-
- // When centering or right aligned, use maximum width.
-! // When left aligned use the space available.
- maxwidth = Columns - wp->w_wincol;
- if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth)
- maxwidth = wp->w_maxwidth;
-
- // Compute width based on longest text line and the 'wrap' option.
- // TODO: more accurate wrapping
---- 415,428 ----
- }
-
- // When centering or right aligned, use maximum width.
-! // When left aligned use the space available, but shift to the left when we
-! // hit the right of the screen.
- maxwidth = Columns - wp->w_wincol;
- if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth)
-+ {
-+ allow_adjust_left = FALSE;
- maxwidth = wp->w_maxwidth;
-+ }
-
- // Compute width based on longest text line and the 'wrap' option.
- // TODO: more accurate wrapping
-***************
-*** 424,433 ****
- {
- int len = vim_strsize(ml_get_buf(wp->w_buffer, lnum, FALSE));
-
-! while (wp->w_p_wrap && len > maxwidth)
- {
-! ++wrapped;
-! len -= maxwidth;
- wp->w_width = maxwidth;
- }
- if (wp->w_width < len)
---- 431,462 ----
- {
- int len = vim_strsize(ml_get_buf(wp->w_buffer, lnum, FALSE));
-
-! if (wp->w_p_wrap)
- {
-! while (len > maxwidth)
-! {
-! ++wrapped;
-! len -= maxwidth;
-! wp->w_width = maxwidth;
-! }
-! }
-! else if (len > maxwidth
-! && allow_adjust_left
-! && (wp->w_popup_pos == POPPOS_TOPLEFT
-! || wp->w_popup_pos == POPPOS_BOTLEFT))
-! {
-! // adjust leftwise to fit text on screen
-! int shift_by = ( len - maxwidth );
-!
-! if ( shift_by > wp->w_wincol )
-! {
-! int truncate_shift = shift_by - wp->w_wincol;
-! len -= truncate_shift;
-! shift_by -= truncate_shift;
-! }
-!
-! wp->w_wincol -= shift_by;
-! maxwidth += shift_by;
- wp->w_width = maxwidth;
- }
- if (wp->w_width < len)
-***************
-*** 895,900 ****
---- 924,930 ----
- dict_add_number(dict, "maxheight", wp->w_maxheight);
- dict_add_number(dict, "maxwidth", wp->w_maxwidth);
- dict_add_number(dict, "zindex", wp->w_zindex);
-+ dict_add_number(dict, "fixed", wp->w_popup_fixed);
-
- for (i = 0; i < (int)(sizeof(poppos_entries) / sizeof(poppos_entry_T));
- ++i)
-*** ../vim-8.1.1448/src/structs.h 2019-06-01 22:49:23.697685695 +0200
---- src/structs.h 2019-06-02 14:44:16.118752659 +0200
-***************
-*** 2308,2314 ****
- int b_p_fixeol; /* 'fixendofline' */
- int b_p_et; /* 'expandtab' */
- int b_p_et_nobin; /* b_p_et saved for binary mode */
-! int b_p_et_nopaste; /* b_p_et saved for paste mode */
- char_u *b_p_fenc; /* 'fileencoding' */
- char_u *b_p_ff; /* 'fileformat' */
- char_u *b_p_ft; /* 'filetype' */
---- 2308,2314 ----
- int b_p_fixeol; /* 'fixendofline' */
- int b_p_et; /* 'expandtab' */
- int b_p_et_nobin; /* b_p_et saved for binary mode */
-! int b_p_et_nopaste; /* b_p_et saved for paste mode */
- char_u *b_p_fenc; /* 'fileencoding' */
- char_u *b_p_ff; /* 'fileformat' */
- char_u *b_p_ft; /* 'filetype' */
-***************
-*** 2881,2886 ****
---- 2881,2887 ----
- #ifdef FEAT_TEXT_PROP
- int w_popup_flags; // POPF_ values
- poppos_T w_popup_pos;
-+ int w_popup_fixed; // do not shift popup to fit on screen
- int w_zindex;
- int w_minheight; // "minheight" for popup window
- int w_minwidth; // "minwidth" for popup window
-***************
-*** 3038,3045 ****
- int w_p_brishift; /* additional shift for breakindent */
- int w_p_brisbr; /* sbr in 'briopt' */
- #endif
-! long w_p_siso; /* 'sidescrolloff' local value */
-! long w_p_so; /* 'scrolloff' local value */
-
- /* transform a pointer to a "onebuf" option into a "allbuf" option */
- #define GLOBAL_WO(p) ((char *)p + sizeof(winopt_T))
---- 3039,3046 ----
- int w_p_brishift; /* additional shift for breakindent */
- int w_p_brisbr; /* sbr in 'briopt' */
- #endif
-! long w_p_siso; /* 'sidescrolloff' local value */
-! long w_p_so; /* 'scrolloff' local value */
-
- /* transform a pointer to a "onebuf" option into a "allbuf" option */
- #define GLOBAL_WO(p) ((char *)p + sizeof(winopt_T))
-***************
-*** 3471,3477 ****
- int js_used; /* bytes used from js_buf */
- int (*js_fill)(struct js_reader *);
- /* function to fill the buffer or NULL;
-! * return TRUE when the buffer was filled */
- void *js_cookie; /* can be used by js_fill */
- int js_cookie_arg; /* can be used by js_fill */
- };
---- 3472,3478 ----
- int js_used; /* bytes used from js_buf */
- int (*js_fill)(struct js_reader *);
- /* function to fill the buffer or NULL;
-! * return TRUE when the buffer was filled */
- void *js_cookie; /* can be used by js_fill */
- int js_cookie_arg; /* can be used by js_fill */
- };
-*** ../vim-8.1.1448/src/testdir/test_popupwin.vim 2019-06-02 14:11:51.865021060 +0200
---- src/testdir/test_popupwin.vim 2019-06-02 14:23:15.857441117 +0200
-***************
-*** 422,427 ****
---- 422,428 ----
- \ 'maxheight': 21,
- \ 'zindex': 100,
- \ 'time': 5000,
-+ \ 'fixed': 1
- \})
- redraw
- let res = popup_getoptions(winid)
-***************
-*** 432,437 ****
---- 433,439 ----
- call assert_equal(20, res.maxwidth)
- call assert_equal(21, res.maxheight)
- call assert_equal(100, res.zindex)
-+ call assert_equal(1, res.fixed)
- if has('timers')
- call assert_equal(5000, res.time)
- endif
-***************
-*** 447,452 ****
---- 449,455 ----
- call assert_equal(0, res.maxwidth)
- call assert_equal(0, res.maxheight)
- call assert_equal(50, res.zindex)
-+ call assert_equal(0, res.fixed)
- if has('timers')
- call assert_equal(0, res.time)
- endif
-***************
-*** 647,649 ****
---- 650,832 ----
- call StopVimInTerminal(buf)
- call delete('XtestPopupBehind')
- endfunc
-+
-+ func s:VerifyPosition( p, msg, line, col, width, height )
-+ call assert_equal( a:line, popup_getpos( a:p ).line, a:msg . ' (l)' )
-+ call assert_equal( a:col, popup_getpos( a:p ).col, a:msg . ' (c)' )
-+ call assert_equal( a:width, popup_getpos( a:p ).width, a:msg . ' (w)' )
-+ call assert_equal( a:height, popup_getpos( a:p ).height, a:msg . ' (h)' )
-+ endfunc
-+
-+ func Test_popup_position_adjust()
-+ " Anything placed past 2 cells from of the right of the screen is moved to the
-+ " left.
-+ "
-+ " When wrapping is disabled, we also shift to the left to display on the
-+ " screen, unless fixed is set.
-+
-+ " Entries for cases which don't vary based on wrapping.
-+ " Format is per tests described below
-+ let both_wrap_tests = [
-+ \ [ 'a', 5, &columns, 5, &columns - 2, 1, 1 ],
-+ \ [ 'b', 5, &columns + 1, 5, &columns - 2, 1, 1 ],
-+ \ [ 'c', 5, &columns - 1, 5, &columns - 2, 1, 1 ],
-+ \ [ 'd', 5, &columns - 2, 5, &columns - 2, 1, 1 ],
-+ \ [ 'e', 5, &columns - 3, 5, &columns - 3, 1, 1 ],
-+ \
-+ \ [ 'aa', 5, &columns, 5, &columns - 2, 2, 1 ],
-+ \ [ 'bb', 5, &columns + 1, 5, &columns - 2, 2, 1 ],
-+ \ [ 'cc', 5, &columns - 1, 5, &columns - 2, 2, 1 ],
-+ \ [ 'dd', 5, &columns - 2, 5, &columns - 2, 2, 1 ],
-+ \ [ 'ee', 5, &columns - 3, 5, &columns - 3, 2, 1 ],
-+ \
-+ \ [ 'aaa', 5, &columns, 5, &columns - 2, 3, 1 ],
-+ \ [ 'bbb', 5, &columns + 1, 5, &columns - 2, 3, 1 ],
-+ \ [ 'ccc', 5, &columns - 1, 5, &columns - 2, 3, 1 ],
-+ \ [ 'ddd', 5, &columns - 2, 5, &columns - 2, 3, 1 ],
-+ \ [ 'eee', 5, &columns - 3, 5, &columns - 3, 3, 1 ],
-+ \ ]
-+
-+ " these test groups are dicts with:
-+ " - comment: something to identify the group of tests by
-+ " - options: dict of options to merge with the row/col in tests
-+ " - tests: list of cases. Each one is a list with elements:
-+ " - text
-+ " - row
-+ " - col
-+ " - expected row
-+ " - expected col
-+ " - expected width
-+ " - expected height
-+ let tests = [
-+ \ {
-+ \ 'comment': 'left-aligned with wrapping',
-+ \ 'options': {
-+ \ 'wrap': 1,
-+ \ 'pos': 'botleft',
-+ \ },
-+ \ 'tests': both_wrap_tests + [
-+ \ [ 'aaaa', 5, &columns, 4, &columns - 2, 3, 2 ],
-+ \ [ 'bbbb', 5, &columns + 1, 4, &columns - 2, 3, 2 ],
-+ \ [ 'cccc', 5, &columns - 1, 4, &columns - 2, 3, 2 ],
-+ \ [ 'dddd', 5, &columns - 2, 4, &columns - 2, 3, 2 ],
-+ \ [ 'eeee', 5, &columns - 3, 5, &columns - 3, 4, 1 ],
-+ \ ],
-+ \ },
-+ \ {
-+ \ 'comment': 'left aligned without wrapping',
-+ \ 'options': {
-+ \ 'wrap': 0,
-+ \ 'pos': 'botleft',
-+ \ },
-+ \ 'tests': both_wrap_tests + [
-+ \ [ 'aaaa', 5, &columns, 5, &columns - 3, 4, 1 ],
-+ \ [ 'bbbb', 5, &columns + 1, 5, &columns - 3, 4, 1 ],
-+ \ [ 'cccc', 5, &columns - 1, 5, &columns - 3, 4, 1 ],
-+ \ [ 'dddd', 5, &columns - 2, 5, &columns - 3, 4, 1 ],
-+ \ [ 'eeee', 5, &columns - 3, 5, &columns - 3, 4, 1 ],
-+ \ ],
-+ \ },
-+ \ {
-+ \ 'comment': 'left aligned with fixed position',
-+ \ 'options': {
-+ \ 'wrap': 0,
-+ \ 'fixed': 1,
-+ \ 'pos': 'botleft',
-+ \ },
-+ \ 'tests': both_wrap_tests + [
-+ \ [ 'aaaa', 5, &columns, 5, &columns - 2, 3, 1 ],
-+ \ [ 'bbbb', 5, &columns + 1, 5, &columns - 2, 3, 1 ],
-+ \ [ 'cccc', 5, &columns - 1, 5, &columns - 2, 3, 1 ],
-+ \ [ 'dddd', 5, &columns - 2, 5, &columns - 2, 3, 1 ],
-+ \ [ 'eeee', 5, &columns - 3, 5, &columns - 3, 4, 1 ],
-+ \ ],
-+ \ },
-+ \ ]
-+
-+ for test_group in tests
-+ for test in test_group.tests
-+ let [ text, line, col, e_line, e_col, e_width, e_height ] = test
-+ let options = {
-+ \ 'line': line,
-+ \ 'col': col,
-+ \ }
-+ call extend( options, test_group.options )
-+
-+ let p = popup_create( text, options )
-+
-+ let msg = string( extend( options, { 'text': text } ) )
-+ call s:VerifyPosition( p, msg, e_line, e_col, e_width, e_height )
-+ call popup_close( p )
-+ endfor
-+ endfor
-+
-+ popupclear
-+ %bwipe!
-+ endfunc
-+
-+ function Test_adjust_left_past_screen_width()
-+ " width of screen
-+ let X = join(map(range(&columns), {->'X'}), '')
-+
-+ let p = popup_create( X, { 'line': 1, 'col': 1, 'wrap': 0 } )
-+ call s:VerifyPosition( p, 'full width topleft', 1, 1, &columns, 1 )
-+
-+ redraw
-+ let line = join(map(range(1, &columns + 1), 'screenstring(1, v:val)'), '')
-+ call assert_equal(X, line)
-+
-+ call popup_close( p )
-+ redraw
-+
-+ " Same if placed on the right hand side
-+ let p = popup_create( X, { 'line': 1, 'col': &columns, 'wrap': 0 } )
-+ call s:VerifyPosition( p, 'full width topright', 1, 1, &columns, 1 )
-+
-+ redraw
-+ let line = join(map(range(1, &columns + 1), 'screenstring(1, v:val)'), '')
-+ call assert_equal(X, line)
-+
-+ call popup_close( p )
-+ redraw
-+
-+ " Extend so > window width
-+ let X .= 'x'
-+
-+ let p = popup_create( X, { 'line': 1, 'col': 1, 'wrap': 0 } )
-+ call s:VerifyPosition( p, 'full width + 1 topleft', 1, 1, &columns, 1 )
-+
-+ redraw
-+ let line = join(map(range(1, &columns + 1), 'screenstring(1, v:val)'), '')
-+ call assert_equal(X[ : -2 ], line)
-+
-+ call popup_close( p )
-+ redraw
-+
-+ " Shifted then truncated (the x is not visible)
-+ let p = popup_create( X, { 'line': 1, 'col': &columns - 3, 'wrap': 0 } )
-+ call s:VerifyPosition( p, 'full width + 1 topright', 1, 1, &columns, 1 )
-+
-+ redraw
-+ let line = join(map(range(1, &columns + 1), 'screenstring(1, v:val)'), '')
-+ call assert_equal(X[ : -2 ], line)
-+
-+ call popup_close( p )
-+ redraw
-+
-+ " Not shifted, just truncated
-+ let p = popup_create( X,
-+ \ { 'line': 1, 'col': 2, 'wrap': 0, 'fixed': 1 } )
-+ call s:VerifyPosition( p, 'full width + 1 fixed', 1, 2, &columns - 1, 1)
-+
-+ redraw
-+ let line = join(map(range(1, &columns + 1), 'screenstring(1, v:val)'), '')
-+ let e_line = ' ' . X[ 1 : -2 ]
-+ call assert_equal(e_line, line)
-+
-+ call popup_close( p )
-+ redraw
-+
-+ popupclear
-+ %bwipe!
-+ endfunction
-*** ../vim-8.1.1448/src/version.c 2019-06-02 14:11:51.865021060 +0200
---- src/version.c 2019-06-02 14:25:11.832829281 +0200
-***************
-*** 769,770 ****
---- 769,772 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1449,
- /**/
-
---
-hundred-and-one symptoms of being an internet addict:
-91. It's Saturday afternoon in the middle of May and you
- are on computer.
-
- /// 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 ///