diff src/channel.c @ 16912:a5e3509b33ca v8.1.1457

patch 8.1.1457: cannot reuse a buffer when loading a screen dump commit https://github.com/vim/vim/commit/87abab92f5b42319a7b10df9974ed3ce5c9b2b9b Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jun 3 21:14:59 2019 +0200 patch 8.1.1457: cannot reuse a buffer when loading a screen dump Problem: Cannot reuse a buffer when loading a screen dump. Solution: Add the "bufnr" option.
author Bram Moolenaar <Bram@vim.org>
date Mon, 03 Jun 2019 21:30:05 +0200
parents a836d122231a
children 727f8cc87a45
line wrap: on
line diff
--- a/src/channel.c
+++ b/src/channel.c
@@ -4901,6 +4901,32 @@ get_job_options(typval_T *tv, jobopt_T *
 		opt->jo_set2 |= JO2_CURWIN;
 		opt->jo_curwin = tv_get_number(item);
 	    }
+	    else if (STRCMP(hi->hi_key, "bufnr") == 0)
+	    {
+		int nr;
+
+		if (!(supported2 & JO2_CURWIN))
+		    break;
+		opt->jo_set2 |= JO2_BUFNR;
+		nr = tv_get_number(item);
+		if (nr <= 0)
+		{
+		    semsg(_(e_invargNval), hi->hi_key, tv_get_string(item));
+		    return FAIL;
+		}
+		opt->jo_bufnr_buf = buflist_findnr(nr);
+		if (opt->jo_bufnr_buf == NULL)
+		{
+		    semsg(_(e_nobufnr), (long)nr);
+		    return FAIL;
+		}
+		if (opt->jo_bufnr_buf->b_nwindows == 0
+			|| opt->jo_bufnr_buf->b_term == NULL)
+		{
+		    semsg(_(e_invarg2), "bufnr");
+		    return FAIL;
+		}
+	    }
 	    else if (STRCMP(hi->hi_key, "hidden") == 0)
 	    {
 		if (!(supported2 & JO2_HIDDEN))