changeset 23503:49d866e9b439 v8.2.2294

patch 8.2.2294: VMS: a few remaining problems Commit: https://github.com/vim/vim/commit/82c38fe508155c11a904e6111b5bfb6adde3fb9a Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jan 4 10:47:26 2021 +0100 patch 8.2.2294: VMS: a few remaining problems Problem: VMS: a few remaining problems. Solution: Add VMS specific changes. Add Lua support. (Zoltan Arpadffy)
author Bram Moolenaar <Bram@vim.org>
date Mon, 04 Jan 2021 11:00:11 +0100
parents f2f8c3848831
children 25d5c354a83e
files src/Make_vms.mms src/fileio.c src/gui_xmebw.c src/macros.h src/os_unix.h src/os_vms.c src/os_vms_conf.h src/version.c src/vim9execute.c
diffstat 9 files changed, 110 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2020 Dec 30
+# Last change:  2021 Jan 04
 #
 # This script has been tested on VMS 6.2 to 8.4 on DEC Alpha, VAX and IA64
 # with MMS and MMK
@@ -38,18 +38,18 @@ MODEL = HUGE
 # GUI or terminal mode executable.
 # Comment out if you want just the character terminal mode only.
 # GUI with Motif
-GUI = YES
+# GUI = YES
 
 # GUI with GTK
 # If you have GTK installed you might want to enable this option.
 # NOTE: you will need to properly define GTK_DIR below
-# NOTE: since Vim 7.3 GTK 2+ is used that is not ported to VMS, 
-#       therefore this option should not be used  
+# NOTE: since Vim 7.3 GTK 2+ is used that is not ported to VMS,
+#       therefore this option should not be used
 # GTK = YES
 
 # GUI/Motif with XPM
 # If you have XPM installed you might want to build Motif version with toolbar
-XPM = YES
+# XPM = YES
 
 # Comment out if you want the compiler version with :ver command.
 # NOTE: This part can make some complications if you're using some
@@ -59,7 +59,7 @@ CCVER = YES
 
 # Uncomment if want a debug version. Resulting executable is DVIM.EXE
 # Development purpose only! Normally, it should not be defined. !!!
-# DEBUG = YES 
+# DEBUG = YES
 
 # Languages support for Perl, Python, TCL etc.
 # If you don't need it really, leave them behind the comment.
@@ -68,6 +68,7 @@ CCVER = YES
 # VIM_PERL   = YES
 # VIM_PYTHON = YES
 # VIM_RUBY   = YES
+# VIM_LUA    = YES
 
 # X Input Method.  For entering special languages like chinese and
 # Japanese.
@@ -180,7 +181,7 @@ XPM_INC  = ,[.xpm.include]
 XPM_LIB  = ,OS_VMS_XPM.OPT/OPT
 .ELSE
 DEFS     = "HAVE_CONFIG_H","FEAT_GUI_MOTIF"
-XPM_INC  = 
+XPM_INC  =
 .ENDIF
 LIBS     = ,OS_VMS_MOTIF.OPT/OPT
 GUI_FLAG =
@@ -237,6 +238,15 @@ RUBY_LIB = ,OS_VMS_RUBY.OPT/OPT
 RUBY_INC =
 .ENDIF
 
+.IFDEF VIM_LUA
+# LUA related setup.
+LUA_DEF = ,"FEAT_LUA"
+LUA_SRC = if_lua.c
+LUA_OBJ = if_lua.obj
+LUA_LIB = ,OS_VMS_LUA.OPT/OPT
+LUA_INC = ,LUA$ROOT:[INCLUDE]
+.ENDIF
+
 .IFDEF VIM_XIM
 # XIM related setup.
 .IFDEF GUI
@@ -247,7 +257,7 @@ XIM_DEF = ,"FEAT_XIM"
 .IFDEF VIM_MZSCHEME
 # MZSCHEME related setup
 MZSCH_DEF = ,"FEAT_MZSCHEME"
-MZSCH_SRC = if_mzsch.c 
+MZSCH_SRC = if_mzsch.c
 MZSCH_OBJ = if_mzsch.obj
 .ENDIF
 
@@ -258,7 +268,7 @@ ICONV_DEF = ,"USE_ICONV"
 
 # XDIFF related setup.
 XDIFF_SRC = xdiffi.c,xemit.c,xprepare.c,xutils.c,xhistogram.c,xpatience.c
-XDIFF_OBJ = xdiffi.obj,xemit.obj,xprepare.obj,xutils.obj,xhistogram.obj,xpatience.obj 
+XDIFF_OBJ = xdiffi.obj,xemit.obj,xprepare.obj,xutils.obj,xhistogram.obj,xpatience.obj
 XDIFF_INC = ,[.xdiff]
 
 ######################################################################
@@ -275,7 +285,7 @@ VIMHOST = "''F$TRNLNM("SYS$NODE")'''F$TR
 .SUFFIXES : .obj .c
 
 ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
- $(TCL_DEF)$(RUBY_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
+ $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
  $(ICONV_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
  /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC) -
@@ -286,14 +296,14 @@ ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(
 # as $(GUI_INC) - replaced with $(GUI_INC_VER)
 # Otherwise should not be any other difference.
 ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
- $(TCL_DEF)$(RUBY_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) - 
+ $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
  $(ICONV_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
  /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC) -
  $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
 
 ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) $(XPM_LIB)\
-	   $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB)
+	   $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB) $(LUA_LIB)
 
 SRC = \
 	arabic.c \
@@ -408,6 +418,7 @@ SRC = \
 	$(PYTHON_SRC) \
 	$(TCL_SRC) \
 	$(RUBY_SRC) \
+	$(LUA_SRC) \
 	$(MZSCH_SRC) \
 	$(XDIFF_SRC)
 
@@ -525,11 +536,12 @@ OBJ = \
 	$(PYTHON_OBJ) \
 	$(TCL_OBJ) \
 	$(RUBY_OBJ) \
+	$(LUA_OBJ) \
 	$(MZSCH_OBJ) \
 	$(XDIFF_OBJ)
 
 # Default target is making the executable
-all : [.auto]config.h mmk_compat motif_env gtk_env perl_env python_env tcl_env ruby_env $(TARGET)
+all : [.auto]config.h mmk_compat motif_env gtk_env perl_env python_env tcl_env ruby_env lua_env $(TARGET)
 	! $@
 
 [.auto]config.h : $(CONFIG_H)
@@ -611,7 +623,7 @@ motif_env :
 .ENDIF
 .IFDEF MMSIA64
 	-@ write opt_file "[.xpm.vms.ia64]libxpm.olb/lib"
-.ENDIF 
+.ENDIF
 	-@ close opt_file
 .ELSE
 	-@ write sys$output "using DECW/Motif environment."
@@ -709,11 +721,24 @@ ruby_env :
 	-@ !
 .ENDIF
 
+.IFDEF VIM_LUA
+lua_env :
+	-@ write sys$output "using LUA environment:"
+	-@ write sys$output "    include path: ""$(LUA_INC)"""
+	-@ write sys$output "creating OS_VMS_LUA.OPT file."
+	-@ open/write opt_file OS_VMS_LUA.OPT
+	-@ write opt_file "LUA$ROOT:[LIB]LUA$SHR.EXE /share"
+	-@ close opt_file
+.ELSE
+lua_env :
+	-@ !
+.ENDIF
+
 arabic.obj : arabic.c vim.h
 arglist.obj : arglist.c vim.h [.auto]config.h feature.h os_unix.h
 autocmd.obj : autocmd.c vim.h [.auto]config.h feature.h os_unix.h
 blowfish.obj : blowfish.c vim.h [.auto]config.h feature.h os_unix.h
-blob.obj : blob.c vim.h [.auto]config.h feature.h os_unix.h	
+blob.obj : blob.c vim.h [.auto]config.h feature.h os_unix.h
 buffer.obj : buffer.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@@ -873,7 +898,7 @@ if_xcmdsrv.obj : if_xcmdsrv.c vim.h [.au
 if_mzsch.obj : if_mzsch.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro ex_cmds.h proto.h \
- errors.h globals.h if_mzsch.h 
+ errors.h globals.h if_mzsch.h
 indent.obj : indent.c vim.h [.auto]config.h feature.h os_unix.h
 insexpand.obj : insexpand.c vim.h [.auto]config.h feature.h os_unix.h
 json.obj : json.c vim.h [.auto]config.h feature.h os_unix.h   \
@@ -1167,6 +1192,8 @@ if_ruby.obj : if_ruby.c vim.h [.auto]con
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h version.h
+if_lua.obj : if_lua.c vim.h [.auto]config.h feature.h os_unix.h \
+ errors.h globals.h version.h
 beval.obj : beval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h option.h ex_cmds.h proto.h \
@@ -1186,4 +1213,4 @@ xemit.obj : [.xdiff]xemit.c [.xdiff]xinc
 xprepare.obj : [.xdiff]xprepare.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
 xutils.obj : [.xdiff]xutils.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
 xhistogram.obj : [.xdiff]xhistogram.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
-xpatience.obj : [.xdiff]xpatience.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h	
+xpatience.obj : [.xdiff]xpatience.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -16,10 +16,13 @@
 #if defined(__TANDEM)
 # include <limits.h>		// for SSIZE_MAX
 #endif
-#if defined(UNIX) && defined(FEAT_EVAL)
+#if (defined(UNIX) || defined(VMS)) && defined(FEAT_EVAL)
 # include <pwd.h>
 # include <grp.h>
 #endif
+#if defined(VMS) && defined(HAVE_XOS_R_H)
+# include <x11/xos_r.h>
+#endif
 
 // Is there any system that doesn't have access()?
 #define USE_MCH_ACCESS
@@ -338,7 +341,7 @@ readfile(
 
     if (!read_stdin && !read_buffer && !read_fifo)
     {
-#ifdef UNIX
+#if defined(UNIX) || defined(VMS)
 	/*
 	 * On Unix it is possible to read a directory, so we have to
 	 * check for it before the mch_open().
@@ -4623,11 +4626,13 @@ create_readdirex_item(char_u *path, char
 	    q = (char_u*)pw->pw_name;
 	if (dict_add_string(item, "user", q) == FAIL)
 	    goto theend;
+#  if !defined(VMS) || (defined(VMS) && defined(HAVE_XOS_R_H))
 	gr = getgrgid(st.st_gid);
 	if (gr == NULL)
 	    q = (char_u*)"";
 	else
 	    q = (char_u*)gr->gr_name;
+#  endif
 	if (dict_add_string(item, "group", q) == FAIL)
 	    goto theend;
     }
--- a/src/gui_xmebw.c
+++ b/src/gui_xmebw.c
@@ -69,6 +69,20 @@
     _XmDrawHighlight(a, b, c, d, e, f, g, h, LineSolid)
 #endif
 
+// Older VMS systems do not have xos_r.h and cannot haldle XtProcessLocking
+#if defined(VMS)
+# if defined(HAVE_XOS_R_H)
+#  define XTPROCESS_LOCK XtProcessLock()
+#  define XTPROCESS_UNLOCK XtProcessUnlock()
+# else
+#  define XTPROCESS_LOCK
+#  define XTPROCESS_UNLOCK
+# endif
+#else
+# define XTPROCESS_LOCK XtProcessLock()
+# define XTPROCESS_UNLOCK XtProcessUnlock()
+#endif
+
 /*
  * Motif internals we have to cheat around with.
  */
@@ -714,9 +728,9 @@ draw_label(XmEnhancedButtonWidget eb, XE
     {
 	XtExposeProc expose;
 
-	XtProcessLock();
+	XTPROCESS_LOCK;
 	expose = xmLabelClassRec.core_class.expose;
-	XtProcessUnlock();
+	XTPROCESS_UNLOCK;
 	(*expose)((Widget) eb, event, region);
     }
 
@@ -809,9 +823,9 @@ Enter(Widget wid,
 	_XmPrimitiveEnter((Widget) eb, event, NULL, NULL);
 	if (eb->pushbutton.armed == TRUE)
 	{
-	    XtProcessLock();
+	    XTPROCESS_LOCK;
 	    expose = XtClass(eb)->core_class.expose;
-	    XtProcessUnlock();
+	    XTPROCESS_UNLOCK;
 	    (*expose) (wid, event, (Region) NULL);
 	}
 
@@ -887,9 +901,9 @@ Leave(Widget wid,
 	{
 	    XtExposeProc expose;
 	    eb->pushbutton.armed = FALSE;
-	    XtProcessLock();
+	    XTPROCESS_LOCK;
 	    expose = XtClass(eb)->core_class.expose;
-	    XtProcessUnlock();
+	    XTPROCESS_UNLOCK;
 	    (*expose) (wid, event, (Region)NULL);
 	    draw_unhighlight(eb);
 	    draw_pixmap(eb, event, NULL);
@@ -973,9 +987,9 @@ set_size(XmEnhancedButtonWidget newtb)
     // Invoke Label's Resize procedure.
     {
 	XtWidgetProc resize;
-	XtProcessLock();
+	XTPROCESS_LOCK;
 	resize = xmLabelClassRec.core_class.resize;
-	XtProcessUnlock();
+	XTPROCESS_UNLOCK;
 
 	(* resize) ((Widget) newtb);
     }
@@ -988,9 +1002,9 @@ Initialize(Widget rq, Widget ebw, ArgLis
     XmEnhancedButtonWidget  eb = (XmEnhancedButtonWidget)ebw;
     XtWidgetProc	    resize;
 
-    XtProcessLock();
+    XTPROCESS_LOCK;
     resize = xmLabelClassRec.core_class.resize;
-    XtProcessUnlock();
+    XTPROCESS_UNLOCK;
 
     // Create a bitmap for stippling (Drawable resources are cheap).
     if (STIPPLE_BITMAP == None)
--- a/src/macros.h
+++ b/src/macros.h
@@ -161,7 +161,6 @@
 # define mch_fstat(n, p)	fstat((n), (p))
 # undef HAVE_LSTAT	        // VMS does not have lstat()
 # define mch_stat(n, p)		stat(vms_fixfilename(n), (p))
-# define mch_rmdir(n)		rmdir(vms_fixfilename(n))
 #else
 # ifndef MSWIN
 #   define mch_access(n, p)	access((n), (p))
--- a/src/os_unix.h
+++ b/src/os_unix.h
@@ -73,8 +73,9 @@
 // always use unlink() to remove files
 #ifndef PROTO
 # ifdef VMS
-#  define mch_remove(x) delete((char *)(x))
-#  define vim_mkdir(x, y) mkdir((char *)(x), y)
+#  define vim_mkdir(x, y) mkdir((char *)vms_fixfilename(x), y)
+#  define mch_rmdir(x)  delete((char *)vms_fixfilename(x))
+#  define mch_remove(x) delete((char *)vms_fixfilename(x))
 # else
 #  define vim_mkdir(x, y) mkdir((char *)(x), y)
 #  define mch_rmdir(x) rmdir((char *)(x))
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -672,9 +672,18 @@ vms_fixfilename(void *instring)
     else if (strchr(instring,'"') == NULL)	// password in the path?
     {
 	// Seems it is a regular file, let guess that it is pure Unix fspec
-	if (decc$to_vms(instring, vms_fspec_proc, 0, 0) <= 0)
-	    // No... it must be mixed
+        if ( (strchr(instring,'[') == NULL) && (strchr(instring,'<') == NULL) &&
+	     (strchr(instring,']') == NULL) && (strchr(instring,'>') == NULL) &&
+	     (strchr(instring,':') == NULL) )
+	{
+	    // It must be a truly unix fspec
+	    decc$to_vms(instring, vms_fspec_proc, 0, 0);
+	}
+	else
+	{
+	    // It is a mixed fspec
 	    vms_unix_mixed_filespec(instring, buf);
+	}
     }
     else
 	// we have a password in the path
--- a/src/os_vms_conf.h
+++ b/src/os_vms_conf.h
@@ -147,7 +147,6 @@
 #undef  HAVE_FCHDIR
 #undef  HAVE_LSTAT
 #undef  HAVE_STDINT_H
-#undef  HAVE_XOS_R_H
 
 // Hardware specific
 #ifdef  VAX
@@ -157,12 +156,12 @@
 #undef  HAVE_STRINGS_H
 #undef  HAVE_SIGSETJMP
 #undef  HAVE_ISNAN
+#undef  HAVE_XOS_R_H
 #define HAVE_NO_LONG_LONG
 #define VIM_SIZEOF_LONG 4
-#define LONG_LONG_MIN  (-2147483647-1)                                                                                                    
-#define LONG_LONG_MAX  (2147483647)                                                                                                     
+#define LONG_LONG_MIN  (-2147483647-1)
+#define LONG_LONG_MAX  (2147483647)
 #define ULONG_LONG_MAX (4294967295U)
-#undef  XTHREADS
 #else // AXP and IA64
 #define HAVE_GETTIMEOFDAY
 #define HAVE_USLEEP
@@ -170,12 +169,12 @@
 #define HAVE_STRINGS_H
 #define HAVE_SIGSETJMP
 #define HAVE_ISNAN
+#define HAVE_XOS_R_H
 #define HAVE_NO_LONG_LONG
 #define VIM_SIZEOF_LONG 8
-#define LONG_LONG_MIN  (-9223372036854775807-1)                                                                                                    
-#define LONG_LONG_MAX  (9223372036854775807)                                                                                                     
+#define LONG_LONG_MIN  (-9223372036854775807-1)
+#define LONG_LONG_MAX  (9223372036854775807)
 #define ULONG_LONG_MAX (18446744073709551615U)
-#define XTHREADS
 #endif
 
 // Compiler specific
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2294,
+/**/
     2293,
 /**/
     2292,
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3389,7 +3389,7 @@ ex_disassemble(exarg_T *eap)
 		break;
 	    case ISN_EXECCONCAT:
 		smsg("%4d EXECCONCAT %lld", current,
-					      (long long)iptr->isn_arg.number);
+					      (varnumber_T)iptr->isn_arg.number);
 		break;
 	    case ISN_ECHO:
 		{
@@ -3402,15 +3402,15 @@ ex_disassemble(exarg_T *eap)
 		break;
 	    case ISN_EXECUTE:
 		smsg("%4d EXECUTE %lld", current,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		break;
 	    case ISN_ECHOMSG:
 		smsg("%4d ECHOMSG %lld", current,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		break;
 	    case ISN_ECHOERR:
 		smsg("%4d ECHOERR %lld", current,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		break;
 	    case ISN_LOAD:
 	    case ISN_LOADOUTER:
@@ -3419,11 +3419,11 @@ ex_disassemble(exarg_T *eap)
 
 		    if (iptr->isn_arg.number < 0)
 			smsg("%4d LOAD%s arg[%lld]", current, add,
-				(long long)(iptr->isn_arg.number
+				(varnumber_T)(iptr->isn_arg.number
 							  + STACK_FRAME_SIZE));
 		    else
 			smsg("%4d LOAD%s $%lld", current, add,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		}
 		break;
 	    case ISN_LOADV:
@@ -3496,10 +3496,10 @@ ex_disassemble(exarg_T *eap)
 
 		if (iptr->isn_arg.number < 0)
 		    smsg("%4d STORE%s arg[%lld]", current, add,
-			 (long long)(iptr->isn_arg.number + STACK_FRAME_SIZE));
+			 (varnumber_T)(iptr->isn_arg.number + STACK_FRAME_SIZE));
 		else
 		    smsg("%4d STORE%s $%lld", current, add,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		}
 		break;
 	    case ISN_STOREV:
@@ -3578,7 +3578,7 @@ ex_disassemble(exarg_T *eap)
 	    // constants
 	    case ISN_PUSHNR:
 		smsg("%4d PUSHNR %lld", current,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		break;
 	    case ISN_PUSHBOOL:
 	    case ISN_PUSHSPEC:
@@ -3653,11 +3653,11 @@ ex_disassemble(exarg_T *eap)
 		break;
 	    case ISN_NEWLIST:
 		smsg("%4d NEWLIST size %lld", current,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		break;
 	    case ISN_NEWDICT:
 		smsg("%4d NEWDICT size %lld", current,
-					    (long long)(iptr->isn_arg.number));
+					    (varnumber_T)(iptr->isn_arg.number));
 		break;
 
 	    // function call
@@ -3924,10 +3924,10 @@ ex_disassemble(exarg_T *eap)
 				smsg("%4d 2BOOL (!!val)", current);
 			    break;
 	    case ISN_2STRING: smsg("%4d 2STRING stack[%lld]", current,
-					 (long long)(iptr->isn_arg.number));
+					 (varnumber_T)(iptr->isn_arg.number));
 			      break;
 	    case ISN_2STRING_ANY: smsg("%4d 2STRING_ANY stack[%lld]", current,
-					 (long long)(iptr->isn_arg.number));
+					 (varnumber_T)(iptr->isn_arg.number));
 			      break;
 	    case ISN_RANGE: smsg("%4d RANGE %s", current, iptr->isn_arg.string);
 			    break;