Mercurial > vim
changeset 35391:571a03ed0bb9 v9.1.0481
patch 9.1.0481: Vim9: term_getjob() throws an exception on error
Commit: https://github.com/vim/vim/commit/a78eb25db3089b864dab8a9cc6c9e5270bf09644
Author: Ernie Rael <errael@raelity.com>
Date: Thu Jun 13 17:24:54 2024 +0200
patch 9.1.0481: Vim9: term_getjob() throws an exception on error
Problem: Vim9: term_getjob() throws an exception on error
Solution: Return null_job instead, when there is no job
(Ernie Rael)
closes: #14984
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 13 Jun 2024 17:30:06 +0200 |
parents | 30b0097a8956 |
children | d22c6dc112be |
files | runtime/doc/terminal.txt src/terminal.c src/testdir/test_vim9_builtin.vim src/version.c |
diffstat | 4 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 9.1. Last change: 2024 Jun 08 +*terminal.txt* For Vim version 9.1. Last change: 2024 Jun 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -647,7 +647,8 @@ term_getcursor({buf}) *term_getcurso term_getjob({buf}) *term_getjob()* Get the Job associated with terminal window {buf}. {buf} is used as with |term_getsize()|. - Returns |v:null| when there is no job. + Returns |v:null| when there is no job. In Vim9 script, return + null_job when there is no job. Can also be used as a |method|: > GetBufnr()->term_getjob()
--- a/src/terminal.c +++ b/src/terminal.c @@ -6171,8 +6171,16 @@ f_term_getjob(typval_T *argvars, typval_ buf = term_get_buf(argvars, "term_getjob()"); if (buf == NULL) { - rettv->v_type = VAR_SPECIAL; - rettv->vval.v_number = VVAL_NULL; + if (in_vim9script()) + { + rettv->v_type = VAR_JOB; + rettv->vval.v_job = NULL; + } + else + { + rettv->v_type = VAR_SPECIAL; + rettv->vval.v_number = VVAL_NULL; + } return; }
--- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -4557,6 +4557,7 @@ enddef def Test_term_getjob() CheckRunVimInTerminal v9.CheckSourceDefAndScriptFailure(['term_getjob(0z10)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1']) + v9.CheckSourceDefAndScriptSuccess(['assert_true(term_getjob(0) == null_job)']) enddef def Test_term_getline()