diff options
Diffstat (limited to 'data/vim/patches/8.1.1429')
-rw-r--r-- | data/vim/patches/8.1.1429 | 532 |
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 /// |