diff options
Diffstat (limited to 'data/vim/patches/8.1.1407')
-rw-r--r-- | data/vim/patches/8.1.1407 | 516 |
1 files changed, 0 insertions, 516 deletions
diff --git a/data/vim/patches/8.1.1407 b/data/vim/patches/8.1.1407 deleted file mode 100644 index 41a106eba..000000000 --- a/data/vim/patches/8.1.1407 +++ /dev/null @@ -1,516 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.1407 -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.1407 -Problem: Popup_create() does not support text properties. -Solution: Support the third form of the text argument. -Files: src/textprop.c, src/proto/textprop.pro, src/popupwin.c, - src/testdir/test_popupwin.vim, src/screen.c, - src/testdir/dumps/Test_popupwin_02.dump, - src/testdir/dumps/Test_popupwin_03.dump, - src/testdir/dumps/Test_popupwin_04.dump, - runtime/doc/popup.txt - - -*** ../vim-8.1.1406/src/textprop.c 2019-05-25 20:21:24.685950973 +0200 ---- src/textprop.c 2019-05-26 23:30:46.064098867 +0200 -*************** -*** 142,164 **** - void - f_prop_add(typval_T *argvars, typval_T *rettv UNUSED) - { -- linenr_T lnum; - linenr_T start_lnum; -- linenr_T end_lnum; - colnr_T start_col; -- colnr_T end_col; -- dict_T *dict; -- char_u *type_name; -- proptype_T *type; -- buf_T *buf = curbuf; -- int id = 0; -- char_u *newtext; -- int proplen; -- size_t textlen; -- char_u *props = NULL; -- char_u *newprops; -- textprop_T tmp_prop; -- int i; - - start_lnum = tv_get_number(&argvars[0]); - start_col = tv_get_number(&argvars[1]); ---- 142,149 ---- -*************** -*** 172,178 **** - emsg(_(e_dictreq)); - return; - } -! dict = argvars[2].vval.v_dict; - - if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL) - { ---- 157,194 ---- - emsg(_(e_dictreq)); - return; - } -! -! prop_add_common(start_lnum, start_col, argvars[2].vval.v_dict, -! curbuf, &argvars[2]); -! } -! -! /* -! * Shared between prop_add() and popup_create(). -! * "dict_arg" is the function argument of a dict containing "bufnr". -! * it is NULL for popup_create(). -! */ -! void -! prop_add_common( -! linenr_T start_lnum, -! colnr_T start_col, -! dict_T *dict, -! buf_T *default_buf, -! typval_T *dict_arg) -! { -! linenr_T lnum; -! linenr_T end_lnum; -! colnr_T end_col; -! char_u *type_name; -! proptype_T *type; -! buf_T *buf = default_buf; -! int id = 0; -! char_u *newtext; -! int proplen; -! size_t textlen; -! char_u *props = NULL; -! char_u *newprops; -! textprop_T tmp_prop; -! int i; - - if (dict == NULL || dict_find(dict, (char_u *)"type", -1) == NULL) - { -*************** -*** 221,227 **** - if (dict_find(dict, (char_u *)"id", -1) != NULL) - id = dict_get_number(dict, (char_u *)"id"); - -! if (get_bufnr_from_arg(&argvars[2], &buf) == FAIL) - return; - - type = lookup_prop_type(type_name, buf); ---- 237,243 ---- - if (dict_find(dict, (char_u *)"id", -1) != NULL) - id = dict_get_number(dict, (char_u *)"id"); - -! if (dict_arg != NULL && get_bufnr_from_arg(dict_arg, &buf) == FAIL) - return; - - type = lookup_prop_type(type_name, buf); -*************** -*** 278,289 **** - mch_memmove(newtext, buf->b_ml.ml_line_ptr, textlen); - - // Find the index where to insert the new property. -! // Since the text properties are not aligned properly when stored with the -! // text, we need to copy them as bytes before using it as a struct. - for (i = 0; i < proplen; ++i) - { - mch_memmove(&tmp_prop, props + i * sizeof(textprop_T), -! sizeof(textprop_T)); - if (tmp_prop.tp_col >= col) - break; - } ---- 294,305 ---- - mch_memmove(newtext, buf->b_ml.ml_line_ptr, textlen); - - // Find the index where to insert the new property. -! // Since the text properties are not aligned properly when stored with -! // the text, we need to copy them as bytes before using it as a struct. - for (i = 0; i < proplen; ++i) - { - mch_memmove(&tmp_prop, props + i * sizeof(textprop_T), -! sizeof(textprop_T)); - if (tmp_prop.tp_col >= col) - break; - } -*************** -*** 298,304 **** - tmp_prop.tp_flags = (lnum > start_lnum ? TP_FLAG_CONT_PREV : 0) - | (lnum < end_lnum ? TP_FLAG_CONT_NEXT : 0); - mch_memmove(newprops + i * sizeof(textprop_T), &tmp_prop, -! sizeof(textprop_T)); - - if (i < proplen) - mch_memmove(newprops + (i + 1) * sizeof(textprop_T), ---- 314,320 ---- - tmp_prop.tp_flags = (lnum > start_lnum ? TP_FLAG_CONT_PREV : 0) - | (lnum < end_lnum ? TP_FLAG_CONT_NEXT : 0); - mch_memmove(newprops + i * sizeof(textprop_T), &tmp_prop, -! sizeof(textprop_T)); - - if (i < proplen) - mch_memmove(newprops + (i + 1) * sizeof(textprop_T), -*** ../vim-8.1.1406/src/proto/textprop.pro 2019-05-19 22:53:36.504914607 +0200 ---- src/proto/textprop.pro 2019-05-26 23:30:50.644073843 +0200 -*************** -*** 1,5 **** ---- 1,6 ---- - /* textprop.c */ - void f_prop_add(typval_T *argvars, typval_T *rettv); -+ void prop_add_common(linenr_T start_lnum, colnr_T start_col, dict_T *dict, buf_T *default_buf, typval_T *dict_arg); - int get_text_props(buf_T *buf, linenr_T lnum, char_u **props, int will_change); - proptype_T *text_prop_type_by_id(buf_T *buf, int id); - void f_prop_clear(typval_T *argvars, typval_T *rettv); -*** ../vim-8.1.1406/src/popupwin.c 2019-05-26 22:17:31.736315033 +0200 ---- src/popupwin.c 2019-05-26 23:06:35.631863187 +0200 -*************** -*** 60,65 **** ---- 60,150 ---- - } - - /* -+ * Add lines to the popup from a list of strings. -+ */ -+ static void -+ add_popup_strings(buf_T *buf, list_T *l) -+ { -+ listitem_T *li; -+ linenr_T lnum = 0; -+ char_u *p; -+ -+ for (li = l->lv_first; li != NULL; li = li->li_next) -+ if (li->li_tv.v_type == VAR_STRING) -+ { -+ p = li->li_tv.vval.v_string; -+ ml_append_buf(buf, lnum++, -+ p == NULL ? (char_u *)"" : p, (colnr_T)0, TRUE); -+ } -+ } -+ -+ /* -+ * Add lines to the popup from a list of dictionaries. -+ */ -+ static void -+ add_popup_dicts(buf_T *buf, list_T *l) -+ { -+ listitem_T *li; -+ listitem_T *pli; -+ linenr_T lnum = 0; -+ char_u *p; -+ dict_T *dict; -+ -+ // first add the text lines -+ for (li = l->lv_first; li != NULL; li = li->li_next) -+ { -+ if (li->li_tv.v_type != VAR_DICT) -+ { -+ emsg(_(e_dictreq)); -+ return; -+ } -+ dict = li->li_tv.vval.v_dict; -+ p = dict == NULL ? NULL -+ : dict_get_string(dict, (char_u *)"text", FALSE); -+ ml_append_buf(buf, lnum++, -+ p == NULL ? (char_u *)"" : p, (colnr_T)0, TRUE); -+ } -+ -+ // add the text properties -+ lnum = 1; -+ for (li = l->lv_first; li != NULL; li = li->li_next, ++lnum) -+ { -+ dictitem_T *di; -+ list_T *plist; -+ -+ dict = li->li_tv.vval.v_dict; -+ di = dict_find(dict, (char_u *)"props", -1); -+ if (di != NULL) -+ { -+ if (di->di_tv.v_type != VAR_LIST) -+ { -+ emsg(_(e_listreq)); -+ return; -+ } -+ plist = di->di_tv.vval.v_list; -+ if (plist != NULL) -+ { -+ for (pli = plist->lv_first; pli != NULL; pli = pli->li_next) -+ { -+ if (pli->li_tv.v_type != VAR_DICT) -+ { -+ emsg(_(e_dictreq)); -+ return; -+ } -+ dict = pli->li_tv.vval.v_dict; -+ if (dict != NULL) -+ { -+ int col = dict_get_number(dict, (char_u *)"col"); -+ -+ prop_add_common( lnum, col, dict, buf, NULL); -+ } -+ } -+ } -+ } -+ } -+ } -+ -+ /* - * popup_create({text}, {options}) - */ - void -*************** -*** 128,154 **** - - // Add text to the buffer. - if (argvars[0].v_type == VAR_STRING) - // just a string - ml_append_buf(buf, 0, argvars[0].vval.v_string, (colnr_T)0, TRUE); -- else if (argvars[0].vval.v_list->lv_first->li_tv.v_type == VAR_STRING) -- { -- listitem_T *li; -- linenr_T lnum = 0; -- char_u *p; -- -- // list of strings -- for (li = argvars[0].vval.v_list->lv_first; li != NULL; -- li = li->li_next) -- if (li->li_tv.v_type == VAR_STRING) -- { -- p = li->li_tv.vval.v_string; -- ml_append_buf(buf, lnum++, -- p == NULL ? (char_u *)"" : p, (colnr_T)0, TRUE); -- } - } - else -! // TODO: handle a list of dictionaries -! emsg("Not implemented yet"); - - // Delete the line of the empty buffer. - curbuf = buf; ---- 213,233 ---- - - // Add text to the buffer. - if (argvars[0].v_type == VAR_STRING) -+ { - // just a string - ml_append_buf(buf, 0, argvars[0].vval.v_string, (colnr_T)0, TRUE); - } - else -! { -! list_T *l = argvars[0].vval.v_list; -! -! if (l->lv_first->li_tv.v_type == VAR_STRING) -! // list of strings -! add_popup_strings(buf, l); -! else -! // list of dictionaries -! add_popup_dicts(buf, l); -! } - - // Delete the line of the empty buffer. - curbuf = buf; -*** ../vim-8.1.1406/src/testdir/test_popupwin.vim 2019-05-26 22:17:31.740314999 +0200 ---- src/testdir/test_popupwin.vim 2019-05-26 23:17:26.152504812 +0200 -*************** -*** 14,19 **** ---- 14,21 ---- - \ "call setline(1, range(1, 100))", - \ "hi PopupColor1 ctermbg=lightblue", - \ "hi PopupColor2 ctermbg=lightcyan", -+ \ "hi Comment ctermfg=red", -+ \ "call prop_type_add('comment', {'highlight': 'Comment'})", - \ "let winid = popup_create('hello there', {'line': 3, 'col': 11, 'highlight': 'PopupColor1'})", - \ "let winid2 = popup_create(['another one', 'another two', 'another three'], {'line': 3, 'col': 25})", - \ "call setwinvar(winid2, '&wincolor', 'PopupColor2')", -*************** -*** 23,29 **** - - " Add a tabpage - call term_sendkeys(buf, ":tabnew\<CR>") -! call term_sendkeys(buf, ":call popup_create('other tab', {'line': 4, 'col': 9})\<CR>") - call VerifyScreenDump(buf, 'Test_popupwin_02', {}) - - " switch back to first tabpage ---- 25,36 ---- - - " Add a tabpage - call term_sendkeys(buf, ":tabnew\<CR>") -! call term_sendkeys(buf, ":call popup_create([" -! \ .. "{'text': 'other tab'}," -! \ .. "{'text': 'a comment line', 'props': [{" -! \ .. "'col': 3, 'length': 7, 'type': 'comment'" -! \ .. "}]}," -! \ .. "], {'line': 4, 'col': 9})\<CR>") - call VerifyScreenDump(buf, 'Test_popupwin_02', {}) - - " switch back to first tabpage -*** ../vim-8.1.1406/src/screen.c 2019-05-26 22:17:31.740314999 +0200 ---- src/screen.c 2019-05-26 23:20:55.635380744 +0200 -*************** -*** 4405,4411 **** - char_attr = hl_combine_attr(line_attr, search_attr); - # ifdef FEAT_TEXT_PROP - else if (text_prop_type != NULL) -! char_attr = hl_combine_attr(line_attr, text_prop_attr); - # endif - else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL) - || vcol < fromcol || vcol_prev < fromcol_prev ---- 4405,4414 ---- - char_attr = hl_combine_attr(line_attr, search_attr); - # ifdef FEAT_TEXT_PROP - else if (text_prop_type != NULL) -! { -! char_attr = hl_combine_attr( -! line_attr != 0 ? line_attr : win_attr, text_prop_attr); -! } - # endif - else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL) - || vcol < fromcol || vcol_prev < fromcol_prev -*************** -*** 4429,4435 **** - char_attr = hl_combine_attr( - syntax_attr, text_prop_attr); - else -! char_attr = text_prop_attr; - } - else - #endif ---- 4432,4439 ---- - char_attr = hl_combine_attr( - syntax_attr, text_prop_attr); - else -! char_attr = hl_combine_attr( -! win_attr, text_prop_attr); - } - else - #endif -*** ../vim-8.1.1406/src/testdir/dumps/Test_popupwin_02.dump 2019-05-26 14:10:59.909979018 +0200 ---- src/testdir/dumps/Test_popupwin_02.dump 2019-05-26 23:21:17.503256302 +0200 -*************** -*** 2,10 **** - > +0#0000000#ffffff0@74 - |~+0#4040ff13&| @73 - |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#4040ff13#ffffff0@46 - |~| @73 - |~| @73 - |~| @73 - |~| @73 -! |~| @73 -! |:+0#0000000&|c|a|l@1| |p|o|p|u|p|_|c|r|e|a|t|e|(|'|o|t|h|e|r| |t|a|b|'|,| |{|'|l|i|n|e|'|:| |4|,| |'|c|o|l|'|:| |9|}|)| @2|0|,|0|-|1| @8|A|l@1| ---- 2,10 ---- - > +0#0000000#ffffff0@74 - |~+0#4040ff13&| @73 - |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#4040ff13#ffffff0@46 -+ |~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @5| +0#4040ff13#ffffff0@46 - |~| @73 - |~| @73 - |~| @73 - |~| @73 -! | +0#0000000&@56|0|,|0|-|1| @8|A|l@1| -*** ../vim-8.1.1406/src/testdir/dumps/Test_popupwin_03.dump 2019-05-26 21:03:19.940073927 +0200 ---- src/testdir/dumps/Test_popupwin_03.dump 2019-05-26 23:21:59.287019422 +0200 -*************** -*** 7,10 **** - |6| @73 - |7| @73 - |8| @73 -! |:|c|a|l@1| |p|o|p|u|p|_|c|r|e|a|t|e|(|'|o|t|h|e|r| |t|a|b|'|,| |{|'|l|i|n|e|'|:| |4|,| |'|c|o| @9|1|,|1| @10|T|o|p| ---- 7,10 ---- - |6| @73 - |7| @73 - |8| @73 -! @57|1|,|1| @10|T|o|p| -*** ../vim-8.1.1406/src/testdir/dumps/Test_popupwin_04.dump 2019-05-26 14:10:59.909979018 +0200 ---- src/testdir/dumps/Test_popupwin_04.dump 2019-05-26 23:23:09.142625542 +0200 -*************** -*** 2,8 **** - |~+0#4040ff13&| @73 - |~| @73 - |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#4040ff13#ffffff0@46 -! |~| @73 - |~| @73 - |~| @73 - |~| @73 ---- 2,8 ---- - |~+0#4040ff13&| @73 - |~| @73 - |~| @6|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @10| +0#4040ff13#ffffff0@46 -! |~| @6|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @5| +0#4040ff13#ffffff0@46 - |~| @73 - |~| @73 - |~| @73 -*** ../vim-8.1.1406/runtime/doc/popup.txt 2019-05-26 22:17:31.740314999 +0200 ---- runtime/doc/popup.txt 2019-05-26 23:14:09.857529430 +0200 -*************** -*** 279,285 **** - - a string - - a list of strings - - a list of dictionaries, where each dictionary has these entries: -- {not implemented yet} - text String with the text to display. - props A list of text properties. Optional. - Each entry is a dictionary, like the third argument of ---- 279,284 ---- -*************** -*** 369,380 **** - - POPUP TEXT PROPERTIES *popup-props* - -! {not implemented yet} -! These are similar to the third argument of |prop_add()|, but not exactly the -! same, since they only apply to one line. - col starting column, counted in bytes, use one for the - first column. - length length of text in bytes; can be zero - end_col column just after the text; not used when "length" is - present; when {col} and "end_col" are equal, this is a - zero-width text property ---- 368,383 ---- - - POPUP TEXT PROPERTIES *popup-props* - -! These are similar to the third argument of |prop_add()| except: -! - "lnum" is always the current line in the list -! - "bufnr" is always the buffer of the popup -! - "col" is in the Dict instead of a separate argument -! - "transparent" is extra -! So we get: - col starting column, counted in bytes, use one for the - first column. - length length of text in bytes; can be zero -+ end_lnum line number for the end of the text - end_col column just after the text; not used when "length" is - present; when {col} and "end_col" are equal, this is a - zero-width text property -*************** -*** 385,390 **** ---- 388,394 ---- - transparent do not show these characters, show the text under it; - if there is an border character to the right or below - it will be made transparent as well -+ {not implemented yet} - - - POPUP FILTER *popup-filter* -*** ../vim-8.1.1406/src/version.c 2019-05-26 22:17:31.740314999 +0200 ---- src/version.c 2019-05-26 22:35:57.872688332 +0200 -*************** -*** 769,770 **** ---- 769,772 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 1407, - /**/ - --- -hundred-and-one symptoms of being an internet addict: -37. You start looking for hot HTML addresses in public restrooms. - - /// 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 /// |