diff options
author | Andrej Zieger <jerdna-regeiz@users.noreply.github.com> | 2019-05-15 22:02:10 +0200 |
---|---|---|
committer | Andrej Zieger <jerdna-regeiz@users.noreply.github.com> | 2019-05-26 19:32:31 +0200 |
commit | 3ee55edd2e27dd66c3bf8c319929beb0a6426bb3 (patch) | |
tree | c84868d920f706be05c71a196449da5c7a9b3bc6 /src/nvim/ex_cmds.c | |
parent | 4f844c587c18b12ffb9253f461557a8a8da258af (diff) | |
download | rneovim-3ee55edd2e27dd66c3bf8c319929beb0a6426bb3.tar.gz rneovim-3ee55edd2e27dd66c3bf8c319929beb0a6426bb3.tar.bz2 rneovim-3ee55edd2e27dd66c3bf8c319929beb0a6426bb3.zip |
vim-patch:8.1.0644: finding next sign ID is inefficient
Problem: Finding next sign ID is inefficient.
Solution: Add next_sign_id. (Yegappan Lakshmanan, closes vim/vim#3717)
https://github.com/vim/vim/commit/6436cd83f90a0efc326798792e49e8ff96a43dce
Diffstat (limited to 'src/nvim/ex_cmds.c')
-rw-r--r-- | src/nvim/ex_cmds.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index 82b16a721e..abfa9ad2e5 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -5803,15 +5803,7 @@ int sign_place( } 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; + *sign_id = sign_group_get_next_signid(buf, sign_group); } if (lnum > 0) { @@ -6083,7 +6075,7 @@ void ex_sign(exarg_T *eap) } } else if (idx == SIGNCMD_JUMP) { // ":sign jump {id} file={fname}" - if (lnum >= 0 || sign_name != NULL) { + if (lnum >= 0 || sign_name != NULL || buf == NULL){ EMSG(_(e_invarg)); } else if ((lnum = buf_findsign(buf, id, group)) > 0) { // goto a sign ... @@ -6244,7 +6236,7 @@ static void sign_get_placed_in_buf( } tv_dict_add_list(d, S_LEN("signs"), l); - FOR_ALL_SIGNS_IN_BUF(buf) { + FOR_ALL_SIGNS_IN_BUF(buf, sign) { if (!sign_in_group(sign, sign_group)) { continue; } |