diff --git a/src/evalfunc.c b/src/evalfunc.c
index 06d5059..6b75add 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -634,7 +634,7 @@
     {"len",		1, 1, FEARG_1,	  f_len},
     {"libcall",		3, 3, FEARG_3,	  f_libcall},
     {"libcallnr",	3, 3, FEARG_3,	  f_libcallnr},
-    {"line",		1, 1, FEARG_1,	  f_line},
+    {"line",		1, 2, FEARG_1,	  f_line},
     {"line2byte",	1, 1, FEARG_1,	  f_line2byte},
     {"lispindent",	1, 1, FEARG_1,	  f_lispindent},
     {"list2str",	1, 2, FEARG_1,	  f_list2str},
@@ -1154,14 +1154,18 @@
 {
     typval_T	rettv;
     linenr_T	lnum;
+    int		save_type;
 
     lnum = (linenr_T)tv_get_number_chk(&argvars[0], NULL);
     if (lnum == 0)  /* no valid number, try using line() */
     {
 	rettv.v_type = VAR_NUMBER;
+	save_type = argvars[1].v_type;
+	argvars[1].v_type = VAR_UNKNOWN;
 	f_line(argvars, &rettv);
 	lnum = (linenr_T)rettv.vval.v_number;
 	clear_tv(&rettv);
+	argvars[1].v_type = save_type;
     }
     return lnum;
 }
@@ -6658,16 +6662,40 @@
 }
 
 /*
- * "line(string)" function
+ * "line(string, [winid])" function
  */
     static void
 f_line(typval_T *argvars, typval_T *rettv)
 {
     linenr_T	lnum = 0;
-    pos_T	*fp;
+    pos_T	*fp = NULL;
     int		fnum;
+    int		id;
+    tabpage_T	*tp;
+    win_T	*wp;
+    win_T	*save_curwin;
+    tabpage_T	*save_curtab;
 
-    fp = var2fpos(&argvars[0], TRUE, &fnum);
+    if (argvars[1].v_type != VAR_UNKNOWN)
+    {
+	// use window specified in the second argument
+	id = (int)tv_get_number(&argvars[1]);
+	wp = win_id2wp_tp(id, &tp);
+	if (wp != NULL && tp != NULL)
+	{
+	    if (switch_win_noblock(&save_curwin, &save_curtab, wp, tp, TRUE)
+									 == OK)
+	    {
+		check_cursor();
+		fp = var2fpos(&argvars[0], TRUE, &fnum);
+	    }
+	    restore_win_noblock(save_curwin, save_curtab, TRUE);
+	}
+    }
+    else
+	// use current window
+	fp = var2fpos(&argvars[0], TRUE, &fnum);
+
     if (fp != NULL)
 	lnum = fp->lnum;
     rettv->vval.v_number = lnum;
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 8f2b5dc..8fd4da1 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -346,6 +346,10 @@
   redraw
   call assert_equal(11, popup_getoptions(winid).firstline)
   call assert_equal(11, popup_getpos(winid).firstline)
+  " check line() works with popup window
+  call assert_equal(11, line('.', winid))
+  call assert_equal(50, line('$', winid))
+  call assert_equal(0, line('$', 123456))
 
   " Normal command changes what is displayed but not "firstline"
   call win_execute(winid, "normal! \<c-y>")
diff --git a/src/version.c b/src/version.c
index 984a984..f5c9eec 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1967,
+/**/
     1966,
 /**/
     1965,
