-*eval.txt* For Vim version 8.0. Last change: 2017 Jul 30
+*eval.txt* For Vim version 8.0. Last change: 2017 Aug 01
VIM REFERENCE MANUAL by Bram Moolenaar
hit-enter prompt.
*v:servername* *servername-variable*
-v:servername The resulting registered |x11-clientserver| name if any.
+v:servername The resulting registered |client-server-name| if any.
Read-only.
term_getattr({attr}, {what} Number get the value of attribute {what}
term_getcursor({buf}) List get the cursor position of a terminal
term_getjob({buf}) Job get the job associated with a terminal
-term_getline({buf}[, {row}]) String get a line of text from a terminal
+term_getline({buf}, {row}) String get a line of text from a terminal
term_getsize({buf}) List get the size of a terminal
term_getstatus({buf}) String get the status of a terminal
term_gettitle({buf}) String get the title of a terminal
term_list() List get the list of terminal buffers
-term_scrape({buf}[, {row}]) List get row of a terminal screen
+term_scrape({buf}, {row}) List get row of a terminal screen
term_sendkeys({buf}, {keys}) none send keystrokes to a terminal
term_start({cmd}, {options}) Job open a terminal window and run a job
term_wait({buf}) Number wait for screen to be updated
term_getcursor({buf}) *term_getcursor()*
Get the cusor position of terminal {buf}. Returns a list with
three numbers: [rows, cols, visible]. "rows" and "cols" are
- zero based. "visible" is one when the cursor is visible, zero
- when it is hidden.
+ one based, the first sceen cell is row 1, column 1.
+ "visible" is one when the cursor is visible, zero when it is
+ hidden.
This is the cursor position of the terminal itself, not of the
Vim window.
Get the Job associated with terminal window {buf}.
{buf} is used as with |term_getsize()|.
-term_getline({buf} [, {row}]) *term_getline()*
+term_getline({buf}, {row}) *term_getline()*
Get a line of text from the terminal window of {buf}.
{buf} is used as with |term_getsize()|.
- The first line has {row} zero. When {row} is invalid an empty
- string is returned. When {row} is omitted, the cursor line is
- used.
+ The first line has {row} one. When {row} "." the cursor line
+ is used. When {row} is invalid an empty string is returned.
term_getsize({buf}) *term_getsize()*
Get the size of terminal {buf}. Returns a list with two
Return a list with the buffer numbers of all buffers for
terminal windows.
-term_scrape({buf} [, {row}]) *term_scrape()*
+term_scrape({buf}, {row}) *term_scrape()*
Get the contents of {row} of terminal screen of {buf}.
For {buf} see |term_getsize()|.
- The first {row} is zero. When {row} is invalid an empty list
- is returned. When {row} is omitted the cursor line is used.
+ The first line has {row} one. When {row} "." the cursor line
+ is used. When {row} is invalid an empty string is returned.
Return a List containing a Dict for each screen cell:
"chars" character(s) at the cell
files |tag-any-white|.
tcl Compiled with Tcl interface.
termguicolors Compiled with true color in terminal support.
+terminal Compiled with |terminal| support.
terminfo Compiled with terminfo instead of termcap.
termresponse Compiled with support for |t_RV| and |v:termresponse|.
textobjects Compiled with support for |text-objects|.
* that buffer, attributes come from the scrollback buffer tl_scrollback.
*
* TODO:
- * - Use "." for current line instead of optional argument.
- * - make row and cols one-based instead of zero-based in term_ functions.
* - Add StatusLineTerm highlighting
* - in bash mouse clicks are inserting characters.
* - mouse scroll: when over other window, scroll that window.
return;
l = rettv->vval.v_list;
- list_append_number(l, buf->b_term->tl_cursor_pos.row);
- list_append_number(l, buf->b_term->tl_cursor_pos.col);
+ list_append_number(l, buf->b_term->tl_cursor_pos.row + 1);
+ list_append_number(l, buf->b_term->tl_cursor_pos.col + 1);
list_append_number(l, buf->b_term->tl_cursor_visible);
}
++rettv->vval.v_job->jv_refcount;
}
+ static int
+get_row_number(typval_T *tv, term_T *term)
+{
+ if (tv->v_type == VAR_STRING
+ && tv->vval.v_string != NULL
+ && STRCMP(tv->vval.v_string, ".") == 0)
+ return term->tl_cursor_pos.row;
+ return (int)get_tv_number(tv) - 1;
+}
+
/*
* "term_getline(buf, row)" function
*/
if (buf == NULL)
return;
term = buf->b_term;
- if (argvars[1].v_type == VAR_UNKNOWN)
- row = term->tl_cursor_pos.row;
- else
- row = (int)get_tv_number(&argvars[1]);
+ row = get_row_number(&argvars[1], term);
if (term->tl_vterm == NULL)
{
screen = vterm_obtain_screen(term->tl_vterm);
l = rettv->vval.v_list;
- if (argvars[1].v_type == VAR_UNKNOWN)
- pos.row = term->tl_cursor_pos.row;
- else
- pos.row = (int)get_tv_number(&argvars[1]);
+ pos.row = get_row_number(&argvars[1], term);
for (pos.col = 0; pos.col < term->tl_cols; )
{
dict_T *dcell;