summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0644
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0644')
-rw-r--r--data/vim/patches/8.1.0644520
1 files changed, 0 insertions, 520 deletions
diff --git a/data/vim/patches/8.1.0644 b/data/vim/patches/8.1.0644
deleted file mode 100644
index 0c77967c9..000000000
--- a/data/vim/patches/8.1.0644
+++ /dev/null
@@ -1,520 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0644
-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.0644
-Problem: Finding next sign ID is inefficient.
-Solution: Add next_sign_id. (Yegappan Lakshmanan, closes #3717)
-Files: runtime/doc/eval.txt, src/buffer.c, src/evalfunc.c, src/ex_cmds.c,
- src/globals.h, src/main.c, src/proto/buffer.pro, src/structs.h,
- src/testdir/test_signs.vim
-
-
-*** ../vim-8.1.0643/runtime/doc/eval.txt 2018-12-24 23:05:08.546418665 +0100
---- runtime/doc/eval.txt 2018-12-27 00:19:40.089578543 +0100
-***************
-*** 7919,7928 ****
- lnum select signs placed in this line. For the use
- of {lnum}, see |line()|.
- If {group} is '*', then signs in all the groups including the
-! global group are returned. If {group} is not supplied, then
-! only signs in the global group are returned. If no arguments
-! are supplied, then signs in the global group placed in all the
-! buffers are returned.
-
- Each list item in the returned value is a dictionary with the
- following entries:
---- 7936,7945 ----
- lnum select signs placed in this line. For the use
- of {lnum}, see |line()|.
- If {group} is '*', then signs in all the groups including the
-! global group are returned. If {group} is not supplied or is an
-! empty string, then only signs in the global group are
-! returned. If no arguments are supplied, then signs in the
-! global group placed in all the buffers are returned.
-
- Each list item in the returned value is a dictionary with the
- following entries:
-*** ../vim-8.1.0643/src/buffer.c 2018-12-24 20:23:39.440716979 +0100
---- src/buffer.c 2018-12-27 00:19:40.089578543 +0100
-***************
-*** 5866,5871 ****
---- 5866,5881 ----
-
- #if defined(FEAT_SIGNS) || defined(PROTO)
- static hashtab_T sg_table; // sign group (signgroup_T) hashtable
-+ static int next_sign_id = 1; // next sign id in the global group
-+
-+ /*
-+ * Initialize data needed for managing signs
-+ */
-+ void
-+ init_signs(void)
-+ {
-+ hash_init(&sg_table); // sign group hash table
-+ }
-
- /*
- * A new sign in group 'groupname' is added. If the group is not present,
-***************
-*** 5874,5890 ****
- 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))
---- 5884,5893 ----
-***************
-*** 5896,5901 ****
---- 5899,5905 ----
- return NULL;
- STRCPY(group->sg_name, groupname);
- group->refcount = 1;
-+ group->next_sign_id = 1;
- hash_add_item(&sg_table, hi, group->sg_name, hash);
- }
- else
-***************
-*** 5933,5938 ****
---- 5937,5985 ----
- }
-
- /*
-+ * Get the next free sign identifier in the specified group
-+ */
-+ int
-+ sign_group_get_next_signid(buf_T *buf, char_u *groupname)
-+ {
-+ int id = 1;
-+ signgroup_T *group = NULL;
-+ signlist_T *sign;
-+ hashitem_T *hi;
-+ int found = FALSE;
-+
-+ if (groupname != NULL)
-+ {
-+ hi = hash_find(&sg_table, groupname);
-+ if (HASHITEM_EMPTY(hi))
-+ return id;
-+ group = HI2SG(hi);
-+ }
-+
-+ // Search for the next usuable sign identifier
-+ while (!found)
-+ {
-+ if (group == NULL)
-+ id = next_sign_id++; // global group
-+ else
-+ id = group->next_sign_id++;
-+
-+ // Check whether this sign is already placed in the buffer
-+ found = TRUE;
-+ FOR_ALL_SIGNS_IN_BUF(buf, sign)
-+ {
-+ if (id == sign->id && sign_in_group(sign, groupname))
-+ {
-+ found = FALSE; // sign identifier is in use
-+ break;
-+ }
-+ }
-+ }
-+
-+ return id;
-+ }
-+
-+ /*
- * Insert a new sign into the signlist for buffer 'buf' between the 'prev' and
- * 'next' signs.
- */
-***************
-*** 6072,6078 ****
- signlist_T *prev; // the previous sign
-
- prev = NULL;
-! FOR_ALL_SIGNS_IN_BUF(buf)
- {
- if (lnum == sign->lnum && id == sign->id &&
- sign_in_group(sign, groupname))
---- 6119,6125 ----
- signlist_T *prev; // the previous sign
-
- prev = NULL;
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- {
- if (lnum == sign->lnum && id == sign->id &&
- sign_in_group(sign, groupname))
-***************
-*** 6107,6113 ****
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- {
- if (sign->id == markId && sign_in_group(sign, group))
- {
---- 6154,6160 ----
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- {
- if (sign->id == markId && sign_in_group(sign, group))
- {
-***************
-*** 6132,6138 ****
- {
- signlist_T *sign; /* a sign in a b_signlist */
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- if (sign->lnum == lnum
- && (type == SIGN_ANY
- # ifdef FEAT_SIGN_ICONS
---- 6179,6185 ----
- {
- signlist_T *sign; /* a sign in a b_signlist */
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- if (sign->lnum == lnum
- && (type == SIGN_ANY
- # ifdef FEAT_SIGN_ICONS
-***************
-*** 6216,6222 ****
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- if (sign->id == id && sign_in_group(sign, group))
- return sign->lnum;
-
---- 6263,6269 ----
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- if (sign->id == id && sign_in_group(sign, group))
- return sign->lnum;
-
-***************
-*** 6234,6240 ****
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- if (sign->lnum == lnum)
- return sign;
-
---- 6281,6287 ----
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- if (sign->lnum == lnum)
- return sign;
-
-***************
-*** 6252,6258 ****
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- if (sign->id == id && sign_in_group(sign, group))
- return sign;
-
---- 6299,6305 ----
- {
- signlist_T *sign; // a sign in the signlist
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- if (sign->id == id && sign_in_group(sign, group))
- return sign;
-
-***************
-*** 6288,6294 ****
- {
- signlist_T *sign; /* a sign in the signlist */
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- if (sign->lnum == lnum && sign->typenr == typenr)
- return sign->id;
-
---- 6335,6341 ----
- {
- signlist_T *sign; /* a sign in the signlist */
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- if (sign->lnum == lnum && sign->typenr == typenr)
- return sign->id;
-
-***************
-*** 6306,6312 ****
- signlist_T *sign; // a sign in the signlist
- int count = 0;
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- if (sign->lnum == lnum)
- if (sign_get_image(sign->typenr) != NULL)
- count++;
---- 6353,6359 ----
- signlist_T *sign; // a sign in the signlist
- int count = 0;
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- if (sign->lnum == lnum)
- if (sign_get_image(sign->typenr) != NULL)
- count++;
-***************
-*** 6391,6397 ****
- MSG_PUTS_ATTR(lbuf, HL_ATTR(HLF_D));
- msg_putchar('\n');
- }
-! FOR_ALL_SIGNS_IN_BUF(buf)
- {
- if (got_int)
- break;
---- 6438,6444 ----
- MSG_PUTS_ATTR(lbuf, HL_ATTR(HLF_D));
- msg_putchar('\n');
- }
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- {
- if (got_int)
- break;
-***************
-*** 6427,6433 ****
- {
- signlist_T *sign; /* a sign in a b_signlist */
-
-! FOR_ALL_SIGNS_IN_BUF(curbuf)
- {
- if (sign->lnum >= line1 && sign->lnum <= line2)
- {
---- 6474,6480 ----
- {
- signlist_T *sign; /* a sign in a b_signlist */
-
-! FOR_ALL_SIGNS_IN_BUF(curbuf, sign)
- {
- if (sign->lnum >= line1 && sign->lnum <= line2)
- {
-*** ../vim-8.1.0643/src/evalfunc.c 2018-12-24 23:35:09.119234692 +0100
---- src/evalfunc.c 2018-12-27 00:19:40.089578543 +0100
-***************
-*** 4434,4440 ****
- signlist_T *sign;
- dict_T *d;
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- {
- if ((d = sign_get_info(sign)) != NULL)
- list_append_dict(l, d);
---- 4434,4440 ----
- signlist_T *sign;
- dict_T *d;
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- {
- if ((d = sign_get_info(sign)) != NULL)
- list_append_dict(l, d);
-***************
-*** 11415,11420 ****
---- 11415,11422 ----
- group = tv_get_string_chk(&di->di_tv);
- if (group == NULL)
- return;
-+ if (*group == '\0') // empty string means global group
-+ group = NULL;
- }
- }
- }
-*** ../vim-8.1.0643/src/ex_cmds.c 2018-12-24 20:23:39.440716979 +0100
---- src/ex_cmds.c 2018-12-27 00:19:40.089578543 +0100
-***************
-*** 7871,7886 ****
- return FAIL;
- }
- if (*sign_id == 0)
-! {
-! // Allocate a new sign id
-! int id = 1;
-! signlist_T *sign;
-!
-! while ((sign = buf_getsign_with_id(buf, id, sign_group)) != NULL)
-! id++;
-!
-! *sign_id = id;
-! }
-
- if (lnum > 0)
- // ":sign place {id} line={lnum} name={name} file={fname}":
---- 7871,7877 ----
- return FAIL;
- }
- if (*sign_id == 0)
-! *sign_id = sign_group_get_next_signid(buf, sign_group);
-
- if (lnum > 0)
- // ":sign place {id} line={lnum} name={name} file={fname}":
-***************
-*** 8193,8199 ****
- else if (idx == SIGNCMD_JUMP)
- {
- /* ":sign jump {id} file={fname}" */
-! if (lnum >= 0 || sign_name != NULL)
- EMSG(_(e_invarg));
- else if ((lnum = buf_findsign(buf, id, group)) > 0)
- { /* goto a sign ... */
---- 8184,8190 ----
- else if (idx == SIGNCMD_JUMP)
- {
- /* ":sign jump {id} file={fname}" */
-! if (lnum >= 0 || sign_name != NULL || buf == NULL)
- EMSG(_(e_invarg));
- else if ((lnum = buf_findsign(buf, id, group)) > 0)
- { /* goto a sign ... */
-***************
-*** 8350,8356 ****
- return;
- dict_add_list(d, "signs", l);
-
-! FOR_ALL_SIGNS_IN_BUF(buf)
- {
- if (!sign_in_group(sign, sign_group))
- continue;
---- 8341,8347 ----
- return;
- dict_add_list(d, "signs", l);
-
-! FOR_ALL_SIGNS_IN_BUF(buf, sign)
- {
- if (!sign_in_group(sign, sign_group))
- continue;
-*** ../vim-8.1.0643/src/globals.h 2018-12-22 17:07:45.771347741 +0100
---- src/globals.h 2018-12-27 00:19:40.089578543 +0100
-***************
-*** 609,615 ****
- #define FOR_ALL_BUFFERS(buf) for (buf = firstbuf; buf != NULL; buf = buf->b_next)
-
- // Iterate through all the signs placed in a buffer
-! #define FOR_ALL_SIGNS_IN_BUF(buf) \
- for (sign = buf->b_signlist; sign != NULL; sign = sign->next)
-
- /* Flag that is set when switching off 'swapfile'. It means that all blocks
---- 609,615 ----
- #define FOR_ALL_BUFFERS(buf) for (buf = firstbuf; buf != NULL; buf = buf->b_next)
-
- // Iterate through all the signs placed in a buffer
-! #define FOR_ALL_SIGNS_IN_BUF(buf, sign) \
- for (sign = buf->b_signlist; sign != NULL; sign = sign->next)
-
- /* Flag that is set when switching off 'swapfile'. It means that all blocks
-*** ../vim-8.1.0643/src/main.c 2018-11-10 17:33:23.087518814 +0100
---- src/main.c 2018-12-27 00:19:40.093578509 +0100
-***************
-*** 1032,1037 ****
---- 1032,1041 ----
- #ifdef FEAT_EVAL
- set_lang_var(); /* set v:lang and v:ctype */
- #endif
-+
-+ #ifdef FEAT_SIGNS
-+ init_signs();
-+ #endif
- }
-
- /*
-*** ../vim-8.1.0643/src/proto/buffer.pro 2018-12-21 15:16:57.479579788 +0100
---- src/proto/buffer.pro 2018-12-27 00:19:40.093578509 +0100
-***************
-*** 75,80 ****
---- 75,82 ----
- linenr_T buf_delsign(buf_T *buf, int id, char_u *group);
- int buf_findsign(buf_T *buf, int id, char_u *group);
- #ifdef FEAT_SIGNS
-+ void init_signs(void);
-+ int sign_group_get_next_signid(buf_T *buf, char_u *groupname);
- int sign_in_group(signlist_T *sign, char_u *group);
- dict_T *sign_get_info(signlist_T *sign);
- signlist_T *buf_getsign_with_id(buf_T *buf, int id, char_u *group);
-*** ../vim-8.1.0643/src/structs.h 2018-12-26 00:25:15.547995294 +0100
---- src/structs.h 2018-12-27 00:19:40.093578509 +0100
-***************
-*** 737,742 ****
---- 737,743 ----
- typedef struct signgroup_S
- {
- short_u refcount; // number of signs in this group
-+ int next_sign_id; // next sign id for this group
- char_u sg_name[1]; // sign group name
- } signgroup_T;
-
-*** ../vim-8.1.0643/src/testdir/test_signs.vim 2018-12-24 20:23:39.440716979 +0100
---- src/testdir/test_signs.vim 2018-12-27 00:19:40.093578509 +0100
-***************
-*** 301,307 ****
- sign undefine Sign
- endfunc
-
-! " Test for VimL functions for managing signs
- func Test_sign_funcs()
- " Remove all the signs
- call sign_unplace('*')
---- 301,307 ----
- sign undefine Sign
- endfunc
-
-! " Test for Vim script functions for managing signs
- func Test_sign_funcs()
- " Remove all the signs
- call sign_unplace('*')
-***************
-*** 733,739 ****
- call assert_equal(3, sign_place(0, '', 'sign1', 'Xsign',
- \ {'lnum' : 14}))
- call sign_unplace('', {'buffer' : 'Xsign', 'id' : 2})
-! call assert_equal(2, sign_place(0, '', 'sign1', 'Xsign',
- \ {'lnum' : 12}))
-
- call assert_equal(1, sign_place(0, 'g1', 'sign1', 'Xsign',
---- 733,739 ----
- call assert_equal(3, sign_place(0, '', 'sign1', 'Xsign',
- \ {'lnum' : 14}))
- call sign_unplace('', {'buffer' : 'Xsign', 'id' : 2})
-! call assert_equal(4, sign_place(0, '', 'sign1', 'Xsign',
- \ {'lnum' : 12}))
-
- call assert_equal(1, sign_place(0, 'g1', 'sign1', 'Xsign',
-*** ../vim-8.1.0643/src/version.c 2018-12-26 23:42:05.331769359 +0100
---- src/version.c 2018-12-27 00:22:10.868312009 +0100
-***************
-*** 801,802 ****
---- 801,804 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 644,
- /**/
-
---
-Over the years, I've developed my sense of deja vu so acutely that now
-I can remember things that *have* happened before ...
-
- /// 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 ///