-*eval.txt* For Vim version 8.0. Last change: 2018 Mar 18
+*eval.txt* For Vim version 8.0. Last change: 2018 Mar 20
VIM REFERENCE MANUAL by Bram Moolenaar
the second file. The middle part shows the differences.
The parts are separated by a line of dashes.
- {options} are not implemented yet.
+ If the {options} argument is present, it must be a Dict with
+ these possible members:
+ "term_name" name to use for the buffer name, instead
+ of the first file name.
+ "term_rows" vertical size to use for the terminal,
+ instead of using 'termsize'
+ "term_cols" horizontal size to use for the terminal,
+ instead of using 'termsize'
+ "vertical" split the window vertically
+ "curwin" use the current window, do not split the
+ window; fails if the current buffer
+ cannot be |abandon|ed
+ "norestore" do not add the terminal window to a
+ session file
Each character in the middle part indicates a difference. If
there are multiple differences only the first in this list is
Returns the buffer number or zero when it fails.
Also see |terminal-diff|.
- {options} are not implemented yet.
+ For {options} see |term_dumpdiff()|.
*term_dumpwrite()*
term_dumpwrite({buf}, {filename} [, {options}])
vms VMS version of Vim.
vreplace Compiled with |gR| and |gr| commands.
vtp Compiled for vcon support |+vtp| (check vcon to find
- out if it works in the current console)).
+ out if it works in the current console).
wildignore Compiled with 'wildignore' option.
wildmenu Compiled with 'wildmenu' option.
win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
buf_T *old_curbuf = NULL;
int res;
buf_T *newbuf;
+ int vertical = opt->jo_vertical || (cmdmod.split & WSP_VERT);
if (check_restricted() || check_secure())
return NULL;
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))
+ if (opt->jo_term_rows > 0 && !vertical)
{
split_ea.line2 = opt->jo_term_rows;
split_ea.addr_count = 1;
}
- if (opt->jo_term_cols > 0 && (cmdmod.split & WSP_VERT))
+ if (opt->jo_term_cols > 0 && vertical)
{
split_ea.line2 = opt->jo_term_cols;
split_ea.addr_count = 1;
}
+ if (vertical)
+ cmdmod.split |= WSP_VERT;
ex_splitview(&split_ea);
if (curwin == old_curwin)
{
{
/* Only one size was taken care of with :new, do the other one. With
* "curwin" both need to be done. */
- if (opt->jo_term_rows > 0 && (opt->jo_curwin
- || (cmdmod.split & WSP_VERT)))
+ if (opt->jo_term_rows > 0 && (opt->jo_curwin || vertical))
win_setheight(opt->jo_term_rows);
- if (opt->jo_term_cols > 0 && (opt->jo_curwin
- || !(cmdmod.split & WSP_VERT)))
+ if (opt->jo_term_cols > 0 && (opt->jo_curwin || !vertical))
win_setwidth(opt->jo_term_cols);
}
char_u buf2[NUMBUFLEN];
char_u *fname1;
char_u *fname2 = NULL;
+ char_u *fname_tofree = NULL;
FILE *fd1;
FILE *fd2 = NULL;
char_u *textline = NULL;
}
init_job_options(&opt);
- /* TODO: use the {options} argument */
+ if (argvars[do_diff ? 2 : 1].v_type != VAR_UNKNOWN
+ && get_job_options(&argvars[do_diff ? 2 : 1], &opt, 0,
+ JO2_TERM_NAME + JO2_TERM_COLS + JO2_TERM_ROWS
+ + JO2_VERTICAL + JO2_CURWIN + JO2_NORESTORE) == FAIL)
+ goto theend;
- /* TODO: use the file name arguments for the buffer name */
- opt.jo_term_name = (char_u *)"dump diff";
+ if (opt.jo_term_name == NULL)
+ {
+ int len = STRLEN(fname1) + 12;
+
+ fname_tofree = alloc(len);
+ if (fname_tofree != NULL)
+ {
+ vim_snprintf((char *)fname_tofree, len, "dump diff %s", fname1);
+ opt.jo_term_name = fname_tofree;
+ }
+ }
buf = term_start(&argvars[0], NULL, &opt, TERM_START_NOJOB);
if (buf != NULL && buf->b_term != NULL)
theend:
vim_free(textline);
+ vim_free(fname_tofree);
fclose(fd1);
if (fd2 != NULL)
fclose(fd2);
+ JO2_NORESTORE + JO2_TERM_KILL) == FAIL)
return;
- if (opt.jo_vertical)
- cmdmod.split = WSP_VERT;
buf = term_start(&argvars[0], NULL, &opt, 0);
if (buf != NULL && buf->b_term != NULL)