vim-patch:7.4.277

Problem:    Using ":sign unplace *" may leave the cursor in the wrong position
            (Christian Brabandt)
Solution:   Update the cursor position when removing all signs.

https://code.google.com/p/vim/source/detail?r=373204662d82e894b27ee76bc3319bc62c91f6ae
This commit is contained in:
oni-link 2014-05-31 17:45:34 +02:00 committed by Justin M. Keyes
parent 1fb20575f1
commit b09334d571
2 changed files with 15 additions and 6 deletions

View File

@ -4360,6 +4360,8 @@ void buf_addsign(
return;
}
// For an existing, placed sign "markId" change the type to "typenr".
// Returns the line number of the sign, or zero if the sign is not found.
linenr_T buf_change_sign_type(
buf_T *buf, /* buffer to store sign in */
int markId, /* sign ID */
@ -4480,6 +4482,15 @@ void buf_delete_signs(buf_T *buf)
{
signlist_T *next;
// When deleting the last sign need to redraw the windows to remove the
// sign column.
if (buf->b_signlist != NULL) {
redraw_buf_later(buf, NOT_VALID);
// TODO(oni-link): Is this call necessary if curwin is not a viewport
// for buf?
changed_cline_bef_curs();
}
while (buf->b_signlist != NULL) {
next = buf->b_signlist->next;
free(buf->b_signlist);
@ -4495,11 +4506,9 @@ void buf_delete_all_signs()
buf_T *buf; /* buffer we are checking for signs */
for (buf = firstbuf; buf != NULL; buf = buf->b_next) {
if (buf->b_signlist != NULL) {
/* Need to redraw the windows to remove the sign column. */
redraw_buf_later(buf, NOT_VALID);
buf_delete_signs(buf);
}
if (buf->b_signlist != NULL) {
buf_delete_signs(buf);
}
}
}

View File

@ -210,7 +210,7 @@ static int included_patches[] = {
//280,
//279,
//278,
//277,
277,
//276,
//275,
274,