diff src/eval.c @ 18777:3a68dc2a1bc1 v8.1.2378

patch 8.1.2378: using old C style comments Commit: https://github.com/vim/vim/commit/5d18efecfd6c45d69f55268948a22cd0465bb955 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Dec 1 21:11:22 2019 +0100 patch 8.1.2378: using old C style comments Problem: Using old C style comments. Solution: Use // comments where appropriate.
author Bram Moolenaar <Bram@vim.org>
date Sun, 01 Dec 2019 21:15:03 +0100
parents 49b78d6465e5
children 3cf9529b3a4a
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -36,19 +36,19 @@ static char *e_nowhitespace = N_("E274: 
  */
 static int current_copyID = 0;
 
-static int echo_attr = 0;   /* attributes used for ":echo" */
+static int echo_attr = 0;   // attributes used for ":echo"
 
 /*
  * Info used by a ":for" loop.
  */
 typedef struct
 {
-    int		fi_semicolon;	/* TRUE if ending in '; var]' */
-    int		fi_varcount;	/* nr of variables in the list */
-    listwatch_T	fi_lw;		/* keep an eye on the item used. */
-    list_T	*fi_list;	/* list being used */
-    int		fi_bi;		/* index of blob */
-    blob_T	*fi_blob;	/* blob being used */
+    int		fi_semicolon;	// TRUE if ending in '; var]'
+    int		fi_varcount;	// nr of variables in the list
+    listwatch_T	fi_lw;		// keep an eye on the item used.
+    list_T	*fi_list;	// list being used
+    int		fi_bi;		// index of blob
+    blob_T	*fi_blob;	// blob being used
 } forinfo_T;
 
 static int tv_op(typval_T *tv1, typval_T *tv2, char_u  *op);
@@ -174,7 +174,7 @@ eval_to_bool(
     char_u	*arg,
     int		*error,
     char_u	**nextcmd,
-    int		skip)	    /* only parse, don't execute */
+    int		skip)	    // only parse, don't execute
 {
     typval_T	tv;
     varnumber_T	retval = FALSE;
@@ -261,7 +261,7 @@ eval_expr_typval(typval_T *expr, typval_
 	s = skipwhite(s);
 	if (eval1_emsg(&s, rettv, TRUE) == FAIL)
 	    return FAIL;
-	if (*s != NUL)  /* check for trailing chars after expr */
+	if (*s != NUL)  // check for trailing chars after expr
 	{
 	    clear_tv(rettv);
 	    semsg(_(e_invexpr2), s);
@@ -300,7 +300,7 @@ eval_expr_to_bool(typval_T *expr, int *e
 eval_to_string_skip(
     char_u	*arg,
     char_u	**nextcmd,
-    int		skip)	    /* only parse, don't execute */
+    int		skip)	    // only parse, don't execute
 {
     typval_T	tv;
     char_u	*retval;
@@ -467,7 +467,7 @@ call_vim_function(
     int		ret;
     funcexe_T	funcexe;
 
-    rettv->v_type = VAR_UNKNOWN;		/* clear_tv() uses this */
+    rettv->v_type = VAR_UNKNOWN;		// clear_tv() uses this
     vim_memset(&funcexe, 0, sizeof(funcexe));
     funcexe.firstline = curwin->w_cursor.lnum;
     funcexe.lastline = curwin->w_cursor.lnum;
@@ -574,15 +574,15 @@ eval_foldexpr(char_u *arg, int *cp)
 	retval = 0;
     else
     {
-	/* If the result is a number, just return the number. */
+	// If the result is a number, just return the number.
 	if (tv.v_type == VAR_NUMBER)
 	    retval = tv.vval.v_number;
 	else if (tv.v_type != VAR_STRING || tv.vval.v_string == NULL)
 	    retval = 0;
 	else
 	{
-	    /* If the result is a string, check if there is a non-digit before
-	     * the number. */
+	    // If the result is a string, check if there is a non-digit before
+	    // the number.
 	    s = tv.vval.v_string;
 	    if (!VIM_ISDIGIT(*s) && *s != '-')
 		*cp = *s++;
@@ -625,8 +625,8 @@ get_lval(
     lval_T	*lp,
     int		unlet,
     int		skip,
-    int		flags,	    /* GLV_ values */
-    int		fne_flags)  /* flags for find_name_end() */
+    int		flags,	    // GLV_ values
+    int		fne_flags)  // flags for find_name_end()
 {
     char_u	*p;
     char_u	*expr_start, *expr_end;
@@ -641,21 +641,21 @@ get_lval(
     hashtab_T	*ht;
     int		quiet = flags & GLV_QUIET;
 
-    /* Clear everything in "lp". */
+    // Clear everything in "lp".
     vim_memset(lp, 0, sizeof(lval_T));
 
     if (skip)
     {
-	/* When skipping just find the end of the name. */
+	// When skipping just find the end of the name.
 	lp->ll_name = name;
 	return find_name_end(name, NULL, NULL, FNE_INCL_BR | fne_flags);
     }
 
-    /* Find the end of the name. */
+    // Find the end of the name.
     p = find_name_end(name, &expr_start, &expr_end, fne_flags);
     if (expr_start != NULL)
     {
-	/* Don't expand the name when we already know there is an error. */
+	// Don't expand the name when we already know there is an error.
 	if (unlet && !VIM_ISWHITE(*p) && !ends_excmd(*p)
 						    && *p != '[' && *p != '.')
 	{
@@ -666,9 +666,9 @@ get_lval(
 	lp->ll_exp_name = make_expanded_name(name, expr_start, expr_end, p);
 	if (lp->ll_exp_name == NULL)
 	{
-	    /* Report an invalid expression in braces, unless the
-	     * expression evaluation has been cancelled due to an
-	     * aborting error, an interrupt, or an exception. */
+	    // Report an invalid expression in braces, unless the
+	    // expression evaluation has been cancelled due to an
+	    // aborting error, an interrupt, or an exception.
 	    if (!aborting() && !quiet)
 	    {
 		emsg_severe = TRUE;
@@ -681,14 +681,14 @@ get_lval(
     else
 	lp->ll_name = name;
 
-    /* Without [idx] or .key we are done. */
+    // Without [idx] or .key we are done.
     if ((*p != '[' && *p != '.') || lp->ll_name == NULL)
 	return p;
 
     cc = *p;
     *p = NUL;
-    /* Only pass &ht when we would write to the variable, it prevents autoload
-     * as well. */
+    // Only pass &ht when we would write to the variable, it prevents autoload
+    // as well.
     v = find_var(lp->ll_name, (flags & GLV_READ_ONLY) ? NULL : &ht,
 						      flags & GLV_NO_AUTOLOAD);
     if (v == NULL && !quiet)
@@ -738,24 +738,24 @@ get_lval(
 	}
 	else
 	{
-	    /* Get the index [expr] or the first index [expr: ]. */
+	    // Get the index [expr] or the first index [expr: ].
 	    p = skipwhite(p + 1);
 	    if (*p == ':')
 		empty1 = TRUE;
 	    else
 	    {
 		empty1 = FALSE;
-		if (eval1(&p, &var1, TRUE) == FAIL)	/* recursive! */
+		if (eval1(&p, &var1, TRUE) == FAIL)	// recursive!
 		    return NULL;
 		if (tv_get_string_chk(&var1) == NULL)
 		{
-		    /* not a number or string */
+		    // not a number or string
 		    clear_tv(&var1);
 		    return NULL;
 		}
 	    }
 
-	    /* Optionally get the second index [ :expr]. */
+	    // Optionally get the second index [ :expr].
 	    if (*p == ':')
 	    {
 		if (lp->ll_tv->v_type == VAR_DICT)
@@ -782,14 +782,14 @@ get_lval(
 		else
 		{
 		    lp->ll_empty2 = FALSE;
-		    if (eval1(&p, &var2, TRUE) == FAIL)	/* recursive! */
+		    if (eval1(&p, &var2, TRUE) == FAIL)	// recursive!
 		    {
 			clear_tv(&var1);
 			return NULL;
 		    }
 		    if (tv_get_string_chk(&var2) == NULL)
 		    {
-			/* not a number or string */
+			// not a number or string
 			clear_tv(&var1);
 			clear_tv(&var2);
 			return NULL;
@@ -809,7 +809,7 @@ get_lval(
 		return NULL;
 	    }
 
-	    /* Skip to past ']'. */
+	    // Skip to past ']'.
 	    ++p;
 	}
 
@@ -817,8 +817,8 @@ get_lval(
 	{
 	    if (len == -1)
 	    {
-		/* "[key]": get key from "var1" */
-		key = tv_get_string_chk(&var1);	/* is number or string */
+		// "[key]": get key from "var1"
+		key = tv_get_string_chk(&var1);	// is number or string
 		if (key == NULL)
 		{
 		    clear_tv(&var1);
@@ -829,9 +829,9 @@ get_lval(
 	    lp->ll_dict = lp->ll_tv->vval.v_dict;
 	    lp->ll_di = dict_find(lp->ll_dict, key, len);
 
-	    /* When assigning to a scope dictionary check that a function and
-	     * variable name is valid (only variable name unless it is l: or
-	     * g: dictionary). Disallow overwriting a builtin function. */
+	    // When assigning to a scope dictionary check that a function and
+	    // variable name is valid (only variable name unless it is l: or
+	    // g: dictionary). Disallow overwriting a builtin function.
 	    if (rettv != NULL && lp->ll_dict->dv_scope != 0)
 	    {
 		int prevval;
@@ -843,7 +843,7 @@ get_lval(
 		    key[len] = NUL;
 		}
 		else
-		    prevval = 0; /* avoid compiler warning */
+		    prevval = 0; // avoid compiler warning
 		wrong = (lp->ll_dict->dv_scope == VAR_DEF_SCOPE
 			       && rettv->v_type == VAR_FUNC
 			       && var_check_func_name(key, lp->ll_di == NULL))
@@ -882,7 +882,7 @@ get_lval(
 		    p = NULL;
 		break;
 	    }
-	    /* existing variable, need to check if it can be changed */
+	    // existing variable, need to check if it can be changed
 	    else if ((flags & GLV_READ_ONLY) == 0
 			     && var_check_ro(lp->ll_di->di_flags, name, FALSE))
 	    {
@@ -941,7 +941,7 @@ get_lval(
 	    if (empty1)
 		lp->ll_n1 = 0;
 	    else
-		/* is number or string */
+		// is number or string
 		lp->ll_n1 = (long)tv_get_number(&var1);
 	    clear_tv(&var1);
 
@@ -973,7 +973,7 @@ get_lval(
 	    if (lp->ll_range && !lp->ll_empty2)
 	    {
 		lp->ll_n2 = (long)tv_get_number(&var2);
-						    /* is number or string */
+						    // is number or string
 		clear_tv(&var2);
 		if (lp->ll_n2 < 0)
 		{
@@ -987,7 +987,7 @@ get_lval(
 		    lp->ll_n2 = list_idx_of_item(lp->ll_list, ni);
 		}
 
-		/* Check that lp->ll_n2 isn't before lp->ll_n1. */
+		// Check that lp->ll_n2 isn't before lp->ll_n1.
 		if (lp->ll_n1 < 0)
 		    lp->ll_n1 = list_idx_of_item(lp->ll_list, lp->ll_li);
 		if (lp->ll_n2 < lp->ll_n1)
@@ -1164,7 +1164,7 @@ set_var_lval(
 		break;
 	    if (lp->ll_li->li_next == NULL)
 	    {
-		/* Need to add an empty item. */
+		// Need to add an empty item.
 		if (list_append_number(lp->ll_list, 0) == FAIL)
 		{
 		    ri = NULL;
@@ -1199,7 +1199,7 @@ set_var_lval(
 		return;
 	    }
 
-	    /* Need to add an item to the Dictionary. */
+	    // Need to add an item to the Dictionary.
 	    di = dictitem_alloc(lp->ll_newkey);
 	    if (di == NULL)
 		return;
@@ -1244,7 +1244,7 @@ tv_op(typval_T *tv1, typval_T *tv2, char
     char_u	numbuf[NUMBUFLEN];
     char_u	*s;
 
-    /* Can't do anything with a Funcref, Dict, v:true on the right. */
+    // Can't do anything with a Funcref, Dict, v:true on the right.
     if (tv2->v_type != VAR_FUNC && tv2->v_type != VAR_DICT
 						&& tv2->v_type != VAR_SPECIAL)
     {
@@ -1386,7 +1386,7 @@ eval_for_line(
     typval_T	tv;
     list_T	*l;
 
-    *errp = TRUE;	/* default: there is an error */
+    *errp = TRUE;	// default: there is an error
 
     fi = ALLOC_CLEAR_ONE(forinfo_T);
     if (fi == NULL)
@@ -1526,7 +1526,7 @@ set_context_for_expression(
 	xp->xp_context = EXPAND_USER_VARS;
 	if (vim_strpbrk(arg, (char_u *)"\"'+-*/%.=!?~|&$([<>,#") == NULL)
 	{
-	    /* ":let var1 var2 ...": find last space. */
+	    // ":let var1 var2 ...": find last space.
 	    for (p = arg + STRLEN(arg); p >= arg; )
 	    {
 		xp->xp_pattern = p;
@@ -1563,7 +1563,7 @@ set_context_for_expression(
 	}
 	else if (c == '$')
 	{
-	    /* environment variable */
+	    // environment variable
 	    xp->xp_context = EXPAND_ENV_VARS;
 	}
 	else if (c == '=')
@@ -1574,28 +1574,28 @@ set_context_for_expression(
 	else if (c == '#'
 		&& xp->xp_context == EXPAND_EXPRESSION)
 	{
-	    /* Autoload function/variable contains '#'. */
+	    // Autoload function/variable contains '#'.
 	    break;
 	}
 	else if ((c == '<' || c == '#')
 		&& xp->xp_context == EXPAND_FUNCTIONS
 		&& vim_strchr(xp->xp_pattern, '(') == NULL)
 	{
-	    /* Function name can start with "<SNR>" and contain '#'. */
+	    // Function name can start with "<SNR>" and contain '#'.
 	    break;
 	}
 	else if (cmdidx != CMD_let || got_eq)
 	{
-	    if (c == '"')	    /* string */
+	    if (c == '"')	    // string
 	    {
 		while ((c = *++xp->xp_pattern) != NUL && c != '"')
 		    if (c == '\\' && xp->xp_pattern[1] != NUL)
 			++xp->xp_pattern;
 		xp->xp_context = EXPAND_NOTHING;
 	    }
-	    else if (c == '\'')	    /* literal string */
+	    else if (c == '\'')	    // literal string
 	    {
-		/* Trick: '' is like stopping and starting a literal string. */
+		// Trick: '' is like stopping and starting a literal string.
 		while ((c = *++xp->xp_pattern) != NUL && c != '\'')
 		    /* skip */ ;
 		xp->xp_context = EXPAND_NOTHING;
@@ -1614,8 +1614,8 @@ set_context_for_expression(
 		xp->xp_context = EXPAND_EXPRESSION;
 	}
 	else
-	    /* Doesn't look like something valid, expand as an expression
-	     * anyway. */
+	    // Doesn't look like something valid, expand as an expression
+	    // anyway.
 	    xp->xp_context = EXPAND_EXPRESSION;
 	arg = xp->xp_pattern;
 	if (*arg != NUL)
@@ -1636,7 +1636,7 @@ pattern_match(char_u *pat, char_u *text,
     char_u	*save_cpo;
     regmatch_T	regmatch;
 
-    /* avoid 'l' flag in 'cpoptions' */
+    // avoid 'l' flag in 'cpoptions'
     save_cpo = p_cpo;
     p_cpo = (char_u *)"";
     regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING);
@@ -1672,12 +1672,12 @@ eval_func(
     if (!evaluate)
 	check_vars(s, len);
 
-    /* If "s" is the name of a variable of type VAR_FUNC
-     * use its contents. */
+    // If "s" is the name of a variable of type VAR_FUNC
+    // use its contents.
     s = deref_func_name(s, &len, &partial, !evaluate);
 
-    /* Need to make a copy, in case evaluating the arguments makes
-     * the name invalid. */
+    // Need to make a copy, in case evaluating the arguments makes
+    // the name invalid.
     s = vim_strsave(s);
     if (s == NULL)
 	ret = FAIL;
@@ -1696,18 +1696,18 @@ eval_func(
     }
     vim_free(s);
 
-    /* If evaluate is FALSE rettv->v_type was not set in
-     * get_func_tv, but it's needed in handle_subscript() to parse
-     * what follows. So set it here. */
+    // If evaluate is FALSE rettv->v_type was not set in
+    // get_func_tv, but it's needed in handle_subscript() to parse
+    // what follows. So set it here.
     if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(')
     {
 	rettv->vval.v_string = NULL;
 	rettv->v_type = VAR_FUNC;
     }
 
-    /* Stop the expression evaluation when immediately
-     * aborting on error, or when an interrupt occurred or
-     * an exception was thrown but not caught. */
+    // Stop the expression evaluation when immediately
+    // aborting on error, or when an interrupt occurred or
+    // an exception was thrown but not caught.
     if (evaluate && aborting())
     {
 	if (ret == OK)
@@ -1806,7 +1806,7 @@ eval1(char_u **arg, typval_T *rettv, int
 	 * Get the second variable.
 	 */
 	*arg = skipwhite(*arg + 1);
-	if (eval1(arg, rettv, evaluate && result) == FAIL) /* recursive! */
+	if (eval1(arg, rettv, evaluate && result) == FAIL) // recursive!
 	    return FAIL;
 
 	/*
@@ -1824,7 +1824,7 @@ eval1(char_u **arg, typval_T *rettv, int
 	 * Get the third variable.
 	 */
 	*arg = skipwhite(*arg + 1);
-	if (eval1(arg, &var2, evaluate && !result) == FAIL) /* recursive! */
+	if (eval1(arg, &var2, evaluate && !result) == FAIL) // recursive!
 	{
 	    if (evaluate && result)
 		clear_tv(rettv);
@@ -1998,7 +1998,7 @@ eval4(char_u **arg, typval_T *rettv, int
     char_u	*p;
     int		i;
     exptype_T	type = TYPE_UNKNOWN;
-    int		type_is = FALSE;    /* TRUE for "is" and "isnot" */
+    int		type_is = FALSE;    // TRUE for "is" and "isnot"
     int		len = 2;
     int		ic;
 
@@ -2056,19 +2056,19 @@ eval4(char_u **arg, typval_T *rettv, int
      */
     if (type != TYPE_UNKNOWN)
     {
-	/* extra question mark appended: ignore case */
+	// extra question mark appended: ignore case
 	if (p[len] == '?')
 	{
 	    ic = TRUE;
 	    ++len;
 	}
-	/* extra '#' appended: match case */
+	// extra '#' appended: match case
 	else if (p[len] == '#')
 	{
 	    ic = FALSE;
 	    ++len;
 	}
-	/* nothing appended: use 'ignorecase' */
+	// nothing appended: use 'ignorecase'
 	else
 	    ic = p_ic;
 
@@ -2145,13 +2145,13 @@ eval5(char_u **arg, typval_T *rettv, int
 #endif
 		)
 	{
-	    /* For "list + ...", an illegal use of the first operand as
-	     * a number cannot be determined before evaluating the 2nd
-	     * operand: if this is also a list, all is ok.
-	     * For "something . ...", "something - ..." or "non-list + ...",
-	     * we know that the first operand needs to be a string or number
-	     * without evaluating the 2nd operand.  So check before to avoid
-	     * side effects after an error. */
+	    // For "list + ...", an illegal use of the first operand as
+	    // a number cannot be determined before evaluating the 2nd
+	    // operand: if this is also a list, all is ok.
+	    // For "something . ...", "something - ..." or "non-list + ...",
+	    // we know that the first operand needs to be a string or number
+	    // without evaluating the 2nd operand.  So check before to avoid
+	    // side effects after an error.
 	    if (evaluate && tv_get_string_chk(rettv) == NULL)
 	    {
 		clear_tv(rettv);
@@ -2178,9 +2178,9 @@ eval5(char_u **arg, typval_T *rettv, int
 	     */
 	    if (op == '.')
 	    {
-		s1 = tv_get_string_buf(rettv, buf1);	/* already checked */
+		s1 = tv_get_string_buf(rettv, buf1);	// already checked
 		s2 = tv_get_string_buf_chk(&var2, buf2);
-		if (s2 == NULL)		/* type error ? */
+		if (s2 == NULL)		// type error ?
 		{
 		    clear_tv(rettv);
 		    clear_tv(&var2);
@@ -2213,7 +2213,7 @@ eval5(char_u **arg, typval_T *rettv, int
 	    else if (op == '+' && rettv->v_type == VAR_LIST
 						   && var2.v_type == VAR_LIST)
 	    {
-		/* concatenate Lists */
+		// concatenate Lists
 		if (list_concat(rettv->vval.v_list, var2.vval.v_list,
 							       &var3) == FAIL)
 		{
@@ -2240,9 +2240,9 @@ eval5(char_u **arg, typval_T *rettv, int
 		    n1 = tv_get_number_chk(rettv, &error);
 		    if (error)
 		    {
-			/* This can only happen for "list + non-list".  For
-			 * "non-list + ..." or "something - ...", we returned
-			 * before evaluating the 2nd operand. */
+			// This can only happen for "list + non-list".  For
+			// "non-list + ..." or "something - ...", we returned
+			// before evaluating the 2nd operand.
 			clear_tv(rettv);
 			return FAIL;
 		    }
@@ -2275,7 +2275,7 @@ eval5(char_u **arg, typval_T *rettv, int
 		clear_tv(rettv);
 
 #ifdef FEAT_FLOAT
-		/* If there is a float on either side the result is a float. */
+		// If there is a float on either side the result is a float.
 		if (rettv->v_type == VAR_FLOAT || var2.v_type == VAR_FLOAT)
 		{
 		    if (op == '+')
@@ -2318,7 +2318,7 @@ eval6(
     char_u	**arg,
     typval_T	*rettv,
     int		evaluate,
-    int		want_string)  /* after "." operator */
+    int		want_string)  // after "." operator
 {
     typval_T	var2;
     int		op;
@@ -2408,11 +2408,11 @@ eval6(
 		else if (op == '/')
 		{
 # ifdef VMS
-		    /* VMS crashes on divide by zero, work around it */
+		    // VMS crashes on divide by zero, work around it
 		    if (f2 == 0.0)
 		    {
 			if (f1 == 0)
-			    f1 = -1 * __F_FLT_MAX - 1L;   /* similar to NaN */
+			    f1 = -1 * __F_FLT_MAX - 1L;   // similar to NaN
 			else if (f1 < 0)
 			    f1 = -1 * __F_FLT_MAX;
 			else
@@ -2421,8 +2421,8 @@ eval6(
 		    else
 			f1 = f1 / f2;
 # else
-		    /* We rely on the floating point library to handle divide
-		     * by zero to result in "inf" and not a crash. */
+		    // We rely on the floating point library to handle divide
+		    // by zero to result in "inf" and not a crash.
 		    f1 = f1 / f2;
 # endif
 		}
@@ -2487,7 +2487,7 @@ eval7(
     char_u	**arg,
     typval_T	*rettv,
     int		evaluate,
-    int		want_string UNUSED)	/* after "." operator */
+    int		want_string UNUSED)	// after "." operator
 {
     varnumber_T	n;
     int		len;
@@ -2542,13 +2542,13 @@ eval7(
 		char_u *p;
 		int    get_float = FALSE;
 
-		/* We accept a float when the format matches
-		 * "[0-9]\+\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?".  This is very
-		 * strict to avoid backwards compatibility problems.
-		 * With script version 2 and later the leading digit can be
-		 * omitted.
-		 * Don't look for a float after the "." operator, so that
-		 * ":let vers = 1.2.3" doesn't fail. */
+		// We accept a float when the format matches
+		// "[0-9]\+\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?".  This is very
+		// strict to avoid backwards compatibility problems.
+		// With script version 2 and later the leading digit can be
+		// omitted.
+		// Don't look for a float after the "." operator, so that
+		// ":let vers = 1.2.3" doesn't fail.
 		if (**arg == '.')
 		    p = *arg;
 		else
@@ -2705,7 +2705,7 @@ eval7(
      * nested expression: (expression).
      */
     case '(':	*arg = skipwhite(*arg + 1);
-		ret = eval1(arg, rettv, evaluate);	/* recursive! */
+		ret = eval1(arg, rettv, evaluate);	// recursive!
 		if (**arg == ')')
 		    ++*arg;
 		else if (ret == OK)
@@ -2735,7 +2735,7 @@ eval7(
 	    ret = FAIL;
 	else
 	{
-	    if (**arg == '(')		/* recursive! */
+	    if (**arg == '(')		// recursive!
 		ret = eval_func(arg, s, len, rettv, evaluate, NULL);
 	    else if (evaluate)
 		ret = get_var_tv(s, len, rettv, NULL, TRUE, FALSE);
@@ -2750,8 +2750,8 @@ eval7(
 
     *arg = skipwhite(*arg);
 
-    /* Handle following '[', '(' and '.' for expr[expr], expr.name,
-     * expr(expr), expr->name(expr) */
+    // Handle following '[', '(' and '.' for expr[expr], expr.name,
+    // expr(expr), expr->name(expr)
     if (ret == OK)
 	ret = handle_subscript(arg, rettv, evaluate, TRUE,
 						    start_leader, &end_leader);
@@ -2853,7 +2853,7 @@ call_func_rettv(
 	functv = *rettv;
 	rettv->v_type = VAR_UNKNOWN;
 
-	/* Invoke the function.  Recursive! */
+	// Invoke the function.  Recursive!
 	if (functv.v_type == VAR_PARTIAL)
 	{
 	    pt = functv.vval.v_partial;
@@ -2874,8 +2874,8 @@ call_func_rettv(
     funcexe.basetv = basetv;
     ret = get_func_tv(s, -1, rettv, arg, &funcexe);
 
-    /* Clear the funcref afterwards, so that deleting it while
-     * evaluating the arguments is possible (see test55). */
+    // Clear the funcref afterwards, so that deleting it while
+    // evaluating the arguments is possible (see test55).
     if (evaluate)
 	clear_tv(&functv);
 
@@ -2892,7 +2892,7 @@ eval_lambda(
     char_u	**arg,
     typval_T	*rettv,
     int		evaluate,
-    int		verbose)	/* give error messages */
+    int		verbose)	// give error messages
 {
     typval_T	base = *rettv;
     int		ret;
@@ -2937,7 +2937,7 @@ eval_method(
     char_u	**arg,
     typval_T	*rettv,
     int		evaluate,
-    int		verbose)	/* give error messages */
+    int		verbose)	// give error messages
 {
     char_u	*name;
     long	len;
@@ -2996,7 +2996,7 @@ eval_index(
     char_u	**arg,
     typval_T	*rettv,
     int		evaluate,
-    int		verbose)	/* give error messages */
+    int		verbose)	// give error messages
 {
     int		empty1 = FALSE, empty2 = FALSE;
     typval_T	var1, var2;
@@ -3029,7 +3029,7 @@ eval_index(
 	case VAR_UNKNOWN:
 	    if (evaluate)
 		return FAIL;
-	    /* FALLTHROUGH */
+	    // FALLTHROUGH
 
 	case VAR_STRING:
 	case VAR_NUMBER:
@@ -3063,11 +3063,11 @@ eval_index(
 	*arg = skipwhite(*arg + 1);
 	if (**arg == ':')
 	    empty1 = TRUE;
-	else if (eval1(arg, &var1, evaluate) == FAIL)	/* recursive! */
+	else if (eval1(arg, &var1, evaluate) == FAIL)	// recursive!
 	    return FAIL;
 	else if (evaluate && tv_get_string_chk(&var1) == NULL)
 	{
-	    /* not a number or string */
+	    // not a number or string
 	    clear_tv(&var1);
 	    return FAIL;
 	}
@@ -3081,7 +3081,7 @@ eval_index(
 	    *arg = skipwhite(*arg + 1);
 	    if (**arg == ']')
 		empty2 = TRUE;
-	    else if (eval1(arg, &var2, evaluate) == FAIL)	/* recursive! */
+	    else if (eval1(arg, &var2, evaluate) == FAIL)	// recursive!
 	    {
 		if (!empty1)
 		    clear_tv(&var1);
@@ -3089,7 +3089,7 @@ eval_index(
 	    }
 	    else if (evaluate && tv_get_string_chk(&var2) == NULL)
 	    {
-		/* not a number or string */
+		// not a number or string
 		if (!empty1)
 		    clear_tv(&var1);
 		clear_tv(&var2);
@@ -3097,7 +3097,7 @@ eval_index(
 	    }
 	}
 
-	/* Check for the ']'. */
+	// Check for the ']'.
 	if (**arg != ']')
 	{
 	    if (verbose)
@@ -3107,7 +3107,7 @@ eval_index(
 		clear_tv(&var2);
 	    return FAIL;
 	}
-	*arg = skipwhite(*arg + 1);	/* skip the ']' */
+	*arg = skipwhite(*arg + 1);	// skip the ']'
     }
 
     if (evaluate)
@@ -3138,7 +3138,7 @@ eval_index(
 	    case VAR_SPECIAL:
 	    case VAR_JOB:
 	    case VAR_CHANNEL:
-		break; /* not evaluating, skipping over subscript */
+		break; // not evaluating, skipping over subscript
 
 	    case VAR_NUMBER:
 	    case VAR_STRING:
@@ -3146,8 +3146,8 @@ eval_index(
 		len = (long)STRLEN(s);
 		if (range)
 		{
-		    /* The resulting variable is a substring.  If the indexes
-		     * are out of range the result is empty. */
+		    // The resulting variable is a substring.  If the indexes
+		    // are out of range the result is empty.
 		    if (n1 < 0)
 		    {
 			n1 = len + n1;
@@ -3165,9 +3165,9 @@ eval_index(
 		}
 		else
 		{
-		    /* The resulting variable is a string of a single
-		     * character.  If the index is too big or negative the
-		     * result is empty. */
+		    // The resulting variable is a string of a single
+		    // character.  If the index is too big or negative the
+		    // result is empty.
 		    if (n1 >= len || n1 < 0)
 			s = NULL;
 		    else
@@ -3246,8 +3246,8 @@ eval_index(
 		    n1 = len + n1;
 		if (!empty1 && (n1 < 0 || n1 >= len))
 		{
-		    /* For a range we allow invalid values and return an empty
-		     * list.  A list index out of range is an error. */
+		    // For a range we allow invalid values and return an empty
+		    // list.  A list index out of range is an error.
 		    if (!range)
 		    {
 			if (verbose)
@@ -3342,7 +3342,7 @@ eval_index(
     int
 get_option_tv(
     char_u	**arg,
-    typval_T	*rettv,	/* when NULL, only check if option exists */
+    typval_T	*rettv,	// when NULL, only check if option exists
     int		evaluate)
 {
     char_u	*option_end;
@@ -3350,7 +3350,7 @@ get_option_tv(
     char_u	*stringval;
     int		opt_type;
     int		c;
-    int		working = (**arg == '+');    /* has("+option") */
+    int		working = (**arg == '+');    // has("+option")
     int		ret = OK;
     int		opt_flags;
 
@@ -3376,7 +3376,7 @@ get_option_tv(
     opt_type = get_option_value(*arg, &numval,
 			       rettv == NULL ? NULL : &stringval, opt_flags);
 
-    if (opt_type == -3)			/* invalid name */
+    if (opt_type == -3)			// invalid name
     {
 	if (rettv != NULL)
 	    semsg(_("E113: Unknown option: %s"), *arg);
@@ -3384,22 +3384,22 @@ get_option_tv(
     }
     else if (rettv != NULL)
     {
-	if (opt_type == -2)		/* hidden string option */
+	if (opt_type == -2)		// hidden string option
 	{
 	    rettv->v_type = VAR_STRING;
 	    rettv->vval.v_string = NULL;
 	}
-	else if (opt_type == -1)	/* hidden number option */
+	else if (opt_type == -1)	// hidden number option
 	{
 	    rettv->v_type = VAR_NUMBER;
 	    rettv->vval.v_number = 0;
 	}
-	else if (opt_type == 1)		/* number option */
+	else if (opt_type == 1)		// number option
 	{
 	    rettv->v_type = VAR_NUMBER;
 	    rettv->vval.v_number = numval;
 	}
-	else				/* string option */
+	else				// string option
 	{
 	    rettv->v_type = VAR_STRING;
 	    rettv->vval.v_string = stringval;
@@ -3408,7 +3408,7 @@ get_option_tv(
     else if (working && (opt_type == -2 || opt_type == -1))
 	ret = FAIL;
 
-    *option_end = c;		    /* put back for error messages */
+    *option_end = c;		    // put back for error messages
     *arg = option_end;
 
     return ret;
@@ -3433,8 +3433,8 @@ get_string_tv(char_u **arg, typval_T *re
 	if (*p == '\\' && p[1] != NUL)
 	{
 	    ++p;
-	    /* A "\<x>" form occupies at least 4 characters, and produces up
-	     * to 6 characters: reserve space for 2 extra */
+	    // A "\<x>" form occupies at least 4 characters, and produces up
+	    // to 6 characters: reserve space for 2 extra
 	    if (*p == '<')
 		extra += 2;
 	}
@@ -3446,7 +3446,7 @@ get_string_tv(char_u **arg, typval_T *re
 	return FAIL;
     }
 
-    /* If only parsing, set *arg and return here */
+    // If only parsing, set *arg and return here
     if (!evaluate)
     {
 	*arg = p + 1;
@@ -3476,9 +3476,9 @@ get_string_tv(char_u **arg, typval_T *re
 		case 'r': *name++ = CAR; ++p; break;
 		case 't': *name++ = TAB; ++p; break;
 
-		case 'X': /* hex: "\x1", "\x12" */
+		case 'X': // hex: "\x1", "\x12"
 		case 'x':
-		case 'u': /* Unicode: "\u0023" */
+		case 'u': // Unicode: "\u0023"
 		case 'U':
 			  if (vim_isxdigit(p[1]))
 			  {
@@ -3498,8 +3498,8 @@ get_string_tv(char_u **arg, typval_T *re
 				  nr = (nr << 4) + hex2nr(*p);
 			      }
 			      ++p;
-			      /* For "\u" store the number according to
-			       * 'encoding'. */
+			      // For "\u" store the number according to
+			      // 'encoding'.
 			      if (c != 'X')
 				  name += (*mb_char2bytes)(nr, name);
 			      else
@@ -3507,7 +3507,7 @@ get_string_tv(char_u **arg, typval_T *re
 			  }
 			  break;
 
-			  /* octal: "\1", "\12", "\123" */
+			  // octal: "\1", "\12", "\123"
 		case '0':
 		case '1':
 		case '2':
@@ -3525,7 +3525,7 @@ get_string_tv(char_u **arg, typval_T *re
 			  ++name;
 			  break;
 
-			    /* Special key, e.g.: "\<C-W>" */
+			    // Special key, e.g.: "\<C-W>"
 		case '<': extra = trans_special(&p, name, TRUE, TRUE,
 								   TRUE, NULL);
 			  if (extra != 0)
@@ -3533,7 +3533,7 @@ get_string_tv(char_u **arg, typval_T *re
 			      name += extra;
 			      break;
 			  }
-			  /* FALLTHROUGH */
+			  // FALLTHROUGH
 
 		default:  MB_COPY_CHAR(p, name);
 			  break;
@@ -3544,7 +3544,7 @@ get_string_tv(char_u **arg, typval_T *re
 
     }
     *name = NUL;
-    if (*p != NUL) /* just in case */
+    if (*p != NUL) // just in case
 	++p;
     *arg = p;
 
@@ -3582,7 +3582,7 @@ get_lit_string_tv(char_u **arg, typval_T
 	return FAIL;
     }
 
-    /* If only parsing return after setting "*arg" */
+    // If only parsing return after setting "*arg"
     if (!evaluate)
     {
 	*arg = p + 1;
@@ -3661,14 +3661,14 @@ static int tv_equal_recurse_limit;
 func_equal(
     typval_T *tv1,
     typval_T *tv2,
-    int	     ic)	    /* ignore case */
+    int	     ic)	    // ignore case
 {
     char_u	*s1, *s2;
     dict_T	*d1, *d2;
     int		a1, a2;
     int		i;
 
-    /* empty and NULL function name considered the same */
+    // empty and NULL function name considered the same
     s1 = tv1->v_type == VAR_FUNC ? tv1->vval.v_string
 					   : partial_name(tv1->vval.v_partial);
     if (s1 != NULL && *s1 == NUL)
@@ -3685,7 +3685,7 @@ func_equal(
     else if (STRCMP(s1, s2) != 0)
 	return FALSE;
 
-    /* empty dict and NULL dict is different */
+    // empty dict and NULL dict is different
     d1 = tv1->v_type == VAR_FUNC ? NULL : tv1->vval.v_partial->pt_dict;
     d2 = tv2->v_type == VAR_FUNC ? NULL : tv2->vval.v_partial->pt_dict;
     if (d1 == NULL || d2 == NULL)
@@ -3696,7 +3696,7 @@ func_equal(
     else if (!dict_equal(d1, d2, ic, TRUE))
 	return FALSE;
 
-    /* empty list and no list considered the same */
+    // empty list and no list considered the same
     a1 = tv1->v_type == VAR_FUNC ? 0 : tv1->vval.v_partial->pt_argc;
     a2 = tv2->v_type == VAR_FUNC ? 0 : tv2->vval.v_partial->pt_argc;
     if (a1 != a2)
@@ -3718,20 +3718,20 @@ func_equal(
 tv_equal(
     typval_T *tv1,
     typval_T *tv2,
-    int	     ic,	    /* ignore case */
-    int	     recursive)	    /* TRUE when used recursively */
+    int	     ic,	    // ignore case
+    int	     recursive)	    // TRUE when used recursively
 {
     char_u	buf1[NUMBUFLEN], buf2[NUMBUFLEN];
     char_u	*s1, *s2;
-    static int  recursive_cnt = 0;	    /* catch recursive loops */
+    static int  recursive_cnt = 0;	    // catch recursive loops
     int		r;
 
-    /* Catch lists and dicts that have an endless loop by limiting
-     * recursiveness to a limit.  We guess they are equal then.
-     * A fixed limit has the problem of still taking an awful long time.
-     * Reduce the limit every time running into it. That should work fine for
-     * deeply linked structures that are not recursively linked and catch
-     * recursiveness quickly. */
+    // Catch lists and dicts that have an endless loop by limiting
+    // recursiveness to a limit.  We guess they are equal then.
+    // A fixed limit has the problem of still taking an awful long time.
+    // Reduce the limit every time running into it. That should work fine for
+    // deeply linked structures that are not recursively linked and catch
+    // recursiveness quickly.
     if (!recursive)
 	tv_equal_recurse_limit = 1000;
     if (recursive_cnt >= tv_equal_recurse_limit)
@@ -3740,8 +3740,8 @@ tv_equal(
 	return TRUE;
     }
 
-    /* For VAR_FUNC and VAR_PARTIAL compare the function name, bound dict and
-     * arguments. */
+    // For VAR_FUNC and VAR_PARTIAL compare the function name, bound dict and
+    // arguments.
     if ((tv1->v_type == VAR_FUNC
 		|| (tv1->v_type == VAR_PARTIAL && tv1->vval.v_partial != NULL))
 	    && (tv2->v_type == VAR_FUNC
@@ -3802,8 +3802,8 @@ tv_equal(
 	    break;
     }
 
-    /* VAR_UNKNOWN can be the result of a invalid expression, let's say it
-     * does not equal anything, not even itself. */
+    // VAR_UNKNOWN can be the result of a invalid expression, let's say it
+    // does not equal anything, not even itself.
     return FALSE;
 }
 
@@ -3855,14 +3855,14 @@ garbage_collect(int testing)
 
     if (!testing)
     {
-	/* Only do this once. */
+	// Only do this once.
 	want_garbage_collect = FALSE;
 	may_garbage_collect = FALSE;
 	garbage_collect_at_exit = FALSE;
     }
 
-    /* We advance by two because we add one for items referenced through
-     * previous_funccal. */
+    // We advance by two because we add one for items referenced through
+    // previous_funccal.
     copyID = get_copyID();
 
     /*
@@ -3870,20 +3870,20 @@ garbage_collect(int testing)
      *    with copyID.
      */
 
-    /* Don't free variables in the previous_funccal list unless they are only
-     * referenced through previous_funccal.  This must be first, because if
-     * the item is referenced elsewhere the funccal must not be freed. */
+    // Don't free variables in the previous_funccal list unless they are only
+    // referenced through previous_funccal.  This must be first, because if
+    // the item is referenced elsewhere the funccal must not be freed.
     abort = abort || set_ref_in_previous_funccal(copyID);
 
-    /* script-local variables */
+    // script-local variables
     abort = abort || garbage_collect_scriptvars(copyID);
 
-    /* buffer-local variables */
+    // buffer-local variables
     FOR_ALL_BUFFERS(buf)
 	abort = abort || set_ref_in_item(&buf->b_bufvar.di_tv, copyID,
 								  NULL, NULL);
 
-    /* window-local variables */
+    // window-local variables
     FOR_ALL_TAB_WINDOWS(tp, wp)
 	abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID,
 								  NULL, NULL);
@@ -3900,23 +3900,23 @@ garbage_collect(int testing)
 								  NULL, NULL);
 #endif
 
-    /* tabpage-local variables */
+    // tabpage-local variables
     FOR_ALL_TABPAGES(tp)
 	abort = abort || set_ref_in_item(&tp->tp_winvar.di_tv, copyID,
 								  NULL, NULL);
-    /* global variables */
+    // global variables
     abort = abort || garbage_collect_globvars(copyID);
 
-    /* function-local variables */
+    // function-local variables
     abort = abort || set_ref_in_call_stack(copyID);
 
-    /* named functions (matters for closures) */
+    // named functions (matters for closures)
     abort = abort || set_ref_in_functions(copyID);
 
-    /* function call arguments, if v:testing is set. */
+    // function call arguments, if v:testing is set.
     abort = abort || set_ref_in_func_args(copyID);
 
-    /* v: vars */
+    // v: vars
     abort = abort || garbage_collect_vimvars(copyID);
 
     // callbacks in buffers
@@ -3987,9 +3987,9 @@ free_unref_items(int copyID)
 {
     int		did_free = FALSE;
 
-    /* Let all "free" functions know that we are here.  This means no
-     * dictionaries, lists, channels or jobs are to be freed, because we will
-     * do that here. */
+    // Let all "free" functions know that we are here.  This means no
+    // dictionaries, lists, channels or jobs are to be freed, because we will
+    // do that here.
     in_free_unref_items = TRUE;
 
     /*
@@ -3997,19 +3997,19 @@ free_unref_items(int copyID)
      * themselves yet, so that it is possible to decrement refcount counters
      */
 
-    /* Go through the list of dicts and free items without the copyID. */
+    // Go through the list of dicts and free items without the copyID.
     did_free |= dict_free_nonref(copyID);
 
-    /* Go through the list of lists and free items without the copyID. */
+    // Go through the list of lists and free items without the copyID.
     did_free |= list_free_nonref(copyID);
 
 #ifdef FEAT_JOB_CHANNEL
-    /* Go through the list of jobs and free items without the copyID. This
-     * must happen before doing channels, because jobs refer to channels, but
-     * the reference from the channel to the job isn't tracked. */
+    // Go through the list of jobs and free items without the copyID. This
+    // must happen before doing channels, because jobs refer to channels, but
+    // the reference from the channel to the job isn't tracked.
     did_free |= free_unused_jobs_contents(copyID, COPYID_MASK);
 
-    /* Go through the list of channels and free items without the copyID.  */
+    // Go through the list of channels and free items without the copyID.
     did_free |= free_unused_channels_contents(copyID, COPYID_MASK);
 #endif
 
@@ -4020,12 +4020,12 @@ free_unref_items(int copyID)
     list_free_items(copyID);
 
 #ifdef FEAT_JOB_CHANNEL
-    /* Go through the list of jobs and free items without the copyID. This
-     * must happen before doing channels, because jobs refer to channels, but
-     * the reference from the channel to the job isn't tracked. */
+    // Go through the list of jobs and free items without the copyID. This
+    // must happen before doing channels, because jobs refer to channels, but
+    // the reference from the channel to the job isn't tracked.
     free_unused_jobs(copyID, COPYID_MASK);
 
-    /* Go through the list of channels and free items without the copyID.  */
+    // Go through the list of channels and free items without the copyID.
     free_unused_channels(copyID, COPYID_MASK);
 #endif
 
@@ -4055,9 +4055,9 @@ set_ref_in_ht(hashtab_T *ht, int copyID,
     {
 	if (!abort)
 	{
-	    /* Mark each item in the hashtab.  If the item contains a hashtab
-	     * it is added to ht_stack, if it contains a list it is added to
-	     * list_stack. */
+	    // Mark each item in the hashtab.  If the item contains a hashtab
+	    // it is added to ht_stack, if it contains a list it is added to
+	    // list_stack.
 	    todo = (int)cur_ht->ht_used;
 	    for (hi = cur_ht->ht_array; todo > 0; ++hi)
 		if (!HASHITEM_EMPTY(hi))
@@ -4071,7 +4071,7 @@ set_ref_in_ht(hashtab_T *ht, int copyID,
 	if (ht_stack == NULL)
 	    break;
 
-	/* take an item from the stack */
+	// take an item from the stack
 	cur_ht = ht_stack->ht;
 	tempitem = ht_stack;
 	ht_stack = ht_stack->prev;
@@ -4130,16 +4130,16 @@ set_ref_in_list_items(list_T *l, int cop
     for (;;)
     {
 	if (!abort)
-	    /* Mark each item in the list.  If the item contains a hashtab
-	     * it is added to ht_stack, if it contains a list it is added to
-	     * list_stack. */
+	    // Mark each item in the list.  If the item contains a hashtab
+	    // it is added to ht_stack, if it contains a list it is added to
+	    // list_stack.
 	    for (li = cur_l->lv_first; !abort && li != NULL; li = li->li_next)
 		abort = abort || set_ref_in_item(&li->li_tv, copyID,
 						       ht_stack, &list_stack);
 	if (list_stack == NULL)
 	    break;
 
-	/* take an item from the stack */
+	// take an item from the stack
 	cur_l = list_stack->list;
 	tempitem = list_stack;
 	list_stack = list_stack->prev;
@@ -4171,7 +4171,7 @@ set_ref_in_item(
 
 	if (dd != NULL && dd->dv_copyID != copyID)
 	{
-	    /* Didn't see this dict yet. */
+	    // Didn't see this dict yet.
 	    dd->dv_copyID = copyID;
 	    if (ht_stack == NULL)
 	    {
@@ -4197,7 +4197,7 @@ set_ref_in_item(
 
 	if (ll != NULL && ll->lv_copyID != copyID)
 	{
-	    /* Didn't see this list yet. */
+	    // Didn't see this list yet.
 	    ll->lv_copyID = copyID;
 	    if (list_stack == NULL)
 	    {
@@ -4227,8 +4227,7 @@ set_ref_in_item(
 	partial_T	*pt = tv->vval.v_partial;
 	int		i;
 
-	/* A partial does not have a copyID, because it cannot contain itself.
-	 */
+	// A partial does not have a copyID, because it cannot contain itself.
 	if (pt != NULL)
 	{
 	    abort = set_ref_in_func(pt->pt_name, pt->pt_func, copyID);
@@ -4349,9 +4348,9 @@ echo_string_core(
     {
 	if (!did_echo_string_emsg)
 	{
-	    /* Only give this message once for a recursive call to avoid
-	     * flooding the user with errors.  And stop iterating over lists
-	     * and dicts. */
+	    // Only give this message once for a recursive call to avoid
+	    // flooding the user with errors.  And stop iterating over lists
+	    // and dicts.
 	    did_echo_string_emsg = TRUE;
 	    emsg(_("E724: variable nested too deep for displaying"));
 	}
@@ -4612,12 +4611,12 @@ string_quote(char_u *str, int function)
     int
 string2float(
     char_u	*text,
-    float_T	*value)	    /* result stored here */
+    float_T	*value)	    // result stored here
 {
     char	*s = (char *)text;
     float_T	f;
 
-    /* MS-Windows does not deal with "inf" and "nan" properly. */
+    // MS-Windows does not deal with "inf" and "nan" properly.
     if (STRNICMP(text, "inf", 3) == 0)
     {
 	*value = INFINITY;
@@ -4660,11 +4659,11 @@ get_env_tv(char_u **arg, typval_T *rettv
     if (evaluate)
     {
 	if (len == 0)
-	    return FAIL; /* invalid empty name */
+	    return FAIL; // invalid empty name
 
 	cc = name[len];
 	name[len] = NUL;
-	/* first try vim_getenv(), fast for normal environment vars */
+	// first try vim_getenv(), fast for normal environment vars
 	string = vim_getenv(name, &mustfree);
 	if (string != NULL && *string != NUL)
 	{
@@ -4676,7 +4675,7 @@ get_env_tv(char_u **arg, typval_T *rettv
 	    if (mustfree)
 		vim_free(string);
 
-	    /* next try expanding things like $VIM and ${HOME} */
+	    // next try expanding things like $VIM and ${HOME}
 	    string = expand_env_save(name - 1);
 	    if (string != NULL && *string == '$')
 		VIM_CLEAR(string);
@@ -4697,14 +4696,14 @@ get_env_tv(char_u **arg, typval_T *rettv
     pos_T *
 var2fpos(
     typval_T	*varp,
-    int		dollar_lnum,	/* TRUE when $ is last line */
-    int		*fnum)		/* set to fnum for '0, 'A, etc. */
+    int		dollar_lnum,	// TRUE when $ is last line
+    int		*fnum)		// set to fnum for '0, 'A, etc.
 {
     char_u		*name;
     static pos_T	pos;
     pos_T		*pp;
 
-    /* Argument can be [lnum, col, coladd]. */
+    // Argument can be [lnum, col, coladd].
     if (varp->v_type == VAR_LIST)
     {
 	list_T		*l;
@@ -4716,30 +4715,30 @@ var2fpos(
 	if (l == NULL)
 	    return NULL;
 
-	/* Get the line number */
+	// Get the line number
 	pos.lnum = list_find_nr(l, 0L, &error);
 	if (error || pos.lnum <= 0 || pos.lnum > curbuf->b_ml.ml_line_count)
-	    return NULL;	/* invalid line number */
-
-	/* Get the column number */
+	    return NULL;	// invalid line number
+
+	// Get the column number
 	pos.col = list_find_nr(l, 1L, &error);
 	if (error)
 	    return NULL;
 	len = (long)STRLEN(ml_get(pos.lnum));
 
-	/* We accept "$" for the column number: last column. */
+	// We accept "$" for the column number: last column.
 	li = list_find(l, 1L);
 	if (li != NULL && li->li_tv.v_type == VAR_STRING
 		&& li->li_tv.vval.v_string != NULL
 		&& STRCMP(li->li_tv.vval.v_string, "$") == 0)
 	    pos.col = len + 1;
 
-	/* Accept a position up to the NUL after the line. */
+	// Accept a position up to the NUL after the line.
 	if (pos.col == 0 || (int)pos.col > len + 1)
-	    return NULL;	/* invalid column number */
+	    return NULL;	// invalid column number
 	--pos.col;
 
-	/* Get the virtual offset.  Defaults to zero. */
+	// Get the virtual offset.  Defaults to zero.
 	pos.coladd = list_find_nr(l, 2L, &error);
 	if (error)
 	    pos.coladd = 0;
@@ -4750,15 +4749,15 @@ var2fpos(
     name = tv_get_string_chk(varp);
     if (name == NULL)
 	return NULL;
-    if (name[0] == '.')				/* cursor */
+    if (name[0] == '.')				// cursor
 	return &curwin->w_cursor;
-    if (name[0] == 'v' && name[1] == NUL)	/* Visual start */
+    if (name[0] == 'v' && name[1] == NUL)	// Visual start
     {
 	if (VIsual_active)
 	    return &VIsual;
 	return &curwin->w_cursor;
     }
-    if (name[0] == '\'')			/* mark */
+    if (name[0] == '\'')			// mark
     {
 	pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum);
 	if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0)
@@ -4771,23 +4770,23 @@ var2fpos(
     if (name[0] == 'w' && dollar_lnum)
     {
 	pos.col = 0;
-	if (name[1] == '0')		/* "w0": first visible line */
+	if (name[1] == '0')		// "w0": first visible line
 	{
 	    update_topline();
-	    /* In silent Ex mode topline is zero, but that's not a valid line
-	     * number; use one instead. */
+	    // In silent Ex mode topline is zero, but that's not a valid line
+	    // number; use one instead.
 	    pos.lnum = curwin->w_topline > 0 ? curwin->w_topline : 1;
 	    return &pos;
 	}
-	else if (name[1] == '$')	/* "w$": last visible line */
+	else if (name[1] == '$')	// "w$": last visible line
 	{
 	    validate_botline();
-	    /* In silent Ex mode botline is zero, return zero then. */
+	    // In silent Ex mode botline is zero, return zero then.
 	    pos.lnum = curwin->w_botline > 0 ? curwin->w_botline - 1 : 0;
 	    return &pos;
 	}
     }
-    else if (name[0] == '$')		/* last column or line */
+    else if (name[0] == '$')		// last column or line
     {
 	if (dollar_lnum)
 	{
@@ -4823,8 +4822,8 @@ list2fpos(
     long	i = 0;
     long	n;
 
-    /* List must be: [fnum, lnum, col, coladd, curswant], where "fnum" is only
-     * there when "fnump" isn't NULL; "coladd" and "curswant" are optional. */
+    // List must be: [fnum, lnum, col, coladd, curswant], where "fnum" is only
+    // there when "fnump" isn't NULL; "coladd" and "curswant" are optional.
     if (arg->v_type != VAR_LIST
 	    || l == NULL
 	    || l->lv_len < (fnump == NULL ? 2 : 3)
@@ -4833,32 +4832,32 @@ list2fpos(
 
     if (fnump != NULL)
     {
-	n = list_find_nr(l, i++, NULL);	/* fnum */
+	n = list_find_nr(l, i++, NULL);	// fnum
 	if (n < 0)
 	    return FAIL;
 	if (n == 0)
-	    n = curbuf->b_fnum;		/* current buffer */
+	    n = curbuf->b_fnum;		// current buffer
 	*fnump = n;
     }
 
-    n = list_find_nr(l, i++, NULL);	/* lnum */
+    n = list_find_nr(l, i++, NULL);	// lnum
     if (n < 0)
 	return FAIL;
     posp->lnum = n;
 
-    n = list_find_nr(l, i++, NULL);	/* col */
+    n = list_find_nr(l, i++, NULL);	// col
     if (n < 0)
 	return FAIL;
     posp->col = n;
 
-    n = list_find_nr(l, i, NULL);	/* off */
+    n = list_find_nr(l, i, NULL);	// off
     if (n < 0)
 	posp->coladd = 0;
     else
 	posp->coladd = n;
 
     if (curswantp != NULL)
-	*curswantp = list_find_nr(l, i + 1, NULL);  /* curswant */
+	*curswantp = list_find_nr(l, i + 1, NULL);  // curswant
 
     return OK;
 }
@@ -4876,7 +4875,7 @@ get_env_len(char_u **arg)
 
     for (p = *arg; vim_isIDc(*p); ++p)
 	;
-    if (p == *arg)	    /* no name found */
+    if (p == *arg)	    // no name found
 	return 0;
 
     len = (int)(p - *arg);
@@ -4895,20 +4894,20 @@ get_id_len(char_u **arg)
     char_u	*p;
     int		len;
 
-    /* Find the end of the name. */
+    // Find the end of the name.
     for (p = *arg; eval_isnamec(*p); ++p)
     {
 	if (*p == ':')
 	{
-	    /* "s:" is start of "s:var", but "n:" is not and can be used in
-	     * slice "[n:]".  Also "xx:" is not a namespace. */
+	    // "s:" is start of "s:var", but "n:" is not and can be used in
+	    // slice "[n:]".  Also "xx:" is not a namespace.
 	    len = (int)(p - *arg);
 	    if ((len == 1 && vim_strchr(NAMESPACE_CHAR, **arg) == NULL)
 		    || len > 1)
 		break;
 	}
     }
-    if (p == *arg)	    /* no name found */
+    if (p == *arg)	    // no name found
 	return 0;
 
     len = (int)(p - *arg);
@@ -4938,19 +4937,19 @@ get_name_len(
     char_u	*expr_start;
     char_u	*expr_end;
 
-    *alias = NULL;  /* default to no alias */
+    *alias = NULL;  // default to no alias
 
     if ((*arg)[0] == K_SPECIAL && (*arg)[1] == KS_EXTRA
 						  && (*arg)[2] == (int)KE_SNR)
     {
-	/* hard coded <SNR>, already translated */
+	// hard coded <SNR>, already translated
 	*arg += 3;
 	return get_id_len(arg) + 3;
     }
     len = eval_fname_script(*arg);
     if (len > 0)
     {
-	/* literal "<SID>", "s:" or "<SNR>" */
+	// literal "<SID>", "s:" or "<SNR>"
 	*arg += len;
     }
 
@@ -5017,7 +5016,7 @@ find_name_end(
 	*expr_end = NULL;
     }
 
-    /* Quick check for valid starting character. */
+    // Quick check for valid starting character.
     if ((flags & FNE_CHECK_START) && !eval_isnamec1(*arg) && *arg != '{')
 	return arg;
 
@@ -5030,7 +5029,7 @@ find_name_end(
     {
 	if (*p == '\'')
 	{
-	    /* skip over 'string' to avoid counting [ and ] inside it. */
+	    // skip over 'string' to avoid counting [ and ] inside it.
 	    for (p = p + 1; *p != NUL && *p != '\''; MB_PTR_ADV(p))
 		;
 	    if (*p == NUL)
@@ -5038,7 +5037,7 @@ find_name_end(
 	}
 	else if (*p == '"')
 	{
-	    /* skip over "str\"ing" to avoid counting [ and ] inside it. */
+	    // skip over "str\"ing" to avoid counting [ and ] inside it.
 	    for (p = p + 1; *p != NUL && *p != '"'; MB_PTR_ADV(p))
 		if (*p == '\\' && p[1] != NUL)
 		    ++p;
@@ -5047,8 +5046,8 @@ find_name_end(
 	}
 	else if (br_nest == 0 && mb_nest == 0 && *p == ':')
 	{
-	    /* "s:" is start of "s:var", but "n:" is not and can be used in
-	     * slice "[n:]".  Also "xx:" is not a namespace. But {ns}: is. */
+	    // "s:" is start of "s:var", but "n:" is not and can be used in
+	    // slice "[n:]".  Also "xx:" is not a namespace. But {ns}: is.
 	    len = (int)(p - arg);
 	    if ((len == 1 && vim_strchr(NAMESPACE_CHAR, *arg) == NULL)
 		    || (len > 1 && p[-1] != '}'))
@@ -5129,7 +5128,7 @@ make_expanded_name(
     }
     vim_free(temp_result);
 
-    *in_end = c1;		/* put char back for error messages */
+    *in_end = c1;		// put char back for error messages
     *expr_start = '{';
     *expr_end = '}';
 
@@ -5138,7 +5137,7 @@ make_expanded_name(
 	temp_result = find_name_end(retval, &expr_start, &expr_end, 0);
 	if (expr_start != NULL)
 	{
-	    /* Further expansion! */
+	    // Further expansion!
 	    temp_result = make_expanded_name(retval, expr_start,
 						       expr_end, temp_result);
 	    vim_free(retval);
@@ -5235,7 +5234,7 @@ handle_subscript(
 		    ret = eval_method(arg, rettv, evaluate, verbose);
 	    }
 	}
-	else /* **arg == '[' || **arg == '.' */
+	else // **arg == '[' || **arg == '.'
 	{
 	    dict_unref(selfdict);
 	    if (rettv->v_type == VAR_DICT)
@@ -5254,9 +5253,9 @@ handle_subscript(
 	}
     }
 
-    /* Turn "dict.Func" into a partial for "Func" bound to "dict".
-     * Don't do this when "Func" is already a partial that was bound
-     * explicitly (pt_auto is FALSE). */
+    // Turn "dict.Func" into a partial for "Func" bound to "dict".
+    // Don't do this when "Func" is already a partial that was bound
+    // explicitly (pt_auto is FALSE).
     if (selfdict != NULL
 	    && (rettv->v_type == VAR_FUNC
 		|| (rettv->v_type == VAR_PARTIAL
@@ -5311,7 +5310,7 @@ free_tv(typval_T *varp)
 	{
 	    case VAR_FUNC:
 		func_unref(varp->vval.v_string);
-		/* FALLTHROUGH */
+		// FALLTHROUGH
 	    case VAR_STRING:
 		vim_free(varp->vval.v_string);
 		break;
@@ -5359,7 +5358,7 @@ clear_tv(typval_T *varp)
 	{
 	    case VAR_FUNC:
 		func_unref(varp->vval.v_string);
-		/* FALLTHROUGH */
+		// FALLTHROUGH
 	    case VAR_STRING:
 		VIM_CLEAR(varp->vval.v_string);
 		break;
@@ -5429,7 +5428,7 @@ tv_get_number(typval_T *varp)
 {
     int		error = FALSE;
 
-    return tv_get_number_chk(varp, &error);	/* return 0L on error */
+    return tv_get_number_chk(varp, &error);	// return 0L on error
 }
 
     varnumber_T
@@ -5481,7 +5480,7 @@ tv_get_number_chk(typval_T *varp, int *d
 	    internal_error("tv_get_number(UNKNOWN)");
 	    break;
     }
-    if (denote == NULL)		/* useful for values that must be unsigned */
+    if (denote == NULL)		// useful for values that must be unsigned
 	n = -1;
     else
 	*denote = TRUE;
@@ -5626,7 +5625,7 @@ tv_get_string_buf_chk(typval_T *varp, ch
 			    (long)job->jv_proc_info.dwProcessId,
 			    status);
 # else
-		/* fall-back */
+		// fall-back
 		vim_snprintf((char *)buf, NUMBUFLEN, "process ? %s", status);
 # endif
 		return buf;
@@ -5843,7 +5842,7 @@ item_copy(
 		to->vval.v_list = NULL;
 	    else if (copyID != 0 && from->vval.v_list->lv_copyID == copyID)
 	    {
-		/* use the copy made earlier */
+		// use the copy made earlier
 		to->vval.v_list = from->vval.v_list->lv_copylist;
 		++to->vval.v_list->lv_refcount;
 	    }
@@ -5862,7 +5861,7 @@ item_copy(
 		to->vval.v_dict = NULL;
 	    else if (copyID != 0 && from->vval.v_dict->dv_copyID == copyID)
 	    {
-		/* use the copy made earlier */
+		// use the copy made earlier
 		to->vval.v_dict = from->vval.v_dict->dv_copydict;
 		++to->vval.v_dict->dv_refcount;
 	    }
@@ -5901,8 +5900,8 @@ ex_echo(exarg_T *eap)
 	++emsg_skip;
     while (*arg != NUL && *arg != '|' && *arg != '\n' && !got_int)
     {
-	/* If eval1() causes an error message the text from the command may
-	 * still need to be cleared. E.g., "echo 22,44". */
+	// If eval1() causes an error message the text from the command may
+	// still need to be cleared. E.g., "echo 22,44".
 	need_clr_eos = needclr;
 
 	p = arg;
@@ -5926,13 +5925,13 @@ ex_echo(exarg_T *eap)
 	    if (atstart)
 	    {
 		atstart = FALSE;
-		/* Call msg_start() after eval1(), evaluating the expression
-		 * may cause a message to appear. */
+		// Call msg_start() after eval1(), evaluating the expression
+		// may cause a message to appear.
 		if (eap->cmdidx == CMD_echo)
 		{
-		    /* Mark the saved text as finishing the line, so that what
-		     * follows is displayed on a new line when scrolling back
-		     * at the more prompt. */
+		    // Mark the saved text as finishing the line, so that what
+		    // follows is displayed on a new line when scrolling back
+		    // at the more prompt.
 		    msg_sb_eol();
 		    msg_start();
 		}
@@ -5947,7 +5946,7 @@ ex_echo(exarg_T *eap)
 		    {
 			if (*p != TAB && needclr)
 			{
-			    /* remove any text still there from the command */
+			    // remove any text still there from the command
 			    msg_clr_eos();
 			    needclr = FALSE;
 			}
@@ -5977,7 +5976,7 @@ ex_echo(exarg_T *eap)
 	--emsg_skip;
     else
     {
-	/* remove text that may still be there from the command */
+	// remove text that may still be there from the command
 	if (needclr)
 	    msg_clr_eos();
 	if (eap->cmdidx == CMD_echo)
@@ -6060,9 +6059,9 @@ ex_execute(exarg_T *eap)
     {
 	if (eap->cmdidx == CMD_echomsg || eap->cmdidx == CMD_echoerr)
 	{
-	    /* Mark the already saved text as finishing the line, so that what
-	     * follows is displayed on a new line when scrolling back at the
-	     * more prompt. */
+	    // Mark the already saved text as finishing the line, so that what
+	    // follows is displayed on a new line when scrolling back at the
+	    // more prompt.
 	    msg_sb_eol();
 	}
 
@@ -6073,7 +6072,7 @@ ex_execute(exarg_T *eap)
 	}
 	else if (eap->cmdidx == CMD_echoerr)
 	{
-	    /* We don't want to abort following commands, restore did_emsg. */
+	    // We don't want to abort following commands, restore did_emsg.
 	    save_did_emsg = did_emsg;
 	    emsg(ga.ga_data);
 	    if (!force_abort)
@@ -6122,7 +6121,7 @@ find_option_end(char_u **arg, int *opt_f
     *arg = p;
 
     if (p[0] == 't' && p[1] == '_' && p[2] != NUL && p[3] != NUL)
-	p += 4;	    /* termcap option */
+	p += 4;	    // termcap option
     else
 	while (ASCII_ISALPHA(*p))
 	    ++p;
@@ -6162,11 +6161,11 @@ last_set_msg(sctx_T script_ctx)
  */
     int
 typval_compare(
-    typval_T	*typ1,   /* first operand */
-    typval_T	*typ2,   /* second operand */
-    exptype_T	type,    /* operator */
-    int		type_is, /* TRUE for "is" and "isnot" */
-    int		ic)      /* ignore case */
+    typval_T	*typ1,   // first operand
+    typval_T	*typ2,   // second operand
+    exptype_T	type,    // operator
+    int		type_is, // TRUE for "is" and "isnot"
+    int		ic)      // ignore case
 {
     int		i;
     varnumber_T	n1, n2;
@@ -6175,8 +6174,8 @@ typval_compare(
 
     if (type_is && typ1->v_type != typ2->v_type)
     {
-	/* For "is" a different type always means FALSE, for "notis"
-	    * it means TRUE. */
+	// For "is" a different type always means FALSE, for "notis"
+	// it means TRUE.
 	n1 = (type == TYPE_NEQUAL);
     }
     else if (typ1->v_type == VAR_BLOB || typ2->v_type == VAR_BLOB)
@@ -6227,7 +6226,7 @@ typval_compare(
 	}
 	else
 	{
-	    /* Compare two Lists for being equal or unequal. */
+	    // Compare two Lists for being equal or unequal.
 	    n1 = list_equal(typ1->vval.v_list, typ2->vval.v_list,
 							    ic, FALSE);
 	    if (type == TYPE_NEQUAL)
@@ -6256,7 +6255,7 @@ typval_compare(
 	}
 	else
 	{
-	    /* Compare two Dictionaries for being equal or unequal. */
+	    // Compare two Dictionaries for being equal or unequal.
 	    n1 = dict_equal(typ1->vval.v_dict, typ2->vval.v_dict,
 							    ic, FALSE);
 	    if (type == TYPE_NEQUAL)
@@ -6277,13 +6276,13 @@ typval_compare(
 					&& typ1->vval.v_partial == NULL)
 		|| (typ2->v_type == VAR_PARTIAL
 					&& typ2->vval.v_partial == NULL))
-	    /* when a partial is NULL assume not equal */
+	    // when a partial is NULL assume not equal
 	    n1 = FALSE;
 	else if (type_is)
 	{
 	    if (typ1->v_type == VAR_FUNC && typ2->v_type == VAR_FUNC)
-		/* strings are considered the same if their value is
-		    * the same */
+		// strings are considered the same if their value is
+		// the same
 		n1 = tv_equal(typ1, typ2, ic, FALSE);
 	    else if (typ1->v_type == VAR_PARTIAL
 					&& typ2->v_type == VAR_PARTIAL)
@@ -6320,7 +6319,7 @@ typval_compare(
 	    case TYPE_SEQUAL:   n1 = (f1 <= f2); break;
 	    case TYPE_UNKNOWN:
 	    case TYPE_MATCH:
-	    case TYPE_NOMATCH:  break;  /* avoid gcc warning */
+	    case TYPE_NOMATCH:  break;  // avoid gcc warning
 	}
     }
 #endif
@@ -6344,7 +6343,7 @@ typval_compare(
 	    case TYPE_SEQUAL:   n1 = (n1 <= n2); break;
 	    case TYPE_UNKNOWN:
 	    case TYPE_MATCH:
-	    case TYPE_NOMATCH:  break;  /* avoid gcc warning */
+	    case TYPE_NOMATCH:  break;  // avoid gcc warning
 	}
     }
     else
@@ -6372,7 +6371,7 @@ typval_compare(
 			n1 = !n1;
 		    break;
 
-	    case TYPE_UNKNOWN:  break;  /* avoid gcc warning */
+	    case TYPE_UNKNOWN:  break;  // avoid gcc warning
 	}
     }
     clear_tv(typ1);
@@ -6392,7 +6391,7 @@ typval_tostring(typval_T *arg)
     if (arg == NULL)
 	return vim_strsave((char_u *)"(does not exist)");
     ret = tv2string(arg, &tofree, numbuf, 0);
-    /* Make a copy if we have a value but it's not in allocated memory. */
+    // Make a copy if we have a value but it's not in allocated memory.
     if (ret != NULL && tofree == NULL)
 	ret = vim_strsave(ret);
     return ret;
@@ -6425,7 +6424,7 @@ do_string_sub(
     char_u	*save_cpo;
     char_u	*zero_width = NULL;
 
-    /* Make 'cpoptions' empty, so that the 'l' flag doesn't work here */
+    // Make 'cpoptions' empty, so that the 'l' flag doesn't work here
     save_cpo = p_cpo;
     p_cpo = empty_option;
 
@@ -6441,12 +6440,12 @@ do_string_sub(
 	end = str + STRLEN(str);
 	while (vim_regexec_nl(&regmatch, str, (colnr_T)(tail - str)))
 	{
-	    /* Skip empty match except for first match. */
+	    // Skip empty match except for first match.
 	    if (regmatch.startp[0] == regmatch.endp[0])
 	    {
 		if (zero_width == regmatch.startp[0])
 		{
-		    /* avoid getting stuck on a match with an empty string */
+		    // avoid getting stuck on a match with an empty string
 		    i = mb_ptr2len(tail);
 		    mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail,
 								   (size_t)i);
@@ -6472,10 +6471,10 @@ do_string_sub(
 		break;
 	    }
 
-	    /* copy the text up to where the match is */
+	    // copy the text up to where the match is
 	    i = (int)(regmatch.startp[0] - tail);
 	    mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail, (size_t)i);
-	    /* add the substituted text */
+	    // add the substituted text
 	    (void)vim_regsub(&regmatch, sub, expr, (char_u *)ga.ga_data
 					  + ga.ga_len + i, TRUE, TRUE, FALSE);
 	    ga.ga_len += i + sublen - 1;
@@ -6497,7 +6496,7 @@ do_string_sub(
     if (p_cpo == empty_option)
 	p_cpo = save_cpo;
     else
-	/* Darn, evaluating {sub} expression or {expr} changed the value. */
+	// Darn, evaluating {sub} expression or {expr} changed the value.
 	free_string_option(save_cpo);
 
     return ret;