diff src/ex_docmd.c @ 21594:5daca8504c63 v8.2.1347

patch 8.2.1347: cannot easily get the script ID Commit: https://github.com/vim/vim/commit/909443028b57d7514ce3c71f00e9d808f2126b4f Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 1 20:45:11 2020 +0200 patch 8.2.1347: cannot easily get the script ID Problem: Cannot easily get the script ID. Solution: Support expand('<SID>').
author Bram Moolenaar <Bram@vim.org>
date Sat, 01 Aug 2020 21:00:04 +0200
parents 7d721e95dc51
children c18d00494b60
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -8302,9 +8302,11 @@ find_cmdline_var(char_u *src, int *usedl
 #define SPEC_AMATCH (SPEC_ABUF + 1)
 		    "<sflnum>",		// script file line number
 #define SPEC_SFLNUM  (SPEC_AMATCH + 1)
+		    "<SID>",		// script ID: <SNR>123_
+#define SPEC_SID  (SPEC_SFLNUM + 1)
 #ifdef FEAT_CLIENTSERVER
 		    "<client>"
-# define SPEC_CLIENT (SPEC_SFLNUM + 1)
+# define SPEC_CLIENT (SPEC_SID + 1)
 #endif
     };
 
@@ -8581,6 +8583,16 @@ eval_vars(
 		break;
 #endif
 
+	case SPEC_SID:
+		if (current_sctx.sc_sid <= 0)
+		{
+		    *errormsg = _(e_usingsid);
+		    return NULL;
+		}
+		sprintf((char *)strbuf, "<SNR>%d_", current_sctx.sc_sid);
+		result = strbuf;
+		break;
+
 #ifdef FEAT_CLIENTSERVER
 	case SPEC_CLIENT:	// Source of last submitted input
 		sprintf((char *)strbuf, PRINTF_HEX_LONG_U,