summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/evalfunc.c1
-rw-r--r--src/proto/terminal.pro1
-rw-r--r--src/terminal.c18
-rw-r--r--src/testdir/test_terminal.vim4
-rw-r--r--src/version.c2
5 files changed, 24 insertions, 2 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 0703b44f1..b5880c58d 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -835,6 +835,7 @@ static struct fst
{"term_getcursor", 1, 1, f_term_getcursor},
{"term_getjob", 1, 1, f_term_getjob},
{"term_getline", 2, 2, f_term_getline},
+ {"term_getscrolled", 1, 1, f_term_getscrolled},
{"term_getsize", 1, 1, f_term_getsize},
{"term_getstatus", 1, 1, f_term_getstatus},
{"term_gettitle", 1, 1, f_term_gettitle},
diff --git a/src/proto/terminal.pro b/src/proto/terminal.pro
index 8d02968f5..7b28c2862 100644
--- a/src/proto/terminal.pro
+++ b/src/proto/terminal.pro
@@ -21,6 +21,7 @@ void f_term_getattr(typval_T *argvars, typval_T *rettv);
void f_term_getcursor(typval_T *argvars, typval_T *rettv);
void f_term_getjob(typval_T *argvars, typval_T *rettv);
void f_term_getline(typval_T *argvars, typval_T *rettv);
+void f_term_getscrolled(typval_T *argvars, typval_T *rettv);
void f_term_getsize(typval_T *argvars, typval_T *rettv);
void f_term_getstatus(typval_T *argvars, typval_T *rettv);
void f_term_gettitle(typval_T *argvars, typval_T *rettv);
diff --git a/src/terminal.c b/src/terminal.c
index 32f2266a7..36d5cf15d 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -40,14 +40,15 @@
* - Need an option or argument to drop the window+buffer right away, to be
* used for a shell or Vim. 'termfinish'; "close", "open" (open window when
* job finishes).
+ * patch by Yasuhiro: #1950
* - add option values to the command:
* :term <24x80> <close> vim notes.txt
+ * or use:
+ * :term ++24x80 ++close vim notes.txt
* - support different cursor shapes, colors and attributes
* - make term_getcursor() return type (none/block/bar/underline) and
* attributes (color, blink, etc.)
* - MS-Windows: no redraw for 'updatetime' #1915
- * - term_getline() and term_scrape() don't work once the job exited. Use the
- * buffer and scrollback, remembering the topline from when the job exited.
* - To set BS correctly, check get_stty(); Pass the fd of the pty.
* For the GUI fill termios with default values, perhaps like pangoterm:
* http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
@@ -2026,6 +2027,19 @@ f_term_getline(typval_T *argvars, typval_T *rettv)
}
/*
+ * "term_getscrolled(buf)" function
+ */
+ void
+f_term_getscrolled(typval_T *argvars, typval_T *rettv)
+{
+ buf_T *buf = term_get_buf(argvars);
+
+ if (buf == NULL)
+ return;
+ rettv->vval.v_number = buf->b_term->tl_scrollback_scrolled;
+}
+
+/*
* "term_getsize(buf)" function
*/
void
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 2220a164a..cd884e132 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -227,9 +227,13 @@ func Test_terminal_scroll()
sleep 100m
endif
+ let scrolled = term_getscrolled(buf)
call assert_equal('1', getline(1))
+ call assert_equal('1', term_getline(buf, 1 - scrolled))
call assert_equal('49', getline(49))
+ call assert_equal('49', term_getline(buf, 49 - scrolled))
call assert_equal('200', getline(200))
+ call assert_equal('200', term_getline(buf, 200 - scrolled))
exe buf . 'bwipe'
call delete('Xtext')
diff --git a/src/version.c b/src/version.c
index 30d76f1d5..326f33bf2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 893,
+/**/
892,
/**/
891,