diff options
Diffstat (limited to 'data/vim/patches/8.1.1455')
-rw-r--r-- | data/vim/patches/8.1.1455 | 341 |
1 files changed, 0 insertions, 341 deletions
diff --git a/data/vim/patches/8.1.1455 b/data/vim/patches/8.1.1455 deleted file mode 100644 index 06db6a060..000000000 --- a/data/vim/patches/8.1.1455 +++ /dev/null @@ -1,341 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.1455 -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.1455 -Problem: Popup_atcursor() not completely implemented. -Solution: Add the default for the "moved" property. -Files: src/popupwin.c, src/normal.c, src/vim.h, - src/testdir/test_popupwin.vim - - -*** ../vim-8.1.1454/src/popupwin.c 2019-06-02 18:40:02.637508840 +0200 ---- src/popupwin.c 2019-06-02 19:49:53.304066084 +0200 -*************** -*** 138,149 **** - } - - /* - * Go through the options in "dict" and apply them to buffer "buf" displayed in - * popup window "wp". -- * When called from f_popup_atcursor() "atcursor" is TRUE. - */ - static void -! apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict, int atcursor) - { - int nr; - char_u *str; ---- 138,176 ---- - } - - /* -+ * Used when popup options contain "moved": set default moved values. -+ */ -+ static void -+ set_moved_values(win_T *wp) -+ { -+ wp->w_popup_curwin = curwin; -+ wp->w_popup_lnum = curwin->w_cursor.lnum; -+ wp->w_popup_mincol = curwin->w_cursor.col; -+ wp->w_popup_maxcol = curwin->w_cursor.col; -+ } -+ -+ /* -+ * Used when popup options contain "moved" with "word" or "WORD". -+ */ -+ static void -+ set_moved_columns(win_T *wp, int flags) -+ { -+ char_u *ptr; -+ int len = find_ident_under_cursor(&ptr, flags | FIND_NOERROR); -+ -+ if (len > 0) -+ { -+ wp->w_popup_mincol = (int)(ptr - ml_get_curline()); -+ wp->w_popup_maxcol = wp->w_popup_mincol + len - 1; -+ } -+ } -+ -+ /* - * Go through the options in "dict" and apply them to buffer "buf" displayed in - * popup window "wp". - */ - static void -! apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict) - { - int nr; - char_u *str; -*************** -*** 155,173 **** - wp->w_maxwidth = dict_get_number(dict, (char_u *)"maxwidth"); - wp->w_maxheight = dict_get_number(dict, (char_u *)"maxheight"); - -- 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"); ---- 182,187 ---- -*************** -*** 289,298 **** - di = dict_find(dict, (char_u *)"moved", -1); - if (di != NULL) - { -! wp->w_popup_curwin = curwin; -! wp->w_popup_lnum = curwin->w_cursor.lnum; -! wp->w_popup_mincol = curwin->w_cursor.col; -! wp->w_popup_maxcol = curwin->w_cursor.col; - if (di->di_tv.v_type == VAR_STRING && di->di_tv.vval.v_string != NULL) - { - char_u *s = di->di_tv.vval.v_string; ---- 303,309 ---- - di = dict_find(dict, (char_u *)"moved", -1); - if (di != NULL) - { -! set_moved_values(wp); - if (di->di_tv.v_type == VAR_STRING && di->di_tv.vval.v_string != NULL) - { - char_u *s = di->di_tv.vval.v_string; -*************** -*** 305,320 **** - else if (STRCMP(s, "any") != 0) - semsg(_(e_invarg2), s); - if (flags != 0) -! { -! char_u *ptr; -! int len = find_ident_under_cursor(&ptr, flags); -! -! if (len > 0) -! { -! wp->w_popup_mincol = (int)(ptr - ml_get_curline()); -! wp->w_popup_maxcol = wp->w_popup_mincol + len - 1; -! } -! } - } - else if (di->di_tv.v_type == VAR_LIST - && di->di_tv.vval.v_list != NULL ---- 316,322 ---- - else if (STRCMP(s, "any") != 0) - semsg(_(e_invarg2), s); - if (flags != 0) -! set_moved_columns(wp, flags); - } - else if (di->di_tv.v_type == VAR_LIST - && di->di_tv.vval.v_list != NULL -*************** -*** 554,566 **** - wp->w_popup_last_changedtick = CHANGEDTICK(wp->w_buffer); - } - - /* - * popup_create({text}, {options}) - * popup_atcursor({text}, {options}) - * When called from f_popup_atcursor() "atcursor" is TRUE. - */ - static void -! popup_create(typval_T *argvars, typval_T *rettv, int atcursor) - { - win_T *wp; - buf_T *buf; ---- 556,574 ---- - wp->w_popup_last_changedtick = CHANGEDTICK(wp->w_buffer); - } - -+ typedef enum -+ { -+ TYPE_NORMAL, -+ TYPE_ATCURSOR -+ } create_type_T; -+ - /* - * popup_create({text}, {options}) - * popup_atcursor({text}, {options}) - * When called from f_popup_atcursor() "atcursor" is TRUE. - */ - static void -! popup_create(typval_T *argvars, typval_T *rettv, create_type_T type) - { - win_T *wp; - buf_T *buf; -*************** -*** 652,659 **** - ml_delete(buf->b_ml.ml_line_count, FALSE); - curbuf = curwin->w_buffer; - - // Deal with options. -! apply_options(wp, buf, argvars[1].vval.v_dict, atcursor); - - // set default values - if (wp->w_zindex == 0) ---- 660,682 ---- - ml_delete(buf->b_ml.ml_line_count, FALSE); - curbuf = curwin->w_buffer; - -+ if (type == TYPE_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; -+ set_moved_values(wp); -+ set_moved_columns(wp, FIND_STRING); -+ } -+ - // Deal with options. -! apply_options(wp, buf, argvars[1].vval.v_dict); - - // set default values - if (wp->w_zindex == 0) -*************** -*** 672,678 **** - void - f_popup_create(typval_T *argvars, typval_T *rettv) - { -! popup_create(argvars, rettv, FALSE); - } - - /* ---- 695,701 ---- - void - f_popup_create(typval_T *argvars, typval_T *rettv) - { -! popup_create(argvars, rettv, TYPE_NORMAL); - } - - /* -*************** -*** 681,687 **** - void - f_popup_atcursor(typval_T *argvars, typval_T *rettv) - { -! popup_create(argvars, rettv, TRUE); - } - - /* ---- 704,710 ---- - void - f_popup_atcursor(typval_T *argvars, typval_T *rettv) - { -! popup_create(argvars, rettv, TYPE_ATCURSOR); - } - - /* -*** ../vim-8.1.1454/src/normal.c 2019-05-28 23:08:12.068648696 +0200 ---- src/normal.c 2019-06-02 19:42:59.866656946 +0200 -*************** -*** 3461,3473 **** - if (ptr[col] == NUL || (i == 0 - && (has_mbyte ? this_class != 2 : !vim_iswordc(ptr[col])))) - { -! /* -! * didn't find an identifier or string -! */ -! if (find_type & FIND_STRING) -! emsg(_("E348: No string under cursor")); -! else -! emsg(_(e_noident)); - return 0; - } - ptr += col; ---- 3461,3474 ---- - if (ptr[col] == NUL || (i == 0 - && (has_mbyte ? this_class != 2 : !vim_iswordc(ptr[col])))) - { -! // didn't find an identifier or string -! if ((find_type & FIND_NOERROR) == 0) -! { -! if (find_type & FIND_STRING) -! emsg(_("E348: No string under cursor")); -! else -! emsg(_(e_noident)); -! } - return 0; - } - ptr += col; -*** ../vim-8.1.1454/src/vim.h 2019-06-01 17:13:15.884517713 +0200 ---- src/vim.h 2019-06-02 19:43:48.170353186 +0200 -*************** -*** 879,888 **** - #define SEARCH_PEEK 0x800 /* peek for typed char, cancel search */ - #define SEARCH_COL 0x1000 /* start at specified column instead of zero */ - -! /* Values for find_ident_under_cursor() */ -! #define FIND_IDENT 1 /* find identifier (word) */ -! #define FIND_STRING 2 /* find any string (WORD) */ -! #define FIND_EVAL 4 /* include "->", "[]" and "." */ - - /* Values for file_name_in_line() */ - #define FNAME_MESS 1 /* give error message */ ---- 879,889 ---- - #define SEARCH_PEEK 0x800 /* peek for typed char, cancel search */ - #define SEARCH_COL 0x1000 /* start at specified column instead of zero */ - -! // Values for find_ident_under_cursor() -! #define FIND_IDENT 1 // find identifier (word) -! #define FIND_STRING 2 // find any string (WORD) -! #define FIND_EVAL 4 // include "->", "[]" and "." -! #define FIND_NOERROR 8 // no error when no word found - - /* Values for file_name_in_line() */ - #define FNAME_MESS 1 /* give error message */ -*** ../vim-8.1.1454/src/testdir/test_popupwin.vim 2019-06-02 18:40:02.641508815 +0200 ---- src/testdir/test_popupwin.vim 2019-06-02 19:51:53.963344600 +0200 -*************** -*** 1009,1016 **** - call assert_equal({}, popup_getpos(winid)) - popupclear - - exe "normal gg0/WORD\<CR>" -! let winid = popup_atcursor('text', {'moved': 'WORD'}) - redraw - call assert_equal(1, popup_getpos(winid).visible) - call feedkeys("eli\<Esc>", 'xt') ---- 1009,1017 ---- - call assert_equal({}, popup_getpos(winid)) - popupclear - -+ " WORD is the default - exe "normal gg0/WORD\<CR>" -! let winid = popup_atcursor('text', {}) - redraw - call assert_equal(1, popup_getpos(winid).visible) - call feedkeys("eli\<Esc>", 'xt') -*** ../vim-8.1.1454/src/version.c 2019-06-02 19:02:24.478427721 +0200 ---- src/version.c 2019-06-02 19:28:23.096298172 +0200 -*************** -*** 769,770 **** ---- 769,772 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 1455, - /**/ - --- -From "know your smileys": - :~) A man with a tape recorder up his nose - - /// 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 /// |