mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.2388: using old C style comments
Problem: Using old C style comments. Solution: Use // comments where appropriate.
This commit is contained in:
86
src/json.c
86
src/json.c
@@ -48,7 +48,7 @@ json_encode(typval_T *val, int options)
|
|||||||
{
|
{
|
||||||
garray_T ga;
|
garray_T ga;
|
||||||
|
|
||||||
/* Store bytes in the growarray. */
|
// Store bytes in the growarray.
|
||||||
ga_init2(&ga, 1, 4000);
|
ga_init2(&ga, 1, 4000);
|
||||||
json_encode_gap(&ga, val, options);
|
json_encode_gap(&ga, val, options);
|
||||||
ga_append(&ga, NUL);
|
ga_append(&ga, NUL);
|
||||||
@@ -104,8 +104,8 @@ write_string(garray_T *gap, char_u *str)
|
|||||||
|
|
||||||
if (!enc_utf8)
|
if (!enc_utf8)
|
||||||
{
|
{
|
||||||
/* Convert the text from 'encoding' to utf-8, the JSON string is
|
// Convert the text from 'encoding' to utf-8, the JSON string is
|
||||||
* always utf-8. */
|
// always utf-8.
|
||||||
conv.vc_type = CONV_NONE;
|
conv.vc_type = CONV_NONE;
|
||||||
convert_setup(&conv, p_enc, (char_u*)"utf-8");
|
convert_setup(&conv, p_enc, (char_u*)"utf-8");
|
||||||
if (conv.vc_type != CONV_NONE)
|
if (conv.vc_type != CONV_NONE)
|
||||||
@@ -117,7 +117,7 @@ write_string(garray_T *gap, char_u *str)
|
|||||||
while (*res != NUL)
|
while (*res != NUL)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
/* always use utf-8 encoding, ignore 'encoding' */
|
// always use utf-8 encoding, ignore 'encoding'
|
||||||
c = utf_ptr2char(res);
|
c = utf_ptr2char(res);
|
||||||
|
|
||||||
switch (c)
|
switch (c)
|
||||||
@@ -132,8 +132,8 @@ write_string(garray_T *gap, char_u *str)
|
|||||||
ga_append(gap, '\\'); ga_append(gap, 'f'); break;
|
ga_append(gap, '\\'); ga_append(gap, 'f'); break;
|
||||||
case 0x0d:
|
case 0x0d:
|
||||||
ga_append(gap, '\\'); ga_append(gap, 'r'); break;
|
ga_append(gap, '\\'); ga_append(gap, 'r'); break;
|
||||||
case 0x22: /* " */
|
case 0x22: // "
|
||||||
case 0x5c: /* \ */
|
case 0x5c: // backslash
|
||||||
ga_append(gap, '\\');
|
ga_append(gap, '\\');
|
||||||
ga_append(gap, c);
|
ga_append(gap, c);
|
||||||
break;
|
break;
|
||||||
@@ -200,9 +200,9 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
|
|||||||
case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
|
case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
|
||||||
case VVAL_NONE: if ((options & JSON_JS) != 0
|
case VVAL_NONE: if ((options & JSON_JS) != 0
|
||||||
&& (options & JSON_NO_NONE) == 0)
|
&& (options & JSON_NO_NONE) == 0)
|
||||||
/* empty item */
|
// empty item
|
||||||
break;
|
break;
|
||||||
/* FALLTHROUGH */
|
// FALLTHROUGH
|
||||||
case VVAL_NULL: ga_concat(gap, (char_u *)"null"); break;
|
case VVAL_NULL: ga_concat(gap, (char_u *)"null"); break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -222,7 +222,7 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
|
|||||||
case VAR_PARTIAL:
|
case VAR_PARTIAL:
|
||||||
case VAR_JOB:
|
case VAR_JOB:
|
||||||
case VAR_CHANNEL:
|
case VAR_CHANNEL:
|
||||||
/* no JSON equivalent TODO: better error */
|
// no JSON equivalent TODO: better error
|
||||||
emsg(_(e_invarg));
|
emsg(_(e_invarg));
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
|
|||||||
&& li->li_next == NULL
|
&& li->li_next == NULL
|
||||||
&& li->li_tv.v_type == VAR_SPECIAL
|
&& li->li_tv.v_type == VAR_SPECIAL
|
||||||
&& li->li_tv.vval.v_number == VVAL_NONE)
|
&& li->li_tv.vval.v_number == VVAL_NONE)
|
||||||
/* add an extra comma if the last item is v:none */
|
// add an extra comma if the last item is v:none
|
||||||
ga_append(gap, ',');
|
ga_append(gap, ',');
|
||||||
li = li->li_next;
|
li = li->li_next;
|
||||||
if (li != NULL)
|
if (li != NULL)
|
||||||
@@ -405,21 +405,21 @@ json_decode_string(js_read_T *reader, typval_T *res, int quote)
|
|||||||
if (res != NULL)
|
if (res != NULL)
|
||||||
ga_init2(&ga, 1, 200);
|
ga_init2(&ga, 1, 200);
|
||||||
|
|
||||||
p = reader->js_buf + reader->js_used + 1; /* skip over " or ' */
|
p = reader->js_buf + reader->js_used + 1; // skip over " or '
|
||||||
while (*p != quote)
|
while (*p != quote)
|
||||||
{
|
{
|
||||||
/* The JSON is always expected to be utf-8, thus use utf functions
|
// The JSON is always expected to be utf-8, thus use utf functions
|
||||||
* here. The string is converted below if needed. */
|
// here. The string is converted below if needed.
|
||||||
if (*p == NUL || p[1] == NUL || utf_ptr2len(p) < utf_byte2len(*p))
|
if (*p == NUL || p[1] == NUL || utf_ptr2len(p) < utf_byte2len(*p))
|
||||||
{
|
{
|
||||||
/* Not enough bytes to make a character or end of the string. Get
|
// Not enough bytes to make a character or end of the string. Get
|
||||||
* more if possible. */
|
// more if possible.
|
||||||
if (reader->js_fill == NULL)
|
if (reader->js_fill == NULL)
|
||||||
break;
|
break;
|
||||||
len = (int)(reader->js_end - p);
|
len = (int)(reader->js_end - p);
|
||||||
reader->js_used = (int)(p - reader->js_buf);
|
reader->js_used = (int)(p - reader->js_buf);
|
||||||
if (!reader->js_fill(reader))
|
if (!reader->js_fill(reader))
|
||||||
break; /* didn't get more */
|
break; // didn't get more
|
||||||
p = reader->js_buf + reader->js_used;
|
p = reader->js_buf + reader->js_used;
|
||||||
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
||||||
continue;
|
continue;
|
||||||
@@ -466,7 +466,7 @@ json_decode_string(js_read_T *reader, typval_T *res, int quote)
|
|||||||
{
|
{
|
||||||
varnumber_T nr2 = 0;
|
varnumber_T nr2 = 0;
|
||||||
|
|
||||||
/* decode surrogate pair: \ud812\u3456 */
|
// decode surrogate pair: \ud812\u3456
|
||||||
len = 0;
|
len = 0;
|
||||||
vim_str2nr(p + 2, NULL, &len,
|
vim_str2nr(p + 2, NULL, &len,
|
||||||
STR2NR_HEX + STR2NR_FORCE, &nr2, NULL, 4, TRUE);
|
STR2NR_HEX + STR2NR_FORCE, &nr2, NULL, 4, TRUE);
|
||||||
@@ -492,7 +492,7 @@ json_decode_string(js_read_T *reader, typval_T *res, int quote)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* not a special char, skip over \ */
|
// not a special char, skip over backslash
|
||||||
++p;
|
++p;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -533,7 +533,7 @@ json_decode_string(js_read_T *reader, typval_T *res, int quote)
|
|||||||
{
|
{
|
||||||
vimconv_T conv;
|
vimconv_T conv;
|
||||||
|
|
||||||
/* Convert the utf-8 string to 'encoding'. */
|
// Convert the utf-8 string to 'encoding'.
|
||||||
conv.vc_type = CONV_NONE;
|
conv.vc_type = CONV_NONE;
|
||||||
convert_setup(&conv, (char_u*)"utf-8", p_enc);
|
convert_setup(&conv, (char_u*)"utf-8", p_enc);
|
||||||
if (conv.vc_type != CONV_NONE)
|
if (conv.vc_type != CONV_NONE)
|
||||||
@@ -560,14 +560,14 @@ json_decode_string(js_read_T *reader, typval_T *res, int quote)
|
|||||||
}
|
}
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
JSON_ARRAY, /* parsing items in an array */
|
JSON_ARRAY, // parsing items in an array
|
||||||
JSON_OBJECT_KEY, /* parsing key of an object */
|
JSON_OBJECT_KEY, // parsing key of an object
|
||||||
JSON_OBJECT /* parsing item in an object, after the key */
|
JSON_OBJECT // parsing item in an object, after the key
|
||||||
} json_decode_T;
|
} json_decode_T;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
json_decode_T jd_type;
|
json_decode_T jd_type;
|
||||||
typval_T jd_tv; /* the list or dict */
|
typval_T jd_tv; // the list or dict
|
||||||
typval_T jd_key_tv;
|
typval_T jd_key_tv;
|
||||||
char_u *jd_key;
|
char_u *jd_key;
|
||||||
} json_dec_item_T;
|
} json_dec_item_T;
|
||||||
@@ -611,17 +611,17 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
{
|
{
|
||||||
retval = MAYBE;
|
retval = MAYBE;
|
||||||
if (top_item->jd_type == JSON_OBJECT)
|
if (top_item->jd_type == JSON_OBJECT)
|
||||||
/* did get the key, clear it */
|
// did get the key, clear it
|
||||||
clear_tv(&top_item->jd_key_tv);
|
clear_tv(&top_item->jd_key_tv);
|
||||||
goto theend;
|
goto theend;
|
||||||
}
|
}
|
||||||
if (top_item->jd_type == JSON_OBJECT_KEY
|
if (top_item->jd_type == JSON_OBJECT_KEY
|
||||||
|| top_item->jd_type == JSON_ARRAY)
|
|| top_item->jd_type == JSON_ARRAY)
|
||||||
{
|
{
|
||||||
/* Check for end of object or array. */
|
// Check for end of object or array.
|
||||||
if (*p == (top_item->jd_type == JSON_ARRAY ? ']' : '}'))
|
if (*p == (top_item->jd_type == JSON_ARRAY ? ']' : '}'))
|
||||||
{
|
{
|
||||||
++reader->js_used; /* consume the ']' or '}' */
|
++reader->js_used; // consume the ']' or '}'
|
||||||
--stack.ga_len;
|
--stack.ga_len;
|
||||||
if (stack.ga_len == 0)
|
if (stack.ga_len == 0)
|
||||||
{
|
{
|
||||||
@@ -644,7 +644,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
{
|
{
|
||||||
char_u *key;
|
char_u *key;
|
||||||
|
|
||||||
/* accept an object key that is not in quotes */
|
// accept an object key that is not in quotes
|
||||||
key = p = reader->js_buf + reader->js_used;
|
key = p = reader->js_buf + reader->js_used;
|
||||||
while (*p != NUL && *p != ':' && *p > ' ')
|
while (*p != NUL && *p != ':' && *p > ' ')
|
||||||
++p;
|
++p;
|
||||||
@@ -660,7 +660,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
{
|
{
|
||||||
switch (*p)
|
switch (*p)
|
||||||
{
|
{
|
||||||
case '[': /* start of array */
|
case '[': // start of array
|
||||||
if (top_item && top_item->jd_type == JSON_OBJECT_KEY)
|
if (top_item && top_item->jd_type == JSON_OBJECT_KEY)
|
||||||
{
|
{
|
||||||
retval = FAIL;
|
retval = FAIL;
|
||||||
@@ -679,7 +679,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
++reader->js_used; /* consume the '[' */
|
++reader->js_used; // consume the '['
|
||||||
top_item = ((json_dec_item_T *)stack.ga_data)
|
top_item = ((json_dec_item_T *)stack.ga_data)
|
||||||
+ stack.ga_len;
|
+ stack.ga_len;
|
||||||
top_item->jd_type = JSON_ARRAY;
|
top_item->jd_type = JSON_ARRAY;
|
||||||
@@ -691,7 +691,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case '{': /* start of object */
|
case '{': // start of object
|
||||||
if (top_item && top_item->jd_type == JSON_OBJECT_KEY)
|
if (top_item && top_item->jd_type == JSON_OBJECT_KEY)
|
||||||
{
|
{
|
||||||
retval = FAIL;
|
retval = FAIL;
|
||||||
@@ -710,7 +710,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
++reader->js_used; /* consume the '{' */
|
++reader->js_used; // consume the '{'
|
||||||
top_item = ((json_dec_item_T *)stack.ga_data)
|
top_item = ((json_dec_item_T *)stack.ga_data)
|
||||||
+ stack.ga_len;
|
+ stack.ga_len;
|
||||||
top_item->jd_type = JSON_OBJECT_KEY;
|
top_item->jd_type = JSON_OBJECT_KEY;
|
||||||
@@ -722,7 +722,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case '"': /* string */
|
case '"': // string
|
||||||
retval = json_decode_string(reader, cur_item, *p);
|
retval = json_decode_string(reader, cur_item, *p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -736,15 +736,15 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ',': /* comma: empty item */
|
case ',': // comma: empty item
|
||||||
if ((options & JSON_JS) == 0)
|
if ((options & JSON_JS) == 0)
|
||||||
{
|
{
|
||||||
emsg(_(e_invarg));
|
emsg(_(e_invarg));
|
||||||
retval = FAIL;
|
retval = FAIL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* FALLTHROUGH */
|
// FALLTHROUGH
|
||||||
case NUL: /* empty */
|
case NUL: // empty
|
||||||
if (cur_item != NULL)
|
if (cur_item != NULL)
|
||||||
{
|
{
|
||||||
cur_item->v_type = VAR_SPECIAL;
|
cur_item->v_type = VAR_SPECIAL;
|
||||||
@@ -795,7 +795,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
varnumber_T nr;
|
varnumber_T nr;
|
||||||
|
|
||||||
vim_str2nr(reader->js_buf + reader->js_used,
|
vim_str2nr(reader->js_buf + reader->js_used,
|
||||||
NULL, &len, 0, /* what */
|
NULL, &len, 0, // what
|
||||||
&nr, NULL, 0, TRUE);
|
&nr, NULL, 0, TRUE);
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
{
|
{
|
||||||
@@ -881,7 +881,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* check for truncated name */
|
// check for truncated name
|
||||||
len = (int)(reader->js_end - (reader->js_buf + reader->js_used));
|
len = (int)(reader->js_end - (reader->js_buf + reader->js_used));
|
||||||
if (
|
if (
|
||||||
(len < 5 && STRNICMP((char *)p, "false", len) == 0)
|
(len < 5 && STRNICMP((char *)p, "false", len) == 0)
|
||||||
@@ -899,8 +899,8 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We are finished when retval is FAIL or MAYBE and when at the
|
// We are finished when retval is FAIL or MAYBE and when at the
|
||||||
* toplevel. */
|
// toplevel.
|
||||||
if (retval == FAIL)
|
if (retval == FAIL)
|
||||||
break;
|
break;
|
||||||
if (retval == MAYBE || stack.ga_len == 0)
|
if (retval == MAYBE || stack.ga_len == 0)
|
||||||
@@ -1037,7 +1037,7 @@ item_end:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get here when parsing failed. */
|
// Get here when parsing failed.
|
||||||
if (res != NULL)
|
if (res != NULL)
|
||||||
{
|
{
|
||||||
clear_tv(res);
|
clear_tv(res);
|
||||||
@@ -1061,7 +1061,7 @@ json_decode_all(js_read_T *reader, typval_T *res, int options)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* We find the end once, to avoid calling strlen() many times. */
|
// We find the end once, to avoid calling strlen() many times.
|
||||||
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
||||||
json_skip_white(reader);
|
json_skip_white(reader);
|
||||||
ret = json_decode_item(reader, res, options);
|
ret = json_decode_item(reader, res, options);
|
||||||
@@ -1093,7 +1093,7 @@ json_decode(js_read_T *reader, typval_T *res, int options)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* We find the end once, to avoid calling strlen() many times. */
|
// We find the end once, to avoid calling strlen() many times.
|
||||||
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
||||||
json_skip_white(reader);
|
json_skip_white(reader);
|
||||||
ret = json_decode_item(reader, res, options);
|
ret = json_decode_item(reader, res, options);
|
||||||
@@ -1119,7 +1119,7 @@ json_find_end(js_read_T *reader, int options)
|
|||||||
int used_save = reader->js_used;
|
int used_save = reader->js_used;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* We find the end once, to avoid calling strlen() many times. */
|
// We find the end once, to avoid calling strlen() many times.
|
||||||
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
reader->js_end = reader->js_buf + STRLEN(reader->js_buf);
|
||||||
json_skip_white(reader);
|
json_skip_white(reader);
|
||||||
ret = json_decode_item(reader, NULL, options);
|
ret = json_decode_item(reader, NULL, options);
|
||||||
|
@@ -14,16 +14,16 @@
|
|||||||
#undef NDEBUG
|
#undef NDEBUG
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
/* Must include main.c because it contains much more than just main() */
|
// Must include main.c because it contains much more than just main()
|
||||||
#define NO_VIM_MAIN
|
#define NO_VIM_MAIN
|
||||||
#include "main.c"
|
#include "main.c"
|
||||||
|
|
||||||
/* This file has to be included because the tested functions are static */
|
// This file has to be included because the tested functions are static
|
||||||
#include "json.c"
|
#include "json.c"
|
||||||
|
|
||||||
#if defined(FEAT_EVAL)
|
#if defined(FEAT_EVAL)
|
||||||
/*
|
/*
|
||||||
* Test json_find_end() with imcomplete items.
|
* Test json_find_end() with incomplete items.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
test_decode_find_end(void)
|
test_decode_find_end(void)
|
||||||
@@ -33,7 +33,7 @@ test_decode_find_end(void)
|
|||||||
reader.js_fill = NULL;
|
reader.js_fill = NULL;
|
||||||
reader.js_used = 0;
|
reader.js_used = 0;
|
||||||
|
|
||||||
/* string and incomplete string */
|
// string and incomplete string
|
||||||
reader.js_buf = (char_u *)"\"hello\"";
|
reader.js_buf = (char_u *)"\"hello\"";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)" \"hello\" ";
|
reader.js_buf = (char_u *)" \"hello\" ";
|
||||||
@@ -41,13 +41,13 @@ test_decode_find_end(void)
|
|||||||
reader.js_buf = (char_u *)"\"hello";
|
reader.js_buf = (char_u *)"\"hello";
|
||||||
assert(json_find_end(&reader, 0) == MAYBE);
|
assert(json_find_end(&reader, 0) == MAYBE);
|
||||||
|
|
||||||
/* number and dash (incomplete number) */
|
// number and dash (incomplete number)
|
||||||
reader.js_buf = (char_u *)"123";
|
reader.js_buf = (char_u *)"123";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)"-";
|
reader.js_buf = (char_u *)"-";
|
||||||
assert(json_find_end(&reader, 0) == MAYBE);
|
assert(json_find_end(&reader, 0) == MAYBE);
|
||||||
|
|
||||||
/* false, true and null, also incomplete */
|
// false, true and null, also incomplete
|
||||||
reader.js_buf = (char_u *)"false";
|
reader.js_buf = (char_u *)"false";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)"f";
|
reader.js_buf = (char_u *)"f";
|
||||||
@@ -77,7 +77,7 @@ test_decode_find_end(void)
|
|||||||
reader.js_buf = (char_u *)"nul";
|
reader.js_buf = (char_u *)"nul";
|
||||||
assert(json_find_end(&reader, 0) == MAYBE);
|
assert(json_find_end(&reader, 0) == MAYBE);
|
||||||
|
|
||||||
/* object without white space */
|
// object without white space
|
||||||
reader.js_buf = (char_u *)"{\"a\":123}";
|
reader.js_buf = (char_u *)"{\"a\":123}";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)"{\"a\":123";
|
reader.js_buf = (char_u *)"{\"a\":123";
|
||||||
@@ -93,7 +93,7 @@ test_decode_find_end(void)
|
|||||||
reader.js_buf = (char_u *)"{";
|
reader.js_buf = (char_u *)"{";
|
||||||
assert(json_find_end(&reader, 0) == MAYBE);
|
assert(json_find_end(&reader, 0) == MAYBE);
|
||||||
|
|
||||||
/* object with white space */
|
// object with white space
|
||||||
reader.js_buf = (char_u *)" { \"a\" : 123 } ";
|
reader.js_buf = (char_u *)" { \"a\" : 123 } ";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)" { \"a\" : 123 ";
|
reader.js_buf = (char_u *)" { \"a\" : 123 ";
|
||||||
@@ -107,13 +107,13 @@ test_decode_find_end(void)
|
|||||||
reader.js_buf = (char_u *)" { ";
|
reader.js_buf = (char_u *)" { ";
|
||||||
assert(json_find_end(&reader, 0) == MAYBE);
|
assert(json_find_end(&reader, 0) == MAYBE);
|
||||||
|
|
||||||
/* JS object with white space */
|
// JS object with white space
|
||||||
reader.js_buf = (char_u *)" { a : 123 } ";
|
reader.js_buf = (char_u *)" { a : 123 } ";
|
||||||
assert(json_find_end(&reader, JSON_JS) == OK);
|
assert(json_find_end(&reader, JSON_JS) == OK);
|
||||||
reader.js_buf = (char_u *)" { a : ";
|
reader.js_buf = (char_u *)" { a : ";
|
||||||
assert(json_find_end(&reader, JSON_JS) == MAYBE);
|
assert(json_find_end(&reader, JSON_JS) == MAYBE);
|
||||||
|
|
||||||
/* array without white space */
|
// array without white space
|
||||||
reader.js_buf = (char_u *)"[\"a\",123]";
|
reader.js_buf = (char_u *)"[\"a\",123]";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)"[\"a\",123";
|
reader.js_buf = (char_u *)"[\"a\",123";
|
||||||
@@ -129,7 +129,7 @@ test_decode_find_end(void)
|
|||||||
reader.js_buf = (char_u *)"[";
|
reader.js_buf = (char_u *)"[";
|
||||||
assert(json_find_end(&reader, 0) == MAYBE);
|
assert(json_find_end(&reader, 0) == MAYBE);
|
||||||
|
|
||||||
/* array with white space */
|
// array with white space
|
||||||
reader.js_buf = (char_u *)" [ \"a\" , 123 ] ";
|
reader.js_buf = (char_u *)" [ \"a\" , 123 ] ";
|
||||||
assert(json_find_end(&reader, 0) == OK);
|
assert(json_find_end(&reader, 0) == OK);
|
||||||
reader.js_buf = (char_u *)" [ \"a\" , 123 ";
|
reader.js_buf = (char_u *)" [ \"a\" , 123 ";
|
||||||
|
@@ -14,11 +14,11 @@
|
|||||||
#undef NDEBUG
|
#undef NDEBUG
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
/* Must include main.c because it contains much more than just main() */
|
// Must include main.c because it contains much more than just main()
|
||||||
#define NO_VIM_MAIN
|
#define NO_VIM_MAIN
|
||||||
#include "main.c"
|
#include "main.c"
|
||||||
|
|
||||||
/* This file has to be included because the tested functions are static */
|
// This file has to be included because the tested functions are static
|
||||||
#include "charset.c"
|
#include "charset.c"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -38,7 +38,7 @@ test_isword_funcs_utf8(void)
|
|||||||
buf.b_p_isk = (char_u *)"@,48-57,_,128-167,224-235";
|
buf.b_p_isk = (char_u *)"@,48-57,_,128-167,224-235";
|
||||||
|
|
||||||
curbuf = &buf;
|
curbuf = &buf;
|
||||||
mb_init(); /* calls init_chartab() */
|
mb_init(); // calls init_chartab()
|
||||||
|
|
||||||
for (c = 0; c < 0x10000; ++c)
|
for (c = 0; c < 0x10000; ++c)
|
||||||
{
|
{
|
||||||
|
156
src/list.c
156
src/list.c
@@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
static char *e_listblobarg = N_("E899: Argument of %s must be a List or Blob");
|
static char *e_listblobarg = N_("E899: Argument of %s must be a List or Blob");
|
||||||
|
|
||||||
/* List heads for garbage collection. */
|
// List heads for garbage collection.
|
||||||
static list_T *first_list = NULL; /* list of all lists */
|
static list_T *first_list = NULL; // list of all lists
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add a watcher to a list.
|
* Add a watcher to a list.
|
||||||
@@ -77,7 +77,7 @@ list_alloc(void)
|
|||||||
l = ALLOC_CLEAR_ONE(list_T);
|
l = ALLOC_CLEAR_ONE(list_T);
|
||||||
if (l != NULL)
|
if (l != NULL)
|
||||||
{
|
{
|
||||||
/* Prepend the list to the list of lists for garbage collection. */
|
// Prepend the list to the list of lists for garbage collection.
|
||||||
if (first_list != NULL)
|
if (first_list != NULL)
|
||||||
first_list->lv_used_prev = l;
|
first_list->lv_used_prev = l;
|
||||||
l->lv_used_prev = NULL;
|
l->lv_used_prev = NULL;
|
||||||
@@ -165,7 +165,7 @@ list_free_contents(list_T *l)
|
|||||||
|
|
||||||
for (item = l->lv_first; item != NULL; item = l->lv_first)
|
for (item = l->lv_first; item != NULL; item = l->lv_first)
|
||||||
{
|
{
|
||||||
/* Remove the item before deleting it. */
|
// Remove the item before deleting it.
|
||||||
l->lv_first = item->li_next;
|
l->lv_first = item->li_next;
|
||||||
clear_tv(&item->li_tv);
|
clear_tv(&item->li_tv);
|
||||||
vim_free(item);
|
vim_free(item);
|
||||||
@@ -187,9 +187,9 @@ list_free_nonref(int copyID)
|
|||||||
if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
|
if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
|
||||||
&& ll->lv_watch == NULL)
|
&& ll->lv_watch == NULL)
|
||||||
{
|
{
|
||||||
/* Free the List and ordinary items it contains, but don't recurse
|
// Free the List and ordinary items it contains, but don't recurse
|
||||||
* into Lists and Dictionaries, they will be in the list of dicts
|
// into Lists and Dictionaries, they will be in the list of dicts
|
||||||
* or list of lists. */
|
// or list of lists.
|
||||||
list_free_contents(ll);
|
list_free_contents(ll);
|
||||||
did_free = TRUE;
|
did_free = TRUE;
|
||||||
}
|
}
|
||||||
@@ -199,7 +199,7 @@ list_free_nonref(int copyID)
|
|||||||
static void
|
static void
|
||||||
list_free_list(list_T *l)
|
list_free_list(list_T *l)
|
||||||
{
|
{
|
||||||
/* Remove the list from the list of lists for garbage collection. */
|
// Remove the list from the list of lists for garbage collection.
|
||||||
if (l->lv_used_prev == NULL)
|
if (l->lv_used_prev == NULL)
|
||||||
first_list = l->lv_used_next;
|
first_list = l->lv_used_next;
|
||||||
else
|
else
|
||||||
@@ -221,9 +221,9 @@ list_free_items(int copyID)
|
|||||||
if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
|
if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
|
||||||
&& ll->lv_watch == NULL)
|
&& ll->lv_watch == NULL)
|
||||||
{
|
{
|
||||||
/* Free the List and ordinary items it contains, but don't recurse
|
// Free the List and ordinary items it contains, but don't recurse
|
||||||
* into Lists and Dictionaries, they will be in the list of dicts
|
// into Lists and Dictionaries, they will be in the list of dicts
|
||||||
* or list of lists. */
|
// or list of lists.
|
||||||
list_free_list(ll);
|
list_free_list(ll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -287,8 +287,8 @@ list_len(list_T *l)
|
|||||||
list_equal(
|
list_equal(
|
||||||
list_T *l1,
|
list_T *l1,
|
||||||
list_T *l2,
|
list_T *l2,
|
||||||
int ic, /* ignore case for strings */
|
int ic, // ignore case for strings
|
||||||
int recursive) /* TRUE when used recursively */
|
int recursive) // TRUE when used recursively
|
||||||
{
|
{
|
||||||
listitem_T *item1, *item2;
|
listitem_T *item1, *item2;
|
||||||
|
|
||||||
@@ -321,32 +321,32 @@ list_find(list_T *l, long n)
|
|||||||
if (l == NULL)
|
if (l == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Negative index is relative to the end. */
|
// Negative index is relative to the end.
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
n = l->lv_len + n;
|
n = l->lv_len + n;
|
||||||
|
|
||||||
/* Check for index out of range. */
|
// Check for index out of range.
|
||||||
if (n < 0 || n >= l->lv_len)
|
if (n < 0 || n >= l->lv_len)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* When there is a cached index may start search from there. */
|
// When there is a cached index may start search from there.
|
||||||
if (l->lv_idx_item != NULL)
|
if (l->lv_idx_item != NULL)
|
||||||
{
|
{
|
||||||
if (n < l->lv_idx / 2)
|
if (n < l->lv_idx / 2)
|
||||||
{
|
{
|
||||||
/* closest to the start of the list */
|
// closest to the start of the list
|
||||||
item = l->lv_first;
|
item = l->lv_first;
|
||||||
idx = 0;
|
idx = 0;
|
||||||
}
|
}
|
||||||
else if (n > (l->lv_idx + l->lv_len) / 2)
|
else if (n > (l->lv_idx + l->lv_len) / 2)
|
||||||
{
|
{
|
||||||
/* closest to the end of the list */
|
// closest to the end of the list
|
||||||
item = l->lv_last;
|
item = l->lv_last;
|
||||||
idx = l->lv_len - 1;
|
idx = l->lv_len - 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* closest to the cached index */
|
// closest to the cached index
|
||||||
item = l->lv_idx_item;
|
item = l->lv_idx_item;
|
||||||
idx = l->lv_idx;
|
idx = l->lv_idx;
|
||||||
}
|
}
|
||||||
@@ -355,13 +355,13 @@ list_find(list_T *l, long n)
|
|||||||
{
|
{
|
||||||
if (n < l->lv_len / 2)
|
if (n < l->lv_len / 2)
|
||||||
{
|
{
|
||||||
/* closest to the start of the list */
|
// closest to the start of the list
|
||||||
item = l->lv_first;
|
item = l->lv_first;
|
||||||
idx = 0;
|
idx = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* closest to the end of the list */
|
// closest to the end of the list
|
||||||
item = l->lv_last;
|
item = l->lv_last;
|
||||||
idx = l->lv_len - 1;
|
idx = l->lv_len - 1;
|
||||||
}
|
}
|
||||||
@@ -369,18 +369,18 @@ list_find(list_T *l, long n)
|
|||||||
|
|
||||||
while (n > idx)
|
while (n > idx)
|
||||||
{
|
{
|
||||||
/* search forward */
|
// search forward
|
||||||
item = item->li_next;
|
item = item->li_next;
|
||||||
++idx;
|
++idx;
|
||||||
}
|
}
|
||||||
while (n < idx)
|
while (n < idx)
|
||||||
{
|
{
|
||||||
/* search backward */
|
// search backward
|
||||||
item = item->li_prev;
|
item = item->li_prev;
|
||||||
--idx;
|
--idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* cache the used index */
|
// cache the used index
|
||||||
l->lv_idx = idx;
|
l->lv_idx = idx;
|
||||||
l->lv_idx_item = item;
|
l->lv_idx_item = item;
|
||||||
|
|
||||||
@@ -394,7 +394,7 @@ list_find(list_T *l, long n)
|
|||||||
list_find_nr(
|
list_find_nr(
|
||||||
list_T *l,
|
list_T *l,
|
||||||
long idx,
|
long idx,
|
||||||
int *errorp) /* set to TRUE when something wrong */
|
int *errorp) // set to TRUE when something wrong
|
||||||
{
|
{
|
||||||
listitem_T *li;
|
listitem_T *li;
|
||||||
|
|
||||||
@@ -453,7 +453,7 @@ list_append(list_T *l, listitem_T *item)
|
|||||||
{
|
{
|
||||||
if (l->lv_last == NULL)
|
if (l->lv_last == NULL)
|
||||||
{
|
{
|
||||||
/* empty list */
|
// empty list
|
||||||
l->lv_first = item;
|
l->lv_first = item;
|
||||||
l->lv_last = item;
|
l->lv_last = item;
|
||||||
item->li_prev = NULL;
|
item->li_prev = NULL;
|
||||||
@@ -585,11 +585,11 @@ list_insert_tv(list_T *l, typval_T *tv, listitem_T *item)
|
|||||||
list_insert(list_T *l, listitem_T *ni, listitem_T *item)
|
list_insert(list_T *l, listitem_T *ni, listitem_T *item)
|
||||||
{
|
{
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
/* Append new item at end of list. */
|
// Append new item at end of list.
|
||||||
list_append(l, ni);
|
list_append(l, ni);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Insert new item before existing item. */
|
// Insert new item before existing item.
|
||||||
ni->li_prev = item->li_prev;
|
ni->li_prev = item->li_prev;
|
||||||
ni->li_next = item;
|
ni->li_next = item;
|
||||||
if (item->li_prev == NULL)
|
if (item->li_prev == NULL)
|
||||||
@@ -618,8 +618,8 @@ list_extend(list_T *l1, list_T *l2, listitem_T *bef)
|
|||||||
listitem_T *item;
|
listitem_T *item;
|
||||||
int todo = l2->lv_len;
|
int todo = l2->lv_len;
|
||||||
|
|
||||||
/* We also quit the loop when we have inserted the original item count of
|
// We also quit the loop when we have inserted the original item count of
|
||||||
* the list, avoid a hang when we extend a list with itself. */
|
// the list, avoid a hang when we extend a list with itself.
|
||||||
for (item = l2->lv_first; item != NULL && --todo >= 0; item = item->li_next)
|
for (item = l2->lv_first; item != NULL && --todo >= 0; item = item->li_next)
|
||||||
if (list_insert_tv(l1, &item->li_tv, bef) == FAIL)
|
if (list_insert_tv(l1, &item->li_tv, bef) == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -638,14 +638,14 @@ list_concat(list_T *l1, list_T *l2, typval_T *tv)
|
|||||||
if (l1 == NULL || l2 == NULL)
|
if (l1 == NULL || l2 == NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
/* make a copy of the first list. */
|
// make a copy of the first list.
|
||||||
l = list_copy(l1, FALSE, 0);
|
l = list_copy(l1, FALSE, 0);
|
||||||
if (l == NULL)
|
if (l == NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
tv->v_type = VAR_LIST;
|
tv->v_type = VAR_LIST;
|
||||||
tv->vval.v_list = l;
|
tv->vval.v_list = l;
|
||||||
|
|
||||||
/* append all items from the second list */
|
// append all items from the second list
|
||||||
return list_extend(l, l2, NULL);
|
return list_extend(l, l2, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -670,8 +670,8 @@ list_copy(list_T *orig, int deep, int copyID)
|
|||||||
{
|
{
|
||||||
if (copyID != 0)
|
if (copyID != 0)
|
||||||
{
|
{
|
||||||
/* Do this before adding the items, because one of the items may
|
// Do this before adding the items, because one of the items may
|
||||||
* refer back to this list. */
|
// refer back to this list.
|
||||||
orig->lv_copyID = copyID;
|
orig->lv_copyID = copyID;
|
||||||
orig->lv_copylist = copy;
|
orig->lv_copylist = copy;
|
||||||
}
|
}
|
||||||
@@ -715,7 +715,7 @@ vimlist_remove(list_T *l, listitem_T *item, listitem_T *item2)
|
|||||||
{
|
{
|
||||||
listitem_T *ip;
|
listitem_T *ip;
|
||||||
|
|
||||||
/* notify watchers */
|
// notify watchers
|
||||||
for (ip = item; ip != NULL; ip = ip->li_next)
|
for (ip = item; ip != NULL; ip = ip->li_next)
|
||||||
{
|
{
|
||||||
--l->lv_len;
|
--l->lv_len;
|
||||||
@@ -766,13 +766,13 @@ typedef struct join_S {
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
list_join_inner(
|
list_join_inner(
|
||||||
garray_T *gap, /* to store the result in */
|
garray_T *gap, // to store the result in
|
||||||
list_T *l,
|
list_T *l,
|
||||||
char_u *sep,
|
char_u *sep,
|
||||||
int echo_style,
|
int echo_style,
|
||||||
int restore_copyID,
|
int restore_copyID,
|
||||||
int copyID,
|
int copyID,
|
||||||
garray_T *join_gap) /* to keep each list item string */
|
garray_T *join_gap) // to keep each list item string
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
join_T *p;
|
join_T *p;
|
||||||
@@ -784,7 +784,7 @@ list_join_inner(
|
|||||||
listitem_T *item;
|
listitem_T *item;
|
||||||
char_u *s;
|
char_u *s;
|
||||||
|
|
||||||
/* Stringify each item in the list. */
|
// Stringify each item in the list.
|
||||||
for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
|
for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
|
||||||
{
|
{
|
||||||
s = echo_string_core(&item->li_tv, &tofree, numbuf, copyID,
|
s = echo_string_core(&item->li_tv, &tofree, numbuf, copyID,
|
||||||
@@ -809,12 +809,12 @@ list_join_inner(
|
|||||||
}
|
}
|
||||||
|
|
||||||
line_breakcheck();
|
line_breakcheck();
|
||||||
if (did_echo_string_emsg) /* recursion error, bail out */
|
if (did_echo_string_emsg) // recursion error, bail out
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate result buffer with its total size, avoid re-allocation and
|
// Allocate result buffer with its total size, avoid re-allocation and
|
||||||
* multiple copy operations. Add 2 for a tailing ']' and NUL. */
|
// multiple copy operations. Add 2 for a tailing ']' and NUL.
|
||||||
if (join_gap->ga_len >= 2)
|
if (join_gap->ga_len >= 2)
|
||||||
sumlen += (int)STRLEN(sep) * (join_gap->ga_len - 1);
|
sumlen += (int)STRLEN(sep) * (join_gap->ga_len - 1);
|
||||||
if (ga_grow(gap, sumlen + 2) == FAIL)
|
if (ga_grow(gap, sumlen + 2) == FAIL)
|
||||||
@@ -856,12 +856,12 @@ list_join(
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (l->lv_len < 1)
|
if (l->lv_len < 1)
|
||||||
return OK; /* nothing to do */
|
return OK; // nothing to do
|
||||||
ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len);
|
ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len);
|
||||||
retval = list_join_inner(gap, l, sep, echo_style, restore_copyID,
|
retval = list_join_inner(gap, l, sep, echo_style, restore_copyID,
|
||||||
copyID, &join_ga);
|
copyID, &join_ga);
|
||||||
|
|
||||||
/* Dispose each item in join_ga. */
|
// Dispose each item in join_ga.
|
||||||
if (join_ga.ga_data != NULL)
|
if (join_ga.ga_data != NULL)
|
||||||
{
|
{
|
||||||
p = (join_T *)join_ga.ga_data;
|
p = (join_T *)join_ga.ga_data;
|
||||||
@@ -931,7 +931,7 @@ get_list_tv(char_u **arg, typval_T *rettv, int evaluate)
|
|||||||
*arg = skipwhite(*arg + 1);
|
*arg = skipwhite(*arg + 1);
|
||||||
while (**arg != ']' && **arg != NUL)
|
while (**arg != ']' && **arg != NUL)
|
||||||
{
|
{
|
||||||
if (eval1(arg, &tv, evaluate) == FAIL) /* recursive! */
|
if (eval1(arg, &tv, evaluate) == FAIL) // recursive!
|
||||||
goto failret;
|
goto failret;
|
||||||
if (evaluate)
|
if (evaluate)
|
||||||
{
|
{
|
||||||
@@ -1120,7 +1120,7 @@ list_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg)
|
|||||||
{
|
{
|
||||||
if (argvars[2].v_type == VAR_UNKNOWN)
|
if (argvars[2].v_type == VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
/* Remove one item, return its value. */
|
// Remove one item, return its value.
|
||||||
vimlist_remove(l, item, item);
|
vimlist_remove(l, item, item);
|
||||||
*rettv = item->li_tv;
|
*rettv = item->li_tv;
|
||||||
vim_free(item);
|
vim_free(item);
|
||||||
@@ -1144,7 +1144,7 @@ list_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg)
|
|||||||
if (li == item2)
|
if (li == item2)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (li == NULL) /* didn't find "item2" after "item" */
|
if (li == NULL) // didn't find "item2" after "item"
|
||||||
emsg(_(e_invrange));
|
emsg(_(e_invrange));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1167,14 +1167,14 @@ list_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg)
|
|||||||
static int item_compare(const void *s1, const void *s2);
|
static int item_compare(const void *s1, const void *s2);
|
||||||
static int item_compare2(const void *s1, const void *s2);
|
static int item_compare2(const void *s1, const void *s2);
|
||||||
|
|
||||||
/* struct used in the array that's given to qsort() */
|
// struct used in the array that's given to qsort()
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
listitem_T *item;
|
listitem_T *item;
|
||||||
int idx;
|
int idx;
|
||||||
} sortItem_T;
|
} sortItem_T;
|
||||||
|
|
||||||
/* struct storing information about current sort */
|
// struct storing information about current sort
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int item_compare_ic;
|
int item_compare_ic;
|
||||||
@@ -1229,9 +1229,9 @@ item_compare(const void *s1, const void *s2)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* tv2string() puts quotes around a string and allocates memory. Don't do
|
// tv2string() puts quotes around a string and allocates memory. Don't do
|
||||||
* that for string variables. Use a single quote when comparing with a
|
// that for string variables. Use a single quote when comparing with a
|
||||||
* non-string to do what the docs promise. */
|
// non-string to do what the docs promise.
|
||||||
if (tv1->v_type == VAR_STRING)
|
if (tv1->v_type == VAR_STRING)
|
||||||
{
|
{
|
||||||
if (tv2->v_type != VAR_STRING || sortinfo->item_compare_numeric)
|
if (tv2->v_type != VAR_STRING || sortinfo->item_compare_numeric)
|
||||||
@@ -1269,8 +1269,8 @@ item_compare(const void *s1, const void *s2)
|
|||||||
res = n1 == n2 ? 0 : n1 > n2 ? 1 : -1;
|
res = n1 == n2 ? 0 : n1 > n2 ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* When the result would be zero, compare the item indexes. Makes the
|
// When the result would be zero, compare the item indexes. Makes the
|
||||||
* sort stable. */
|
// sort stable.
|
||||||
if (res == 0 && !sortinfo->item_compare_keep_zero)
|
if (res == 0 && !sortinfo->item_compare_keep_zero)
|
||||||
res = si1->idx > si2->idx ? 1 : -1;
|
res = si1->idx > si2->idx ? 1 : -1;
|
||||||
|
|
||||||
@@ -1290,7 +1290,7 @@ item_compare2(const void *s1, const void *s2)
|
|||||||
partial_T *partial = sortinfo->item_compare_partial;
|
partial_T *partial = sortinfo->item_compare_partial;
|
||||||
funcexe_T funcexe;
|
funcexe_T funcexe;
|
||||||
|
|
||||||
/* shortcut after failure in previous call; compare all items equal */
|
// shortcut after failure in previous call; compare all items equal
|
||||||
if (sortinfo->item_compare_func_err)
|
if (sortinfo->item_compare_func_err)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -1302,12 +1302,12 @@ item_compare2(const void *s1, const void *s2)
|
|||||||
else
|
else
|
||||||
func_name = partial_name(partial);
|
func_name = partial_name(partial);
|
||||||
|
|
||||||
/* Copy the values. This is needed to be able to set v_lock to VAR_FIXED
|
// Copy the values. This is needed to be able to set v_lock to VAR_FIXED
|
||||||
* in the copy without changing the original list items. */
|
// in the copy without changing the original list items.
|
||||||
copy_tv(&si1->item->li_tv, &argv[0]);
|
copy_tv(&si1->item->li_tv, &argv[0]);
|
||||||
copy_tv(&si2->item->li_tv, &argv[1]);
|
copy_tv(&si2->item->li_tv, &argv[1]);
|
||||||
|
|
||||||
rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */
|
rettv.v_type = VAR_UNKNOWN; // clear_tv() uses this
|
||||||
vim_memset(&funcexe, 0, sizeof(funcexe));
|
vim_memset(&funcexe, 0, sizeof(funcexe));
|
||||||
funcexe.evaluate = TRUE;
|
funcexe.evaluate = TRUE;
|
||||||
funcexe.partial = partial;
|
funcexe.partial = partial;
|
||||||
@@ -1321,11 +1321,11 @@ item_compare2(const void *s1, const void *s2)
|
|||||||
else
|
else
|
||||||
res = (int)tv_get_number_chk(&rettv, &sortinfo->item_compare_func_err);
|
res = (int)tv_get_number_chk(&rettv, &sortinfo->item_compare_func_err);
|
||||||
if (sortinfo->item_compare_func_err)
|
if (sortinfo->item_compare_func_err)
|
||||||
res = ITEM_COMPARE_FAIL; /* return value has wrong type */
|
res = ITEM_COMPARE_FAIL; // return value has wrong type
|
||||||
clear_tv(&rettv);
|
clear_tv(&rettv);
|
||||||
|
|
||||||
/* When the result would be zero, compare the pointers themselves. Makes
|
// When the result would be zero, compare the pointers themselves. Makes
|
||||||
* the sort stable. */
|
// the sort stable.
|
||||||
if (res == 0 && !sortinfo->item_compare_keep_zero)
|
if (res == 0 && !sortinfo->item_compare_keep_zero)
|
||||||
res = si1->idx > si2->idx ? 1 : -1;
|
res = si1->idx > si2->idx ? 1 : -1;
|
||||||
|
|
||||||
@@ -1346,8 +1346,8 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
long len;
|
long len;
|
||||||
long i;
|
long i;
|
||||||
|
|
||||||
/* Pointer to current info struct used in compare function. Save and
|
// Pointer to current info struct used in compare function. Save and
|
||||||
* restore the current one for nested calls. */
|
// restore the current one for nested calls.
|
||||||
old_sortinfo = sortinfo;
|
old_sortinfo = sortinfo;
|
||||||
sortinfo = &info;
|
sortinfo = &info;
|
||||||
|
|
||||||
@@ -1364,7 +1364,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
|
|
||||||
len = list_len(l);
|
len = list_len(l);
|
||||||
if (len <= 1)
|
if (len <= 1)
|
||||||
goto theend; /* short list sorts pretty quickly */
|
goto theend; // short list sorts pretty quickly
|
||||||
|
|
||||||
info.item_compare_ic = FALSE;
|
info.item_compare_ic = FALSE;
|
||||||
info.item_compare_numeric = FALSE;
|
info.item_compare_numeric = FALSE;
|
||||||
@@ -1377,7 +1377,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
info.item_compare_selfdict = NULL;
|
info.item_compare_selfdict = NULL;
|
||||||
if (argvars[1].v_type != VAR_UNKNOWN)
|
if (argvars[1].v_type != VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
/* optional second argument: {func} */
|
// optional second argument: {func}
|
||||||
if (argvars[1].v_type == VAR_FUNC)
|
if (argvars[1].v_type == VAR_FUNC)
|
||||||
info.item_compare_func = argvars[1].vval.v_string;
|
info.item_compare_func = argvars[1].vval.v_string;
|
||||||
else if (argvars[1].v_type == VAR_PARTIAL)
|
else if (argvars[1].v_type == VAR_PARTIAL)
|
||||||
@@ -1388,7 +1388,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
|
|
||||||
i = (long)tv_get_number_chk(&argvars[1], &error);
|
i = (long)tv_get_number_chk(&argvars[1], &error);
|
||||||
if (error)
|
if (error)
|
||||||
goto theend; /* type error; errmsg already given */
|
goto theend; // type error; errmsg already given
|
||||||
if (i == 1)
|
if (i == 1)
|
||||||
info.item_compare_ic = TRUE;
|
info.item_compare_ic = TRUE;
|
||||||
else if (argvars[1].v_type != VAR_NUMBER)
|
else if (argvars[1].v_type != VAR_NUMBER)
|
||||||
@@ -1402,7 +1402,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
{
|
{
|
||||||
if (*info.item_compare_func == NUL)
|
if (*info.item_compare_func == NUL)
|
||||||
{
|
{
|
||||||
/* empty string means default sort */
|
// empty string means default sort
|
||||||
info.item_compare_func = NULL;
|
info.item_compare_func = NULL;
|
||||||
}
|
}
|
||||||
else if (STRCMP(info.item_compare_func, "n") == 0)
|
else if (STRCMP(info.item_compare_func, "n") == 0)
|
||||||
@@ -1432,7 +1432,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
|
|
||||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
/* optional third argument: {dict} */
|
// optional third argument: {dict}
|
||||||
if (argvars[2].v_type != VAR_DICT)
|
if (argvars[2].v_type != VAR_DICT)
|
||||||
{
|
{
|
||||||
emsg(_(e_dictreq));
|
emsg(_(e_dictreq));
|
||||||
@@ -1442,7 +1442,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make an array with each entry pointing to an item in the List. */
|
// Make an array with each entry pointing to an item in the List.
|
||||||
ptrs = ALLOC_MULT(sortItem_T, len);
|
ptrs = ALLOC_MULT(sortItem_T, len);
|
||||||
if (ptrs == NULL)
|
if (ptrs == NULL)
|
||||||
goto theend;
|
goto theend;
|
||||||
@@ -1450,7 +1450,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
i = 0;
|
i = 0;
|
||||||
if (sort)
|
if (sort)
|
||||||
{
|
{
|
||||||
/* sort(): ptrs will be the list to sort */
|
// sort(): ptrs will be the list to sort
|
||||||
for (li = l->lv_first; li != NULL; li = li->li_next)
|
for (li = l->lv_first; li != NULL; li = li->li_next)
|
||||||
{
|
{
|
||||||
ptrs[i].item = li;
|
ptrs[i].item = li;
|
||||||
@@ -1460,7 +1460,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
|
|
||||||
info.item_compare_func_err = FALSE;
|
info.item_compare_func_err = FALSE;
|
||||||
info.item_compare_keep_zero = FALSE;
|
info.item_compare_keep_zero = FALSE;
|
||||||
/* test the compare function */
|
// test the compare function
|
||||||
if ((info.item_compare_func != NULL
|
if ((info.item_compare_func != NULL
|
||||||
|| info.item_compare_partial != NULL)
|
|| info.item_compare_partial != NULL)
|
||||||
&& item_compare2((void *)&ptrs[0], (void *)&ptrs[1])
|
&& item_compare2((void *)&ptrs[0], (void *)&ptrs[1])
|
||||||
@@ -1468,7 +1468,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
emsg(_("E702: Sort compare function failed"));
|
emsg(_("E702: Sort compare function failed"));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Sort the array with item pointers. */
|
// Sort the array with item pointers.
|
||||||
qsort((void *)ptrs, (size_t)len, sizeof(sortItem_T),
|
qsort((void *)ptrs, (size_t)len, sizeof(sortItem_T),
|
||||||
info.item_compare_func == NULL
|
info.item_compare_func == NULL
|
||||||
&& info.item_compare_partial == NULL
|
&& info.item_compare_partial == NULL
|
||||||
@@ -1476,7 +1476,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
|
|
||||||
if (!info.item_compare_func_err)
|
if (!info.item_compare_func_err)
|
||||||
{
|
{
|
||||||
/* Clear the List and append the items in sorted order. */
|
// Clear the List and append the items in sorted order.
|
||||||
l->lv_first = l->lv_last = l->lv_idx_item = NULL;
|
l->lv_first = l->lv_last = l->lv_idx_item = NULL;
|
||||||
l->lv_len = 0;
|
l->lv_len = 0;
|
||||||
for (i = 0; i < len; ++i)
|
for (i = 0; i < len; ++i)
|
||||||
@@ -1488,7 +1488,7 @@ do_sort_uniq(typval_T *argvars, typval_T *rettv, int sort)
|
|||||||
{
|
{
|
||||||
int (*item_compare_func_ptr)(const void *, const void *);
|
int (*item_compare_func_ptr)(const void *, const void *);
|
||||||
|
|
||||||
/* f_uniq(): ptrs will be a stack of items to remove */
|
// f_uniq(): ptrs will be a stack of items to remove
|
||||||
info.item_compare_func_err = FALSE;
|
info.item_compare_func_err = FALSE;
|
||||||
info.item_compare_keep_zero = TRUE;
|
info.item_compare_keep_zero = TRUE;
|
||||||
item_compare_func_ptr = info.item_compare_func != NULL
|
item_compare_func_ptr = info.item_compare_func != NULL
|
||||||
@@ -1774,7 +1774,7 @@ f_add(typval_T *argvars, typval_T *rettv)
|
|||||||
list_T *l;
|
list_T *l;
|
||||||
blob_T *b;
|
blob_T *b;
|
||||||
|
|
||||||
rettv->vval.v_number = 1; /* Default: Failed */
|
rettv->vval.v_number = 1; // Default: Failed
|
||||||
if (argvars[0].v_type == VAR_LIST)
|
if (argvars[0].v_type == VAR_LIST)
|
||||||
{
|
{
|
||||||
if ((l = argvars[0].vval.v_list) != NULL
|
if ((l = argvars[0].vval.v_list) != NULL
|
||||||
@@ -1935,7 +1935,7 @@ f_extend(typval_T *argvars, typval_T *rettv)
|
|||||||
{
|
{
|
||||||
before = (long)tv_get_number_chk(&argvars[2], &error);
|
before = (long)tv_get_number_chk(&argvars[2], &error);
|
||||||
if (error)
|
if (error)
|
||||||
return; /* type error; errmsg already given */
|
return; // type error; errmsg already given
|
||||||
|
|
||||||
if (before == l1->lv_len)
|
if (before == l1->lv_len)
|
||||||
item = NULL;
|
item = NULL;
|
||||||
@@ -1967,14 +1967,14 @@ f_extend(typval_T *argvars, typval_T *rettv)
|
|||||||
if (d1 != NULL && !var_check_lock(d1->dv_lock, arg_errmsg, TRUE)
|
if (d1 != NULL && !var_check_lock(d1->dv_lock, arg_errmsg, TRUE)
|
||||||
&& d2 != NULL)
|
&& d2 != NULL)
|
||||||
{
|
{
|
||||||
/* Check the third argument. */
|
// Check the third argument.
|
||||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
static char *(av[]) = {"keep", "force", "error"};
|
static char *(av[]) = {"keep", "force", "error"};
|
||||||
|
|
||||||
action = tv_get_string_chk(&argvars[2]);
|
action = tv_get_string_chk(&argvars[2]);
|
||||||
if (action == NULL)
|
if (action == NULL)
|
||||||
return; /* type error; errmsg already given */
|
return; // type error; errmsg already given
|
||||||
for (i = 0; i < 3; ++i)
|
for (i = 0; i < 3; ++i)
|
||||||
if (STRCMP(action, av[i]) == 0)
|
if (STRCMP(action, av[i]) == 0)
|
||||||
break;
|
break;
|
||||||
@@ -2051,7 +2051,7 @@ f_insert(typval_T *argvars, typval_T *rettv)
|
|||||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||||
before = (long)tv_get_number_chk(&argvars[2], &error);
|
before = (long)tv_get_number_chk(&argvars[2], &error);
|
||||||
if (error)
|
if (error)
|
||||||
return; /* type error; errmsg already given */
|
return; // type error; errmsg already given
|
||||||
|
|
||||||
if (before == l->lv_len)
|
if (before == l->lv_len)
|
||||||
item = NULL;
|
item = NULL;
|
||||||
|
925
src/main.c
925
src/main.c
File diff suppressed because it is too large
Load Diff
210
src/mark.c
210
src/mark.c
@@ -24,7 +24,7 @@
|
|||||||
* There are marks 'A - 'Z (set by user) and '0 to '9 (set when writing
|
* There are marks 'A - 'Z (set by user) and '0 to '9 (set when writing
|
||||||
* viminfo).
|
* viminfo).
|
||||||
*/
|
*/
|
||||||
static xfmark_T namedfm[NMARKS + EXTRA_MARKS]; /* marks with file nr */
|
static xfmark_T namedfm[NMARKS + EXTRA_MARKS]; // marks with file nr
|
||||||
|
|
||||||
static void fname2fnum(xfmark_T *fm);
|
static void fname2fnum(xfmark_T *fm);
|
||||||
static void fmarks_check_one(xfmark_T *fm, char_u *name, buf_T *buf);
|
static void fmarks_check_one(xfmark_T *fm, char_u *name, buf_T *buf);
|
||||||
@@ -54,7 +54,7 @@ setmark_pos(int c, pos_T *pos, int fnum)
|
|||||||
int i;
|
int i;
|
||||||
buf_T *buf;
|
buf_T *buf;
|
||||||
|
|
||||||
/* Check for a special key (may cause islower() to crash). */
|
// Check for a special key (may cause islower() to crash).
|
||||||
if (c < 0)
|
if (c < 0)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ setmark_pos(int c, pos_T *pos, int fnum)
|
|||||||
if (pos == &curwin->w_cursor)
|
if (pos == &curwin->w_cursor)
|
||||||
{
|
{
|
||||||
setpcmark();
|
setpcmark();
|
||||||
/* keep it even when the cursor doesn't move */
|
// keep it even when the cursor doesn't move
|
||||||
curwin->w_prev_pcmark = curwin->w_pcmark;
|
curwin->w_prev_pcmark = curwin->w_pcmark;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -81,8 +81,8 @@ setmark_pos(int c, pos_T *pos, int fnum)
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allow setting '[ and '] for an autocommand that simulates reading a
|
// Allow setting '[ and '] for an autocommand that simulates reading a
|
||||||
* file. */
|
// file.
|
||||||
if (c == '[')
|
if (c == '[')
|
||||||
{
|
{
|
||||||
buf->b_op_start = *pos;
|
buf->b_op_start = *pos;
|
||||||
@@ -101,7 +101,7 @@ setmark_pos(int c, pos_T *pos, int fnum)
|
|||||||
else
|
else
|
||||||
buf->b_visual.vi_end = *pos;
|
buf->b_visual.vi_end = *pos;
|
||||||
if (buf->b_visual.vi_mode == NUL)
|
if (buf->b_visual.vi_mode == NUL)
|
||||||
/* Visual_mode has not yet been set, use a sane default. */
|
// Visual_mode has not yet been set, use a sane default.
|
||||||
buf->b_visual.vi_mode = 'v';
|
buf->b_visual.vi_mode = 'v';
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@@ -144,7 +144,7 @@ setpcmark(void)
|
|||||||
xfmark_T tempmark;
|
xfmark_T tempmark;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* for :global the mark is set only once */
|
// for :global the mark is set only once
|
||||||
if (global_busy || listcmd_busy || cmdmod.keepjumps)
|
if (global_busy || listcmd_busy || cmdmod.keepjumps)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ setpcmark(void)
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
/* If jumplist is full: remove oldest entry */
|
// If jumplist is full: remove oldest entry
|
||||||
if (++curwin->w_jumplistlen > JUMPLISTSIZE)
|
if (++curwin->w_jumplistlen > JUMPLISTSIZE)
|
||||||
{
|
{
|
||||||
curwin->w_jumplistlen = JUMPLISTSIZE;
|
curwin->w_jumplistlen = JUMPLISTSIZE;
|
||||||
@@ -204,7 +204,7 @@ checkpcmark(void)
|
|||||||
|| curwin->w_pcmark.lnum == 0))
|
|| curwin->w_pcmark.lnum == 0))
|
||||||
{
|
{
|
||||||
curwin->w_pcmark = curwin->w_prev_pcmark;
|
curwin->w_pcmark = curwin->w_prev_pcmark;
|
||||||
curwin->w_prev_pcmark.lnum = 0; /* Show it has been checked */
|
curwin->w_prev_pcmark.lnum = 0; // Show it has been checked
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ movemark(int count)
|
|||||||
|
|
||||||
cleanup_jumplist(curwin, TRUE);
|
cleanup_jumplist(curwin, TRUE);
|
||||||
|
|
||||||
if (curwin->w_jumplistlen == 0) /* nothing to jump to */
|
if (curwin->w_jumplistlen == 0) // nothing to jump to
|
||||||
return (pos_T *)NULL;
|
return (pos_T *)NULL;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
@@ -237,7 +237,7 @@ movemark(int count)
|
|||||||
if (curwin->w_jumplistidx == curwin->w_jumplistlen)
|
if (curwin->w_jumplistidx == curwin->w_jumplistlen)
|
||||||
{
|
{
|
||||||
setpcmark();
|
setpcmark();
|
||||||
--curwin->w_jumplistidx; /* skip the new entry */
|
--curwin->w_jumplistidx; // skip the new entry
|
||||||
if (curwin->w_jumplistidx + count < 0)
|
if (curwin->w_jumplistidx + count < 0)
|
||||||
return (pos_T *)NULL;
|
return (pos_T *)NULL;
|
||||||
}
|
}
|
||||||
@@ -249,16 +249,16 @@ movemark(int count)
|
|||||||
fname2fnum(jmp);
|
fname2fnum(jmp);
|
||||||
if (jmp->fmark.fnum != curbuf->b_fnum)
|
if (jmp->fmark.fnum != curbuf->b_fnum)
|
||||||
{
|
{
|
||||||
/* jump to other file */
|
// jump to other file
|
||||||
if (buflist_findnr(jmp->fmark.fnum) == NULL)
|
if (buflist_findnr(jmp->fmark.fnum) == NULL)
|
||||||
{ /* Skip this one .. */
|
{ // Skip this one ..
|
||||||
count += count < 0 ? -1 : 1;
|
count += count < 0 ? -1 : 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (buflist_getfile(jmp->fmark.fnum, jmp->fmark.mark.lnum,
|
if (buflist_getfile(jmp->fmark.fnum, jmp->fmark.mark.lnum,
|
||||||
0, FALSE) == FAIL)
|
0, FALSE) == FAIL)
|
||||||
return (pos_T *)NULL;
|
return (pos_T *)NULL;
|
||||||
/* Set lnum again, autocommands my have changed it */
|
// Set lnum again, autocommands my have changed it
|
||||||
curwin->w_cursor = jmp->fmark.mark;
|
curwin->w_cursor = jmp->fmark.mark;
|
||||||
pos = (pos_T *)-1;
|
pos = (pos_T *)-1;
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ movechangelist(int count)
|
|||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
if (curbuf->b_changelistlen == 0) /* nothing to jump to */
|
if (curbuf->b_changelistlen == 0) // nothing to jump to
|
||||||
return (pos_T *)NULL;
|
return (pos_T *)NULL;
|
||||||
|
|
||||||
n = curwin->w_changelistidx;
|
n = curwin->w_changelistidx;
|
||||||
@@ -335,38 +335,38 @@ getmark_buf_fnum(
|
|||||||
|
|
||||||
posp = NULL;
|
posp = NULL;
|
||||||
|
|
||||||
/* Check for special key, can't be a mark name and might cause islower()
|
// Check for special key, can't be a mark name and might cause islower()
|
||||||
* to crash. */
|
// to crash.
|
||||||
if (c < 0)
|
if (c < 0)
|
||||||
return posp;
|
return posp;
|
||||||
#ifndef EBCDIC
|
#ifndef EBCDIC
|
||||||
if (c > '~') /* check for islower()/isupper() */
|
if (c > '~') // check for islower()/isupper()
|
||||||
;
|
;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (c == '\'' || c == '`') /* previous context mark */
|
if (c == '\'' || c == '`') // previous context mark
|
||||||
{
|
{
|
||||||
pos_copy = curwin->w_pcmark; /* need to make a copy because */
|
pos_copy = curwin->w_pcmark; // need to make a copy because
|
||||||
posp = &pos_copy; /* w_pcmark may be changed soon */
|
posp = &pos_copy; // w_pcmark may be changed soon
|
||||||
}
|
}
|
||||||
else if (c == '"') /* to pos when leaving buffer */
|
else if (c == '"') // to pos when leaving buffer
|
||||||
posp = &(buf->b_last_cursor);
|
posp = &(buf->b_last_cursor);
|
||||||
else if (c == '^') /* to where Insert mode stopped */
|
else if (c == '^') // to where Insert mode stopped
|
||||||
posp = &(buf->b_last_insert);
|
posp = &(buf->b_last_insert);
|
||||||
else if (c == '.') /* to where last change was made */
|
else if (c == '.') // to where last change was made
|
||||||
posp = &(buf->b_last_change);
|
posp = &(buf->b_last_change);
|
||||||
else if (c == '[') /* to start of previous operator */
|
else if (c == '[') // to start of previous operator
|
||||||
posp = &(buf->b_op_start);
|
posp = &(buf->b_op_start);
|
||||||
else if (c == ']') /* to end of previous operator */
|
else if (c == ']') // to end of previous operator
|
||||||
posp = &(buf->b_op_end);
|
posp = &(buf->b_op_end);
|
||||||
else if (c == '{' || c == '}') /* to previous/next paragraph */
|
else if (c == '{' || c == '}') // to previous/next paragraph
|
||||||
{
|
{
|
||||||
pos_T pos;
|
pos_T pos;
|
||||||
oparg_T oa;
|
oparg_T oa;
|
||||||
int slcb = listcmd_busy;
|
int slcb = listcmd_busy;
|
||||||
|
|
||||||
pos = curwin->w_cursor;
|
pos = curwin->w_cursor;
|
||||||
listcmd_busy = TRUE; /* avoid that '' is changed */
|
listcmd_busy = TRUE; // avoid that '' is changed
|
||||||
if (findpar(&oa.inclusive,
|
if (findpar(&oa.inclusive,
|
||||||
c == '}' ? FORWARD : BACKWARD, 1L, NUL, FALSE))
|
c == '}' ? FORWARD : BACKWARD, 1L, NUL, FALSE))
|
||||||
{
|
{
|
||||||
@@ -376,13 +376,13 @@ getmark_buf_fnum(
|
|||||||
curwin->w_cursor = pos;
|
curwin->w_cursor = pos;
|
||||||
listcmd_busy = slcb;
|
listcmd_busy = slcb;
|
||||||
}
|
}
|
||||||
else if (c == '(' || c == ')') /* to previous/next sentence */
|
else if (c == '(' || c == ')') // to previous/next sentence
|
||||||
{
|
{
|
||||||
pos_T pos;
|
pos_T pos;
|
||||||
int slcb = listcmd_busy;
|
int slcb = listcmd_busy;
|
||||||
|
|
||||||
pos = curwin->w_cursor;
|
pos = curwin->w_cursor;
|
||||||
listcmd_busy = TRUE; /* avoid that '' is changed */
|
listcmd_busy = TRUE; // avoid that '' is changed
|
||||||
if (findsent(c == ')' ? FORWARD : BACKWARD, 1L))
|
if (findsent(c == ')' ? FORWARD : BACKWARD, 1L))
|
||||||
{
|
{
|
||||||
pos_copy = curwin->w_cursor;
|
pos_copy = curwin->w_cursor;
|
||||||
@@ -391,7 +391,7 @@ getmark_buf_fnum(
|
|||||||
curwin->w_cursor = pos;
|
curwin->w_cursor = pos;
|
||||||
listcmd_busy = slcb;
|
listcmd_busy = slcb;
|
||||||
}
|
}
|
||||||
else if (c == '<' || c == '>') /* start/end of visual area */
|
else if (c == '<' || c == '>') // start/end of visual area
|
||||||
{
|
{
|
||||||
startp = &buf->b_visual.vi_start;
|
startp = &buf->b_visual.vi_start;
|
||||||
endp = &buf->b_visual.vi_end;
|
endp = &buf->b_visual.vi_end;
|
||||||
@@ -414,11 +414,11 @@ getmark_buf_fnum(
|
|||||||
pos_copy.coladd = 0;
|
pos_copy.coladd = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ASCII_ISLOWER(c)) /* normal named mark */
|
else if (ASCII_ISLOWER(c)) // normal named mark
|
||||||
{
|
{
|
||||||
posp = &(buf->b_namedm[c - 'a']);
|
posp = &(buf->b_namedm[c - 'a']);
|
||||||
}
|
}
|
||||||
else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) /* named file mark */
|
else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) // named file mark
|
||||||
{
|
{
|
||||||
if (VIM_ISDIGIT(c))
|
if (VIM_ISDIGIT(c))
|
||||||
c = c - '0' + NMARKS;
|
c = c - '0' + NMARKS;
|
||||||
@@ -433,7 +433,7 @@ getmark_buf_fnum(
|
|||||||
*fnum = namedfm[c].fmark.fnum;
|
*fnum = namedfm[c].fmark.fnum;
|
||||||
else if (namedfm[c].fmark.fnum != buf->b_fnum)
|
else if (namedfm[c].fmark.fnum != buf->b_fnum)
|
||||||
{
|
{
|
||||||
/* mark is in another file */
|
// mark is in another file
|
||||||
posp = &pos_copy;
|
posp = &pos_copy;
|
||||||
|
|
||||||
if (namedfm[c].fmark.mark.lnum != 0
|
if (namedfm[c].fmark.mark.lnum != 0
|
||||||
@@ -442,15 +442,15 @@ getmark_buf_fnum(
|
|||||||
if (buflist_getfile(namedfm[c].fmark.fnum,
|
if (buflist_getfile(namedfm[c].fmark.fnum,
|
||||||
(linenr_T)1, GETF_SETMARK, FALSE) == OK)
|
(linenr_T)1, GETF_SETMARK, FALSE) == OK)
|
||||||
{
|
{
|
||||||
/* Set the lnum now, autocommands could have changed it */
|
// Set the lnum now, autocommands could have changed it
|
||||||
curwin->w_cursor = namedfm[c].fmark.mark;
|
curwin->w_cursor = namedfm[c].fmark.mark;
|
||||||
return (pos_T *)-1;
|
return (pos_T *)-1;
|
||||||
}
|
}
|
||||||
pos_copy.lnum = -1; /* can't get file */
|
pos_copy.lnum = -1; // can't get file
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pos_copy.lnum = 0; /* mark exists, but is not valid in
|
pos_copy.lnum = 0; // mark exists, but is not valid in
|
||||||
current buffer */
|
// current buffer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -464,8 +464,8 @@ getmark_buf_fnum(
|
|||||||
*/
|
*/
|
||||||
pos_T *
|
pos_T *
|
||||||
getnextmark(
|
getnextmark(
|
||||||
pos_T *startpos, /* where to start */
|
pos_T *startpos, // where to start
|
||||||
int dir, /* direction for search */
|
int dir, // direction for search
|
||||||
int begin_line)
|
int begin_line)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -474,10 +474,10 @@ getnextmark(
|
|||||||
|
|
||||||
pos = *startpos;
|
pos = *startpos;
|
||||||
|
|
||||||
/* When searching backward and leaving the cursor on the first non-blank,
|
// When searching backward and leaving the cursor on the first non-blank,
|
||||||
* position must be in a previous line.
|
// position must be in a previous line.
|
||||||
* When searching forward and leaving the cursor on the first non-blank,
|
// When searching forward and leaving the cursor on the first non-blank,
|
||||||
* position must be in a next line. */
|
// position must be in a next line.
|
||||||
if (dir == BACKWARD && begin_line)
|
if (dir == BACKWARD && begin_line)
|
||||||
pos.col = 0;
|
pos.col = 0;
|
||||||
else if (dir == FORWARD && begin_line)
|
else if (dir == FORWARD && begin_line)
|
||||||
@@ -536,11 +536,11 @@ fname2fnum(xfmark_T *fm)
|
|||||||
else
|
else
|
||||||
vim_strncpy(NameBuff, fm->fname, MAXPATHL - 1);
|
vim_strncpy(NameBuff, fm->fname, MAXPATHL - 1);
|
||||||
|
|
||||||
/* Try to shorten the file name. */
|
// Try to shorten the file name.
|
||||||
mch_dirname(IObuff, IOSIZE);
|
mch_dirname(IObuff, IOSIZE);
|
||||||
p = shorten_fname(NameBuff, IObuff);
|
p = shorten_fname(NameBuff, IObuff);
|
||||||
|
|
||||||
/* buflist_new() will call fmarks_check_names() */
|
// buflist_new() will call fmarks_check_names()
|
||||||
(void)buflist_new(NameBuff, p, (linenr_T)1, 0);
|
(void)buflist_new(NameBuff, p, (linenr_T)1, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -606,8 +606,8 @@ check_mark(pos_T *pos)
|
|||||||
}
|
}
|
||||||
if (pos->lnum <= 0)
|
if (pos->lnum <= 0)
|
||||||
{
|
{
|
||||||
/* lnum is negative if mark is in another file can can't get that
|
// lnum is negative if mark is in another file can can't get that
|
||||||
* file, error message already give then. */
|
// file, error message already give then.
|
||||||
if (pos->lnum == 0)
|
if (pos->lnum == 0)
|
||||||
emsg(_(e_marknotset));
|
emsg(_(e_marknotset));
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -630,7 +630,7 @@ clrallmarks(buf_T *buf)
|
|||||||
{
|
{
|
||||||
static int i = -1;
|
static int i = -1;
|
||||||
|
|
||||||
if (i == -1) /* first call ever: initialize */
|
if (i == -1) // first call ever: initialize
|
||||||
for (i = 0; i < NMARKS + 1; i++)
|
for (i = 0; i < NMARKS + 1; i++)
|
||||||
{
|
{
|
||||||
namedfm[i].fmark.mark.lnum = 0;
|
namedfm[i].fmark.mark.lnum = 0;
|
||||||
@@ -642,13 +642,13 @@ clrallmarks(buf_T *buf)
|
|||||||
|
|
||||||
for (i = 0; i < NMARKS; i++)
|
for (i = 0; i < NMARKS; i++)
|
||||||
buf->b_namedm[i].lnum = 0;
|
buf->b_namedm[i].lnum = 0;
|
||||||
buf->b_op_start.lnum = 0; /* start/end op mark cleared */
|
buf->b_op_start.lnum = 0; // start/end op mark cleared
|
||||||
buf->b_op_end.lnum = 0;
|
buf->b_op_end.lnum = 0;
|
||||||
buf->b_last_cursor.lnum = 1; /* '" mark cleared */
|
buf->b_last_cursor.lnum = 1; // '" mark cleared
|
||||||
buf->b_last_cursor.col = 0;
|
buf->b_last_cursor.col = 0;
|
||||||
buf->b_last_cursor.coladd = 0;
|
buf->b_last_cursor.coladd = 0;
|
||||||
buf->b_last_insert.lnum = 0; /* '^ mark cleared */
|
buf->b_last_insert.lnum = 0; // '^ mark cleared
|
||||||
buf->b_last_change.lnum = 0; /* '. mark cleared */
|
buf->b_last_change.lnum = 0; // '. mark cleared
|
||||||
#ifdef FEAT_JUMPLIST
|
#ifdef FEAT_JUMPLIST
|
||||||
buf->b_changelistlen = 0;
|
buf->b_changelistlen = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -662,7 +662,7 @@ clrallmarks(buf_T *buf)
|
|||||||
char_u *
|
char_u *
|
||||||
fm_getname(fmark_T *fmark, int lead_len)
|
fm_getname(fmark_T *fmark, int lead_len)
|
||||||
{
|
{
|
||||||
if (fmark->fnum == curbuf->b_fnum) /* current buffer */
|
if (fmark->fnum == curbuf->b_fnum) // current buffer
|
||||||
return mark_line(&(fmark->mark), lead_len);
|
return mark_line(&(fmark->mark), lead_len);
|
||||||
return buflist_nr2name(fmark->fnum, FALSE, TRUE);
|
return buflist_nr2name(fmark->fnum, FALSE, TRUE);
|
||||||
}
|
}
|
||||||
@@ -742,13 +742,13 @@ show_one_mark(
|
|||||||
char_u *arg,
|
char_u *arg,
|
||||||
pos_T *p,
|
pos_T *p,
|
||||||
char_u *name_arg,
|
char_u *name_arg,
|
||||||
int current) /* in current file */
|
int current) // in current file
|
||||||
{
|
{
|
||||||
static int did_title = FALSE;
|
static int did_title = FALSE;
|
||||||
int mustfree = FALSE;
|
int mustfree = FALSE;
|
||||||
char_u *name = name_arg;
|
char_u *name = name_arg;
|
||||||
|
|
||||||
if (c == -1) /* finish up */
|
if (c == -1) // finish up
|
||||||
{
|
{
|
||||||
if (did_title)
|
if (did_title)
|
||||||
did_title = FALSE;
|
did_title = FALSE;
|
||||||
@@ -809,7 +809,7 @@ ex_delmarks(exarg_T *eap)
|
|||||||
int n;
|
int n;
|
||||||
|
|
||||||
if (*eap->arg == NUL && eap->forceit)
|
if (*eap->arg == NUL && eap->forceit)
|
||||||
/* clear all marks */
|
// clear all marks
|
||||||
clrallmarks(curbuf);
|
clrallmarks(curbuf);
|
||||||
else if (eap->forceit)
|
else if (eap->forceit)
|
||||||
emsg(_(e_invarg));
|
emsg(_(e_invarg));
|
||||||
@@ -817,7 +817,7 @@ ex_delmarks(exarg_T *eap)
|
|||||||
emsg(_(e_argreq));
|
emsg(_(e_argreq));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* clear specified marks only */
|
// clear specified marks only
|
||||||
for (p = eap->arg; *p != NUL; ++p)
|
for (p = eap->arg; *p != NUL; ++p)
|
||||||
{
|
{
|
||||||
lower = ASCII_ISLOWER(*p);
|
lower = ASCII_ISLOWER(*p);
|
||||||
@@ -826,7 +826,7 @@ ex_delmarks(exarg_T *eap)
|
|||||||
{
|
{
|
||||||
if (p[1] == '-')
|
if (p[1] == '-')
|
||||||
{
|
{
|
||||||
/* clear range of marks */
|
// clear range of marks
|
||||||
from = *p;
|
from = *p;
|
||||||
to = p[2];
|
to = p[2];
|
||||||
if (!(lower ? ASCII_ISLOWER(p[2])
|
if (!(lower ? ASCII_ISLOWER(p[2])
|
||||||
@@ -840,7 +840,7 @@ ex_delmarks(exarg_T *eap)
|
|||||||
p += 2;
|
p += 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* clear one lower case mark */
|
// clear one lower case mark
|
||||||
from = to = *p;
|
from = to = *p;
|
||||||
|
|
||||||
for (i = from; i <= to; ++i)
|
for (i = from; i <= to; ++i)
|
||||||
@@ -891,7 +891,7 @@ ex_jumps(exarg_T *eap UNUSED)
|
|||||||
|
|
||||||
cleanup_jumplist(curwin, TRUE);
|
cleanup_jumplist(curwin, TRUE);
|
||||||
|
|
||||||
/* Highlight title */
|
// Highlight title
|
||||||
msg_puts_title(_("\n jump line col file/text"));
|
msg_puts_title(_("\n jump line col file/text"));
|
||||||
for (i = 0; i < curwin->w_jumplistlen && !got_int; ++i)
|
for (i = 0; i < curwin->w_jumplistlen && !got_int; ++i)
|
||||||
{
|
{
|
||||||
@@ -948,7 +948,7 @@ ex_changes(exarg_T *eap UNUSED)
|
|||||||
int i;
|
int i;
|
||||||
char_u *name;
|
char_u *name;
|
||||||
|
|
||||||
/* Highlight title */
|
// Highlight title
|
||||||
msg_puts_title(_("\nchange line col text"));
|
msg_puts_title(_("\nchange line col text"));
|
||||||
|
|
||||||
for (i = 0; i < curbuf->b_changelistlen && !got_int; ++i)
|
for (i = 0; i < curbuf->b_changelistlen && !got_int; ++i)
|
||||||
@@ -993,7 +993,7 @@ ex_changes(exarg_T *eap UNUSED)
|
|||||||
*lp += amount_after; \
|
*lp += amount_after; \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* don't delete the line, just put at first deleted line */
|
// don't delete the line, just put at first deleted line
|
||||||
#define one_adjust_nodel(add) \
|
#define one_adjust_nodel(add) \
|
||||||
{ \
|
{ \
|
||||||
lp = add; \
|
lp = add; \
|
||||||
@@ -1054,12 +1054,12 @@ mark_adjust_internal(
|
|||||||
tabpage_T *tab;
|
tabpage_T *tab;
|
||||||
static pos_T initpos = {1, 0, 0};
|
static pos_T initpos = {1, 0, 0};
|
||||||
|
|
||||||
if (line2 < line1 && amount_after == 0L) /* nothing to do */
|
if (line2 < line1 && amount_after == 0L) // nothing to do
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!cmdmod.lockmarks)
|
if (!cmdmod.lockmarks)
|
||||||
{
|
{
|
||||||
/* named marks, lower case and upper case */
|
// named marks, lower case and upper case
|
||||||
for (i = 0; i < NMARKS; i++)
|
for (i = 0; i < NMARKS; i++)
|
||||||
{
|
{
|
||||||
one_adjust(&(curbuf->b_namedm[i].lnum));
|
one_adjust(&(curbuf->b_namedm[i].lnum));
|
||||||
@@ -1072,31 +1072,31 @@ mark_adjust_internal(
|
|||||||
one_adjust_nodel(&(namedfm[i].fmark.mark.lnum));
|
one_adjust_nodel(&(namedfm[i].fmark.mark.lnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* last Insert position */
|
// last Insert position
|
||||||
one_adjust(&(curbuf->b_last_insert.lnum));
|
one_adjust(&(curbuf->b_last_insert.lnum));
|
||||||
|
|
||||||
/* last change position */
|
// last change position
|
||||||
one_adjust(&(curbuf->b_last_change.lnum));
|
one_adjust(&(curbuf->b_last_change.lnum));
|
||||||
|
|
||||||
/* last cursor position, if it was set */
|
// last cursor position, if it was set
|
||||||
if (!EQUAL_POS(curbuf->b_last_cursor, initpos))
|
if (!EQUAL_POS(curbuf->b_last_cursor, initpos))
|
||||||
one_adjust(&(curbuf->b_last_cursor.lnum));
|
one_adjust(&(curbuf->b_last_cursor.lnum));
|
||||||
|
|
||||||
|
|
||||||
#ifdef FEAT_JUMPLIST
|
#ifdef FEAT_JUMPLIST
|
||||||
/* list of change positions */
|
// list of change positions
|
||||||
for (i = 0; i < curbuf->b_changelistlen; ++i)
|
for (i = 0; i < curbuf->b_changelistlen; ++i)
|
||||||
one_adjust_nodel(&(curbuf->b_changelist[i].lnum));
|
one_adjust_nodel(&(curbuf->b_changelist[i].lnum));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Visual area */
|
// Visual area
|
||||||
one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
|
one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
|
||||||
one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
|
one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
|
||||||
|
|
||||||
#ifdef FEAT_QUICKFIX
|
#ifdef FEAT_QUICKFIX
|
||||||
/* quickfix marks */
|
// quickfix marks
|
||||||
qf_mark_adjust(NULL, line1, line2, amount, amount_after);
|
qf_mark_adjust(NULL, line1, line2, amount, amount_after);
|
||||||
/* location lists */
|
// location lists
|
||||||
FOR_ALL_TAB_WINDOWS(tab, win)
|
FOR_ALL_TAB_WINDOWS(tab, win)
|
||||||
qf_mark_adjust(win, line1, line2, amount, amount_after);
|
qf_mark_adjust(win, line1, line2, amount, amount_after);
|
||||||
#endif
|
#endif
|
||||||
@@ -1106,13 +1106,13 @@ mark_adjust_internal(
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* previous context mark */
|
// previous context mark
|
||||||
one_adjust(&(curwin->w_pcmark.lnum));
|
one_adjust(&(curwin->w_pcmark.lnum));
|
||||||
|
|
||||||
/* previous pcmark */
|
// previous pcmark
|
||||||
one_adjust(&(curwin->w_prev_pcmark.lnum));
|
one_adjust(&(curwin->w_prev_pcmark.lnum));
|
||||||
|
|
||||||
/* saved cursor for formatting */
|
// saved cursor for formatting
|
||||||
if (saved_cursor.lnum != 0)
|
if (saved_cursor.lnum != 0)
|
||||||
one_adjust_nodel(&(saved_cursor.lnum));
|
one_adjust_nodel(&(saved_cursor.lnum));
|
||||||
|
|
||||||
@@ -1123,8 +1123,8 @@ mark_adjust_internal(
|
|||||||
{
|
{
|
||||||
#ifdef FEAT_JUMPLIST
|
#ifdef FEAT_JUMPLIST
|
||||||
if (!cmdmod.lockmarks)
|
if (!cmdmod.lockmarks)
|
||||||
/* Marks in the jumplist. When deleting lines, this may create
|
// Marks in the jumplist. When deleting lines, this may create
|
||||||
* duplicate marks in the jumplist, they will be removed later. */
|
// duplicate marks in the jumplist, they will be removed later.
|
||||||
for (i = 0; i < win->w_jumplistlen; ++i)
|
for (i = 0; i < win->w_jumplistlen; ++i)
|
||||||
if (win->w_jumplist[i].fmark.fnum == fnum)
|
if (win->w_jumplist[i].fmark.fnum == fnum)
|
||||||
one_adjust_nodel(&(win->w_jumplist[i].fmark.mark.lnum));
|
one_adjust_nodel(&(win->w_jumplist[i].fmark.mark.lnum));
|
||||||
@@ -1133,32 +1133,32 @@ mark_adjust_internal(
|
|||||||
if (win->w_buffer == curbuf)
|
if (win->w_buffer == curbuf)
|
||||||
{
|
{
|
||||||
if (!cmdmod.lockmarks)
|
if (!cmdmod.lockmarks)
|
||||||
/* marks in the tag stack */
|
// marks in the tag stack
|
||||||
for (i = 0; i < win->w_tagstacklen; i++)
|
for (i = 0; i < win->w_tagstacklen; i++)
|
||||||
if (win->w_tagstack[i].fmark.fnum == fnum)
|
if (win->w_tagstack[i].fmark.fnum == fnum)
|
||||||
one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
|
one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
|
||||||
|
|
||||||
/* the displayed Visual area */
|
// the displayed Visual area
|
||||||
if (win->w_old_cursor_lnum != 0)
|
if (win->w_old_cursor_lnum != 0)
|
||||||
{
|
{
|
||||||
one_adjust_nodel(&(win->w_old_cursor_lnum));
|
one_adjust_nodel(&(win->w_old_cursor_lnum));
|
||||||
one_adjust_nodel(&(win->w_old_visual_lnum));
|
one_adjust_nodel(&(win->w_old_visual_lnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* topline and cursor position for windows with the same buffer
|
// topline and cursor position for windows with the same buffer
|
||||||
* other than the current window */
|
// other than the current window
|
||||||
if (win != curwin)
|
if (win != curwin)
|
||||||
{
|
{
|
||||||
if (win->w_topline >= line1 && win->w_topline <= line2)
|
if (win->w_topline >= line1 && win->w_topline <= line2)
|
||||||
{
|
{
|
||||||
if (amount == MAXLNUM) /* topline is deleted */
|
if (amount == MAXLNUM) // topline is deleted
|
||||||
{
|
{
|
||||||
if (line1 <= 1)
|
if (line1 <= 1)
|
||||||
win->w_topline = 1;
|
win->w_topline = 1;
|
||||||
else
|
else
|
||||||
win->w_topline = line1 - 1;
|
win->w_topline = line1 - 1;
|
||||||
}
|
}
|
||||||
else /* keep topline on the same line */
|
else // keep topline on the same line
|
||||||
win->w_topline += amount;
|
win->w_topline += amount;
|
||||||
#ifdef FEAT_DIFF
|
#ifdef FEAT_DIFF
|
||||||
win->w_topfill = 0;
|
win->w_topfill = 0;
|
||||||
@@ -1173,7 +1173,7 @@ mark_adjust_internal(
|
|||||||
}
|
}
|
||||||
if (win->w_cursor.lnum >= line1 && win->w_cursor.lnum <= line2)
|
if (win->w_cursor.lnum >= line1 && win->w_cursor.lnum <= line2)
|
||||||
{
|
{
|
||||||
if (amount == MAXLNUM) /* line with cursor is deleted */
|
if (amount == MAXLNUM) // line with cursor is deleted
|
||||||
{
|
{
|
||||||
if (line1 <= 1)
|
if (line1 <= 1)
|
||||||
win->w_cursor.lnum = 1;
|
win->w_cursor.lnum = 1;
|
||||||
@@ -1181,7 +1181,7 @@ mark_adjust_internal(
|
|||||||
win->w_cursor.lnum = line1 - 1;
|
win->w_cursor.lnum = line1 - 1;
|
||||||
win->w_cursor.col = 0;
|
win->w_cursor.col = 0;
|
||||||
}
|
}
|
||||||
else /* keep cursor on the same line */
|
else // keep cursor on the same line
|
||||||
win->w_cursor.lnum += amount;
|
win->w_cursor.lnum += amount;
|
||||||
}
|
}
|
||||||
else if (amount_after && win->w_cursor.lnum > line2)
|
else if (amount_after && win->w_cursor.lnum > line2)
|
||||||
@@ -1189,7 +1189,7 @@ mark_adjust_internal(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_FOLDING
|
#ifdef FEAT_FOLDING
|
||||||
/* adjust folds */
|
// adjust folds
|
||||||
if (adjust_folds)
|
if (adjust_folds)
|
||||||
foldMarkAdjust(win, line1, line2, amount, amount_after);
|
foldMarkAdjust(win, line1, line2, amount, amount_after);
|
||||||
#endif
|
#endif
|
||||||
@@ -1197,12 +1197,12 @@ mark_adjust_internal(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_DIFF
|
#ifdef FEAT_DIFF
|
||||||
/* adjust diffs */
|
// adjust diffs
|
||||||
diff_mark_adjust(line1, line2, amount, amount_after);
|
diff_mark_adjust(line1, line2, amount, amount_after);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This code is used often, needs to be fast. */
|
// This code is used often, needs to be fast.
|
||||||
#define col_adjust(pp) \
|
#define col_adjust(pp) \
|
||||||
{ \
|
{ \
|
||||||
posp = pp; \
|
posp = pp; \
|
||||||
@@ -1239,9 +1239,9 @@ mark_col_adjust(
|
|||||||
pos_T *posp;
|
pos_T *posp;
|
||||||
|
|
||||||
if ((col_amount == 0L && lnum_amount == 0L) || cmdmod.lockmarks)
|
if ((col_amount == 0L && lnum_amount == 0L) || cmdmod.lockmarks)
|
||||||
return; /* nothing to do */
|
return; // nothing to do
|
||||||
|
|
||||||
/* named marks, lower case and upper case */
|
// named marks, lower case and upper case
|
||||||
for (i = 0; i < NMARKS; i++)
|
for (i = 0; i < NMARKS; i++)
|
||||||
{
|
{
|
||||||
col_adjust(&(curbuf->b_namedm[i]));
|
col_adjust(&(curbuf->b_namedm[i]));
|
||||||
@@ -1254,29 +1254,29 @@ mark_col_adjust(
|
|||||||
col_adjust(&(namedfm[i].fmark.mark));
|
col_adjust(&(namedfm[i].fmark.mark));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* last Insert position */
|
// last Insert position
|
||||||
col_adjust(&(curbuf->b_last_insert));
|
col_adjust(&(curbuf->b_last_insert));
|
||||||
|
|
||||||
/* last change position */
|
// last change position
|
||||||
col_adjust(&(curbuf->b_last_change));
|
col_adjust(&(curbuf->b_last_change));
|
||||||
|
|
||||||
#ifdef FEAT_JUMPLIST
|
#ifdef FEAT_JUMPLIST
|
||||||
/* list of change positions */
|
// list of change positions
|
||||||
for (i = 0; i < curbuf->b_changelistlen; ++i)
|
for (i = 0; i < curbuf->b_changelistlen; ++i)
|
||||||
col_adjust(&(curbuf->b_changelist[i]));
|
col_adjust(&(curbuf->b_changelist[i]));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Visual area */
|
// Visual area
|
||||||
col_adjust(&(curbuf->b_visual.vi_start));
|
col_adjust(&(curbuf->b_visual.vi_start));
|
||||||
col_adjust(&(curbuf->b_visual.vi_end));
|
col_adjust(&(curbuf->b_visual.vi_end));
|
||||||
|
|
||||||
/* previous context mark */
|
// previous context mark
|
||||||
col_adjust(&(curwin->w_pcmark));
|
col_adjust(&(curwin->w_pcmark));
|
||||||
|
|
||||||
/* previous pcmark */
|
// previous pcmark
|
||||||
col_adjust(&(curwin->w_prev_pcmark));
|
col_adjust(&(curwin->w_prev_pcmark));
|
||||||
|
|
||||||
/* saved cursor for formatting */
|
// saved cursor for formatting
|
||||||
col_adjust(&saved_cursor);
|
col_adjust(&saved_cursor);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1285,7 +1285,7 @@ mark_col_adjust(
|
|||||||
FOR_ALL_WINDOWS(win)
|
FOR_ALL_WINDOWS(win)
|
||||||
{
|
{
|
||||||
#ifdef FEAT_JUMPLIST
|
#ifdef FEAT_JUMPLIST
|
||||||
/* marks in the jumplist */
|
// marks in the jumplist
|
||||||
for (i = 0; i < win->w_jumplistlen; ++i)
|
for (i = 0; i < win->w_jumplistlen; ++i)
|
||||||
if (win->w_jumplist[i].fmark.fnum == fnum)
|
if (win->w_jumplist[i].fmark.fnum == fnum)
|
||||||
col_adjust(&(win->w_jumplist[i].fmark.mark));
|
col_adjust(&(win->w_jumplist[i].fmark.mark));
|
||||||
@@ -1293,12 +1293,12 @@ mark_col_adjust(
|
|||||||
|
|
||||||
if (win->w_buffer == curbuf)
|
if (win->w_buffer == curbuf)
|
||||||
{
|
{
|
||||||
/* marks in the tag stack */
|
// marks in the tag stack
|
||||||
for (i = 0; i < win->w_tagstacklen; i++)
|
for (i = 0; i < win->w_tagstacklen; i++)
|
||||||
if (win->w_tagstack[i].fmark.fnum == fnum)
|
if (win->w_tagstack[i].fmark.fnum == fnum)
|
||||||
col_adjust(&(win->w_tagstack[i].fmark.mark));
|
col_adjust(&(win->w_tagstack[i].fmark.mark));
|
||||||
|
|
||||||
/* cursor position for other windows with the same buffer */
|
// cursor position for other windows with the same buffer
|
||||||
if (win != curwin)
|
if (win != curwin)
|
||||||
col_adjust(&win->w_cursor);
|
col_adjust(&win->w_cursor);
|
||||||
}
|
}
|
||||||
@@ -1320,9 +1320,9 @@ cleanup_jumplist(win_T *wp, int loadfiles)
|
|||||||
|
|
||||||
if (loadfiles)
|
if (loadfiles)
|
||||||
{
|
{
|
||||||
/* If specified, load all the files from the jump list. This is
|
// If specified, load all the files from the jump list. This is
|
||||||
* needed to properly clean up duplicate entries, but will take some
|
// needed to properly clean up duplicate entries, but will take some
|
||||||
* time. */
|
// time.
|
||||||
for (i = 0; i < wp->w_jumplistlen; ++i)
|
for (i = 0; i < wp->w_jumplistlen; ++i)
|
||||||
{
|
{
|
||||||
if ((wp->w_jumplist[i].fmark.fnum == 0) &&
|
if ((wp->w_jumplist[i].fmark.fnum == 0) &&
|
||||||
@@ -1343,7 +1343,7 @@ cleanup_jumplist(win_T *wp, int loadfiles)
|
|||||||
&& wp->w_jumplist[i].fmark.mark.lnum
|
&& wp->w_jumplist[i].fmark.mark.lnum
|
||||||
== wp->w_jumplist[from].fmark.mark.lnum)
|
== wp->w_jumplist[from].fmark.mark.lnum)
|
||||||
break;
|
break;
|
||||||
if (i >= wp->w_jumplistlen) /* no duplicate */
|
if (i >= wp->w_jumplistlen) // no duplicate
|
||||||
wp->w_jumplist[to++] = wp->w_jumplist[from];
|
wp->w_jumplist[to++] = wp->w_jumplist[from];
|
||||||
else
|
else
|
||||||
vim_free(wp->w_jumplist[from].fname);
|
vim_free(wp->w_jumplist[from].fname);
|
||||||
@@ -1382,7 +1382,7 @@ free_jumplist(win_T *wp)
|
|||||||
for (i = 0; i < wp->w_jumplistlen; ++i)
|
for (i = 0; i < wp->w_jumplistlen; ++i)
|
||||||
vim_free(wp->w_jumplist[i].fname);
|
vim_free(wp->w_jumplist[i].fname);
|
||||||
}
|
}
|
||||||
#endif /* FEAT_JUMPLIST */
|
#endif // FEAT_JUMPLIST
|
||||||
|
|
||||||
void
|
void
|
||||||
set_last_cursor(win_T *win)
|
set_last_cursor(win_T *win)
|
||||||
|
1030
src/mbyte.c
1030
src/mbyte.c
File diff suppressed because it is too large
Load Diff
198
src/memfile.c
198
src/memfile.c
@@ -46,7 +46,7 @@
|
|||||||
# include <sys/statfs.h>
|
# include <sys/statfs.h>
|
||||||
# define STATFS statfs
|
# define STATFS statfs
|
||||||
# define F_BSIZE f_bsize
|
# define F_BSIZE f_bsize
|
||||||
# ifdef __MINT__ /* do we still need this? */
|
# ifdef __MINT__ // do we still need this?
|
||||||
# define fstatfs(fd, buf, len, nul) mch_fstat((fd), (buf))
|
# define fstatfs(fd, buf, len, nul) mch_fstat((fd), (buf))
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
@@ -57,17 +57,17 @@
|
|||||||
*/
|
*/
|
||||||
#ifdef AMIGA
|
#ifdef AMIGA
|
||||||
# ifdef FEAT_ARP
|
# ifdef FEAT_ARP
|
||||||
extern int dos2; /* this is in os_amiga.c */
|
extern int dos2; // this is in os_amiga.c
|
||||||
# endif
|
# endif
|
||||||
# ifdef SASC
|
# ifdef SASC
|
||||||
# include <proto/dos.h>
|
# include <proto/dos.h>
|
||||||
# include <ios1.h> /* for chkufb() */
|
# include <ios1.h> // for chkufb()
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MEMFILE_PAGE_SIZE 4096 /* default page size */
|
#define MEMFILE_PAGE_SIZE 4096 // default page size
|
||||||
|
|
||||||
static long_u total_mem_used = 0; /* total memory used for memfiles */
|
static long_u total_mem_used = 0; // total memory used for memfiles
|
||||||
|
|
||||||
static void mf_ins_hash(memfile_T *, bhdr_T *);
|
static void mf_ins_hash(memfile_T *, bhdr_T *);
|
||||||
static void mf_rem_hash(memfile_T *, bhdr_T *);
|
static void mf_rem_hash(memfile_T *, bhdr_T *);
|
||||||
@@ -133,7 +133,7 @@ mf_open(char_u *fname, int flags)
|
|||||||
if ((mfp = ALLOC_ONE(memfile_T)) == NULL)
|
if ((mfp = ALLOC_ONE(memfile_T)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (fname == NULL) /* no file for this memfile, use memory only */
|
if (fname == NULL) // no file for this memfile, use memory only
|
||||||
{
|
{
|
||||||
mfp->mf_fname = NULL;
|
mfp->mf_fname = NULL;
|
||||||
mfp->mf_ffname = NULL;
|
mfp->mf_ffname = NULL;
|
||||||
@@ -141,9 +141,9 @@ mf_open(char_u *fname, int flags)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mf_do_open(mfp, fname, flags); /* try to open the file */
|
mf_do_open(mfp, fname, flags); // try to open the file
|
||||||
|
|
||||||
/* if the file cannot be opened, return here */
|
// if the file cannot be opened, return here
|
||||||
if (mfp->mf_fd < 0)
|
if (mfp->mf_fd < 0)
|
||||||
{
|
{
|
||||||
vim_free(mfp);
|
vim_free(mfp);
|
||||||
@@ -151,8 +151,8 @@ mf_open(char_u *fname, int flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mfp->mf_free_first = NULL; /* free list is empty */
|
mfp->mf_free_first = NULL; // free list is empty
|
||||||
mfp->mf_used_first = NULL; /* used list is empty */
|
mfp->mf_used_first = NULL; // used list is empty
|
||||||
mfp->mf_used_last = NULL;
|
mfp->mf_used_last = NULL;
|
||||||
mfp->mf_dirty = FALSE;
|
mfp->mf_dirty = FALSE;
|
||||||
mfp->mf_used_count = 0;
|
mfp->mf_used_count = 0;
|
||||||
@@ -180,7 +180,7 @@ mf_open(char_u *fname, int flags)
|
|||||||
|
|
||||||
if (mfp->mf_fd < 0 || (flags & (O_TRUNC|O_EXCL))
|
if (mfp->mf_fd < 0 || (flags & (O_TRUNC|O_EXCL))
|
||||||
|| (size = vim_lseek(mfp->mf_fd, (off_T)0L, SEEK_END)) <= 0)
|
|| (size = vim_lseek(mfp->mf_fd, (off_T)0L, SEEK_END)) <= 0)
|
||||||
mfp->mf_blocknr_max = 0; /* no file or empty file */
|
mfp->mf_blocknr_max = 0; // no file or empty file
|
||||||
else
|
else
|
||||||
mfp->mf_blocknr_max = (blocknr_T)((size + mfp->mf_page_size - 1)
|
mfp->mf_blocknr_max = (blocknr_T)((size + mfp->mf_page_size - 1)
|
||||||
/ mfp->mf_page_size);
|
/ mfp->mf_page_size);
|
||||||
@@ -223,7 +223,7 @@ mf_open(char_u *fname, int flags)
|
|||||||
int
|
int
|
||||||
mf_open_file(memfile_T *mfp, char_u *fname)
|
mf_open_file(memfile_T *mfp, char_u *fname)
|
||||||
{
|
{
|
||||||
mf_do_open(mfp, fname, O_RDWR|O_CREAT|O_EXCL); /* try to open the file */
|
mf_do_open(mfp, fname, O_RDWR|O_CREAT|O_EXCL); // try to open the file
|
||||||
|
|
||||||
if (mfp->mf_fd < 0)
|
if (mfp->mf_fd < 0)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -240,7 +240,7 @@ mf_close(memfile_T *mfp, int del_file)
|
|||||||
{
|
{
|
||||||
bhdr_T *hp, *nextp;
|
bhdr_T *hp, *nextp;
|
||||||
|
|
||||||
if (mfp == NULL) /* safety check */
|
if (mfp == NULL) // safety check
|
||||||
return;
|
return;
|
||||||
if (mfp->mf_fd >= 0)
|
if (mfp->mf_fd >= 0)
|
||||||
{
|
{
|
||||||
@@ -249,17 +249,17 @@ mf_close(memfile_T *mfp, int del_file)
|
|||||||
}
|
}
|
||||||
if (del_file && mfp->mf_fname != NULL)
|
if (del_file && mfp->mf_fname != NULL)
|
||||||
mch_remove(mfp->mf_fname);
|
mch_remove(mfp->mf_fname);
|
||||||
/* free entries in used list */
|
// free entries in used list
|
||||||
for (hp = mfp->mf_used_first; hp != NULL; hp = nextp)
|
for (hp = mfp->mf_used_first; hp != NULL; hp = nextp)
|
||||||
{
|
{
|
||||||
total_mem_used -= hp->bh_page_count * mfp->mf_page_size;
|
total_mem_used -= hp->bh_page_count * mfp->mf_page_size;
|
||||||
nextp = hp->bh_next;
|
nextp = hp->bh_next;
|
||||||
mf_free_bhdr(hp);
|
mf_free_bhdr(hp);
|
||||||
}
|
}
|
||||||
while (mfp->mf_free_first != NULL) /* free entries in free list */
|
while (mfp->mf_free_first != NULL) // free entries in free list
|
||||||
vim_free(mf_rem_free(mfp));
|
vim_free(mf_rem_free(mfp));
|
||||||
mf_hash_free(&mfp->mf_hash);
|
mf_hash_free(&mfp->mf_hash);
|
||||||
mf_hash_free_all(&mfp->mf_trans); /* free hashtable and its items */
|
mf_hash_free_all(&mfp->mf_trans); // free hashtable and its items
|
||||||
vim_free(mfp->mf_fname);
|
vim_free(mfp->mf_fname);
|
||||||
vim_free(mfp->mf_ffname);
|
vim_free(mfp->mf_ffname);
|
||||||
vim_free(mfp);
|
vim_free(mfp);
|
||||||
@@ -271,32 +271,32 @@ mf_close(memfile_T *mfp, int del_file)
|
|||||||
void
|
void
|
||||||
mf_close_file(
|
mf_close_file(
|
||||||
buf_T *buf,
|
buf_T *buf,
|
||||||
int getlines) /* get all lines into memory? */
|
int getlines) // get all lines into memory?
|
||||||
{
|
{
|
||||||
memfile_T *mfp;
|
memfile_T *mfp;
|
||||||
linenr_T lnum;
|
linenr_T lnum;
|
||||||
|
|
||||||
mfp = buf->b_ml.ml_mfp;
|
mfp = buf->b_ml.ml_mfp;
|
||||||
if (mfp == NULL || mfp->mf_fd < 0) /* nothing to close */
|
if (mfp == NULL || mfp->mf_fd < 0) // nothing to close
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (getlines)
|
if (getlines)
|
||||||
{
|
{
|
||||||
/* get all blocks in memory by accessing all lines (clumsy!) */
|
// get all blocks in memory by accessing all lines (clumsy!)
|
||||||
mf_dont_release = TRUE;
|
mf_dont_release = TRUE;
|
||||||
for (lnum = 1; lnum <= buf->b_ml.ml_line_count; ++lnum)
|
for (lnum = 1; lnum <= buf->b_ml.ml_line_count; ++lnum)
|
||||||
(void)ml_get_buf(buf, lnum, FALSE);
|
(void)ml_get_buf(buf, lnum, FALSE);
|
||||||
mf_dont_release = FALSE;
|
mf_dont_release = FALSE;
|
||||||
/* TODO: should check if all blocks are really in core */
|
// TODO: should check if all blocks are really in core
|
||||||
}
|
}
|
||||||
|
|
||||||
if (close(mfp->mf_fd) < 0) /* close the file */
|
if (close(mfp->mf_fd) < 0) // close the file
|
||||||
emsg(_(e_swapclose));
|
emsg(_(e_swapclose));
|
||||||
mfp->mf_fd = -1;
|
mfp->mf_fd = -1;
|
||||||
|
|
||||||
if (mfp->mf_fname != NULL)
|
if (mfp->mf_fname != NULL)
|
||||||
{
|
{
|
||||||
mch_remove(mfp->mf_fname); /* delete the swap file */
|
mch_remove(mfp->mf_fname); // delete the swap file
|
||||||
VIM_CLEAR(mfp->mf_fname);
|
VIM_CLEAR(mfp->mf_fname);
|
||||||
VIM_CLEAR(mfp->mf_ffname);
|
VIM_CLEAR(mfp->mf_ffname);
|
||||||
}
|
}
|
||||||
@@ -309,8 +309,8 @@ mf_close_file(
|
|||||||
void
|
void
|
||||||
mf_new_page_size(memfile_T *mfp, unsigned new_size)
|
mf_new_page_size(memfile_T *mfp, unsigned new_size)
|
||||||
{
|
{
|
||||||
/* Correct the memory used for block 0 to the new size, because it will be
|
// Correct the memory used for block 0 to the new size, because it will be
|
||||||
* freed with that size later on. */
|
// freed with that size later on.
|
||||||
total_mem_used += new_size - mfp->mf_page_size;
|
total_mem_used += new_size - mfp->mf_page_size;
|
||||||
mfp->mf_page_size = new_size;
|
mfp->mf_page_size = new_size;
|
||||||
}
|
}
|
||||||
@@ -323,8 +323,8 @@ mf_new_page_size(memfile_T *mfp, unsigned new_size)
|
|||||||
bhdr_T *
|
bhdr_T *
|
||||||
mf_new(memfile_T *mfp, int negative, int page_count)
|
mf_new(memfile_T *mfp, int negative, int page_count)
|
||||||
{
|
{
|
||||||
bhdr_T *hp; /* new bhdr_T */
|
bhdr_T *hp; // new bhdr_T
|
||||||
bhdr_T *freep; /* first block in free list */
|
bhdr_T *freep; // first block in free list
|
||||||
char_u *p;
|
char_u *p;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -360,21 +360,21 @@ mf_new(memfile_T *mfp, int negative, int page_count)
|
|||||||
freep->bh_bnum += page_count;
|
freep->bh_bnum += page_count;
|
||||||
freep->bh_page_count -= page_count;
|
freep->bh_page_count -= page_count;
|
||||||
}
|
}
|
||||||
else if (hp == NULL) /* need to allocate memory for this block */
|
else if (hp == NULL) // need to allocate memory for this block
|
||||||
{
|
{
|
||||||
if ((p = alloc(mfp->mf_page_size * page_count)) == NULL)
|
if ((p = alloc(mfp->mf_page_size * page_count)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
hp = mf_rem_free(mfp);
|
hp = mf_rem_free(mfp);
|
||||||
hp->bh_data = p;
|
hp->bh_data = p;
|
||||||
}
|
}
|
||||||
else /* use the number, remove entry from free list */
|
else // use the number, remove entry from free list
|
||||||
{
|
{
|
||||||
freep = mf_rem_free(mfp);
|
freep = mf_rem_free(mfp);
|
||||||
hp->bh_bnum = freep->bh_bnum;
|
hp->bh_bnum = freep->bh_bnum;
|
||||||
vim_free(freep);
|
vim_free(freep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* get a new number */
|
else // get a new number
|
||||||
{
|
{
|
||||||
if (hp == NULL && (hp = mf_alloc_bhdr(mfp, page_count)) == NULL)
|
if (hp == NULL && (hp = mf_alloc_bhdr(mfp, page_count)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -389,7 +389,7 @@ mf_new(memfile_T *mfp, int negative, int page_count)
|
|||||||
mfp->mf_blocknr_max += page_count;
|
mfp->mf_blocknr_max += page_count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hp->bh_flags = BH_LOCKED | BH_DIRTY; /* new block is always dirty */
|
hp->bh_flags = BH_LOCKED | BH_DIRTY; // new block is always dirty
|
||||||
mfp->mf_dirty = TRUE;
|
mfp->mf_dirty = TRUE;
|
||||||
hp->bh_page_count = page_count;
|
hp->bh_page_count = page_count;
|
||||||
mf_ins_used(mfp, hp);
|
mf_ins_used(mfp, hp);
|
||||||
@@ -414,7 +414,7 @@ mf_new(memfile_T *mfp, int negative, int page_count)
|
|||||||
mf_get(memfile_T *mfp, blocknr_T nr, int page_count)
|
mf_get(memfile_T *mfp, blocknr_T nr, int page_count)
|
||||||
{
|
{
|
||||||
bhdr_T *hp;
|
bhdr_T *hp;
|
||||||
/* doesn't exist */
|
// doesn't exist
|
||||||
if (nr >= mfp->mf_blocknr_max || nr <= mfp->mf_blocknr_min)
|
if (nr >= mfp->mf_blocknr_max || nr <= mfp->mf_blocknr_min)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -422,12 +422,12 @@ mf_get(memfile_T *mfp, blocknr_T nr, int page_count)
|
|||||||
* see if it is in the cache
|
* see if it is in the cache
|
||||||
*/
|
*/
|
||||||
hp = mf_find_hash(mfp, nr);
|
hp = mf_find_hash(mfp, nr);
|
||||||
if (hp == NULL) /* not in the hash list */
|
if (hp == NULL) // not in the hash list
|
||||||
{
|
{
|
||||||
if (nr < 0 || nr >= mfp->mf_infile_count) /* can't be in the file */
|
if (nr < 0 || nr >= mfp->mf_infile_count) // can't be in the file
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* could check here if the block is in the free list */
|
// could check here if the block is in the free list
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if we need to flush an existing block.
|
* Check if we need to flush an existing block.
|
||||||
@@ -441,7 +441,7 @@ mf_get(memfile_T *mfp, blocknr_T nr, int page_count)
|
|||||||
hp->bh_bnum = nr;
|
hp->bh_bnum = nr;
|
||||||
hp->bh_flags = 0;
|
hp->bh_flags = 0;
|
||||||
hp->bh_page_count = page_count;
|
hp->bh_page_count = page_count;
|
||||||
if (mf_read(mfp, hp) == FAIL) /* cannot read the block! */
|
if (mf_read(mfp, hp) == FAIL) // cannot read the block!
|
||||||
{
|
{
|
||||||
mf_free_bhdr(hp);
|
mf_free_bhdr(hp);
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -449,13 +449,13 @@ mf_get(memfile_T *mfp, blocknr_T nr, int page_count)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mf_rem_used(mfp, hp); /* remove from list, insert in front below */
|
mf_rem_used(mfp, hp); // remove from list, insert in front below
|
||||||
mf_rem_hash(mfp, hp);
|
mf_rem_hash(mfp, hp);
|
||||||
}
|
}
|
||||||
|
|
||||||
hp->bh_flags |= BH_LOCKED;
|
hp->bh_flags |= BH_LOCKED;
|
||||||
mf_ins_used(mfp, hp); /* put in front of used list */
|
mf_ins_used(mfp, hp); // put in front of used list
|
||||||
mf_ins_hash(mfp, hp); /* put in front of hash list */
|
mf_ins_hash(mfp, hp); // put in front of hash list
|
||||||
|
|
||||||
return hp;
|
return hp;
|
||||||
}
|
}
|
||||||
@@ -489,7 +489,7 @@ mf_put(
|
|||||||
}
|
}
|
||||||
hp->bh_flags = flags;
|
hp->bh_flags = flags;
|
||||||
if (infile)
|
if (infile)
|
||||||
mf_trans_add(mfp, hp); /* may translate negative in positive nr */
|
mf_trans_add(mfp, hp); // may translate negative in positive nr
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -498,20 +498,20 @@ mf_put(
|
|||||||
void
|
void
|
||||||
mf_free(memfile_T *mfp, bhdr_T *hp)
|
mf_free(memfile_T *mfp, bhdr_T *hp)
|
||||||
{
|
{
|
||||||
vim_free(hp->bh_data); /* free the memory */
|
vim_free(hp->bh_data); // free the memory
|
||||||
mf_rem_hash(mfp, hp); /* get *hp out of the hash list */
|
mf_rem_hash(mfp, hp); // get *hp out of the hash list
|
||||||
mf_rem_used(mfp, hp); /* get *hp out of the used list */
|
mf_rem_used(mfp, hp); // get *hp out of the used list
|
||||||
if (hp->bh_bnum < 0)
|
if (hp->bh_bnum < 0)
|
||||||
{
|
{
|
||||||
vim_free(hp); /* don't want negative numbers in free list */
|
vim_free(hp); // don't want negative numbers in free list
|
||||||
mfp->mf_neg_count--;
|
mfp->mf_neg_count--;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
mf_ins_free(mfp, hp); /* put *hp in the free list */
|
mf_ins_free(mfp, hp); // put *hp in the free list
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__MORPHOS__) && defined(__libnix__)
|
#if defined(__MORPHOS__) && defined(__libnix__)
|
||||||
/* function is missing in MorphOS libnix version */
|
// function is missing in MorphOS libnix version
|
||||||
extern unsigned long *__stdfiledes;
|
extern unsigned long *__stdfiledes;
|
||||||
|
|
||||||
static unsigned long
|
static unsigned long
|
||||||
@@ -541,14 +541,14 @@ mf_sync(memfile_T *mfp, int flags)
|
|||||||
bhdr_T *hp;
|
bhdr_T *hp;
|
||||||
int got_int_save = got_int;
|
int got_int_save = got_int;
|
||||||
|
|
||||||
if (mfp->mf_fd < 0) /* there is no file, nothing to do */
|
if (mfp->mf_fd < 0) // there is no file, nothing to do
|
||||||
{
|
{
|
||||||
mfp->mf_dirty = FALSE;
|
mfp->mf_dirty = FALSE;
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only a CTRL-C while writing will break us here, not one typed
|
// Only a CTRL-C while writing will break us here, not one typed
|
||||||
* previously. */
|
// previously.
|
||||||
got_int = FALSE;
|
got_int = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -568,13 +568,13 @@ mf_sync(memfile_T *mfp, int flags)
|
|||||||
continue;
|
continue;
|
||||||
if (mf_write(mfp, hp) == FAIL)
|
if (mf_write(mfp, hp) == FAIL)
|
||||||
{
|
{
|
||||||
if (status == FAIL) /* double error: quit syncing */
|
if (status == FAIL) // double error: quit syncing
|
||||||
break;
|
break;
|
||||||
status = FAIL;
|
status = FAIL;
|
||||||
}
|
}
|
||||||
if (flags & MFS_STOP)
|
if (flags & MFS_STOP)
|
||||||
{
|
{
|
||||||
/* Stop when char available now. */
|
// Stop when char available now.
|
||||||
if (ui_char_avail())
|
if (ui_char_avail())
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -605,9 +605,9 @@ mf_sync(memfile_T *mfp, int flags)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
# endif
|
# endif
|
||||||
/* OpenNT is strictly POSIX (Benzinger) */
|
// OpenNT is strictly POSIX (Benzinger)
|
||||||
/* Tandem/Himalaya NSK-OSS doesn't have sync() */
|
// Tandem/Himalaya NSK-OSS doesn't have sync()
|
||||||
/* No sync() on Stratus VOS */
|
// No sync() on Stratus VOS
|
||||||
# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)
|
# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)
|
||||||
fflush(NULL);
|
fflush(NULL);
|
||||||
# else
|
# else
|
||||||
@@ -649,8 +649,8 @@ mf_sync(memfile_T *mfp, int flags)
|
|||||||
# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)
|
# if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)
|
||||||
{
|
{
|
||||||
# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)
|
# if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)
|
||||||
/* Have function (in libnix at least),
|
// Have function (in libnix at least),
|
||||||
* but ain't got no prototype anywhere. */
|
// but ain't got no prototype anywhere.
|
||||||
extern unsigned long fdtofh(int filedescriptor);
|
extern unsigned long fdtofh(int filedescriptor);
|
||||||
# endif
|
# endif
|
||||||
# if !defined(__libnix__)
|
# if !defined(__libnix__)
|
||||||
@@ -662,12 +662,12 @@ mf_sync(memfile_T *mfp, int flags)
|
|||||||
Flush(fh);
|
Flush(fh);
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
# else /* assume Manx */
|
# else // assume Manx
|
||||||
Flush(_devtab[mfp->mf_fd].fd);
|
Flush(_devtab[mfp->mf_fd].fd);
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif /* AMIGA */
|
#endif // AMIGA
|
||||||
}
|
}
|
||||||
|
|
||||||
got_int |= got_int_save;
|
got_int |= got_int_save;
|
||||||
@@ -727,7 +727,7 @@ mf_ins_used(memfile_T *mfp, bhdr_T *hp)
|
|||||||
hp->bh_next = mfp->mf_used_first;
|
hp->bh_next = mfp->mf_used_first;
|
||||||
mfp->mf_used_first = hp;
|
mfp->mf_used_first = hp;
|
||||||
hp->bh_prev = NULL;
|
hp->bh_prev = NULL;
|
||||||
if (hp->bh_next == NULL) /* list was empty, adjust last pointer */
|
if (hp->bh_next == NULL) // list was empty, adjust last pointer
|
||||||
mfp->mf_used_last = hp;
|
mfp->mf_used_last = hp;
|
||||||
else
|
else
|
||||||
hp->bh_next->bh_prev = hp;
|
hp->bh_next->bh_prev = hp;
|
||||||
@@ -741,11 +741,11 @@ mf_ins_used(memfile_T *mfp, bhdr_T *hp)
|
|||||||
static void
|
static void
|
||||||
mf_rem_used(memfile_T *mfp, bhdr_T *hp)
|
mf_rem_used(memfile_T *mfp, bhdr_T *hp)
|
||||||
{
|
{
|
||||||
if (hp->bh_next == NULL) /* last block in used list */
|
if (hp->bh_next == NULL) // last block in used list
|
||||||
mfp->mf_used_last = hp->bh_prev;
|
mfp->mf_used_last = hp->bh_prev;
|
||||||
else
|
else
|
||||||
hp->bh_next->bh_prev = hp->bh_prev;
|
hp->bh_next->bh_prev = hp->bh_prev;
|
||||||
if (hp->bh_prev == NULL) /* first block in used list */
|
if (hp->bh_prev == NULL) // first block in used list
|
||||||
mfp->mf_used_first = hp->bh_next;
|
mfp->mf_used_first = hp->bh_next;
|
||||||
else
|
else
|
||||||
hp->bh_prev->bh_next = hp->bh_next;
|
hp->bh_prev->bh_next = hp->bh_next;
|
||||||
@@ -769,7 +769,7 @@ mf_release(memfile_T *mfp, int page_count)
|
|||||||
int need_release;
|
int need_release;
|
||||||
buf_T *buf;
|
buf_T *buf;
|
||||||
|
|
||||||
/* don't release while in mf_close_file() */
|
// don't release while in mf_close_file()
|
||||||
if (mf_dont_release)
|
if (mf_dont_release)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -786,7 +786,7 @@ mf_release(memfile_T *mfp, int page_count)
|
|||||||
*/
|
*/
|
||||||
if (mfp->mf_fd < 0 && need_release && p_uc)
|
if (mfp->mf_fd < 0 && need_release && p_uc)
|
||||||
{
|
{
|
||||||
/* find for which buffer this memfile is */
|
// find for which buffer this memfile is
|
||||||
FOR_ALL_BUFFERS(buf)
|
FOR_ALL_BUFFERS(buf)
|
||||||
if (buf->b_ml.ml_mfp == mfp)
|
if (buf->b_ml.ml_mfp == mfp)
|
||||||
break;
|
break;
|
||||||
@@ -808,7 +808,7 @@ mf_release(memfile_T *mfp, int page_count)
|
|||||||
for (hp = mfp->mf_used_last; hp != NULL; hp = hp->bh_prev)
|
for (hp = mfp->mf_used_last; hp != NULL; hp = hp->bh_prev)
|
||||||
if (!(hp->bh_flags & BH_LOCKED))
|
if (!(hp->bh_flags & BH_LOCKED))
|
||||||
break;
|
break;
|
||||||
if (hp == NULL) /* not a single one that can be released */
|
if (hp == NULL) // not a single one that can be released
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -857,11 +857,11 @@ mf_release_all(void)
|
|||||||
mfp = buf->b_ml.ml_mfp;
|
mfp = buf->b_ml.ml_mfp;
|
||||||
if (mfp != NULL)
|
if (mfp != NULL)
|
||||||
{
|
{
|
||||||
/* If no swap file yet, may open one */
|
// If no swap file yet, may open one
|
||||||
if (mfp->mf_fd < 0 && buf->b_may_swap)
|
if (mfp->mf_fd < 0 && buf->b_may_swap)
|
||||||
ml_open_file(buf);
|
ml_open_file(buf);
|
||||||
|
|
||||||
/* only if there is a swapfile */
|
// only if there is a swapfile
|
||||||
if (mfp->mf_fd >= 0)
|
if (mfp->mf_fd >= 0)
|
||||||
{
|
{
|
||||||
for (hp = mfp->mf_used_last; hp != NULL; )
|
for (hp = mfp->mf_used_last; hp != NULL; )
|
||||||
@@ -873,7 +873,7 @@ mf_release_all(void)
|
|||||||
mf_rem_used(mfp, hp);
|
mf_rem_used(mfp, hp);
|
||||||
mf_rem_hash(mfp, hp);
|
mf_rem_hash(mfp, hp);
|
||||||
mf_free_bhdr(hp);
|
mf_free_bhdr(hp);
|
||||||
hp = mfp->mf_used_last; /* re-start, list was changed */
|
hp = mfp->mf_used_last; // re-start, list was changed
|
||||||
retval = TRUE;
|
retval = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -897,7 +897,7 @@ mf_alloc_bhdr(memfile_T *mfp, int page_count)
|
|||||||
{
|
{
|
||||||
if ((hp->bh_data = alloc(mfp->mf_page_size * page_count)) == NULL)
|
if ((hp->bh_data = alloc(mfp->mf_page_size * page_count)) == NULL)
|
||||||
{
|
{
|
||||||
vim_free(hp); /* not enough memory */
|
vim_free(hp); // not enough memory
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
hp->bh_page_count = page_count;
|
hp->bh_page_count = page_count;
|
||||||
@@ -951,7 +951,7 @@ mf_read(memfile_T *mfp, bhdr_T *hp)
|
|||||||
unsigned page_size;
|
unsigned page_size;
|
||||||
unsigned size;
|
unsigned size;
|
||||||
|
|
||||||
if (mfp->mf_fd < 0) /* there is no file, can't read */
|
if (mfp->mf_fd < 0) // there is no file, can't read
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
page_size = mfp->mf_page_size;
|
page_size = mfp->mf_page_size;
|
||||||
@@ -969,8 +969,8 @@ mf_read(memfile_T *mfp, bhdr_T *hp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_CRYPT
|
#ifdef FEAT_CRYPT
|
||||||
/* Decrypt if 'key' is set and this is a data block. And when changing the
|
// Decrypt if 'key' is set and this is a data block. And when changing the
|
||||||
* key. */
|
// key.
|
||||||
if (*mfp->mf_buffer->b_p_key != NUL || mfp->mf_old_key != NULL)
|
if (*mfp->mf_buffer->b_p_key != NUL || mfp->mf_old_key != NULL)
|
||||||
ml_decrypt_data(mfp, hp->bh_data, offset, size);
|
ml_decrypt_data(mfp, hp->bh_data, offset, size);
|
||||||
#endif
|
#endif
|
||||||
@@ -986,18 +986,18 @@ mf_read(memfile_T *mfp, bhdr_T *hp)
|
|||||||
static int
|
static int
|
||||||
mf_write(memfile_T *mfp, bhdr_T *hp)
|
mf_write(memfile_T *mfp, bhdr_T *hp)
|
||||||
{
|
{
|
||||||
off_T offset; /* offset in the file */
|
off_T offset; // offset in the file
|
||||||
blocknr_T nr; /* block nr which is being written */
|
blocknr_T nr; // block nr which is being written
|
||||||
bhdr_T *hp2;
|
bhdr_T *hp2;
|
||||||
unsigned page_size; /* number of bytes in a page */
|
unsigned page_size; // number of bytes in a page
|
||||||
unsigned page_count; /* number of pages written */
|
unsigned page_count; // number of pages written
|
||||||
unsigned size; /* number of bytes written */
|
unsigned size; // number of bytes written
|
||||||
|
|
||||||
if (mfp->mf_fd < 0 && !mfp->mf_reopen)
|
if (mfp->mf_fd < 0 && !mfp->mf_reopen)
|
||||||
// there is no file and there was no file, can't write
|
// there is no file and there was no file, can't write
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
if (hp->bh_bnum < 0) /* must assign file block number */
|
if (hp->bh_bnum < 0) // must assign file block number
|
||||||
if (mf_trans_add(mfp, hp) == FAIL)
|
if (mf_trans_add(mfp, hp) == FAIL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
|
||||||
@@ -1014,16 +1014,16 @@ mf_write(memfile_T *mfp, bhdr_T *hp)
|
|||||||
int attempt;
|
int attempt;
|
||||||
|
|
||||||
nr = hp->bh_bnum;
|
nr = hp->bh_bnum;
|
||||||
if (nr > mfp->mf_infile_count) /* beyond end of file */
|
if (nr > mfp->mf_infile_count) // beyond end of file
|
||||||
{
|
{
|
||||||
nr = mfp->mf_infile_count;
|
nr = mfp->mf_infile_count;
|
||||||
hp2 = mf_find_hash(mfp, nr); /* NULL caught below */
|
hp2 = mf_find_hash(mfp, nr); // NULL caught below
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
hp2 = hp;
|
hp2 = hp;
|
||||||
|
|
||||||
offset = (off_T)page_size * nr;
|
offset = (off_T)page_size * nr;
|
||||||
if (hp2 == NULL) /* freed block, fill with dummy data */
|
if (hp2 == NULL) // freed block, fill with dummy data
|
||||||
page_count = 1;
|
page_count = 1;
|
||||||
else
|
else
|
||||||
page_count = hp2->bh_page_count;
|
page_count = hp2->bh_page_count;
|
||||||
@@ -1067,12 +1067,12 @@ mf_write(memfile_T *mfp, bhdr_T *hp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
did_swapwrite_msg = FALSE;
|
did_swapwrite_msg = FALSE;
|
||||||
if (hp2 != NULL) /* written a non-dummy block */
|
if (hp2 != NULL) // written a non-dummy block
|
||||||
hp2->bh_flags &= ~BH_DIRTY;
|
hp2->bh_flags &= ~BH_DIRTY;
|
||||||
/* appended to the file */
|
// appended to the file
|
||||||
if (nr + (blocknr_T)page_count > mfp->mf_infile_count)
|
if (nr + (blocknr_T)page_count > mfp->mf_infile_count)
|
||||||
mfp->mf_infile_count = nr + page_count;
|
mfp->mf_infile_count = nr + page_count;
|
||||||
if (nr == hp->bh_bnum) /* written the desired block */
|
if (nr == hp->bh_bnum) // written the desired block
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return OK;
|
return OK;
|
||||||
@@ -1094,7 +1094,7 @@ mf_write_block(
|
|||||||
int result = OK;
|
int result = OK;
|
||||||
|
|
||||||
#ifdef FEAT_CRYPT
|
#ifdef FEAT_CRYPT
|
||||||
/* Encrypt if 'key' is set and this is a data block. */
|
// Encrypt if 'key' is set and this is a data block.
|
||||||
if (*mfp->mf_buffer->b_p_key != NUL)
|
if (*mfp->mf_buffer->b_p_key != NUL)
|
||||||
{
|
{
|
||||||
data = ml_encrypt_data(mfp, data, offset, size);
|
data = ml_encrypt_data(mfp, data, offset, size);
|
||||||
@@ -1127,7 +1127,7 @@ mf_trans_add(memfile_T *mfp, bhdr_T *hp)
|
|||||||
NR_TRANS *np;
|
NR_TRANS *np;
|
||||||
int page_count;
|
int page_count;
|
||||||
|
|
||||||
if (hp->bh_bnum >= 0) /* it's already positive */
|
if (hp->bh_bnum >= 0) // it's already positive
|
||||||
return OK;
|
return OK;
|
||||||
|
|
||||||
if ((np = ALLOC_ONE(NR_TRANS)) == NULL)
|
if ((np = ALLOC_ONE(NR_TRANS)) == NULL)
|
||||||
@@ -1164,14 +1164,14 @@ mf_trans_add(memfile_T *mfp, bhdr_T *hp)
|
|||||||
mfp->mf_blocknr_max += page_count;
|
mfp->mf_blocknr_max += page_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
np->nt_old_bnum = hp->bh_bnum; /* adjust number */
|
np->nt_old_bnum = hp->bh_bnum; // adjust number
|
||||||
np->nt_new_bnum = new_bnum;
|
np->nt_new_bnum = new_bnum;
|
||||||
|
|
||||||
mf_rem_hash(mfp, hp); /* remove from old hash list */
|
mf_rem_hash(mfp, hp); // remove from old hash list
|
||||||
hp->bh_bnum = new_bnum;
|
hp->bh_bnum = new_bnum;
|
||||||
mf_ins_hash(mfp, hp); /* insert in new hash list */
|
mf_ins_hash(mfp, hp); // insert in new hash list
|
||||||
|
|
||||||
/* Insert "np" into "mf_trans" hashtable with key "np->nt_old_bnum" */
|
// Insert "np" into "mf_trans" hashtable with key "np->nt_old_bnum"
|
||||||
mf_hash_add_item(&mfp->mf_trans, (mf_hashitem_T *)np);
|
mf_hash_add_item(&mfp->mf_trans, (mf_hashitem_T *)np);
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
@@ -1190,13 +1190,13 @@ mf_trans_del(memfile_T *mfp, blocknr_T old_nr)
|
|||||||
|
|
||||||
np = (NR_TRANS *)mf_hash_find(&mfp->mf_trans, old_nr);
|
np = (NR_TRANS *)mf_hash_find(&mfp->mf_trans, old_nr);
|
||||||
|
|
||||||
if (np == NULL) /* not found */
|
if (np == NULL) // not found
|
||||||
return old_nr;
|
return old_nr;
|
||||||
|
|
||||||
mfp->mf_neg_count--;
|
mfp->mf_neg_count--;
|
||||||
new_bnum = np->nt_new_bnum;
|
new_bnum = np->nt_new_bnum;
|
||||||
|
|
||||||
/* remove entry from the trans list */
|
// remove entry from the trans list
|
||||||
mf_hash_rem_item(&mfp->mf_trans, (mf_hashitem_T *)np);
|
mf_hash_rem_item(&mfp->mf_trans, (mf_hashitem_T *)np);
|
||||||
|
|
||||||
vim_free(np);
|
vim_free(np);
|
||||||
@@ -1248,7 +1248,7 @@ mf_need_trans(memfile_T *mfp)
|
|||||||
mf_do_open(
|
mf_do_open(
|
||||||
memfile_T *mfp,
|
memfile_T *mfp,
|
||||||
char_u *fname,
|
char_u *fname,
|
||||||
int flags) /* flags for open() */
|
int flags) // flags for open()
|
||||||
{
|
{
|
||||||
#ifdef HAVE_LSTAT
|
#ifdef HAVE_LSTAT
|
||||||
stat_T sb;
|
stat_T sb;
|
||||||
@@ -1288,9 +1288,9 @@ mf_do_open(
|
|||||||
*/
|
*/
|
||||||
flags |= O_EXTRA | O_NOFOLLOW;
|
flags |= O_EXTRA | O_NOFOLLOW;
|
||||||
#ifdef MSWIN
|
#ifdef MSWIN
|
||||||
/* Prevent handle inheritance that cause problems with Cscope
|
// Prevent handle inheritance that cause problems with Cscope
|
||||||
* (swap file may not be deleted if cscope connection was open after
|
// (swap file may not be deleted if cscope connection was open after
|
||||||
* the file) */
|
// the file)
|
||||||
flags |= O_NOINHERIT;
|
flags |= O_NOINHERIT;
|
||||||
#endif
|
#endif
|
||||||
mfp->mf_flags = flags;
|
mfp->mf_flags = flags;
|
||||||
@@ -1315,7 +1315,7 @@ mf_do_open(
|
|||||||
#if defined(HAVE_SELINUX) || defined(HAVE_SMACK)
|
#if defined(HAVE_SELINUX) || defined(HAVE_SMACK)
|
||||||
mch_copy_sec(fname, mfp->mf_fname);
|
mch_copy_sec(fname, mfp->mf_fname);
|
||||||
#endif
|
#endif
|
||||||
mch_hide(mfp->mf_fname); /* try setting the 'hidden' flag */
|
mch_hide(mfp->mf_fname); // try setting the 'hidden' flag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1329,7 +1329,7 @@ mf_do_open(
|
|||||||
* exceeds 2 ^ MHT_LOG_LOAD_FACTOR.
|
* exceeds 2 ^ MHT_LOG_LOAD_FACTOR.
|
||||||
*/
|
*/
|
||||||
#define MHT_LOG_LOAD_FACTOR 6
|
#define MHT_LOG_LOAD_FACTOR 6
|
||||||
#define MHT_GROWTH_FACTOR 2 /* must be a power of two */
|
#define MHT_GROWTH_FACTOR 2 // must be a power of two
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize an empty hash table.
|
* Initialize an empty hash table.
|
||||||
@@ -1416,7 +1416,7 @@ mf_hash_add_item(mf_hashtab_T *mht, mf_hashitem_T *mhi)
|
|||||||
{
|
{
|
||||||
if (mf_hash_grow(mht) == FAIL)
|
if (mf_hash_grow(mht) == FAIL)
|
||||||
{
|
{
|
||||||
/* stop trying to grow after first failure to allocate memory */
|
// stop trying to grow after first failure to allocate memory
|
||||||
mht->mht_fixed = 1;
|
mht->mht_fixed = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1439,8 +1439,8 @@ mf_hash_rem_item(mf_hashtab_T *mht, mf_hashitem_T *mhi)
|
|||||||
|
|
||||||
mht->mht_count--;
|
mht->mht_count--;
|
||||||
|
|
||||||
/* We could shrink the table here, but it typically takes little memory,
|
// We could shrink the table here, but it typically takes little memory,
|
||||||
* so why bother? */
|
// so why bother?
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -15,11 +15,11 @@
|
|||||||
#undef NDEBUG
|
#undef NDEBUG
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
/* Must include main.c because it contains much more than just main() */
|
// Must include main.c because it contains much more than just main()
|
||||||
#define NO_VIM_MAIN
|
#define NO_VIM_MAIN
|
||||||
#include "main.c"
|
#include "main.c"
|
||||||
|
|
||||||
/* This file has to be included because the tested functions are static */
|
// This file has to be included because the tested functions are static
|
||||||
#include "memfile.c"
|
#include "memfile.c"
|
||||||
|
|
||||||
#define index_to_key(i) ((i) ^ 15167)
|
#define index_to_key(i) ((i) ^ 15167)
|
||||||
@@ -39,21 +39,21 @@ test_mf_hash(void)
|
|||||||
|
|
||||||
mf_hash_init(&ht);
|
mf_hash_init(&ht);
|
||||||
|
|
||||||
/* insert some items and check invariants */
|
// insert some items and check invariants
|
||||||
for (i = 0; i < TEST_COUNT; i++)
|
for (i = 0; i < TEST_COUNT; i++)
|
||||||
{
|
{
|
||||||
assert(ht.mht_count == i);
|
assert(ht.mht_count == i);
|
||||||
|
|
||||||
/* check that number of buckets is a power of 2 */
|
// check that number of buckets is a power of 2
|
||||||
num_buckets = ht.mht_mask + 1;
|
num_buckets = ht.mht_mask + 1;
|
||||||
assert(num_buckets > 0 && (num_buckets & (num_buckets - 1)) == 0);
|
assert(num_buckets > 0 && (num_buckets & (num_buckets - 1)) == 0);
|
||||||
|
|
||||||
/* check load factor */
|
// check load factor
|
||||||
assert(ht.mht_count <= (num_buckets << MHT_LOG_LOAD_FACTOR));
|
assert(ht.mht_count <= (num_buckets << MHT_LOG_LOAD_FACTOR));
|
||||||
|
|
||||||
if (i < (MHT_INIT_SIZE << MHT_LOG_LOAD_FACTOR))
|
if (i < (MHT_INIT_SIZE << MHT_LOG_LOAD_FACTOR))
|
||||||
{
|
{
|
||||||
/* first expansion shouldn't have occurred yet */
|
// first expansion shouldn't have occurred yet
|
||||||
assert(num_buckets == MHT_INIT_SIZE);
|
assert(num_buckets == MHT_INIT_SIZE);
|
||||||
assert(ht.mht_buckets == ht.mht_small_buckets);
|
assert(ht.mht_buckets == ht.mht_small_buckets);
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ test_mf_hash(void)
|
|||||||
key = index_to_key(i);
|
key = index_to_key(i);
|
||||||
assert(mf_hash_find(&ht, key) == NULL);
|
assert(mf_hash_find(&ht, key) == NULL);
|
||||||
|
|
||||||
/* allocate and add new item */
|
// allocate and add new item
|
||||||
item = LALLOC_CLEAR_ONE(mf_hashitem_T);
|
item = LALLOC_CLEAR_ONE(mf_hashitem_T);
|
||||||
assert(item != NULL);
|
assert(item != NULL);
|
||||||
item->mhi_key = key;
|
item->mhi_key = key;
|
||||||
@@ -76,13 +76,13 @@ test_mf_hash(void)
|
|||||||
|
|
||||||
if (ht.mht_mask + 1 != num_buckets)
|
if (ht.mht_mask + 1 != num_buckets)
|
||||||
{
|
{
|
||||||
/* hash table was expanded */
|
// hash table was expanded
|
||||||
assert(ht.mht_mask + 1 == num_buckets * MHT_GROWTH_FACTOR);
|
assert(ht.mht_mask + 1 == num_buckets * MHT_GROWTH_FACTOR);
|
||||||
assert(i + 1 == (num_buckets << MHT_LOG_LOAD_FACTOR));
|
assert(i + 1 == (num_buckets << MHT_LOG_LOAD_FACTOR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check presence of inserted items */
|
// check presence of inserted items
|
||||||
for (i = 0; i < TEST_COUNT; i++)
|
for (i = 0; i < TEST_COUNT; i++)
|
||||||
{
|
{
|
||||||
key = index_to_key(i);
|
key = index_to_key(i);
|
||||||
@@ -91,7 +91,7 @@ test_mf_hash(void)
|
|||||||
assert(item->mhi_key == key);
|
assert(item->mhi_key == key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delete some items */
|
// delete some items
|
||||||
for (i = 0; i < TEST_COUNT; i++)
|
for (i = 0; i < TEST_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (i % 100 < 70)
|
if (i % 100 < 70)
|
||||||
@@ -114,7 +114,7 @@ test_mf_hash(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check again */
|
// check again
|
||||||
for (i = 0; i < TEST_COUNT; i++)
|
for (i = 0; i < TEST_COUNT; i++)
|
||||||
{
|
{
|
||||||
key = index_to_key(i);
|
key = index_to_key(i);
|
||||||
@@ -131,7 +131,7 @@ test_mf_hash(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free hash table and all remaining items */
|
// free hash table and all remaining items
|
||||||
mf_hash_free_all(&ht);
|
mf_hash_free_all(&ht);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
877
src/memline.c
877
src/memline.c
File diff suppressed because it is too large
Load Diff
320
src/menu.c
320
src/menu.c
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#if defined(FEAT_MENU) || defined(PROTO)
|
#if defined(FEAT_MENU) || defined(PROTO)
|
||||||
|
|
||||||
#define MENUDEPTH 10 /* maximum depth of menus */
|
#define MENUDEPTH 10 // maximum depth of menus
|
||||||
|
|
||||||
#ifdef FEAT_GUI_MSWIN
|
#ifdef FEAT_GUI_MSWIN
|
||||||
static int add_menu_path(char_u *, vimmenu_T *, int *, char_u *, int);
|
static int add_menu_path(char_u *, vimmenu_T *, int *, char_u *, int);
|
||||||
@@ -56,7 +56,7 @@ static void menu_unescape_name(char_u *p);
|
|||||||
|
|
||||||
static char_u *menu_translate_tab_and_shift(char_u *arg_start);
|
static char_u *menu_translate_tab_and_shift(char_u *arg_start);
|
||||||
|
|
||||||
/* The character for each menu mode */
|
// The character for each menu mode
|
||||||
static char *menu_mode_chars[] = {"n", "v", "s", "o", "i", "c", "tl", "t"};
|
static char *menu_mode_chars[] = {"n", "v", "s", "o", "i", "c", "tl", "t"};
|
||||||
|
|
||||||
static char_u e_notsubmenu[] = N_("E327: Part of menu-item path is not sub-menu");
|
static char_u e_notsubmenu[] = N_("E327: Part of menu-item path is not sub-menu");
|
||||||
@@ -106,7 +106,7 @@ get_root_menu(char_u *name)
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ex_menu(
|
ex_menu(
|
||||||
exarg_T *eap) /* Ex command arguments */
|
exarg_T *eap) // Ex command arguments
|
||||||
{
|
{
|
||||||
char_u *menu_path;
|
char_u *menu_path;
|
||||||
int modes;
|
int modes;
|
||||||
@@ -126,8 +126,8 @@ ex_menu(
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
int pri_tab[MENUDEPTH + 1];
|
int pri_tab[MENUDEPTH + 1];
|
||||||
int enable = MAYBE; /* TRUE for "menu enable", FALSE for "menu
|
int enable = MAYBE; // TRUE for "menu enable", FALSE for "menu
|
||||||
* disable */
|
// disable
|
||||||
#ifdef FEAT_TOOLBAR
|
#ifdef FEAT_TOOLBAR
|
||||||
char_u *icon = NULL;
|
char_u *icon = NULL;
|
||||||
#endif
|
#endif
|
||||||
@@ -161,7 +161,7 @@ ex_menu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Locate an optional "icon=filename" argument. */
|
// Locate an optional "icon=filename" argument.
|
||||||
if (STRNCMP(arg, "icon=", 5) == 0)
|
if (STRNCMP(arg, "icon=", 5) == 0)
|
||||||
{
|
{
|
||||||
arg += 5;
|
arg += 5;
|
||||||
@@ -208,7 +208,7 @@ ex_menu(
|
|||||||
i = 0;
|
i = 0;
|
||||||
while (i < MENUDEPTH)
|
while (i < MENUDEPTH)
|
||||||
pri_tab[i++] = 500;
|
pri_tab[i++] = 500;
|
||||||
pri_tab[MENUDEPTH] = -1; /* mark end of the table */
|
pri_tab[MENUDEPTH] = -1; // mark end of the table
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for "disable" or "enable" argument.
|
* Check for "disable" or "enable" argument.
|
||||||
@@ -301,7 +301,7 @@ ex_menu(
|
|||||||
|
|
||||||
root_menu_ptr = get_root_menu(menu_path);
|
root_menu_ptr = get_root_menu(menu_path);
|
||||||
if (root_menu_ptr == &curwin->w_winbar)
|
if (root_menu_ptr == &curwin->w_winbar)
|
||||||
/* Assume the window toolbar menu will change. */
|
// Assume the window toolbar menu will change.
|
||||||
redraw_later(NOT_VALID);
|
redraw_later(NOT_VALID);
|
||||||
|
|
||||||
if (enable != MAYBE)
|
if (enable != MAYBE)
|
||||||
@@ -311,7 +311,7 @@ ex_menu(
|
|||||||
* For the PopUp menu, remove a menu for each mode separately.
|
* For the PopUp menu, remove a menu for each mode separately.
|
||||||
* Careful: menu_nable_recurse() changes menu_path.
|
* Careful: menu_nable_recurse() changes menu_path.
|
||||||
*/
|
*/
|
||||||
if (STRCMP(menu_path, "*") == 0) /* meaning: do all menus */
|
if (STRCMP(menu_path, "*") == 0) // meaning: do all menus
|
||||||
menu_path = (char_u *)"";
|
menu_path = (char_u *)"";
|
||||||
|
|
||||||
if (menu_is_popup(menu_path))
|
if (menu_is_popup(menu_path))
|
||||||
@@ -335,7 +335,7 @@ ex_menu(
|
|||||||
/*
|
/*
|
||||||
* Delete menu(s).
|
* Delete menu(s).
|
||||||
*/
|
*/
|
||||||
if (STRCMP(menu_path, "*") == 0) /* meaning: remove all menus */
|
if (STRCMP(menu_path, "*") == 0) // meaning: remove all menus
|
||||||
menu_path = (char_u *)"";
|
menu_path = (char_u *)"";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -355,7 +355,7 @@ ex_menu(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Careful: remove_menu() changes menu_path */
|
// Careful: remove_menu() changes menu_path
|
||||||
remove_menu(root_menu_ptr, menu_path, modes, FALSE);
|
remove_menu(root_menu_ptr, menu_path, modes, FALSE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -364,13 +364,13 @@ ex_menu(
|
|||||||
* Add menu(s).
|
* Add menu(s).
|
||||||
* Replace special key codes.
|
* Replace special key codes.
|
||||||
*/
|
*/
|
||||||
if (STRICMP(map_to, "<nop>") == 0) /* "<Nop>" means nothing */
|
if (STRICMP(map_to, "<nop>") == 0) // "<Nop>" means nothing
|
||||||
{
|
{
|
||||||
map_to = (char_u *)"";
|
map_to = (char_u *)"";
|
||||||
map_buf = NULL;
|
map_buf = NULL;
|
||||||
}
|
}
|
||||||
else if (modes & MENU_TIP_MODE)
|
else if (modes & MENU_TIP_MODE)
|
||||||
map_buf = NULL; /* Menu tips are plain text. */
|
map_buf = NULL; // Menu tips are plain text.
|
||||||
else
|
else
|
||||||
map_to = replace_termcodes(map_to, &map_buf,
|
map_to = replace_termcodes(map_to, &map_buf,
|
||||||
REPTERM_DO_LT | (special ? REPTERM_SPECIAL : 0), NULL);
|
REPTERM_DO_LT | (special ? REPTERM_SPECIAL : 0), NULL);
|
||||||
@@ -397,7 +397,7 @@ ex_menu(
|
|||||||
p = popup_mode_name(menu_path, i);
|
p = popup_mode_name(menu_path, i);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
{
|
{
|
||||||
/* Include all modes, to make ":amenu" work */
|
// Include all modes, to make ":amenu" work
|
||||||
menuarg.modes = modes;
|
menuarg.modes = modes;
|
||||||
#ifdef FEAT_TOOLBAR
|
#ifdef FEAT_TOOLBAR
|
||||||
menuarg.iconfile = NULL;
|
menuarg.iconfile = NULL;
|
||||||
@@ -418,7 +418,7 @@ ex_menu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_GUI) && !(defined(FEAT_GUI_GTK))
|
#if defined(FEAT_GUI) && !(defined(FEAT_GUI_GTK))
|
||||||
/* If the menubar height changed, resize the window */
|
// If the menubar height changed, resize the window
|
||||||
if (gui.in_use
|
if (gui.in_use
|
||||||
&& (gui.menu_height != old_menu_height
|
&& (gui.menu_height != old_menu_height
|
||||||
# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
|
# if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
|
||||||
@@ -451,12 +451,12 @@ theend:
|
|||||||
static int
|
static int
|
||||||
add_menu_path(
|
add_menu_path(
|
||||||
char_u *menu_path,
|
char_u *menu_path,
|
||||||
vimmenu_T *menuarg, /* passes modes, iconfile, iconidx,
|
vimmenu_T *menuarg, // passes modes, iconfile, iconidx,
|
||||||
icon_builtin, silent[0], noremap[0] */
|
// icon_builtin, silent[0], noremap[0]
|
||||||
int *pri_tab,
|
int *pri_tab,
|
||||||
char_u *call_data
|
char_u *call_data
|
||||||
#ifdef FEAT_GUI_MSWIN
|
#ifdef FEAT_GUI_MSWIN
|
||||||
, int addtearoff /* may add tearoff item */
|
, int addtearoff // may add tearoff item
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -486,7 +486,7 @@ add_menu_path(
|
|||||||
#endif
|
#endif
|
||||||
vimmenu_T **root_menu_ptr;
|
vimmenu_T **root_menu_ptr;
|
||||||
|
|
||||||
/* Make a copy so we can stuff around with it, since it could be const */
|
// Make a copy so we can stuff around with it, since it could be const
|
||||||
path_name = vim_strsave(menu_path);
|
path_name = vim_strsave(menu_path);
|
||||||
if (path_name == NULL)
|
if (path_name == NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -496,8 +496,8 @@ add_menu_path(
|
|||||||
name = path_name;
|
name = path_name;
|
||||||
while (*name)
|
while (*name)
|
||||||
{
|
{
|
||||||
/* Get name of this element in the menu hierarchy, and the simplified
|
// Get name of this element in the menu hierarchy, and the simplified
|
||||||
* name (without mnemonic and accelerator text). */
|
// name (without mnemonic and accelerator text).
|
||||||
next_name = menu_name_skip(name);
|
next_name = menu_name_skip(name);
|
||||||
#ifdef FEAT_MULTI_LANG
|
#ifdef FEAT_MULTI_LANG
|
||||||
map_to = menutrans_lookup(name, (int)STRLEN(name));
|
map_to = menutrans_lookup(name, (int)STRLEN(name));
|
||||||
@@ -514,12 +514,12 @@ add_menu_path(
|
|||||||
goto erret;
|
goto erret;
|
||||||
if (*dname == NUL)
|
if (*dname == NUL)
|
||||||
{
|
{
|
||||||
/* Only a mnemonic or accelerator is not valid. */
|
// Only a mnemonic or accelerator is not valid.
|
||||||
emsg(_("E792: Empty menu name"));
|
emsg(_("E792: Empty menu name"));
|
||||||
goto erret;
|
goto erret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See if it's already there */
|
// See if it's already there
|
||||||
lower_pri = menup;
|
lower_pri = menup;
|
||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
idx = 0;
|
idx = 0;
|
||||||
@@ -550,8 +550,8 @@ add_menu_path(
|
|||||||
}
|
}
|
||||||
menup = &menu->next;
|
menup = &menu->next;
|
||||||
|
|
||||||
/* Count menus, to find where this one needs to be inserted.
|
// Count menus, to find where this one needs to be inserted.
|
||||||
* Ignore menus that are not in the menubar (PopUp and Toolbar) */
|
// Ignore menus that are not in the menubar (PopUp and Toolbar)
|
||||||
if (parent != NULL || menu_is_menubar(menu->name))
|
if (parent != NULL || menu_is_menubar(menu->name))
|
||||||
{
|
{
|
||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
@@ -582,7 +582,7 @@ add_menu_path(
|
|||||||
goto erret;
|
goto erret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not already there, so lets add it */
|
// Not already there, so lets add it
|
||||||
menu = ALLOC_CLEAR_ONE(vimmenu_T);
|
menu = ALLOC_CLEAR_ONE(vimmenu_T);
|
||||||
if (menu == NULL)
|
if (menu == NULL)
|
||||||
goto erret;
|
goto erret;
|
||||||
@@ -590,7 +590,7 @@ add_menu_path(
|
|||||||
menu->modes = modes;
|
menu->modes = modes;
|
||||||
menu->enabled = MENU_ALL_MODES;
|
menu->enabled = MENU_ALL_MODES;
|
||||||
menu->name = vim_strsave(name);
|
menu->name = vim_strsave(name);
|
||||||
/* separate mnemonic and accelerator text from actual menu name */
|
// separate mnemonic and accelerator text from actual menu name
|
||||||
menu->dname = menu_text(name, &menu->mnemonic, &menu->actext);
|
menu->dname = menu_text(name, &menu->mnemonic, &menu->actext);
|
||||||
#ifdef FEAT_MULTI_LANG
|
#ifdef FEAT_MULTI_LANG
|
||||||
if (en_name != NULL)
|
if (en_name != NULL)
|
||||||
@@ -607,13 +607,13 @@ add_menu_path(
|
|||||||
menu->priority = pri_tab[pri_idx];
|
menu->priority = pri_tab[pri_idx];
|
||||||
menu->parent = parent;
|
menu->parent = parent;
|
||||||
#ifdef FEAT_GUI_MOTIF
|
#ifdef FEAT_GUI_MOTIF
|
||||||
menu->sensitive = TRUE; /* the default */
|
menu->sensitive = TRUE; // the default
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_BEVAL_TIP
|
#ifdef FEAT_BEVAL_TIP
|
||||||
menu->tip = NULL;
|
menu->tip = NULL;
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_GUI_ATHENA
|
#ifdef FEAT_GUI_ATHENA
|
||||||
menu->image = None; /* X-Windows definition for NULL*/
|
menu->image = None; // X-Windows definition for NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -631,7 +631,7 @@ add_menu_path(
|
|||||||
menu->iconfile = vim_strsave(menuarg->iconfile);
|
menu->iconfile = vim_strsave(menuarg->iconfile);
|
||||||
#endif
|
#endif
|
||||||
#if defined(FEAT_GUI_MSWIN) && defined(FEAT_TEAROFF)
|
#if defined(FEAT_GUI_MSWIN) && defined(FEAT_TEAROFF)
|
||||||
/* the tearoff item must be present in the modes of each item. */
|
// the tearoff item must be present in the modes of each item.
|
||||||
if (parent != NULL && menu_is_tearoff(parent->children->dname))
|
if (parent != NULL && menu_is_tearoff(parent->children->dname))
|
||||||
parent->children->modes |= modes;
|
parent->children->modes |= modes;
|
||||||
#endif
|
#endif
|
||||||
@@ -646,7 +646,7 @@ add_menu_path(
|
|||||||
* Also enable a menu when it's created or changed.
|
* Also enable a menu when it's created or changed.
|
||||||
*/
|
*/
|
||||||
#ifdef FEAT_GUI_MSWIN
|
#ifdef FEAT_GUI_MSWIN
|
||||||
/* If adding a tearbar (addtearoff == FALSE) don't update modes */
|
// If adding a tearbar (addtearoff == FALSE) don't update modes
|
||||||
if (addtearoff)
|
if (addtearoff)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
@@ -663,25 +663,25 @@ add_menu_path(
|
|||||||
if ((old_modes & MENU_ALL_MODES) == 0
|
if ((old_modes & MENU_ALL_MODES) == 0
|
||||||
&& (menu->modes & MENU_ALL_MODES) != 0)
|
&& (menu->modes & MENU_ALL_MODES) != 0)
|
||||||
{
|
{
|
||||||
if (gui.in_use) /* Otherwise it will be added when GUI starts */
|
if (gui.in_use) // Otherwise it will be added when GUI starts
|
||||||
{
|
{
|
||||||
if (*next_name == NUL)
|
if (*next_name == NUL)
|
||||||
{
|
{
|
||||||
/* Real menu item, not sub-menu */
|
// Real menu item, not sub-menu
|
||||||
gui_mch_add_menu_item(menu, new_idx);
|
gui_mch_add_menu_item(menu, new_idx);
|
||||||
|
|
||||||
/* Want to update menus now even if mode not changed */
|
// Want to update menus now even if mode not changed
|
||||||
force_menu_update = TRUE;
|
force_menu_update = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Sub-menu (not at end of path yet) */
|
// Sub-menu (not at end of path yet)
|
||||||
gui_mch_add_menu(menu, new_idx);
|
gui_mch_add_menu(menu, new_idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# if defined(FEAT_GUI_MSWIN) & defined(FEAT_TEAROFF)
|
# if defined(FEAT_GUI_MSWIN) & defined(FEAT_TEAROFF)
|
||||||
/* When adding a new submenu, may add a tearoff item */
|
// When adding a new submenu, may add a tearoff item
|
||||||
if ( addtearoff
|
if ( addtearoff
|
||||||
&& *next_name
|
&& *next_name
|
||||||
&& vim_strchr(p_go, GO_TEAROFF) != NULL
|
&& vim_strchr(p_go, GO_TEAROFF) != NULL
|
||||||
@@ -721,7 +721,7 @@ add_menu_path(
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
#endif /* FEAT_GUI */
|
#endif // FEAT_GUI
|
||||||
|
|
||||||
menup = &menu->children;
|
menup = &menu->children;
|
||||||
parent = menu;
|
parent = menu;
|
||||||
@@ -748,17 +748,17 @@ add_menu_path(
|
|||||||
#endif
|
#endif
|
||||||
p = (call_data == NULL) ? NULL : vim_strsave(call_data);
|
p = (call_data == NULL) ? NULL : vim_strsave(call_data);
|
||||||
|
|
||||||
/* loop over all modes, may add more than one */
|
// loop over all modes, may add more than one
|
||||||
for (i = 0; i < MENU_MODES; ++i)
|
for (i = 0; i < MENU_MODES; ++i)
|
||||||
{
|
{
|
||||||
if (modes & (1 << i))
|
if (modes & (1 << i))
|
||||||
{
|
{
|
||||||
/* free any old menu */
|
// free any old menu
|
||||||
free_menu_string(menu, i);
|
free_menu_string(menu, i);
|
||||||
|
|
||||||
/* For "amenu", may insert an extra character.
|
// For "amenu", may insert an extra character.
|
||||||
* Don't do this if adding a tearbar (addtearoff == FALSE).
|
// Don't do this if adding a tearbar (addtearoff == FALSE).
|
||||||
* Don't do this for "<Nop>". */
|
// Don't do this for "<Nop>".
|
||||||
c = 0;
|
c = 0;
|
||||||
d = 0;
|
d = 0;
|
||||||
if (amenu && call_data != NULL && *call_data != NUL
|
if (amenu && call_data != NULL && *call_data != NUL
|
||||||
@@ -799,7 +799,7 @@ add_menu_path(
|
|||||||
{
|
{
|
||||||
int len = (int)STRLEN(menu->strings[i]);
|
int len = (int)STRLEN(menu->strings[i]);
|
||||||
|
|
||||||
/* Append CTRL-\ CTRL-G to obey 'insertmode'. */
|
// Append CTRL-\ CTRL-G to obey 'insertmode'.
|
||||||
menu->strings[i][len] = Ctrl_BSL;
|
menu->strings[i][len] = Ctrl_BSL;
|
||||||
menu->strings[i][len + 1] = Ctrl_G;
|
menu->strings[i][len + 1] = Ctrl_G;
|
||||||
menu->strings[i][len + 2] = NUL;
|
menu->strings[i][len + 2] = NUL;
|
||||||
@@ -814,7 +814,7 @@ add_menu_path(
|
|||||||
}
|
}
|
||||||
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN) \
|
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN) \
|
||||||
&& (defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_GTK))
|
&& (defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_GTK))
|
||||||
/* Need to update the menu tip. */
|
// Need to update the menu tip.
|
||||||
if (modes & MENU_TIP_MODE)
|
if (modes & MENU_TIP_MODE)
|
||||||
gui_mch_menu_set_tip(menu);
|
gui_mch_menu_set_tip(menu);
|
||||||
#endif
|
#endif
|
||||||
@@ -825,8 +825,8 @@ erret:
|
|||||||
vim_free(path_name);
|
vim_free(path_name);
|
||||||
vim_free(dname);
|
vim_free(dname);
|
||||||
|
|
||||||
/* Delete any empty submenu we added before discovering the error. Repeat
|
// Delete any empty submenu we added before discovering the error. Repeat
|
||||||
* for higher levels. */
|
// for higher levels.
|
||||||
while (parent != NULL && parent->children == NULL)
|
while (parent != NULL && parent->children == NULL)
|
||||||
{
|
{
|
||||||
if (parent->parent == NULL)
|
if (parent->parent == NULL)
|
||||||
@@ -835,7 +835,7 @@ erret:
|
|||||||
menup = &parent->parent->children;
|
menup = &parent->parent->children;
|
||||||
for ( ; *menup != NULL && *menup != parent; menup = &((*menup)->next))
|
for ( ; *menup != NULL && *menup != parent; menup = &((*menup)->next))
|
||||||
;
|
;
|
||||||
if (*menup == NULL) /* safety check */
|
if (*menup == NULL) // safety check
|
||||||
break;
|
break;
|
||||||
parent = parent->parent;
|
parent = parent->parent;
|
||||||
free_menu(menup);
|
free_menu(menup);
|
||||||
@@ -857,12 +857,12 @@ menu_nable_recurse(
|
|||||||
char_u *p;
|
char_u *p;
|
||||||
|
|
||||||
if (menu == NULL)
|
if (menu == NULL)
|
||||||
return OK; /* Got to bottom of hierarchy */
|
return OK; // Got to bottom of hierarchy
|
||||||
|
|
||||||
/* Get name of this element in the menu hierarchy */
|
// Get name of this element in the menu hierarchy
|
||||||
p = menu_name_skip(name);
|
p = menu_name_skip(name);
|
||||||
|
|
||||||
/* Find the menu */
|
// Find the menu
|
||||||
while (menu != NULL)
|
while (menu != NULL)
|
||||||
{
|
{
|
||||||
if (*name == NUL || *name == '*' || menu_name_equal(name, menu))
|
if (*name == NUL || *name == '*' || menu_name_equal(name, menu))
|
||||||
@@ -901,7 +901,7 @@ menu_nable_recurse(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
/* Want to update menus now even if mode not changed */
|
// Want to update menus now even if mode not changed
|
||||||
force_menu_update = TRUE;
|
force_menu_update = TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -917,19 +917,19 @@ remove_menu(
|
|||||||
vimmenu_T **menup,
|
vimmenu_T **menup,
|
||||||
char_u *name,
|
char_u *name,
|
||||||
int modes,
|
int modes,
|
||||||
int silent) /* don't give error messages */
|
int silent) // don't give error messages
|
||||||
{
|
{
|
||||||
vimmenu_T *menu;
|
vimmenu_T *menu;
|
||||||
vimmenu_T *child;
|
vimmenu_T *child;
|
||||||
char_u *p;
|
char_u *p;
|
||||||
|
|
||||||
if (*menup == NULL)
|
if (*menup == NULL)
|
||||||
return OK; /* Got to bottom of hierarchy */
|
return OK; // Got to bottom of hierarchy
|
||||||
|
|
||||||
/* Get name of this element in the menu hierarchy */
|
// Get name of this element in the menu hierarchy
|
||||||
p = menu_name_skip(name);
|
p = menu_name_skip(name);
|
||||||
|
|
||||||
/* Find the menu */
|
// Find the menu
|
||||||
while ((menu = *menup) != NULL)
|
while ((menu = *menup) != NULL)
|
||||||
{
|
{
|
||||||
if (*name == NUL || menu_name_equal(name, menu))
|
if (*name == NUL || menu_name_equal(name, menu))
|
||||||
@@ -971,8 +971,8 @@ remove_menu(
|
|||||||
if (*name != NUL)
|
if (*name != NUL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Remove the menu item for the given mode[s]. If the menu item
|
// Remove the menu item for the given mode[s]. If the menu item
|
||||||
* is no longer valid in ANY mode, delete it */
|
// is no longer valid in ANY mode, delete it
|
||||||
menu->modes &= ~modes;
|
menu->modes &= ~modes;
|
||||||
if (modes & MENU_TIP_MODE)
|
if (modes & MENU_TIP_MODE)
|
||||||
free_menu_string(menu, MENU_INDEX_TIP);
|
free_menu_string(menu, MENU_INDEX_TIP);
|
||||||
@@ -994,11 +994,11 @@ remove_menu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Recalculate modes for menu based on the new updated children */
|
// Recalculate modes for menu based on the new updated children
|
||||||
menu->modes &= ~modes;
|
menu->modes &= ~modes;
|
||||||
#if defined(FEAT_GUI_MSWIN) & defined(FEAT_TEAROFF)
|
#if defined(FEAT_GUI_MSWIN) & defined(FEAT_TEAROFF)
|
||||||
if ((s_tearoffs) && (menu->children != NULL)) /* there's a tear bar.. */
|
if ((s_tearoffs) && (menu->children != NULL)) // there's a tear bar..
|
||||||
child = menu->children->next; /* don't count tearoff bar */
|
child = menu->children->next; // don't count tearoff bar
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
child = menu->children;
|
child = menu->children;
|
||||||
@@ -1009,16 +1009,16 @@ remove_menu(
|
|||||||
free_menu_string(menu, MENU_INDEX_TIP);
|
free_menu_string(menu, MENU_INDEX_TIP);
|
||||||
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN) \
|
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN) \
|
||||||
&& (defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_GTK))
|
&& (defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_GTK))
|
||||||
/* Need to update the menu tip. */
|
// Need to update the menu tip.
|
||||||
if (gui.in_use)
|
if (gui.in_use)
|
||||||
gui_mch_menu_set_tip(menu);
|
gui_mch_menu_set_tip(menu);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if ((menu->modes & MENU_ALL_MODES) == 0)
|
if ((menu->modes & MENU_ALL_MODES) == 0)
|
||||||
{
|
{
|
||||||
/* The menu item is no longer valid in ANY mode, so delete it */
|
// The menu item is no longer valid in ANY mode, so delete it
|
||||||
#if defined(FEAT_GUI_MSWIN) & defined(FEAT_TEAROFF)
|
#if defined(FEAT_GUI_MSWIN) & defined(FEAT_TEAROFF)
|
||||||
if (s_tearoffs && menu->children != NULL) /* there's a tear bar.. */
|
if (s_tearoffs && menu->children != NULL) // there's a tear bar..
|
||||||
free_menu(&menu->children);
|
free_menu(&menu->children);
|
||||||
#endif
|
#endif
|
||||||
*menup = menu;
|
*menup = menu;
|
||||||
@@ -1051,14 +1051,14 @@ free_menu(vimmenu_T **menup)
|
|||||||
menu = *menup;
|
menu = *menup;
|
||||||
|
|
||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
/* Free machine specific menu structures (only when already created) */
|
// Free machine specific menu structures (only when already created)
|
||||||
/* Also may rebuild a tearoff'ed menu */
|
// Also may rebuild a tearoff'ed menu
|
||||||
if (gui.in_use)
|
if (gui.in_use)
|
||||||
gui_mch_destroy_menu(menu);
|
gui_mch_destroy_menu(menu);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Don't change *menup until after calling gui_mch_destroy_menu(). The
|
// Don't change *menup until after calling gui_mch_destroy_menu(). The
|
||||||
* MacOS code needs the original structure to properly delete the menu. */
|
// MacOS code needs the original structure to properly delete the menu.
|
||||||
*menup = menu->next;
|
*menup = menu->next;
|
||||||
vim_free(menu->name);
|
vim_free(menu->name);
|
||||||
vim_free(menu->dname);
|
vim_free(menu->dname);
|
||||||
@@ -1078,7 +1078,7 @@ free_menu(vimmenu_T **menup)
|
|||||||
vim_free(menu);
|
vim_free(menu);
|
||||||
|
|
||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
/* Want to update menus now even if mode not changed */
|
// Want to update menus now even if mode not changed
|
||||||
force_menu_update = TRUE;
|
force_menu_update = TRUE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -1116,7 +1116,7 @@ show_menus(char_u *path_name, int modes)
|
|||||||
return FAIL;
|
return FAIL;
|
||||||
menu = *get_root_menu(path_name);
|
menu = *get_root_menu(path_name);
|
||||||
|
|
||||||
/* First, find the (sub)menu with the given name */
|
// First, find the (sub)menu with the given name
|
||||||
while (*name)
|
while (*name)
|
||||||
{
|
{
|
||||||
p = menu_name_skip(name);
|
p = menu_name_skip(name);
|
||||||
@@ -1124,7 +1124,7 @@ show_menus(char_u *path_name, int modes)
|
|||||||
{
|
{
|
||||||
if (menu_name_equal(name, menu))
|
if (menu_name_equal(name, menu))
|
||||||
{
|
{
|
||||||
/* Found menu */
|
// Found menu
|
||||||
if (*p != NUL && menu->children == NULL)
|
if (*p != NUL && menu->children == NULL)
|
||||||
{
|
{
|
||||||
emsg(_(e_notsubmenu));
|
emsg(_(e_notsubmenu));
|
||||||
@@ -1153,8 +1153,8 @@ show_menus(char_u *path_name, int modes)
|
|||||||
}
|
}
|
||||||
vim_free(path_name);
|
vim_free(path_name);
|
||||||
|
|
||||||
/* Now we have found the matching menu, and we list the mappings */
|
// Now we have found the matching menu, and we list the mappings
|
||||||
/* Highlight title */
|
// Highlight title
|
||||||
msg_puts_title(_("\n--- Menus ---"));
|
msg_puts_title(_("\n--- Menus ---"));
|
||||||
|
|
||||||
show_menus_recursive(parent, modes, 0);
|
show_menus_recursive(parent, modes, 0);
|
||||||
@@ -1176,7 +1176,7 @@ show_menus_recursive(vimmenu_T *menu, int modes, int depth)
|
|||||||
if (menu != NULL)
|
if (menu != NULL)
|
||||||
{
|
{
|
||||||
msg_putchar('\n');
|
msg_putchar('\n');
|
||||||
if (got_int) /* "q" hit for "--more--" */
|
if (got_int) // "q" hit for "--more--"
|
||||||
return;
|
return;
|
||||||
for (i = 0; i < depth; i++)
|
for (i = 0; i < depth; i++)
|
||||||
msg_puts(" ");
|
msg_puts(" ");
|
||||||
@@ -1185,7 +1185,7 @@ show_menus_recursive(vimmenu_T *menu, int modes, int depth)
|
|||||||
msg_outnum((long)menu->priority);
|
msg_outnum((long)menu->priority);
|
||||||
msg_puts(" ");
|
msg_puts(" ");
|
||||||
}
|
}
|
||||||
/* Same highlighting as for directories!? */
|
// Same highlighting as for directories!?
|
||||||
msg_outtrans_attr(menu->name, HL_ATTR(HLF_D));
|
msg_outtrans_attr(menu->name, HL_ATTR(HLF_D));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1195,7 +1195,7 @@ show_menus_recursive(vimmenu_T *menu, int modes, int depth)
|
|||||||
if ((menu->modes & modes & (1 << bit)) != 0)
|
if ((menu->modes & modes & (1 << bit)) != 0)
|
||||||
{
|
{
|
||||||
msg_putchar('\n');
|
msg_putchar('\n');
|
||||||
if (got_int) /* "q" hit for "--more--" */
|
if (got_int) // "q" hit for "--more--"
|
||||||
return;
|
return;
|
||||||
for (i = 0; i < depth + 2; i++)
|
for (i = 0; i < depth + 2; i++)
|
||||||
msg_puts(" ");
|
msg_puts(" ");
|
||||||
@@ -1231,7 +1231,7 @@ show_menus_recursive(vimmenu_T *menu, int modes, int depth)
|
|||||||
else
|
else
|
||||||
menu = menu->children;
|
menu = menu->children;
|
||||||
|
|
||||||
/* recursively show all children. Skip PopUp[nvoci]. */
|
// recursively show all children. Skip PopUp[nvoci].
|
||||||
for (; menu != NULL && !got_int; menu = menu->next)
|
for (; menu != NULL && !got_int; menu = menu->next)
|
||||||
if (!menu_is_hidden(menu->dname))
|
if (!menu_is_hidden(menu->dname))
|
||||||
show_menus_recursive(menu, modes, depth + 1);
|
show_menus_recursive(menu, modes, depth + 1);
|
||||||
@@ -1244,7 +1244,7 @@ show_menus_recursive(vimmenu_T *menu, int modes, int depth)
|
|||||||
static vimmenu_T *expand_menu = NULL;
|
static vimmenu_T *expand_menu = NULL;
|
||||||
static vimmenu_T *expand_menu_alt = NULL;
|
static vimmenu_T *expand_menu_alt = NULL;
|
||||||
static int expand_modes = 0x0;
|
static int expand_modes = 0x0;
|
||||||
static int expand_emenu; /* TRUE for ":emenu" command */
|
static int expand_emenu; // TRUE for ":emenu" command
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Work out what to complete when doing command line completion of menu names.
|
* Work out what to complete when doing command line completion of menu names.
|
||||||
@@ -1267,7 +1267,7 @@ set_context_in_menu_cmd(
|
|||||||
xp->xp_context = EXPAND_UNSUCCESSFUL;
|
xp->xp_context = EXPAND_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
|
||||||
/* Check for priority numbers, enable and disable */
|
// Check for priority numbers, enable and disable
|
||||||
for (p = arg; *p; ++p)
|
for (p = arg; *p; ++p)
|
||||||
if (!VIM_ISDIGIT(*p) && *p != '.')
|
if (!VIM_ISDIGIT(*p) && *p != '.')
|
||||||
break;
|
break;
|
||||||
@@ -1297,12 +1297,12 @@ set_context_in_menu_cmd(
|
|||||||
after_dot = p + 1;
|
after_dot = p + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ":tearoff" and ":popup" only use menus, not entries */
|
// ":tearoff" and ":popup" only use menus, not entries
|
||||||
expand_menus = !((*cmd == 't' && cmd[1] == 'e') || *cmd == 'p');
|
expand_menus = !((*cmd == 't' && cmd[1] == 'e') || *cmd == 'p');
|
||||||
expand_emenu = (*cmd == 'e');
|
expand_emenu = (*cmd == 'e');
|
||||||
if (expand_menus && VIM_ISWHITE(*p))
|
if (expand_menus && VIM_ISWHITE(*p))
|
||||||
return NULL; /* TODO: check for next command? */
|
return NULL; // TODO: check for next command?
|
||||||
if (*p == NUL) /* Complete the menu name */
|
if (*p == NUL) // Complete the menu name
|
||||||
{
|
{
|
||||||
int try_alt_menu = TRUE;
|
int try_alt_menu = TRUE;
|
||||||
|
|
||||||
@@ -1331,7 +1331,7 @@ set_context_in_menu_cmd(
|
|||||||
{
|
{
|
||||||
if (menu_name_equal(name, menu))
|
if (menu_name_equal(name, menu))
|
||||||
{
|
{
|
||||||
/* Found menu */
|
// Found menu
|
||||||
if ((*p != NUL && menu->children == NULL)
|
if ((*p != NUL && menu->children == NULL)
|
||||||
|| ((menu->modes & expand_modes) == 0x0))
|
|| ((menu->modes & expand_modes) == 0x0))
|
||||||
{
|
{
|
||||||
@@ -1353,7 +1353,7 @@ set_context_in_menu_cmd(
|
|||||||
}
|
}
|
||||||
if (menu == NULL)
|
if (menu == NULL)
|
||||||
{
|
{
|
||||||
/* No menu found with the name we were looking for */
|
// No menu found with the name we were looking for
|
||||||
vim_free(path_name);
|
vim_free(path_name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -1371,7 +1371,7 @@ set_context_in_menu_cmd(
|
|||||||
else
|
else
|
||||||
expand_menu_alt = NULL;
|
expand_menu_alt = NULL;
|
||||||
}
|
}
|
||||||
else /* We're in the mapping part */
|
else // We're in the mapping part
|
||||||
xp->xp_context = EXPAND_NOTHING;
|
xp->xp_context = EXPAND_NOTHING;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -1390,7 +1390,7 @@ get_menu_name(expand_T *xp UNUSED, int idx)
|
|||||||
static int should_advance = FALSE;
|
static int should_advance = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (idx == 0) /* first call: start at first item */
|
if (idx == 0) // first call: start at first item
|
||||||
{
|
{
|
||||||
menu = expand_menu;
|
menu = expand_menu;
|
||||||
did_alt_menu = FALSE;
|
did_alt_menu = FALSE;
|
||||||
@@ -1399,7 +1399,7 @@ get_menu_name(expand_T *xp UNUSED, int idx)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Skip PopUp[nvoci]. */
|
// Skip PopUp[nvoci].
|
||||||
while (menu != NULL && (menu_is_hidden(menu->dname)
|
while (menu != NULL && (menu_is_hidden(menu->dname)
|
||||||
|| menu_is_separator(menu->dname)
|
|| menu_is_separator(menu->dname)
|
||||||
|| menu_is_tearoff(menu->dname)
|
|| menu_is_tearoff(menu->dname)
|
||||||
@@ -1413,7 +1413,7 @@ get_menu_name(expand_T *xp UNUSED, int idx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (menu == NULL) /* at end of linked list */
|
if (menu == NULL) // at end of linked list
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (menu->modes & expand_modes)
|
if (menu->modes & expand_modes)
|
||||||
@@ -1436,7 +1436,7 @@ get_menu_name(expand_T *xp UNUSED, int idx)
|
|||||||
if (should_advance)
|
if (should_advance)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
/* Advance to next menu entry. */
|
// Advance to next menu entry.
|
||||||
menu = menu->next;
|
menu = menu->next;
|
||||||
if (menu == NULL && !did_alt_menu)
|
if (menu == NULL && !did_alt_menu)
|
||||||
{
|
{
|
||||||
@@ -1462,13 +1462,13 @@ get_menu_names(expand_T *xp UNUSED, int idx)
|
|||||||
static vimmenu_T *menu = NULL;
|
static vimmenu_T *menu = NULL;
|
||||||
static int did_alt_menu = FALSE;
|
static int did_alt_menu = FALSE;
|
||||||
#define TBUFFER_LEN 256
|
#define TBUFFER_LEN 256
|
||||||
static char_u tbuffer[TBUFFER_LEN]; /*hack*/
|
static char_u tbuffer[TBUFFER_LEN]; //hack
|
||||||
char_u *str;
|
char_u *str;
|
||||||
#ifdef FEAT_MULTI_LANG
|
#ifdef FEAT_MULTI_LANG
|
||||||
static int should_advance = FALSE;
|
static int should_advance = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (idx == 0) /* first call: start at first item */
|
if (idx == 0) // first call: start at first item
|
||||||
{
|
{
|
||||||
menu = expand_menu;
|
menu = expand_menu;
|
||||||
did_alt_menu = FALSE;
|
did_alt_menu = FALSE;
|
||||||
@@ -1477,7 +1477,7 @@ get_menu_names(expand_T *xp UNUSED, int idx)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Skip Browse-style entries, popup menus and separators. */
|
// Skip Browse-style entries, popup menus and separators.
|
||||||
while (menu != NULL
|
while (menu != NULL
|
||||||
&& ( menu_is_hidden(menu->dname)
|
&& ( menu_is_hidden(menu->dname)
|
||||||
|| (expand_emenu && menu_is_separator(menu->dname))
|
|| (expand_emenu && menu_is_separator(menu->dname))
|
||||||
@@ -1495,7 +1495,7 @@ get_menu_names(expand_T *xp UNUSED, int idx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (menu == NULL) /* at end of linked list */
|
if (menu == NULL) // at end of linked list
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (menu->modes & expand_modes)
|
if (menu->modes & expand_modes)
|
||||||
@@ -1514,8 +1514,8 @@ get_menu_names(expand_T *xp UNUSED, int idx)
|
|||||||
should_advance = TRUE;
|
should_advance = TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* hack on menu separators: use a 'magic' char for the separator
|
// hack on menu separators: use a 'magic' char for the separator
|
||||||
* so that '.' in names gets escaped properly */
|
// so that '.' in names gets escaped properly
|
||||||
STRCAT(tbuffer, "\001");
|
STRCAT(tbuffer, "\001");
|
||||||
str = tbuffer;
|
str = tbuffer;
|
||||||
}
|
}
|
||||||
@@ -1542,7 +1542,7 @@ get_menu_names(expand_T *xp UNUSED, int idx)
|
|||||||
if (should_advance)
|
if (should_advance)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
/* Advance to next menu entry. */
|
// Advance to next menu entry.
|
||||||
menu = menu->next;
|
menu = menu->next;
|
||||||
if (menu == NULL && !did_alt_menu)
|
if (menu == NULL && !did_alt_menu)
|
||||||
{
|
{
|
||||||
@@ -1621,7 +1621,7 @@ menu_namecmp(char_u *name, char_u *mname)
|
|||||||
static int
|
static int
|
||||||
get_menu_cmd_modes(
|
get_menu_cmd_modes(
|
||||||
char_u *cmd,
|
char_u *cmd,
|
||||||
int forceit, /* Was there a "!" after the command? */
|
int forceit, // Was there a "!" after the command?
|
||||||
int *noremap,
|
int *noremap,
|
||||||
int *unmenu)
|
int *unmenu)
|
||||||
{
|
{
|
||||||
@@ -1629,50 +1629,50 @@ get_menu_cmd_modes(
|
|||||||
|
|
||||||
switch (*cmd++)
|
switch (*cmd++)
|
||||||
{
|
{
|
||||||
case 'v': /* vmenu, vunmenu, vnoremenu */
|
case 'v': // vmenu, vunmenu, vnoremenu
|
||||||
modes = MENU_VISUAL_MODE | MENU_SELECT_MODE;
|
modes = MENU_VISUAL_MODE | MENU_SELECT_MODE;
|
||||||
break;
|
break;
|
||||||
case 'x': /* xmenu, xunmenu, xnoremenu */
|
case 'x': // xmenu, xunmenu, xnoremenu
|
||||||
modes = MENU_VISUAL_MODE;
|
modes = MENU_VISUAL_MODE;
|
||||||
break;
|
break;
|
||||||
case 's': /* smenu, sunmenu, snoremenu */
|
case 's': // smenu, sunmenu, snoremenu
|
||||||
modes = MENU_SELECT_MODE;
|
modes = MENU_SELECT_MODE;
|
||||||
break;
|
break;
|
||||||
case 'o': /* omenu */
|
case 'o': // omenu
|
||||||
modes = MENU_OP_PENDING_MODE;
|
modes = MENU_OP_PENDING_MODE;
|
||||||
break;
|
break;
|
||||||
case 'i': /* imenu */
|
case 'i': // imenu
|
||||||
modes = MENU_INSERT_MODE;
|
modes = MENU_INSERT_MODE;
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
if (*cmd == 'l') /* tlmenu, tlunmenu, tlnoremenu */
|
if (*cmd == 'l') // tlmenu, tlunmenu, tlnoremenu
|
||||||
{
|
{
|
||||||
modes = MENU_TERMINAL_MODE;
|
modes = MENU_TERMINAL_MODE;
|
||||||
++cmd;
|
++cmd;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
modes = MENU_TIP_MODE; /* tmenu */
|
modes = MENU_TIP_MODE; // tmenu
|
||||||
break;
|
break;
|
||||||
case 'c': /* cmenu */
|
case 'c': // cmenu
|
||||||
modes = MENU_CMDLINE_MODE;
|
modes = MENU_CMDLINE_MODE;
|
||||||
break;
|
break;
|
||||||
case 'a': /* amenu */
|
case 'a': // amenu
|
||||||
modes = MENU_INSERT_MODE | MENU_CMDLINE_MODE | MENU_NORMAL_MODE
|
modes = MENU_INSERT_MODE | MENU_CMDLINE_MODE | MENU_NORMAL_MODE
|
||||||
| MENU_VISUAL_MODE | MENU_SELECT_MODE
|
| MENU_VISUAL_MODE | MENU_SELECT_MODE
|
||||||
| MENU_OP_PENDING_MODE;
|
| MENU_OP_PENDING_MODE;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
if (*cmd != 'o') /* nmenu, not noremenu */
|
if (*cmd != 'o') // nmenu, not noremenu
|
||||||
{
|
{
|
||||||
modes = MENU_NORMAL_MODE;
|
modes = MENU_NORMAL_MODE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* FALLTHROUGH */
|
// FALLTHROUGH
|
||||||
default:
|
default:
|
||||||
--cmd;
|
--cmd;
|
||||||
if (forceit) /* menu!! */
|
if (forceit) // menu!!
|
||||||
modes = MENU_INSERT_MODE | MENU_CMDLINE_MODE;
|
modes = MENU_INSERT_MODE | MENU_CMDLINE_MODE;
|
||||||
else /* menu */
|
else // menu
|
||||||
modes = MENU_NORMAL_MODE | MENU_VISUAL_MODE | MENU_SELECT_MODE
|
modes = MENU_NORMAL_MODE | MENU_VISUAL_MODE | MENU_SELECT_MODE
|
||||||
| MENU_OP_PENDING_MODE;
|
| MENU_OP_PENDING_MODE;
|
||||||
}
|
}
|
||||||
@@ -1761,7 +1761,7 @@ menu_text(char_u *str, int *mnemonic, char_u **actext)
|
|||||||
char_u *p;
|
char_u *p;
|
||||||
char_u *text;
|
char_u *text;
|
||||||
|
|
||||||
/* Locate accelerator text, after the first TAB */
|
// Locate accelerator text, after the first TAB
|
||||||
p = vim_strchr(str, TAB);
|
p = vim_strchr(str, TAB);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
{
|
{
|
||||||
@@ -1772,13 +1772,13 @@ menu_text(char_u *str, int *mnemonic, char_u **actext)
|
|||||||
else
|
else
|
||||||
text = vim_strsave(str);
|
text = vim_strsave(str);
|
||||||
|
|
||||||
/* Find mnemonic characters "&a" and reduce "&&" to "&". */
|
// Find mnemonic characters "&a" and reduce "&&" to "&".
|
||||||
for (p = text; p != NULL; )
|
for (p = text; p != NULL; )
|
||||||
{
|
{
|
||||||
p = vim_strchr(p, '&');
|
p = vim_strchr(p, '&');
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
{
|
{
|
||||||
if (p[1] == NUL) /* trailing "&" */
|
if (p[1] == NUL) // trailing "&"
|
||||||
break;
|
break;
|
||||||
if (mnemonic != NULL && p[1] != '&')
|
if (mnemonic != NULL && p[1] != '&')
|
||||||
#if !defined(__MVS__) || defined(MOTIF390_MNEMONIC_FIXED)
|
#if !defined(__MVS__) || defined(MOTIF390_MNEMONIC_FIXED)
|
||||||
@@ -1901,7 +1901,7 @@ get_menu_mode(void)
|
|||||||
return MENU_INDEX_OP_PENDING;
|
return MENU_INDEX_OP_PENDING;
|
||||||
if (State & NORMAL)
|
if (State & NORMAL)
|
||||||
return MENU_INDEX_NORMAL;
|
return MENU_INDEX_NORMAL;
|
||||||
if (State & LANGMAP) /* must be a "r" command, like Insert mode */
|
if (State & LANGMAP) // must be a "r" command, like Insert mode
|
||||||
return MENU_INDEX_INSERT;
|
return MENU_INDEX_INSERT;
|
||||||
return MENU_INDEX_INVALID;
|
return MENU_INDEX_INVALID;
|
||||||
}
|
}
|
||||||
@@ -1941,14 +1941,14 @@ show_popupmenu(void)
|
|||||||
if (STRNCMP("PopUp", menu->name, 5) == 0 && STRNCMP(menu->name + 5, mode, mode_len) == 0)
|
if (STRNCMP("PopUp", menu->name, 5) == 0 && STRNCMP(menu->name + 5, mode, mode_len) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Only show a popup when it is defined and has entries */
|
// Only show a popup when it is defined and has entries
|
||||||
if (menu != NULL && menu->children != NULL)
|
if (menu != NULL && menu->children != NULL)
|
||||||
{
|
{
|
||||||
# if defined(FEAT_GUI)
|
# if defined(FEAT_GUI)
|
||||||
if (gui.in_use)
|
if (gui.in_use)
|
||||||
{
|
{
|
||||||
/* Update the menus now, in case the MenuPopup autocommand did
|
// Update the menus now, in case the MenuPopup autocommand did
|
||||||
* anything. */
|
// anything.
|
||||||
gui_update_menus(0);
|
gui_update_menus(0);
|
||||||
gui_mch_show_popupmenu(menu);
|
gui_mch_show_popupmenu(menu);
|
||||||
}
|
}
|
||||||
@@ -1998,7 +1998,7 @@ gui_create_initial_menus(vimmenu_T *menu)
|
|||||||
|
|
||||||
while (menu != NULL)
|
while (menu != NULL)
|
||||||
{
|
{
|
||||||
/* Don't add a menu when only a tip was defined. */
|
// Don't add a menu when only a tip was defined.
|
||||||
if (menu->modes & MENU_ALL_MODES)
|
if (menu->modes & MENU_ALL_MODES)
|
||||||
{
|
{
|
||||||
if (menu->children != NULL)
|
if (menu->children != NULL)
|
||||||
@@ -2033,11 +2033,11 @@ gui_update_menus_recurse(vimmenu_T *menu, int mode)
|
|||||||
else
|
else
|
||||||
grey = TRUE;
|
grey = TRUE;
|
||||||
# ifdef FEAT_GUI_ATHENA
|
# ifdef FEAT_GUI_ATHENA
|
||||||
/* Hiding menus doesn't work for Athena, it can cause a crash. */
|
// Hiding menus doesn't work for Athena, it can cause a crash.
|
||||||
gui_mch_menu_grey(menu, grey);
|
gui_mch_menu_grey(menu, grey);
|
||||||
# else
|
# else
|
||||||
/* Never hide a toplevel menu, it may make the menubar resize or
|
// Never hide a toplevel menu, it may make the menubar resize or
|
||||||
* disappear. Same problem for ToolBar items. */
|
// disappear. Same problem for ToolBar items.
|
||||||
if (vim_strchr(p_go, GO_GREY) != NULL || menu->parent == NULL
|
if (vim_strchr(p_go, GO_GREY) != NULL || menu->parent == NULL
|
||||||
# ifdef FEAT_TOOLBAR
|
# ifdef FEAT_TOOLBAR
|
||||||
|| menu_is_toolbar(menu->parent->name)
|
|| menu_is_toolbar(menu->parent->name)
|
||||||
@@ -2097,7 +2097,7 @@ gui_is_menu_shortcut(int key)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
#endif /* FEAT_GUI */
|
#endif // FEAT_GUI
|
||||||
|
|
||||||
#if (defined(FEAT_GUI_MSWIN) && defined(FEAT_TEAROFF)) || defined(PROTO)
|
#if (defined(FEAT_GUI_MSWIN) && defined(FEAT_TEAROFF)) || defined(PROTO)
|
||||||
|
|
||||||
@@ -2145,8 +2145,8 @@ gui_create_tearoffs_recurse(
|
|||||||
{
|
{
|
||||||
if (menu->children != NULL && menu_is_menubar(menu->name))
|
if (menu->children != NULL && menu_is_menubar(menu->name))
|
||||||
{
|
{
|
||||||
/* Add the menu name to the menu path. Insert a backslash before
|
// Add the menu name to the menu path. Insert a backslash before
|
||||||
* dots (it's used to separate menu names). */
|
// dots (it's used to separate menu names).
|
||||||
len = (int)STRLEN(pname) + (int)STRLEN(menu->name);
|
len = (int)STRLEN(pname) + (int)STRLEN(menu->name);
|
||||||
for (s = menu->name; *s; ++s)
|
for (s = menu->name; *s; ++s)
|
||||||
if (*s == '.' || *s == '\\')
|
if (*s == '.' || *s == '\\')
|
||||||
@@ -2164,11 +2164,11 @@ gui_create_tearoffs_recurse(
|
|||||||
}
|
}
|
||||||
*d = NUL;
|
*d = NUL;
|
||||||
|
|
||||||
/* check if tearoff already exists */
|
// check if tearoff already exists
|
||||||
if (STRCMP(menu->children->name, TEAR_STRING) != 0)
|
if (STRCMP(menu->children->name, TEAR_STRING) != 0)
|
||||||
{
|
{
|
||||||
gui_add_tearoff(newpname, pri_tab, pri_idx - 1);
|
gui_add_tearoff(newpname, pri_tab, pri_idx - 1);
|
||||||
*d = NUL; /* remove TEAR_STRING */
|
*d = NUL; // remove TEAR_STRING
|
||||||
}
|
}
|
||||||
|
|
||||||
STRCAT(newpname, ".");
|
STRCAT(newpname, ".");
|
||||||
@@ -2204,7 +2204,7 @@ gui_add_tearoff(char_u *tearpath, int *pri_tab, int pri_idx)
|
|||||||
STRCAT(tearpath, ".");
|
STRCAT(tearpath, ".");
|
||||||
STRCAT(tearpath, TEAR_STRING);
|
STRCAT(tearpath, TEAR_STRING);
|
||||||
|
|
||||||
/* Priority of tear-off is always 1 */
|
// Priority of tear-off is always 1
|
||||||
t = pri_tab[pri_idx + 1];
|
t = pri_tab[pri_idx + 1];
|
||||||
pri_tab[pri_idx + 1] = 1;
|
pri_tab[pri_idx + 1] = 1;
|
||||||
|
|
||||||
@@ -2238,20 +2238,20 @@ gui_destroy_tearoffs_recurse(vimmenu_T *menu)
|
|||||||
{
|
{
|
||||||
if (menu->children)
|
if (menu->children)
|
||||||
{
|
{
|
||||||
/* check if tearoff exists */
|
// check if tearoff exists
|
||||||
if (STRCMP(menu->children->name, TEAR_STRING) == 0)
|
if (STRCMP(menu->children->name, TEAR_STRING) == 0)
|
||||||
{
|
{
|
||||||
/* Disconnect the item and free the memory */
|
// Disconnect the item and free the memory
|
||||||
free_menu(&menu->children);
|
free_menu(&menu->children);
|
||||||
}
|
}
|
||||||
if (menu->children != NULL) /* if not the last one */
|
if (menu->children != NULL) // if not the last one
|
||||||
gui_destroy_tearoffs_recurse(menu->children);
|
gui_destroy_tearoffs_recurse(menu->children);
|
||||||
}
|
}
|
||||||
menu = menu->next;
|
menu = menu->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* FEAT_GUI_MSWIN && FEAT_TEAROFF */
|
#endif // FEAT_GUI_MSWIN && FEAT_TEAROFF
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Execute "menu". Use by ":emenu" and the window toolbar.
|
* Execute "menu". Use by ":emenu" and the window toolbar.
|
||||||
@@ -2266,7 +2266,7 @@ execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
|
|||||||
|
|
||||||
if (idx < 0)
|
if (idx < 0)
|
||||||
{
|
{
|
||||||
/* Use the Insert mode entry when returning to Insert mode. */
|
// Use the Insert mode entry when returning to Insert mode.
|
||||||
if (restart_edit
|
if (restart_edit
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
&& !current_sctx.sc_sid
|
&& !current_sctx.sc_sid
|
||||||
@@ -2291,14 +2291,14 @@ execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
|
|||||||
|
|
||||||
idx = MENU_INDEX_VISUAL;
|
idx = MENU_INDEX_VISUAL;
|
||||||
|
|
||||||
/* GEDDES: This is not perfect - but it is a
|
// GEDDES: This is not perfect - but it is a
|
||||||
* quick way of detecting whether we are doing this from a
|
// quick way of detecting whether we are doing this from a
|
||||||
* selection - see if the range matches up with the visual
|
// selection - see if the range matches up with the visual
|
||||||
* select start and end. */
|
// select start and end.
|
||||||
if ((curbuf->b_visual.vi_start.lnum == eap->line1)
|
if ((curbuf->b_visual.vi_start.lnum == eap->line1)
|
||||||
&& (curbuf->b_visual.vi_end.lnum) == eap->line2)
|
&& (curbuf->b_visual.vi_end.lnum) == eap->line2)
|
||||||
{
|
{
|
||||||
/* Set it up for visual mode - equivalent to gv. */
|
// Set it up for visual mode - equivalent to gv.
|
||||||
VIsual_mode = curbuf->b_visual.vi_mode;
|
VIsual_mode = curbuf->b_visual.vi_mode;
|
||||||
tpos = curbuf->b_visual.vi_end;
|
tpos = curbuf->b_visual.vi_end;
|
||||||
curwin->w_cursor = curbuf->b_visual.vi_start;
|
curwin->w_cursor = curbuf->b_visual.vi_start;
|
||||||
@@ -2306,7 +2306,7 @@ execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Set it up for line-wise visual mode */
|
// Set it up for line-wise visual mode
|
||||||
VIsual_mode = 'V';
|
VIsual_mode = 'V';
|
||||||
curwin->w_cursor.lnum = eap->line1;
|
curwin->w_cursor.lnum = eap->line1;
|
||||||
curwin->w_cursor.col = 1;
|
curwin->w_cursor.col = 1;
|
||||||
@@ -2315,7 +2315,7 @@ execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
|
|||||||
tpos.coladd = 0;
|
tpos.coladd = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Activate visual mode */
|
// Activate visual mode
|
||||||
VIsual_active = TRUE;
|
VIsual_active = TRUE;
|
||||||
VIsual_reselect = TRUE;
|
VIsual_reselect = TRUE;
|
||||||
check_cursor();
|
check_cursor();
|
||||||
@@ -2324,23 +2324,23 @@ execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
|
|||||||
|
|
||||||
check_cursor();
|
check_cursor();
|
||||||
|
|
||||||
/* Adjust the cursor to make sure it is in the correct pos
|
// Adjust the cursor to make sure it is in the correct pos
|
||||||
* for exclusive mode */
|
// for exclusive mode
|
||||||
if (*p_sel == 'e' && gchar_cursor() != NUL)
|
if (*p_sel == 'e' && gchar_cursor() != NUL)
|
||||||
++curwin->w_cursor.col;
|
++curwin->w_cursor.col;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For the WinBar menu always use the Normal mode menu. */
|
// For the WinBar menu always use the Normal mode menu.
|
||||||
if (idx == -1 || eap == NULL)
|
if (idx == -1 || eap == NULL)
|
||||||
idx = MENU_INDEX_NORMAL;
|
idx = MENU_INDEX_NORMAL;
|
||||||
|
|
||||||
if (idx != MENU_INDEX_INVALID && menu->strings[idx] != NULL
|
if (idx != MENU_INDEX_INVALID && menu->strings[idx] != NULL
|
||||||
&& (menu->modes & (1 << idx)))
|
&& (menu->modes & (1 << idx)))
|
||||||
{
|
{
|
||||||
/* When executing a script or function execute the commands right now.
|
// When executing a script or function execute the commands right now.
|
||||||
* Also for the window toolbar.
|
// Also for the window toolbar.
|
||||||
* Otherwise put them in the typeahead buffer. */
|
// Otherwise put them in the typeahead buffer.
|
||||||
if (eap == NULL
|
if (eap == NULL
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
|| current_sctx.sc_sid != 0
|
|| current_sctx.sc_sid != 0
|
||||||
@@ -2432,7 +2432,7 @@ ex_emenu(exarg_T *eap)
|
|||||||
name = saved_name;
|
name = saved_name;
|
||||||
while (*name)
|
while (*name)
|
||||||
{
|
{
|
||||||
/* Find in the menu hierarchy */
|
// Find in the menu hierarchy
|
||||||
p = menu_name_skip(name);
|
p = menu_name_skip(name);
|
||||||
|
|
||||||
while (menu != NULL)
|
while (menu != NULL)
|
||||||
@@ -2496,8 +2496,8 @@ winbar_click(win_T *wp, int col)
|
|||||||
|
|
||||||
if (wp != curwin)
|
if (wp != curwin)
|
||||||
{
|
{
|
||||||
/* Clicking in the window toolbar of a not-current window.
|
// Clicking in the window toolbar of a not-current window.
|
||||||
* Make that window the current one and save Visual mode. */
|
// Make that window the current one and save Visual mode.
|
||||||
save_curwin = curwin;
|
save_curwin = curwin;
|
||||||
VIsual_active = FALSE;
|
VIsual_active = FALSE;
|
||||||
curwin = wp;
|
curwin = wp;
|
||||||
@@ -2547,7 +2547,7 @@ gui_find_menu(char_u *path_name)
|
|||||||
name = saved_name;
|
name = saved_name;
|
||||||
while (*name)
|
while (*name)
|
||||||
{
|
{
|
||||||
/* find the end of one dot-separated name and put a NUL at the dot */
|
// find the end of one dot-separated name and put a NUL at the dot
|
||||||
p = menu_name_skip(name);
|
p = menu_name_skip(name);
|
||||||
|
|
||||||
while (menu != NULL)
|
while (menu != NULL)
|
||||||
@@ -2556,7 +2556,7 @@ gui_find_menu(char_u *path_name)
|
|||||||
{
|
{
|
||||||
if (menu->children == NULL)
|
if (menu->children == NULL)
|
||||||
{
|
{
|
||||||
/* found a menu item instead of a sub-menu */
|
// found a menu item instead of a sub-menu
|
||||||
if (*p == NUL)
|
if (*p == NUL)
|
||||||
emsg(_("E336: Menu path must lead to a sub-menu"));
|
emsg(_("E336: Menu path must lead to a sub-menu"));
|
||||||
else
|
else
|
||||||
@@ -2564,16 +2564,16 @@ gui_find_menu(char_u *path_name)
|
|||||||
menu = NULL;
|
menu = NULL;
|
||||||
goto theend;
|
goto theend;
|
||||||
}
|
}
|
||||||
if (*p == NUL) /* found a full match */
|
if (*p == NUL) // found a full match
|
||||||
goto theend;
|
goto theend;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
menu = menu->next;
|
menu = menu->next;
|
||||||
}
|
}
|
||||||
if (menu == NULL) /* didn't find it */
|
if (menu == NULL) // didn't find it
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Found a match, search the sub-menu. */
|
// Found a match, search the sub-menu.
|
||||||
menu = menu->children;
|
menu = menu->children;
|
||||||
name = p;
|
name = p;
|
||||||
}
|
}
|
||||||
@@ -2593,9 +2593,9 @@ theend:
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char_u *from; /* English name */
|
char_u *from; // English name
|
||||||
char_u *from_noamp; /* same, without '&' */
|
char_u *from_noamp; // same, without '&'
|
||||||
char_u *to; /* translated name */
|
char_u *to; // translated name
|
||||||
} menutrans_T;
|
} menutrans_T;
|
||||||
|
|
||||||
static garray_T menutrans_ga = {0, 0, 0, 0, NULL};
|
static garray_T menutrans_ga = {0, 0, 0, 0, NULL};
|
||||||
@@ -2632,13 +2632,13 @@ ex_menutranslate(exarg_T *eap UNUSED)
|
|||||||
}
|
}
|
||||||
ga_clear(&menutrans_ga);
|
ga_clear(&menutrans_ga);
|
||||||
# ifdef FEAT_EVAL
|
# ifdef FEAT_EVAL
|
||||||
/* Delete all "menutrans_" global variables. */
|
// Delete all "menutrans_" global variables.
|
||||||
del_menutrans_vars();
|
del_menutrans_vars();
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* ":menutrans from to": add translation */
|
// ":menutrans from to": add translation
|
||||||
from = arg;
|
from = arg;
|
||||||
arg = menu_skip_part(arg);
|
arg = menu_skip_part(arg);
|
||||||
to = skipwhite(arg);
|
to = skipwhite(arg);
|
||||||
@@ -2713,7 +2713,7 @@ menutrans_lookup(char_u *name, int len)
|
|||||||
if (STRNICMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
|
if (STRNICMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
|
||||||
return tp[i].to;
|
return tp[i].to;
|
||||||
|
|
||||||
/* Now try again while ignoring '&' characters. */
|
// Now try again while ignoring '&' characters.
|
||||||
i = name[len];
|
i = name[len];
|
||||||
name[len] = NUL;
|
name[len] = NUL;
|
||||||
dname = menu_text(name, NULL, NULL);
|
dname = menu_text(name, NULL, NULL);
|
||||||
@@ -2744,7 +2744,7 @@ menu_unescape_name(char_u *name)
|
|||||||
if (*p == '\\')
|
if (*p == '\\')
|
||||||
STRMOVE(p, p + 1);
|
STRMOVE(p, p + 1);
|
||||||
}
|
}
|
||||||
#endif /* FEAT_MULTI_LANG */
|
#endif // FEAT_MULTI_LANG
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Isolate the menu name.
|
* Isolate the menu name.
|
||||||
@@ -2773,4 +2773,4 @@ menu_translate_tab_and_shift(char_u *arg_start)
|
|||||||
return arg;
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* FEAT_MENU */
|
#endif // FEAT_MENU
|
||||||
|
@@ -742,6 +742,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2388,
|
||||||
/**/
|
/**/
|
||||||
2387,
|
2387,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user