diff options
Diffstat (limited to 'data/vim/patches/8.1.0087')
-rw-r--r-- | data/vim/patches/8.1.0087 | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/data/vim/patches/8.1.0087 b/data/vim/patches/8.1.0087 deleted file mode 100644 index 8f6a9c65d..000000000 --- a/data/vim/patches/8.1.0087 +++ /dev/null @@ -1,255 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0087 -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.0087 -Problem: v:shell_error is always zero when using terminal for "!cmd". -Solution: Use "exitval" of terminal-job. (Ozaki Kiichi, closes #2994) -Files: src/os_unix.c, src/os_win32.c, src/proto/terminal.pro, - src/terminal.c, src/testdir/test_terminal.vim - - -*** ../vim-8.1.0086/src/os_unix.c 2018-06-13 20:49:47.444338292 +0200 ---- src/os_unix.c 2018-06-19 19:53:43.794232600 +0200 -*************** -*** 4365,4370 **** ---- 4365,4371 ---- - char_u *tofree2 = NULL; - int retval = -1; - buf_T *buf; -+ job_T *job; - aco_save_T aco; - oparg_T oa; /* operator arguments */ - -*************** -*** 4374,4379 **** ---- 4375,4385 ---- - init_job_options(&opt); - ch_log(NULL, "starting terminal for system command '%s'", cmd); - buf = term_start(NULL, argv, &opt, TERM_START_SYSTEM); -+ if (buf == NULL) -+ goto theend; -+ -+ job = term_getjob(buf->b_term); -+ ++job->jv_refcount; - - /* Find a window to make "buf" curbuf. */ - aucmd_prepbuf(&aco, buf); -*************** -*** 4391,4399 **** - else - normal_cmd(&oa, TRUE); - } -! retval = 0; - ch_log(NULL, "system command finished"); - - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); - ---- 4397,4407 ---- - else - normal_cmd(&oa, TRUE); - } -! retval = job->jv_exitval; - ch_log(NULL, "system command finished"); - -+ job_unref(job); -+ - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); - -*** ../vim-8.1.0086/src/os_win32.c 2018-06-12 21:11:08.626548598 +0200 ---- src/os_win32.c 2018-06-19 19:53:43.798232583 +0200 -*************** -*** 4796,4801 **** ---- 4796,4802 ---- - long_u cmdlen; - int retval = -1; - buf_T *buf; -+ job_T *job; - aco_save_T aco; - oparg_T oa; /* operator arguments */ - -*************** -*** 4826,4831 **** ---- 4827,4835 ---- - if (buf == NULL) - return 255; - -+ job = term_getjob(buf->b_term); -+ ++job->jv_refcount; -+ - /* Find a window to make "buf" curbuf. */ - aucmd_prepbuf(&aco, buf); - -*************** -*** 4842,4850 **** - else - normal_cmd(&oa, TRUE); - } -! retval = 0; - ch_log(NULL, "system command finished"); - - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); - ---- 4846,4856 ---- - else - normal_cmd(&oa, TRUE); - } -! retval = job->jv_exitval; - ch_log(NULL, "system command finished"); - -+ job_unref(job); -+ - /* restore curwin/curbuf and a few other things */ - aucmd_restbuf(&aco); - -*** ../vim-8.1.0086/src/proto/terminal.pro 2018-05-17 13:52:53.000000000 +0200 ---- src/proto/terminal.pro 2018-06-19 19:53:43.798232583 +0200 -*************** -*** 55,59 **** ---- 55,60 ---- - void f_term_start(typval_T *argvars, typval_T *rettv); - void f_term_wait(typval_T *argvars, typval_T *rettv); - void term_send_eof(channel_T *ch); -+ job_T *term_getjob(term_T *term); - int terminal_enabled(void); - /* vim: set ft=c : */ -*** ../vim-8.1.0086/src/terminal.c 2018-06-18 22:15:46.255521457 +0200 ---- src/terminal.c 2018-06-19 19:53:43.798232583 +0200 -*************** -*** 5336,5341 **** ---- 5336,5347 ---- - } - } - -+ job_T * -+ term_getjob(term_T *term) -+ { -+ return term != NULL ? term->tl_job : NULL; -+ } -+ - # if defined(WIN3264) || defined(PROTO) - - /************************************** -*** ../vim-8.1.0086/src/testdir/test_terminal.vim 2018-06-12 18:04:28.038267855 +0200 ---- src/testdir/test_terminal.vim 2018-06-19 19:55:56.917638761 +0200 -*************** -*** 522,550 **** - exe buf . 'bwipe' - endfunc - -- " must be last, we can't go back from GUI to terminal -- func Test_zz_terminal_in_gui() -- if !CanRunGui() -- return -- endif -- -- " Ignore the "failed to create input context" error. -- call test_ignore_error('E285:') -- -- gui -f -- -- call assert_equal(1, winnr('$')) -- let buf = Run_shell_in_terminal({'term_finish': 'close'}) -- call Stop_shell_in_terminal(buf) -- call term_wait(buf) -- -- " closing window wipes out the terminal buffer a with finished job -- call WaitForAssert({-> assert_equal(1, winnr('$'))}) -- call assert_equal("", bufname(buf)) -- -- unlet g:job -- endfunc -- - func Test_terminal_list_args() - let buf = term_start([&shell, &shellcmdflag, 'echo "123"']) - call assert_fails(buf . 'bwipe', 'E517') ---- 522,527 ---- -*************** -*** 1546,1548 **** ---- 1523,1580 ---- - - exe buf . 'bwipe!' - endfunc -+ -+ " must be nearly the last, we can't go back from GUI to terminal -+ func Test_zz1_terminal_in_gui() -+ if !CanRunGui() -+ return -+ endif -+ -+ " Ignore the "failed to create input context" error. -+ call test_ignore_error('E285:') -+ -+ gui -f -+ -+ call assert_equal(1, winnr('$')) -+ let buf = Run_shell_in_terminal({'term_finish': 'close'}) -+ call Stop_shell_in_terminal(buf) -+ call term_wait(buf) -+ -+ " closing window wipes out the terminal buffer a with finished job -+ call WaitForAssert({-> assert_equal(1, winnr('$'))}) -+ call assert_equal("", bufname(buf)) -+ -+ unlet g:job -+ endfunc -+ -+ func Test_zz2_terminal_guioptions_bang() -+ if !has('gui_running') -+ return -+ endif -+ set guioptions+=! -+ -+ let filename = 'Xtestscript' -+ if has('win32') -+ let filename .= '.bat' -+ let prefix = '' -+ let contents = ['@echo off', 'exit %1'] -+ else -+ let filename .= '.sh' -+ let prefix = './' -+ let contents = ['#!/bin/sh', 'exit $1'] -+ endif -+ call writefile(contents, filename) -+ call setfperm(filename, 'rwxrwx---') -+ -+ " Check if v:shell_error is equal to the exit status. -+ let exitval = 0 -+ execute printf(':!%s%s %d', prefix, filename, exitval) -+ call assert_equal(exitval, v:shell_error) -+ -+ let exitval = 9 -+ execute printf(':!%s%s %d', prefix, filename, exitval) -+ call assert_equal(exitval, v:shell_error) -+ -+ set guioptions& -+ call delete(filename) -+ endfunc -*** ../vim-8.1.0086/src/version.c 2018-06-19 19:46:01.703936337 +0200 ---- src/version.c 2018-06-19 19:50:34.551011945 +0200 -*************** -*** 763,764 **** ---- 763,766 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 87, - /**/ - --- -From "know your smileys": - :-) Funny - |-) Funny Oriental - (-: Funny Australian - - /// 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 /// |