diff options
Diffstat (limited to 'data/vim/patches/8.1.0632')
-rw-r--r-- | data/vim/patches/8.1.0632 | 742 |
1 files changed, 742 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0632 b/data/vim/patches/8.1.0632 new file mode 100644 index 000000000..7c2c0b098 --- /dev/null +++ b/data/vim/patches/8.1.0632 @@ -0,0 +1,742 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0632 +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.0632 +Problem: Using sign group names is inefficient. +Solution: Store group names in a hash table and use a reference to them. + Also remove unnecessary use of ":exe" from the tests. (Yegappan + Lakshmanan, closes #3715) +Files: src/buffer.c, src/ex_cmds.c, src/structs.h, + src/testdir/test_signs.vim + + +*** ../vim-8.1.0631/src/buffer.c 2018-12-21 15:16:57.475579814 +0100 +--- src/buffer.c 2018-12-24 20:15:59.744514267 +0100 +*************** +*** 5865,5870 **** +--- 5865,5937 ---- + #endif + + #if defined(FEAT_SIGNS) || defined(PROTO) ++ static hashtab_T sg_table; // sign group (signgroup_T) hashtable ++ ++ /* ++ * A new sign in group 'groupname' is added. If the group is not present, ++ * create it. Otherwise reference the group. ++ */ ++ static signgroup_T * ++ sign_group_ref(char_u *groupname) ++ { ++ static int initialized = FALSE; ++ hash_T hash; ++ hashitem_T *hi; ++ signgroup_T *group; ++ ++ if (!initialized) ++ { ++ initialized = TRUE; ++ hash_init(&sg_table); ++ } ++ ++ hash = hash_hash(groupname); ++ hi = hash_lookup(&sg_table, groupname, hash); ++ if (HASHITEM_EMPTY(hi)) ++ { ++ // new group ++ group = (signgroup_T *)alloc( ++ (unsigned)(sizeof(signgroup_T) + STRLEN(groupname))); ++ if (group == NULL) ++ return NULL; ++ STRCPY(group->sg_name, groupname); ++ group->refcount = 1; ++ hash_add_item(&sg_table, hi, group->sg_name, hash); ++ } ++ else ++ { ++ // existing group ++ group = HI2SG(hi); ++ group->refcount++; ++ } ++ ++ return group; ++ } ++ ++ /* ++ * A sign in group 'groupname' is removed. If all the signs in this group are ++ * removed, then remove the group. ++ */ ++ static void ++ sign_group_unref(char_u *groupname) ++ { ++ hashitem_T *hi; ++ signgroup_T *group; ++ ++ hi = hash_find(&sg_table, groupname); ++ if (!HASHITEM_EMPTY(hi)) ++ { ++ group = HI2SG(hi); ++ group->refcount--; ++ if (group->refcount == 0) ++ { ++ // All the signs in this group are removed ++ hash_remove(&sg_table, hi); ++ vim_free(group); ++ } ++ } ++ } ++ + /* + * Insert a new sign into the signlist for buffer 'buf' between the 'prev' and + * 'next' signs. +*************** +*** 5890,5896 **** + newsign->lnum = lnum; + newsign->typenr = typenr; + if (group != NULL) +! newsign->group = vim_strsave(group); + else + newsign->group = NULL; + newsign->priority = prio; +--- 5957,5970 ---- + newsign->lnum = lnum; + newsign->typenr = typenr; + if (group != NULL) +! { +! newsign->group = sign_group_ref(group); +! if (newsign->group == NULL) +! { +! vim_free(newsign); +! return; +! } +! } + else + newsign->group = NULL; + newsign->priority = prio; +*************** +*** 5959,5965 **** + return ((group != NULL && STRCMP(group, "*") == 0) || + (group == NULL && sign->group == NULL) || + (group != NULL && sign->group != NULL && +! STRCMP(group, sign->group) == 0)); + } + + /* +--- 6033,6039 ---- + return ((group != NULL && STRCMP(group, "*") == 0) || + (group == NULL && sign->group == NULL) || + (group != NULL && sign->group != NULL && +! STRCMP(group, sign->group->sg_name) == 0)); + } + + /* +*************** +*** 5974,5980 **** + return NULL; + dict_add_number(d, "id", sign->id); + dict_add_string(d, "group", (sign->group == NULL) ? +! (char_u *)"" : sign->group); + dict_add_number(d, "lnum", sign->lnum); + dict_add_string(d, "name", sign_typenr2name(sign->typenr)); + dict_add_number(d, "priority", sign->priority); +--- 6048,6054 ---- + return NULL; + dict_add_number(d, "id", sign->id); + dict_add_string(d, "group", (sign->group == NULL) ? +! (char_u *)"" : sign->group->sg_name); + dict_add_number(d, "lnum", sign->lnum); + dict_add_string(d, "name", sign_typenr2name(sign->typenr)); + dict_add_number(d, "priority", sign->priority); +*************** +*** 5989,5995 **** + buf_addsign( + buf_T *buf, // buffer to store sign in + int id, // sign ID +! char_u *group, // sign group + int prio, // sign priority + linenr_T lnum, // line number which gets the mark + int typenr) // typenr of sign we are adding +--- 6063,6069 ---- + buf_addsign( + buf_T *buf, // buffer to store sign in + int id, // sign ID +! char_u *groupname, // sign group + int prio, // sign priority + linenr_T lnum, // line number which gets the mark + int typenr) // typenr of sign we are adding +*************** +*** 6001,6007 **** + FOR_ALL_SIGNS_IN_BUF(buf) + { + if (lnum == sign->lnum && id == sign->id && +! sign_in_group(sign, group)) + { + // Update an existing sign + sign->typenr = typenr; +--- 6075,6081 ---- + FOR_ALL_SIGNS_IN_BUF(buf) + { + if (lnum == sign->lnum && id == sign->id && +! sign_in_group(sign, groupname)) + { + // Update an existing sign + sign->typenr = typenr; +*************** +*** 6009,6022 **** + } + else if (lnum < sign->lnum) + { +! insert_sign_by_lnum_prio(buf, prev, id, group, prio, lnum, typenr); + return; + } + prev = sign; + } + +! insert_sign_by_lnum_prio(buf, prev, id, group, prio, lnum, typenr); +! + return; + } + +--- 6083,6096 ---- + } + else if (lnum < sign->lnum) + { +! insert_sign_by_lnum_prio(buf, prev, id, groupname, prio, +! lnum, typenr); + return; + } + prev = sign; + } + +! insert_sign_by_lnum_prio(buf, prev, id, groupname, prio, lnum, typenr); + return; + } + +*************** +*** 6106,6112 **** + if (next != NULL) + next->prev = sign->prev; + lnum = sign->lnum; +! vim_free(sign->group); + vim_free(sign); + // Check whether only one sign needs to be deleted + if (group == NULL || (*group != '*' && id != 0)) +--- 6180,6187 ---- + if (next != NULL) + next->prev = sign->prev; + lnum = sign->lnum; +! if (sign->group != NULL) +! sign_group_unref(sign->group->sg_name); + vim_free(sign); + // Check whether only one sign needs to be deleted + if (group == NULL || (*group != '*' && id != 0)) +*************** +*** 6269,6275 **** + *lastp = next; + if (next != NULL) + next->prev = sign->prev; +! vim_free(sign->group); + vim_free(sign); + } + else +--- 6344,6351 ---- + *lastp = next; + if (next != NULL) + next->prev = sign->prev; +! if (sign->group != NULL) +! sign_group_unref(sign->group->sg_name); + vim_free(sign); + } + else +*************** +*** 6317,6326 **** + } + FOR_ALL_SIGNS_IN_BUF(buf) + { + if (!sign_in_group(sign, sign_group)) + continue; + if (sign->group != NULL) +! vim_snprintf(group, BUFSIZ, " group=%s", sign->group); + else + group[0] = '\0'; + vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d%s name=%s " +--- 6393,6405 ---- + } + FOR_ALL_SIGNS_IN_BUF(buf) + { ++ if (got_int) ++ break; + if (!sign_in_group(sign, sign_group)) + continue; + if (sign->group != NULL) +! vim_snprintf(group, BUFSIZ, " group=%s", +! sign->group->sg_name); + else + group[0] = '\0'; + vim_snprintf(lbuf, BUFSIZ, _(" line=%ld id=%d%s name=%s " +*** ../vim-8.1.0631/src/ex_cmds.c 2018-12-21 16:04:16.320437461 +0100 +--- src/ex_cmds.c 2018-12-24 20:15:59.744514267 +0100 +*************** +*** 8180,8186 **** + { + EMSG2(_("E158: Invalid buffer name: %s"), arg); + } +! else if (id <= 0 && !(idx == SIGNCMD_UNPLACE && id == -2)) + { + if ((group == NULL) && (lnum >= 0 || sign_name != NULL)) + EMSG(_(e_invarg)); +--- 8180,8186 ---- + { + EMSG2(_("E158: Invalid buffer name: %s"), arg); + } +! else if (id <= 0 && idx == SIGNCMD_PLACE) + { + if ((group == NULL) && (lnum >= 0 || sign_name != NULL)) + EMSG(_(e_invarg)); +*** ../vim-8.1.0631/src/structs.h 2018-12-24 00:22:35.739150151 +0100 +--- src/structs.h 2018-12-24 20:15:59.744514267 +0100 +*************** +*** 733,738 **** +--- 733,749 ---- + + + #if defined(FEAT_SIGNS) || defined(PROTO) ++ // Sign group ++ typedef struct signgroup_S ++ { ++ short_u refcount; // number of signs in this group ++ char_u sg_name[1]; // sign group name ++ } signgroup_T; ++ ++ // Macros to get the sign group structure from the group name ++ #define SGN_KEY_OFF offsetof(signgroup_T, sg_name) ++ #define HI2SG(hi) ((signgroup_T *)((hi)->hi_key - SGN_KEY_OFF)) ++ + typedef struct signlist signlist_T; + + struct signlist +*************** +*** 740,746 **** + int id; /* unique identifier for each placed sign */ + linenr_T lnum; /* line number which has this sign */ + int typenr; /* typenr of sign */ +! char_u *group; /* sign group */ + int priority; /* priority for highlighting */ + signlist_T *next; /* next signlist entry */ + signlist_T *prev; /* previous entry -- for easy reordering */ +--- 751,757 ---- + int id; /* unique identifier for each placed sign */ + linenr_T lnum; /* line number which has this sign */ + int typenr; /* typenr of sign */ +! signgroup_T *group; /* sign group */ + int priority; /* priority for highlighting */ + signlist_T *next; /* next signlist entry */ + signlist_T *prev; /* previous entry -- for easy reordering */ +*** ../vim-8.1.0631/src/testdir/test_signs.vim 2018-12-21 15:16:57.483579762 +0100 +--- src/testdir/test_signs.vim 2018-12-24 20:15:59.744514267 +0100 +*************** +*** 59,65 **** + redraw + + " Check that we can't change sign. +! call assert_fails("exe 'sign place 40 name=Sign1 buffer=' . bufnr('%')", 'E885:') + + " Check placed signs + let a=execute('sign place') +--- 59,65 ---- + redraw + + " Check that we can't change sign. +! call assert_fails("sign place 40 name=Sign1 buffer=" . bufnr('%'), 'E885:') + + " Check placed signs + let a=execute('sign place') +*************** +*** 68,74 **** + " Unplace the sign and try jumping to it again should fail. + sign unplace 41 + 1 +! call assert_fails("exe 'sign jump 41 buffer=' . bufnr('%')", 'E157:') + call assert_equal('a', getline('.')) + + " Unplace sign on current line. +--- 68,74 ---- + " Unplace the sign and try jumping to it again should fail. + sign unplace 41 + 1 +! call assert_fails("sign jump 41 buffer=" . bufnr('%'), 'E157:') + call assert_equal('a', getline('.')) + + " Unplace sign on current line. +*************** +*** 132,148 **** + sign undefine Sign4 + + " Error cases +! call assert_fails("exe 'sign place abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign unplace abc name=Sign1 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign place 1abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign unplace 2abc name=Sign1 buffer=' . bufnr('%')", 'E474:') + call assert_fails("sign unplace 2 *", 'E474:') +! call assert_fails("exe 'sign place 1 line=3 name=Sign1 buffer=' . bufnr('%') a", 'E488:') +! call assert_fails("exe 'sign place name=Sign1 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign place line=10 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign unplace 2 line=10 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign unplace 2 name=Sign1 buffer=' . bufnr('%')", 'E474:') +! call assert_fails("exe 'sign place 2 line=3 buffer=' . bufnr('%')", 'E474:') + call assert_fails("sign place 2", 'E474:') + call assert_fails("sign place abc", 'E474:') + call assert_fails("sign place 5 line=3", 'E474:') +--- 132,153 ---- + sign undefine Sign4 + + " Error cases +! call assert_fails("sign place abc line=3 name=Sign1 buffer=" . +! \ bufnr('%'), 'E474:') +! call assert_fails("sign unplace abc name=Sign1 buffer=" . +! \ bufnr('%'), 'E474:') +! call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . +! \ bufnr('%'), 'E474:') +! call assert_fails("sign unplace 2abc name=Sign1 buffer=" . +! \ bufnr('%'), 'E474:') + call assert_fails("sign unplace 2 *", 'E474:') +! call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . +! \ bufnr('%') . " a", 'E488:') +! call assert_fails("sign place name=Sign1 buffer=" . bufnr('%'), 'E474:') +! call assert_fails("sign place line=10 buffer=" . bufnr('%'), 'E474:') +! call assert_fails("sign unplace 2 line=10 buffer=" . bufnr('%'), 'E474:') +! call assert_fails("sign unplace 2 name=Sign1 buffer=" . bufnr('%'), 'E474:') +! call assert_fails("sign place 2 line=3 buffer=" . bufnr('%'), 'E474:') + call assert_fails("sign place 2", 'E474:') + call assert_fails("sign place abc", 'E474:') + call assert_fails("sign place 5 line=3", 'E474:') +*************** +*** 157,163 **** + sign undefine Sign1 + sign undefine Sign2 + sign undefine Sign3 +! call assert_fails("exe 'sign place 41 line=3 name=Sign1 buffer=' . bufnr('%')", 'E155:') + endfunc + + " Undefining placed sign is not recommended. +--- 162,169 ---- + sign undefine Sign1 + sign undefine Sign2 + sign undefine Sign3 +! call assert_fails("sign place 41 line=3 name=Sign1 buffer=" . +! \ bufnr('%'), 'E155:') + endfunc + + " Undefining placed sign is not recommended. +*************** +*** 236,268 **** + call assert_fails('sign place 1 buffer=999', 'E158:') + call assert_fails('sign define Sign2 text=', 'E239:') + " Non-numeric identifier for :sign place +! call assert_fails("exe 'sign place abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:') + " Non-numeric identifier for :sign unplace +! call assert_fails("exe 'sign unplace abc name=Sign1 buffer=' . bufnr('%')", 'E474:') + " Number followed by an alphabet as sign identifier for :sign place +! call assert_fails("exe 'sign place 1abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:') + " Number followed by an alphabet as sign identifier for :sign unplace +! call assert_fails("exe 'sign unplace 2abc name=Sign1 buffer=' . bufnr('%')", 'E474:') + " Sign identifier and '*' for :sign unplace + call assert_fails("sign unplace 2 *", 'E474:') + " Trailing characters after buffer number for :sign place +! call assert_fails("exe 'sign place 1 line=3 name=Sign1 buffer=' . bufnr('%') . 'xxx'", 'E488:') + " Trailing characters after buffer number for :sign unplace +! call assert_fails("exe 'sign unplace 1 buffer=' . bufnr('%') . 'xxx'", 'E488:') +! call assert_fails("exe 'sign unplace * buffer=' . bufnr('%') . 'xxx'", 'E488:') + call assert_fails("sign unplace 1 xxx", 'E474:') + call assert_fails("sign unplace * xxx", 'E474:') + call assert_fails("sign unplace xxx", 'E474:') + " Placing a sign without line number +! call assert_fails("exe 'sign place name=Sign1 buffer=' . bufnr('%')", 'E474:') + " Placing a sign without sign name +! call assert_fails("exe 'sign place line=10 buffer=' . bufnr('%')", 'E474:') + " Unplacing a sign with line number +! call assert_fails("exe 'sign unplace 2 line=10 buffer=' . bufnr('%')", 'E474:') + " Unplacing a sign with sign name +! call assert_fails("exe 'sign unplace 2 name=Sign1 buffer=' . bufnr('%')", 'E474:') + " Placing a sign without sign name +! call assert_fails("exe 'sign place 2 line=3 buffer=' . bufnr('%')", 'E474:') + " Placing a sign with only sign identifier + call assert_fails("sign place 2", 'E474:') + " Placing a sign with only a name +--- 242,274 ---- + call assert_fails('sign place 1 buffer=999', 'E158:') + call assert_fails('sign define Sign2 text=', 'E239:') + " Non-numeric identifier for :sign place +! call assert_fails("sign place abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:') + " Non-numeric identifier for :sign unplace +! call assert_fails("sign unplace abc name=Sign1 buffer=" . bufnr('%'), 'E474:') + " Number followed by an alphabet as sign identifier for :sign place +! call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:') + " Number followed by an alphabet as sign identifier for :sign unplace +! call assert_fails("sign unplace 2abc name=Sign1 buffer=" . bufnr('%'), 'E474:') + " Sign identifier and '*' for :sign unplace + call assert_fails("sign unplace 2 *", 'E474:') + " Trailing characters after buffer number for :sign place +! call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . bufnr('%') . 'xxx', 'E488:') + " Trailing characters after buffer number for :sign unplace +! call assert_fails("sign unplace 1 buffer=" . bufnr('%') . 'xxx', 'E488:') +! call assert_fails("sign unplace * buffer=" . bufnr('%') . 'xxx', 'E488:') + call assert_fails("sign unplace 1 xxx", 'E474:') + call assert_fails("sign unplace * xxx", 'E474:') + call assert_fails("sign unplace xxx", 'E474:') + " Placing a sign without line number +! call assert_fails("sign place name=Sign1 buffer=" . bufnr('%'), 'E474:') + " Placing a sign without sign name +! call assert_fails("sign place line=10 buffer=" . bufnr('%'), 'E474:') + " Unplacing a sign with line number +! call assert_fails("sign unplace 2 line=10 buffer=" . bufnr('%'), 'E474:') + " Unplacing a sign with sign name +! call assert_fails("sign unplace 2 name=Sign1 buffer=" . bufnr('%'), 'E474:') + " Placing a sign without sign name +! call assert_fails("sign place 2 line=3 buffer=" . bufnr('%'), 'E474:') + " Placing a sign with only sign identifier + call assert_fails("sign place 2", 'E474:') + " Placing a sign with only a name +*************** +*** 574,597 **** + call sign_unplace('*') + + " Test for :sign command and groups +! exe 'sign place 5 line=10 name=sign1 file=' . fname +! exe 'sign place 5 group=g1 line=10 name=sign1 file=' . fname +! exe 'sign place 5 group=g2 line=10 name=sign1 file=' . fname + + " Test for :sign place group={group} file={fname} +! let a = execute('sign place file=' . fname) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 name=sign1 priority=10\n", a) + +! let a = execute('sign place group=g2 file=' . fname) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 group=g2 name=sign1 priority=10\n", a) + +! let a = execute('sign place group=* file=' . fname) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 group=g2 name=sign1 priority=10\n" . + \ " line=10 id=5 group=g1 name=sign1 priority=10\n" . + \ " line=10 id=5 name=sign1 priority=10\n", a) + +! let a = execute('sign place group=xyz file=' . fname) + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n", a) + + call sign_unplace('*') +--- 580,603 ---- + call sign_unplace('*') + + " Test for :sign command and groups +! sign place 5 line=10 name=sign1 file=Xsign +! sign place 5 group=g1 line=10 name=sign1 file=Xsign +! sign place 5 group=g2 line=10 name=sign1 file=Xsign + + " Test for :sign place group={group} file={fname} +! let a = execute('sign place file=Xsign') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 name=sign1 priority=10\n", a) + +! let a = execute('sign place group=g2 file=Xsign') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n line=10 id=5 group=g2 name=sign1 priority=10\n", a) + +! let a = execute('sign place group=* file=Xsign') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 group=g2 name=sign1 priority=10\n" . + \ " line=10 id=5 group=g1 name=sign1 priority=10\n" . + \ " line=10 id=5 name=sign1 priority=10\n", a) + +! let a = execute('sign place group=xyz file=Xsign') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n", a) + + call sign_unplace('*') +*************** +*** 624,645 **** + \ " line=12 id=5 group=g2 name=sign1 priority=10\n", a) + + " Test for :sign unplace +! exe 'sign unplace 5 group=g2 file=' . fname + call assert_equal([], sign_getplaced(bnum, {'group' : 'g2'})[0].signs) + + exe 'sign unplace 5 group=g1 buffer=' . bnum + call assert_equal([], sign_getplaced(bnum, {'group' : 'g1'})[0].signs) + +! exe 'sign unplace 5 group=xy file=' . fname + call assert_equal(1, len(sign_getplaced(bnum, {'group' : '*'})[0].signs)) + + " Test for removing all the signs. Place the signs again for this test +! exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname +! exe 'sign place 5 group=g2 line=12 name=sign1 file=' . fname +! exe 'sign place 6 line=20 name=sign1 file=' . fname +! exe 'sign place 6 group=g1 line=21 name=sign1 file=' . fname +! exe 'sign place 6 group=g2 line=22 name=sign1 file=' . fname +! exe 'sign unplace 5 group=* file=' . fname + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=20 id=6 name=sign1 priority=10\n" . +--- 630,651 ---- + \ " line=12 id=5 group=g2 name=sign1 priority=10\n", a) + + " Test for :sign unplace +! sign unplace 5 group=g2 file=Xsign + call assert_equal([], sign_getplaced(bnum, {'group' : 'g2'})[0].signs) + + exe 'sign unplace 5 group=g1 buffer=' . bnum + call assert_equal([], sign_getplaced(bnum, {'group' : 'g1'})[0].signs) + +! sign unplace 5 group=xy file=Xsign + call assert_equal(1, len(sign_getplaced(bnum, {'group' : '*'})[0].signs)) + + " Test for removing all the signs. Place the signs again for this test +! sign place 5 group=g1 line=11 name=sign1 file=Xsign +! sign place 5 group=g2 line=12 name=sign1 file=Xsign +! sign place 6 line=20 name=sign1 file=Xsign +! sign place 6 group=g1 line=21 name=sign1 file=Xsign +! sign place 6 group=g2 line=22 name=sign1 file=Xsign +! sign unplace 5 group=* file=Xsign + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=20 id=6 name=sign1 priority=10\n" . +*************** +*** 647,663 **** + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from the global group +! exe 'sign unplace * file=' . fname + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=21 id=6 group=g1 name=sign1 priority=10\n" . + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from a particular group +! exe 'sign place 5 line=10 name=sign1 file=' . fname +! exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname +! exe 'sign place 5 group=g2 line=12 name=sign1 file=' . fname +! exe 'sign unplace * group=g1 file=' . fname + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 name=sign1 priority=10\n" . +--- 653,669 ---- + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from the global group +! sign unplace * file=Xsign + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=21 id=6 group=g1 name=sign1 priority=10\n" . + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from a particular group +! sign place 5 line=10 name=sign1 file=Xsign +! sign place 5 group=g1 line=11 name=sign1 file=Xsign +! sign place 5 group=g2 line=12 name=sign1 file=Xsign +! sign unplace * group=g1 file=Xsign + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . + \ " line=10 id=5 name=sign1 priority=10\n" . +*************** +*** 665,690 **** + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from all the groups in a file +! exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname +! exe 'sign place 6 line=20 name=sign1 file=' . fname +! exe 'sign place 6 group=g1 line=21 name=sign1 file=' . fname +! exe 'sign unplace * group=* file=' . fname + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\n", a) + + " Remove a particular sign id in a group from all the files +! exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname + sign unplace 5 group=g1 + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\n", a) + + " Remove a particular sign id in all the groups from all the files +! exe 'sign place 5 line=10 name=sign1 file=' . fname +! exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname +! exe 'sign place 5 group=g2 line=12 name=sign1 file=' . fname +! exe 'sign place 6 line=20 name=sign1 file=' . fname +! exe 'sign place 6 group=g1 line=21 name=sign1 file=' . fname +! exe 'sign place 6 group=g2 line=22 name=sign1 file=' . fname + sign unplace 5 group=* + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . +--- 671,696 ---- + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from all the groups in a file +! sign place 5 group=g1 line=11 name=sign1 file=Xsign +! sign place 6 line=20 name=sign1 file=Xsign +! sign place 6 group=g1 line=21 name=sign1 file=Xsign +! sign unplace * group=* file=Xsign + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\n", a) + + " Remove a particular sign id in a group from all the files +! sign place 5 group=g1 line=11 name=sign1 file=Xsign + sign unplace 5 group=g1 + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\n", a) + + " Remove a particular sign id in all the groups from all the files +! sign place 5 line=10 name=sign1 file=Xsign +! sign place 5 group=g1 line=11 name=sign1 file=Xsign +! sign place 5 group=g2 line=12 name=sign1 file=Xsign +! sign place 6 line=20 name=sign1 file=Xsign +! sign place 6 group=g1 line=21 name=sign1 file=Xsign +! sign place 6 group=g2 line=22 name=sign1 file=Xsign + sign unplace 5 group=* + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" . +*************** +*** 693,706 **** + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from all the groups in all the files +! exe 'sign place 5 line=10 name=sign1 file=' . fname +! exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname + sign unplace * group=* + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\n", a) + + " Error cases +! call assert_fails("exe 'sign place 3 group= name=sign1 buffer=' . bnum", 'E474:') + + call delete("Xsign") + call sign_unplace('*') +--- 699,712 ---- + \ " line=22 id=6 group=g2 name=sign1 priority=10\n", a) + + " Remove all the signs from all the groups in all the files +! sign place 5 line=10 name=sign1 file=Xsign +! sign place 5 group=g1 line=11 name=sign1 file=Xsign + sign unplace * group=* + let a = execute('sign place group=*') + call assert_equal("\n--- Signs ---\n", a) + + " Error cases +! call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:') + + call delete("Xsign") + call sign_unplace('*') +*** ../vim-8.1.0631/src/version.c 2018-12-24 19:15:15.551304134 +0100 +--- src/version.c 2018-12-24 20:18:15.011404035 +0100 +*************** +*** 801,802 **** +--- 801,804 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 632, + /**/ + +-- +The future isn't what it used to be. + + /// 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 /// |