# HG changeset patch # User Bram Moolenaar # Date 1418823969 -3600 # Node ID a35752526cd050f35306bac3dc04ac4a34a9f309 # Parent 5ed01d6d262b06e0675840b69846920824e94d78 updated for version 7.4.556 Problem: Failed commands in Python interface not handled correctly. Solution: Restore window and buffer on failure. diff --git a/src/if_py_both.h b/src/if_py_both.h --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -3172,6 +3172,7 @@ set_option_value_for( if (switch_win(&save_curwin, &save_curtab, (win_T *)from, win_find_tabpage((win_T *)from), FALSE) == FAIL) { + restore_win(save_curwin, save_curtab, TRUE); if (VimTryEnd()) return -1; PyErr_SET_VIM(N_("problem while switching windows")); @@ -4032,9 +4033,13 @@ switch_to_win_for_buf( win_T *wp; tabpage_T *tp; - if (find_win_for_buf(buf, &wp, &tp) == FAIL - || switch_win(save_curwinp, save_curtabp, wp, tp, TRUE) == FAIL) + if (find_win_for_buf(buf, &wp, &tp) == FAIL) switch_buffer(save_curbufp, buf); + else if (switch_win(save_curwinp, save_curtabp, wp, tp, TRUE) == FAIL) + { + restore_win(*save_curwinp, *save_curtabp, TRUE); + switch_buffer(save_curbufp, buf); + } } static void diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 556, +/**/ 555, /**/ 554,