summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1429
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1429')
-rw-r--r--data/vim/patches/8.1.1429532
1 files changed, 0 insertions, 532 deletions
diff --git a/data/vim/patches/8.1.1429 b/data/vim/patches/8.1.1429
deleted file mode 100644
index 74d327851..000000000
--- a/data/vim/patches/8.1.1429
+++ /dev/null
@@ -1,532 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1429
-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.1429
-Problem: "pos" option of popup window not supported yet.
-Solution: Implement the option. Rename popup_getposition() to
- popup_getpos().
-Files: src/structs.h, src/popupwin.c, src/proto/popupwin.pro,
- runtime/doc/popup.txt
-
-
-*** ../vim-8.1.1428/src/structs.h 2019-05-30 00:11:48.704086357 +0200
---- src/structs.h 2019-05-30 19:48:48.436658475 +0200
-***************
-*** 1982,1987 ****
---- 1982,1996 ----
- // # define CRYPT_NOT_INPLACE 1
- #endif
-
-+ #ifdef FEAT_TEXT_PROP
-+ typedef enum {
-+ POPPOS_BOTLEFT,
-+ POPPOS_TOPLEFT,
-+ POPPOS_BOTRIGHT,
-+ POPPOS_TOPRIGHT,
-+ POPPOS_CENTER
-+ } poppos_T;
-+ #endif
-
- /*
- * These are items normally related to a buffer. But when using ":ownsyntax"
-***************
-*** 2873,2879 ****
- int w_vsep_width; /* Number of separator columns (0 or 1). */
- pos_save_T w_save_cursor; /* backup of cursor pos and topline */
- #ifdef FEAT_TEXT_PROP
-! int w_popup_flags; // PFL_ values
- int w_zindex;
- int w_minheight; // "minheight" for popup window
- int w_minwidth; // "minwidth" for popup window
---- 2882,2889 ----
- int w_vsep_width; /* Number of separator columns (0 or 1). */
- pos_save_T w_save_cursor; /* backup of cursor pos and topline */
- #ifdef FEAT_TEXT_PROP
-! int w_popup_flags; // POPF_ values
-! poppos_T w_popup_pos;
- int w_zindex;
- int w_minheight; // "minheight" for popup window
- int w_minwidth; // "minwidth" for popup window
-*** ../vim-8.1.1428/src/popupwin.c 2019-05-30 19:24:57.615269014 +0200
---- src/popupwin.c 2019-05-30 21:18:23.603081264 +0200
-***************
-*** 15,26 ****
-
- #ifdef FEAT_TEXT_PROP
-
- /*
- * Get option value for"key", which is "line" or "col".
- * Handles "cursor+N" and "cursor-N".
- */
- static int
-! popup_options_pos(dict_T *dict, char_u *key)
- {
- dictitem_T *di;
- char_u *val;
---- 15,39 ----
-
- #ifdef FEAT_TEXT_PROP
-
-+ typedef struct {
-+ char *pp_name;
-+ poppos_T pp_val;
-+ } poppos_entry_T;
-+
-+ static poppos_entry_T poppos_entries[] = {
-+ {"botleft", POPPOS_BOTLEFT},
-+ {"topleft", POPPOS_TOPLEFT},
-+ {"botright", POPPOS_BOTRIGHT},
-+ {"topright", POPPOS_TOPRIGHT},
-+ {"center", POPPOS_CENTER}
-+ };
-+
- /*
- * Get option value for"key", which is "line" or "col".
- * Handles "cursor+N" and "cursor-N".
- */
- static int
-! popup_options_one(dict_T *dict, char_u *key)
- {
- dictitem_T *di;
- char_u *val;
-***************
-*** 58,63 ****
---- 71,106 ----
- return n;
- }
-
-+ static void
-+ get_pos_options(win_T *wp, dict_T *dict)
-+ {
-+ char_u *str;
-+ int nr;
-+
-+ nr = popup_options_one(dict, (char_u *)"line");
-+ if (nr > 0)
-+ wp->w_wantline = nr;
-+ nr = popup_options_one(dict, (char_u *)"col");
-+ if (nr > 0)
-+ wp->w_wantcol = nr;
-+
-+ str = dict_get_string(dict, (char_u *)"pos", FALSE);
-+ if (str != NULL)
-+ {
-+ for (nr = 0;
-+ nr < (int)(sizeof(poppos_entries) / sizeof(poppos_entry_T));
-+ ++nr)
-+ if (STRCMP(str, poppos_entries[nr].pp_name) == 0)
-+ {
-+ wp->w_popup_pos = poppos_entries[nr].pp_val;
-+ nr = -1;
-+ break;
-+ }
-+ if (nr != -1)
-+ semsg(_(e_invarg2), str);
-+ }
-+ }
-+
- /*
- * Go through the options in "dict" and apply them to buffer "buf" displayed in
- * popup window "wp".
-***************
-*** 66,72 ****
---- 109,117 ----
- static void
- apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict, int atcursor)
- {
-+ #if defined(FEAT_TIMERS)
- int nr;
-+ #endif
- char_u *str;
-
- wp->w_minwidth = dict_get_number(dict, (char_u *)"minwidth");
-***************
-*** 76,92 ****
-
- if (atcursor)
- {
- setcursor_mayforce(TRUE);
- wp->w_wantline = screen_screenrow();
- wp->w_wantcol = screen_screencol() + 1;
- }
-
-! nr = popup_options_pos(dict, (char_u *)"line");
-! if (nr > 0)
-! wp->w_wantline = nr;
-! nr = popup_options_pos(dict, (char_u *)"col");
-! if (nr > 0)
-! wp->w_wantcol = nr;
-
- wp->w_zindex = dict_get_number(dict, (char_u *)"zindex");
-
---- 121,138 ----
-
- if (atcursor)
- {
-+ wp->w_popup_pos = POPPOS_BOTLEFT;
- setcursor_mayforce(TRUE);
- wp->w_wantline = screen_screenrow();
-+ if (wp->w_wantline == 0) // cursor in first line
-+ {
-+ wp->w_wantline = 2;
-+ wp->w_popup_pos = POPPOS_TOPLEFT;
-+ }
- wp->w_wantcol = screen_screencol() + 1;
- }
-
-! get_pos_options(wp, dict);
-
- wp->w_zindex = dict_get_number(dict, (char_u *)"zindex");
-
-***************
-*** 212,235 ****
- linenr_T lnum;
- int wrapped = 0;
- int maxwidth;
-
-! // TODO: Compute the size and position properly.
-! if (wp->w_wantline > 0)
-! wp->w_winrow = wp->w_wantline - 1;
- else
-! // TODO: better default
-! wp->w_winrow = Rows > 5 ? Rows / 2 - 2 : 0;
-! if (wp->w_winrow >= Rows)
-! wp->w_winrow = Rows - 1;
-
-! if (wp->w_wantcol > 0)
-! wp->w_wincol = wp->w_wantcol - 1;
-! else
-! // TODO: better default
-! wp->w_wincol = Columns > 20 ? Columns / 2 - 10 : 0;
-! if (wp->w_wincol >= Columns - 3)
-! wp->w_wincol = Columns - 3;
-
- maxwidth = Columns - wp->w_wincol;
- if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth)
- maxwidth = wp->w_maxwidth;
---- 258,299 ----
- linenr_T lnum;
- int wrapped = 0;
- int maxwidth;
-+ int center_vert = FALSE;
-+ int center_hor = FALSE;
-
-! wp->w_winrow = 0;
-! wp->w_wincol = 0;
-! if (wp->w_popup_pos == POPPOS_CENTER)
-! {
-! // center after computing the size
-! center_vert = TRUE;
-! center_hor = TRUE;
-! }
- else
-! {
-! if (wp->w_wantline == 0)
-! center_vert = TRUE;
-! else if (wp->w_popup_pos == POPPOS_TOPLEFT
-! || wp->w_popup_pos == POPPOS_TOPRIGHT)
-! {
-! wp->w_winrow = wp->w_wantline - 1;
-! if (wp->w_winrow >= Rows)
-! wp->w_winrow = Rows - 1;
-! }
-
-! if (wp->w_wantcol == 0)
-! center_hor = TRUE;
-! else if (wp->w_popup_pos == POPPOS_TOPLEFT
-! || wp->w_popup_pos == POPPOS_BOTLEFT)
-! {
-! wp->w_wincol = wp->w_wantcol - 1;
-! if (wp->w_wincol >= Columns - 3)
-! wp->w_wincol = Columns - 3;
-! }
-! }
-
-+ // 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;
-***************
-*** 255,260 ****
---- 319,334 ----
- wp->w_width = wp->w_minwidth;
- if (wp->w_width > maxwidth)
- wp->w_width = maxwidth;
-+ if (center_hor)
-+ wp->w_wincol = (Columns - wp->w_width) / 2;
-+ else if (wp->w_popup_pos == POPPOS_BOTRIGHT
-+ || wp->w_popup_pos == POPPOS_TOPRIGHT)
-+ {
-+ // Right aligned: move to the right if needed.
-+ // No truncation, because that would change the height.
-+ if (wp->w_width < wp->w_wantcol)
-+ wp->w_wincol = wp->w_wantcol - wp->w_width;
-+ }
-
- if (wp->w_height <= 1)
- wp->w_height = wp->w_buffer->b_ml.ml_line_count + wrapped;
-***************
-*** 265,270 ****
---- 339,357 ----
- if (wp->w_height > Rows - wp->w_winrow)
- wp->w_height = Rows - wp->w_winrow;
-
-+ if (center_vert)
-+ wp->w_winrow = (Rows - wp->w_height) / 2;
-+ else if (wp->w_popup_pos == POPPOS_BOTRIGHT
-+ || wp->w_popup_pos == POPPOS_BOTLEFT)
-+ {
-+ if (wp->w_height <= wp->w_wantline)
-+ // bottom aligned: may move down
-+ wp->w_winrow = wp->w_wantline - wp->w_height;
-+ else
-+ // not enough space, make top aligned
-+ wp->w_winrow = wp->w_wantline + 1;
-+ }
-+
- wp->w_popup_last_changedtick = CHANGEDTICK(wp->w_buffer);
- }
-
-***************
-*** 304,310 ****
- if (wp == NULL)
- return;
- rettv->vval.v_number = wp->w_id;
-! wp->w_p_wrap = TRUE; // 'wrap' is default on
-
- buf = buflist_new(NULL, NULL, (linenr_T)0, BLN_NEW|BLN_LISTED|BLN_DUMMY);
- if (buf == NULL)
---- 391,397 ----
- if (wp == NULL)
- return;
- rettv->vval.v_number = wp->w_id;
-! wp->w_popup_pos = POPPOS_TOPLEFT;
-
- buf = buflist_new(NULL, NULL, (linenr_T)0, BLN_NEW|BLN_LISTED|BLN_DUMMY);
- if (buf == NULL)
-***************
-*** 322,327 ****
---- 409,416 ----
- buf->b_p_swf = FALSE; // no swap file
- buf->b_p_bl = FALSE; // unlisted buffer
- buf->b_locked = TRUE;
-+ wp->w_p_wrap = TRUE; // 'wrap' is default on
-+
- // Avoid that 'buftype' is reset when this buffer is entered.
- buf->b_p_initialized = TRUE;
-
-***************
-*** 578,588 ****
- wp->w_maxwidth = nr;
- if ((nr = dict_get_number(d, (char_u *)"maxheight")) > 0)
- wp->w_maxheight = nr;
-! if ((nr = dict_get_number(d, (char_u *)"line")) > 0)
-! wp->w_wantline = nr;
-! if ((nr = dict_get_number(d, (char_u *)"col")) > 0)
-! wp->w_wantcol = nr;
-! // TODO: "pos"
-
- if (wp->w_winrow + wp->w_height >= cmdline_row)
- clear_cmdline = TRUE;
---- 667,673 ----
- wp->w_maxwidth = nr;
- if ((nr = dict_get_number(d, (char_u *)"maxheight")) > 0)
- wp->w_maxheight = nr;
-! get_pos_options(wp, d);
-
- if (wp->w_winrow + wp->w_height >= cmdline_row)
- clear_cmdline = TRUE;
-***************
-*** 591,600 ****
- }
-
- /*
-! * popup_getposition({id})
- */
- void
-! f_popup_getposition(typval_T *argvars, typval_T *rettv)
- {
- dict_T *dict;
- int id = (int)tv_get_number(argvars);
---- 676,685 ----
- }
-
- /*
-! * popup_getpos({id})
- */
- void
-! f_popup_getpos(typval_T *argvars, typval_T *rettv)
- {
- dict_T *dict;
- int id = (int)tv_get_number(argvars);
-***************
-*** 623,628 ****
---- 708,714 ----
- dict_T *dict;
- int id = (int)tv_get_number(argvars);
- win_T *wp = find_popup_win(id);
-+ int i;
-
- if (rettv_dict_alloc(rettv) == OK)
- {
-***************
-*** 637,642 ****
---- 723,738 ----
- dict_add_number(dict, "maxheight", wp->w_maxheight);
- dict_add_number(dict, "maxwidth", wp->w_maxwidth);
- dict_add_number(dict, "zindex", wp->w_zindex);
-+
-+ for (i = 0; i < (int)(sizeof(poppos_entries) / sizeof(poppos_entry_T));
-+ ++i)
-+ if (wp->w_popup_pos == poppos_entries[i].pp_val)
-+ {
-+ dict_add_string(dict, "pos",
-+ (char_u *)poppos_entries[i].pp_name);
-+ break;
-+ }
-+
- # if defined(FEAT_TIMERS)
- dict_add_number(dict, "time", wp->w_popup_timer != NULL
- ? (long)wp->w_popup_timer->tr_interval : 0L);
-*** ../vim-8.1.1428/src/proto/popupwin.pro 2019-05-30 19:24:57.615269014 +0200
---- src/proto/popupwin.pro 2019-05-30 21:19:20.050800869 +0200
-***************
-*** 1,16 ****
- /* popupwin.c */
-! int popup_any_visible(void);
-! void close_all_popups(void);
-! void ex_popupclear(exarg_T *eap);
- void f_popup_atcursor(typval_T *argvars, typval_T *rettv);
- void f_popup_close(typval_T *argvars, typval_T *rettv);
-- void f_popup_create(typval_T *argvars, typval_T *rettv);
-- void f_popup_getoptions(typval_T *argvars, typval_T *rettv);
-- void f_popup_getposition(typval_T *argvars, typval_T *rettv);
- void f_popup_hide(typval_T *argvars, typval_T *rettv);
-- void f_popup_move(typval_T *argvars, typval_T *rettv);
- void f_popup_show(typval_T *argvars, typval_T *rettv);
-- void popup_adjust_position(win_T *wp);
- void popup_close(int id);
- void popup_close_tabpage(tabpage_T *tp, int id);
- /* vim: set ft=c : */
---- 1,16 ----
- /* popupwin.c */
-! void popup_adjust_position(win_T *wp);
-! void f_popup_create(typval_T *argvars, typval_T *rettv);
- void f_popup_atcursor(typval_T *argvars, typval_T *rettv);
-+ int popup_any_visible(void);
- void f_popup_close(typval_T *argvars, typval_T *rettv);
- void f_popup_hide(typval_T *argvars, typval_T *rettv);
- void f_popup_show(typval_T *argvars, typval_T *rettv);
- void popup_close(int id);
- void popup_close_tabpage(tabpage_T *tp, int id);
-+ void close_all_popups(void);
-+ void ex_popupclear(exarg_T *eap);
-+ void f_popup_move(typval_T *argvars, typval_T *rettv);
-+ void f_popup_getpos(typval_T *argvars, typval_T *rettv);
-+ void f_popup_getoptions(typval_T *argvars, typval_T *rettv);
- /* vim: set ft=c : */
-*** ../vim-8.1.1428/runtime/doc/popup.txt 2019-05-30 19:24:57.615269014 +0200
---- runtime/doc/popup.txt 2019-05-30 21:17:46.191262945 +0200
-***************
-*** 232,238 ****
-
- popup_getoptions({id}) *popup_getoptions()*
- Return the {options} for popup {id} in a Dict.
-! A zero value means the option was not set.
-
- The "highlight" entry is omitted, use the 'wincolor' option
- for that: >
---- 232,239 ----
-
- popup_getoptions({id}) *popup_getoptions()*
- Return the {options} for popup {id} in a Dict.
-! A zero value means the option was not set. For "zindex" the
-! default value is returned, not zero.
-
- The "highlight" entry is omitted, use the 'wincolor' option
- for that: >
-***************
-*** 240,246 ****
-
- < If popup window {id} is not found an empty Dict is returned.
-
-! popup_getposition({id}) *popup_getposition()*
- Return the position and size of popup {id}. Returns a Dict
- with these entries:
- col screen column of the popup, one-based
---- 241,247 ----
-
- < If popup window {id} is not found an empty Dict is returned.
-
-! popup_getpos({id}) *popup_getpos()*
- Return the position and size of popup {id}. Returns a Dict
- with these entries:
- col screen column of the popup, one-based
-***************
-*** 303,321 ****
- |popup-props|.
-
- The second argument of |popup_create()| is a dictionary with options:
-! line screen line where to position the popup; can use
-! "cursor", "cursor+1" or "cursor-1" to use the line of
-! the cursor and add or subtract a number of lines;
-! default is "cursor-1".
-! col screen column where to position the popup; can use
-! "cursor" to use the column of the cursor, "cursor+99"
-! and "cursor-99" to add or subtract a number of
-! columns; default is "cursor"
- 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.
- {not implemented yet}
- flip when TRUE (the default) and the position is relative
- to the cursor, flip to below or above the cursor to
---- 304,325 ----
- |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.
- {not implemented yet}
- flip when TRUE (the default) and the position is relative
- to the cursor, flip to below or above the cursor to
-*** ../vim-8.1.1428/src/version.c 2019-05-30 19:24:57.615269014 +0200
---- src/version.c 2019-05-30 21:22:31.477803848 +0200
-***************
-*** 769,770 ****
---- 769,772 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1429,
- /**/
-
---
-ERROR 047: Keyboard not found. Press RETURN to continue.
-
- /// 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 ///