Permalink
Browse files

patch 8.0.0868: cannot specify the terminal size on the command line

Problem:    Cannot specify the terminal size on the command line.
Solution:   Use the address range for the terminal size. (Yasuhiro Matsumoto,
            closes #1941)
  • Loading branch information...
brammool committed Aug 5, 2017
1 parent 35422f4 commit cfcc022c54e66b317ddcc8a807977230b056a542
Showing with 59 additions and 1 deletion.
  1. +31 −1 src/terminal.c
  2. +26 −0 src/testdir/test_terminal.vim
  3. +2 −0 src/version.c
View
@@ -257,6 +257,17 @@ term_start(char_u *cmd, jobopt_T *opt)
split_ea.cmdidx = CMD_new;
split_ea.cmd = (char_u *)"new";
split_ea.arg = (char_u *)"";
if (opt->jo_term_rows > 0 && !(cmdmod.split & WSP_VERT))
{
split_ea.line2 = opt->jo_term_rows;
split_ea.addr_count = 1;
}
if (opt->jo_term_cols > 0 && (cmdmod.split & WSP_VERT))
{
split_ea.line2 = opt->jo_term_cols;
split_ea.addr_count = 1;
}
ex_splitview(&split_ea);
if (curwin == old_curwin)
{
@@ -267,6 +278,12 @@ term_start(char_u *cmd, jobopt_T *opt)
term->tl_buffer = curbuf;
curbuf->b_term = term;
/* only one size was taken care of with :new, do the other one */
if (opt->jo_term_rows > 0 && (cmdmod.split & WSP_VERT))
win_setheight(opt->jo_term_rows);
if (opt->jo_term_cols > 0 && !(cmdmod.split & WSP_VERT))
win_setwidth(opt->jo_term_cols);
/* Link the new terminal in the list of active terminals. */
term->tl_next = first_term;
first_term = term;
@@ -338,7 +355,20 @@ ex_terminal(exarg_T *eap)
jobopt_T opt;
init_job_options(&opt);
/* TODO: get options from before the command */
if (eap->addr_count == 2)
{
opt.jo_term_rows = eap->line1;
opt.jo_term_cols = eap->line2;
}
else if (eap->addr_count == 1)
{
if (cmdmod.split & WSP_VERT)
opt.jo_term_cols = eap->line2;
else
opt.jo_term_rows = eap->line2;
}
/* TODO: get more options from before the command */
term_start(eap->arg, &opt);
}
@@ -171,3 +171,29 @@ func Test_terminal_scrape()
exe buf . 'bwipe'
call delete('Xtext')
endfunc
func Test_terminal_size()
let cmd = Get_cat_cmd()
exe '5terminal ' . cmd
let size = term_getsize('')
bwipe!
call assert_equal(5, size[0])
vsplit
exe '5,33terminal ' . cmd
let size = term_getsize('')
bwipe!
call assert_equal([5, 33], size)
exe 'vertical 20terminal ' . cmd
let size = term_getsize('')
bwipe!
call assert_equal(20, size[1])
split
exe 'vertical 6,20terminal ' . cmd
let size = term_getsize('')
bwipe!
call assert_equal([6, 20], size)
endfunc
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
868,
/**/
867,
/**/

0 comments on commit cfcc022

Please sign in to comment.