Merge #9036 'func_attr_printf'

This commit is contained in:
Justin M. Keyes 2018-10-07 19:36:01 +02:00 committed by GitHub
commit 512e0caae2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 87 additions and 80 deletions

View File

@ -180,7 +180,7 @@ void buf_updates_send_changes(buf_T *buf,
// change notifications are so frequent that many dead channels will be // change notifications are so frequent that many dead channels will be
// cleared up quickly. // cleared up quickly.
if (badchannelid != 0) { if (badchannelid != 0) {
ELOG("Disabling buffer updates for dead channel %llu", badchannelid); ELOG("Disabling buffer updates for dead channel %"PRIu64, badchannelid);
buf_updates_unregister(buf, badchannelid); buf_updates_unregister(buf, badchannelid);
} }
} }

View File

@ -1943,7 +1943,7 @@ static char_u *ex_let_one(char_u *arg, typval_T *const tv,
emsgf(_(e_letwrong), op); emsgf(_(e_letwrong), op);
} else if (endchars != NULL } else if (endchars != NULL
&& vim_strchr(endchars, *skipwhite(arg + 1)) == NULL) { && vim_strchr(endchars, *skipwhite(arg + 1)) == NULL) {
emsgf(_(e_letunexp)); EMSG(_(e_letunexp));
} else { } else {
char_u *s; char_u *s;
@ -2152,7 +2152,7 @@ static char_u *get_lval(char_u *const name, typval_T *const rettv,
if (rettv != NULL && (rettv->v_type != VAR_LIST if (rettv != NULL && (rettv->v_type != VAR_LIST
|| rettv->vval.v_list == NULL)) { || rettv->vval.v_list == NULL)) {
if (!quiet) { if (!quiet) {
emsgf(_("E709: [:] requires a List value")); EMSG(_("E709: [:] requires a List value"));
} }
tv_clear(&var1); tv_clear(&var1);
return NULL; return NULL;
@ -2179,7 +2179,7 @@ static char_u *get_lval(char_u *const name, typval_T *const rettv,
if (*p != ']') { if (*p != ']') {
if (!quiet) { if (!quiet) {
emsgf(_(e_missbrac)); EMSG(_(e_missbrac));
} }
tv_clear(&var1); tv_clear(&var1);
tv_clear(&var2); tv_clear(&var2);
@ -3325,7 +3325,7 @@ static int eval1(char_u **arg, typval_T *rettv, int evaluate)
* Check for the ":". * Check for the ":".
*/ */
if ((*arg)[0] != ':') { if ((*arg)[0] != ':') {
emsgf(_("E109: Missing ':' after '?'")); EMSG(_("E109: Missing ':' after '?'"));
if (evaluate && result) { if (evaluate && result) {
tv_clear(rettv); tv_clear(rettv);
} }
@ -4433,7 +4433,7 @@ eval_index(
/* Check for the ']'. */ /* Check for the ']'. */
if (**arg != ']') { if (**arg != ']') {
if (verbose) { if (verbose) {
emsgf(_(e_missbrac)); EMSG(_(e_missbrac));
} }
tv_clear(&var1); tv_clear(&var1);
if (range) { if (range) {
@ -4545,7 +4545,7 @@ eval_index(
case VAR_DICT: { case VAR_DICT: {
if (range) { if (range) {
if (verbose) { if (verbose) {
emsgf(_(e_dictrange)); EMSG(_(e_dictrange));
} }
if (len == -1) { if (len == -1) {
tv_clear(&var1); tv_clear(&var1);
@ -7795,7 +7795,7 @@ static void f_deepcopy(typval_T *argvars, typval_T *rettv, FunPtr fptr)
noref = tv_get_number_chk(&argvars[1], NULL); noref = tv_get_number_chk(&argvars[1], NULL);
} }
if (noref < 0 || noref > 1) { if (noref < 0 || noref > 1) {
emsgf(_(e_invarg)); EMSG(_(e_invarg));
} else { } else {
var_item_copy(NULL, &argvars[0], rettv, true, (noref == 0 var_item_copy(NULL, &argvars[0], rettv, true, (noref == 0
? get_copyID() ? get_copyID()
@ -7835,7 +7835,7 @@ static void f_delete(typval_T *argvars, typval_T *rettv, FunPtr fptr)
// delete a directory recursively // delete a directory recursively
rettv->vval.v_number = delete_recursive(name); rettv->vval.v_number = delete_recursive(name);
} else { } else {
EMSG2(_(e_invexpr2), flags); emsgf(_(e_invexpr2), flags);
} }
} }
@ -8963,7 +8963,7 @@ static void common_function(typval_T *argvars, typval_T *rettv,
} else if (trans_name != NULL } else if (trans_name != NULL
&& (is_funcref ? find_func(trans_name) == NULL && (is_funcref ? find_func(trans_name) == NULL
: !translated_function_exists((const char *)trans_name))) { : !translated_function_exists((const char *)trans_name))) {
EMSG2(_("E700: Unknown function: %s"), s); emsgf(_("E700: Unknown function: %s"), s);
} else { } else {
int dict_idx = 0; int dict_idx = 0;
int arg_idx = 0; int arg_idx = 0;
@ -11190,7 +11190,7 @@ void get_user_input(const typval_T *const argvars,
char def[1] = { 0 }; char def[1] = { 0 };
if (argvars[0].v_type == VAR_DICT) { if (argvars[0].v_type == VAR_DICT) {
if (argvars[1].v_type != VAR_UNKNOWN) { if (argvars[1].v_type != VAR_UNKNOWN) {
emsgf(_("E5050: {opts} must be the only argument")); EMSG(_("E5050: {opts} must be the only argument"));
return; return;
} }
dict_T *const dict = argvars[0].vval.v_dict; dict_T *const dict = argvars[0].vval.v_dict;
@ -11499,7 +11499,7 @@ static void dict_list(typval_T *const tv, typval_T *const rettv,
const DictListType what) const DictListType what)
{ {
if (tv->v_type != VAR_DICT) { if (tv->v_type != VAR_DICT) {
emsgf(_(e_dictreq)); EMSG(_(e_dictreq));
return; return;
} }
if (tv->vval.v_dict == NULL) { if (tv->vval.v_dict == NULL) {
@ -11929,7 +11929,7 @@ static void f_json_decode(typval_T *argvars, typval_T *rettv, FunPtr fptr)
} }
} }
if (json_decode_string(s, len, rettv) == FAIL) { if (json_decode_string(s, len, rettv) == FAIL) {
emsgf(_("E474: Failed to parse %.*s"), (int) len, s); emsgf(_("E474: Failed to parse %.*s"), (int)len, s);
rettv->v_type = VAR_NUMBER; rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = 0; rettv->vval.v_number = 0;
} }
@ -12919,7 +12919,7 @@ static void f_nr2char(typval_T *argvars, typval_T *rettv, FunPtr fptr)
return; return;
} }
if (num < 0) { if (num < 0) {
emsgf(_("E5070: Character number must not be less than zero")); EMSG(_("E5070: Character number must not be less than zero"));
return; return;
} }
if (num > INT_MAX) { if (num > INT_MAX) {
@ -13065,9 +13065,9 @@ static void f_range(typval_T *argvars, typval_T *rettv, FunPtr fptr)
return; // Type error; errmsg already given. return; // Type error; errmsg already given.
} }
if (stride == 0) { if (stride == 0) {
emsgf(_("E726: Stride is zero")); EMSG(_("E726: Stride is zero"));
} else if (stride > 0 ? end + 1 < start : end - 1 > start) { } else if (stride > 0 ? end + 1 < start : end - 1 > start) {
emsgf(_("E727: Start past end")); EMSG(_("E727: Start past end"));
} else { } else {
tv_list_alloc_ret(rettv, (end - start) / stride); tv_list_alloc_ret(rettv, (end - start) / stride);
for (i = start; stride > 0 ? i <= end : i >= end; i += stride) { for (i = start; stride > 0 ? i <= end : i >= end; i += stride) {
@ -13404,7 +13404,7 @@ static void f_remove(typval_T *argvars, typval_T *rettv, FunPtr fptr)
} }
} }
if (li == NULL) { // Didn't find "item2" after "item". if (li == NULL) { // Didn't find "item2" after "item".
emsgf(_(e_invrange)); EMSG(_(e_invrange));
} else { } else {
tv_list_move_items(l, item, item2, tv_list_alloc_ret(rettv, cnt), tv_list_move_items(l, item, item2, tv_list_alloc_ret(rettv, cnt),
cnt); cnt);
@ -14719,7 +14719,7 @@ static void set_qf_ll_list(win_T *wp, typval_T *args, typval_T *rettv)
} else if (title_arg->v_type == VAR_DICT) { } else if (title_arg->v_type == VAR_DICT) {
d = title_arg->vval.v_dict; d = title_arg->vval.v_dict;
} else { } else {
emsgf(_(e_dictreq)); EMSG(_(e_dictreq));
return; return;
} }
@ -16217,7 +16217,7 @@ static void f_submatch(typval_T *argvars, typval_T *rettv, FunPtr fptr)
} }
if (no < 0 || no >= NSUBEXP) { if (no < 0 || no >= NSUBEXP) {
EMSGN(_("E935: invalid submatch number: %d"), no); emsgf(_("E935: invalid submatch number: %d"), no);
return; return;
} }
int retList = 0; int retList = 0;
@ -17581,7 +17581,7 @@ static void f_winrestview(typval_T *argvars, typval_T *rettv, FunPtr fptr)
if (argvars[0].v_type != VAR_DICT if (argvars[0].v_type != VAR_DICT
|| (dict = argvars[0].vval.v_dict) == NULL) { || (dict = argvars[0].vval.v_dict) == NULL) {
emsgf(_(e_invarg)); EMSG(_(e_invarg));
} else { } else {
dictitem_T *di; dictitem_T *di;
if ((di = tv_dict_find(dict, S_LEN("lnum"))) != NULL) { if ((di = tv_dict_find(dict, S_LEN("lnum"))) != NULL) {
@ -19367,7 +19367,7 @@ static bool var_check_fixed(const int flags, const char *name,
} else if (name_len == TV_CSTRING) { } else if (name_len == TV_CSTRING) {
name_len = strlen(name); name_len = strlen(name);
} }
emsgf(_("E795: Cannot delete variable %.*s"), (int)name_len, name); EMSG3(_("E795: Cannot delete variable %.*s"), (int)name_len, name);
return true; return true;
} }
return false; return false;
@ -19976,7 +19976,7 @@ void ex_function(exarg_T *eap)
if (*p == '\n') { if (*p == '\n') {
line_arg = p + 1; line_arg = p + 1;
} else if (*p != NUL && *p != '"' && !eap->skip && !did_emsg) { } else if (*p != NUL && *p != '"' && !eap->skip && !did_emsg) {
emsgf(_(e_trailing)); EMSG(_(e_trailing));
} }
/* /*

View File

@ -609,14 +609,14 @@ static inline int convert_to_json_string(garray_T *const gap,
if (ch > 0x7F && shift == 1) { if (ch > 0x7F && shift == 1) {
emsgf(_("E474: String \"%.*s\" contains byte that does not start " emsgf(_("E474: String \"%.*s\" contains byte that does not start "
"any UTF-8 character"), "any UTF-8 character"),
utf_len - (i - shift), utf_buf + i - shift); (int)(utf_len - (i - shift)), utf_buf + i - shift);
xfree(tofree); xfree(tofree);
return FAIL; return FAIL;
} else if ((SURROGATE_HI_START <= ch && ch <= SURROGATE_HI_END) } else if ((SURROGATE_HI_START <= ch && ch <= SURROGATE_HI_END)
|| (SURROGATE_LO_START <= ch && ch <= SURROGATE_LO_END)) { || (SURROGATE_LO_START <= ch && ch <= SURROGATE_LO_END)) {
emsgf(_("E474: UTF-8 string contains code point which belongs " emsgf(_("E474: UTF-8 string contains code point which belongs "
"to a surrogate pair: %.*s"), "to a surrogate pair: %.*s"),
utf_len - (i - shift), utf_buf + i - shift); (int)(utf_len - (i - shift)), utf_buf + i - shift);
xfree(tofree); xfree(tofree);
return FAIL; return FAIL;
} else if (ENCODE_RAW(ch)) { } else if (ENCODE_RAW(ch)) {

View File

@ -991,7 +991,7 @@ const char *tv_list_find_str(list_T *const l, const int n)
{ {
const listitem_T *const li = tv_list_find(l, n); const listitem_T *const li = tv_list_find(l, n);
if (li == NULL) { if (li == NULL) {
emsgf(_(e_listidx), (int64_t)n); EMSG2(_(e_listidx), (int64_t)n);
return NULL; return NULL;
} }
return tv_get_string(TV_LIST_ITEM_TV(li)); return tv_get_string(TV_LIST_ITEM_TV(li));
@ -1532,7 +1532,7 @@ bool tv_dict_get_callback(dict_T *const d,
} }
if (!tv_is_func(di->di_tv) && di->di_tv.v_type != VAR_STRING) { if (!tv_is_func(di->di_tv) && di->di_tv.v_type != VAR_STRING) {
emsgf(_("E6000: Argument is not a function or function name")); EMSG(_("E6000: Argument is not a function or function name"));
return false; return false;
} }
@ -2298,7 +2298,7 @@ void tv_item_lock(typval_T *const tv, const int deep, const bool lock)
static int recurse = 0; static int recurse = 0;
if (recurse >= DICT_MAXNEST) { if (recurse >= DICT_MAXNEST) {
emsgf(_("E743: variable nested too deep for (un)lock")); EMSG(_("E743: variable nested too deep for (un)lock"));
return; return;
} }
if (deep == 0) { if (deep == 0) {
@ -2546,28 +2546,28 @@ bool tv_check_str_or_nr(const typval_T *const tv)
return true; return true;
} }
case VAR_FLOAT: { case VAR_FLOAT: {
emsgf(_("E805: Expected a Number or a String, Float found")); EMSG(_("E805: Expected a Number or a String, Float found"));
return false; return false;
} }
case VAR_PARTIAL: case VAR_PARTIAL:
case VAR_FUNC: { case VAR_FUNC: {
emsgf(_("E703: Expected a Number or a String, Funcref found")); EMSG(_("E703: Expected a Number or a String, Funcref found"));
return false; return false;
} }
case VAR_LIST: { case VAR_LIST: {
emsgf(_("E745: Expected a Number or a String, List found")); EMSG(_("E745: Expected a Number or a String, List found"));
return false; return false;
} }
case VAR_DICT: { case VAR_DICT: {
emsgf(_("E728: Expected a Number or a String, Dictionary found")); EMSG(_("E728: Expected a Number or a String, Dictionary found"));
return false; return false;
} }
case VAR_SPECIAL: { case VAR_SPECIAL: {
emsgf(_("E5300: Expected a Number or a String")); EMSG(_("E5300: Expected a Number or a String"));
return false; return false;
} }
case VAR_UNKNOWN: { case VAR_UNKNOWN: {
emsgf(_(e_intern2), "tv_check_str_or_nr(UNKNOWN)"); EMSG2(_(e_intern2), "tv_check_str_or_nr(UNKNOWN)");
return false; return false;
} }
} }
@ -2611,7 +2611,7 @@ bool tv_check_num(const typval_T *const tv)
case VAR_DICT: case VAR_DICT:
case VAR_FLOAT: case VAR_FLOAT:
case VAR_UNKNOWN: { case VAR_UNKNOWN: {
emsgf(_(num_errors[tv->v_type])); EMSG(_(num_errors[tv->v_type]));
return false; return false;
} }
} }
@ -2655,7 +2655,7 @@ bool tv_check_str(const typval_T *const tv)
case VAR_DICT: case VAR_DICT:
case VAR_FLOAT: case VAR_FLOAT:
case VAR_UNKNOWN: { case VAR_UNKNOWN: {
emsgf(_(str_errors[tv->v_type])); EMSG(_(str_errors[tv->v_type]));
return false; return false;
} }
} }
@ -2702,7 +2702,7 @@ varnumber_T tv_get_number_chk(const typval_T *const tv, bool *const ret_error)
case VAR_LIST: case VAR_LIST:
case VAR_DICT: case VAR_DICT:
case VAR_FLOAT: { case VAR_FLOAT: {
emsgf(_(num_errors[tv->v_type])); EMSG(_(num_errors[tv->v_type]));
break; break;
} }
case VAR_NUMBER: { case VAR_NUMBER: {
@ -2778,23 +2778,23 @@ float_T tv_get_float(const typval_T *const tv)
} }
case VAR_PARTIAL: case VAR_PARTIAL:
case VAR_FUNC: { case VAR_FUNC: {
emsgf(_("E891: Using a Funcref as a Float")); EMSG(_("E891: Using a Funcref as a Float"));
break; break;
} }
case VAR_STRING: { case VAR_STRING: {
emsgf(_("E892: Using a String as a Float")); EMSG(_("E892: Using a String as a Float"));
break; break;
} }
case VAR_LIST: { case VAR_LIST: {
emsgf(_("E893: Using a List as a Float")); EMSG(_("E893: Using a List as a Float"));
break; break;
} }
case VAR_DICT: { case VAR_DICT: {
emsgf(_("E894: Using a Dictionary as a Float")); EMSG(_("E894: Using a Dictionary as a Float"));
break; break;
} }
case VAR_SPECIAL: { case VAR_SPECIAL: {
emsgf(_("E907: Using a special value as a Float")); EMSG(_("E907: Using a special value as a Float"));
break; break;
} }
case VAR_UNKNOWN: { case VAR_UNKNOWN: {
@ -2840,7 +2840,7 @@ const char *tv_get_string_buf_chk(const typval_T *const tv, char *const buf)
case VAR_DICT: case VAR_DICT:
case VAR_FLOAT: case VAR_FLOAT:
case VAR_UNKNOWN: { case VAR_UNKNOWN: {
emsgf(_(str_errors[tv->v_type])); EMSG(_(str_errors[tv->v_type]));
return false; return false;
} }
} }

View File

@ -2696,7 +2696,7 @@ static bool color_cmdline(CmdlineInfo *colored_ccline)
} }
const list_T *const l = TV_LIST_ITEM_TV(li)->vval.v_list; const list_T *const l = TV_LIST_ITEM_TV(li)->vval.v_list;
if (tv_list_len(l) != 3) { if (tv_list_len(l) != 3) {
PRINT_ERRMSG(_("E5402: List item %i has incorrect length: %li /= 3"), PRINT_ERRMSG(_("E5402: List item %i has incorrect length: %d /= 3"),
i, tv_list_len(l)); i, tv_list_len(l));
goto color_cmdline_error; goto color_cmdline_error;
} }

View File

@ -3686,7 +3686,7 @@ nofail:
} else if (errmsgarg != 0) { } else if (errmsgarg != 0) {
emsgf(errmsg, os_strerror(errmsgarg)); emsgf(errmsg, os_strerror(errmsgarg));
} else { } else {
emsgf(errmsg); EMSG(errmsg);
} }
if (errmsg_allocated) { if (errmsg_allocated) {
xfree(errmsg); xfree(errmsg);
@ -6216,8 +6216,8 @@ static int do_autocmd_event(event_T event, char_u *pat, int nested, char_u *cmd,
/* refuse to add buffer-local ap if buffer number is invalid */ /* refuse to add buffer-local ap if buffer number is invalid */
if (is_buflocal && (buflocal_nr == 0 if (is_buflocal && (buflocal_nr == 0
|| buflist_findnr(buflocal_nr) == NULL)) { || buflist_findnr(buflocal_nr) == NULL)) {
EMSGN(_("E680: <buffer=%d>: invalid buffer number "), emsgf(_("E680: <buffer=%d>: invalid buffer number "),
buflocal_nr); buflocal_nr);
return FAIL; return FAIL;
} }

View File

@ -37,7 +37,7 @@ typedef struct growarray {
static inline void *ga_append_via_ptr(garray_T *gap, size_t item_size) static inline void *ga_append_via_ptr(garray_T *gap, size_t item_size)
{ {
if ((int)item_size != gap->ga_itemsize) { if ((int)item_size != gap->ga_itemsize) {
WLOG("wrong item size (%d), should be %d", item_size, gap->ga_itemsize); WLOG("wrong item size (%zu), should be %d", item_size, gap->ga_itemsize);
} }
ga_grow(gap, 1); ga_grow(gap, 1);
return ((char *)gap->ga_data) + (item_size * (size_t)gap->ga_len++); return ((char *)gap->ga_data) + (item_size * (size_t)gap->ga_len++);

View File

@ -103,7 +103,7 @@ void log_unlock(void)
/// @param line_num source line number, or -1 /// @param line_num source line number, or -1
bool logmsg(int log_level, const char *context, const char *func_name, bool logmsg(int log_level, const char *context, const char *func_name,
int line_num, bool eol, const char *fmt, ...) int line_num, bool eol, const char *fmt, ...)
FUNC_ATTR_UNUSED FUNC_ATTR_UNUSED FUNC_ATTR_PRINTF(6, 7)
{ {
if (log_level < MIN_LOG_LEVEL) { if (log_level < MIN_LOG_LEVEL) {
return false; return false;
@ -245,7 +245,8 @@ end:
static bool do_log_to_file(FILE *log_file, int log_level, const char *context, static bool do_log_to_file(FILE *log_file, int log_level, const char *context,
const char *func_name, int line_num, bool eol, const char *func_name, int line_num, bool eol,
const char* fmt, ...) const char *fmt, ...)
FUNC_ATTR_PRINTF(7, 8)
{ {
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);

View File

@ -291,7 +291,7 @@ static int nlua_print(lua_State *const lstate)
return 0; return 0;
nlua_print_error: nlua_print_error:
emsgf(_("E5114: Error while converting print argument #%i: %.*s"), emsgf(_("E5114: Error while converting print argument #%i: %.*s"),
curargidx, errmsg_len, errmsg); curargidx, (int)errmsg_len, errmsg);
ga_clear(&msg_ga); ga_clear(&msg_ga);
lua_pop(lstate, lua_gettop(lstate)); lua_pop(lstate, lua_gettop(lstate));
return 0; return 0;

View File

@ -840,7 +840,7 @@ static void command_line_scan(mparm_T *parmp)
} }
if (p == NULL) { if (p == NULL) {
emsgf(_(e_outofmem)); EMSG(_(e_outofmem));
} }
Object md = DICTIONARY_OBJ(api_metadata()); Object md = DICTIONARY_OBJ(api_metadata());

View File

@ -331,6 +331,7 @@ void trunc_string(char_u *s, char_u *buf, int room_in, int buflen)
*/ */
int smsg(char *s, ...) int smsg(char *s, ...)
FUNC_ATTR_PRINTF(1, 2)
{ {
va_list arglist; va_list arglist;
@ -341,6 +342,7 @@ int smsg(char *s, ...)
} }
int smsg_attr(int attr, char *s, ...) int smsg_attr(int attr, char *s, ...)
FUNC_ATTR_PRINTF(2, 3)
{ {
va_list arglist; va_list arglist;
@ -581,6 +583,7 @@ void emsg_invreg(int name)
/// Print an error message with unknown number of arguments /// Print an error message with unknown number of arguments
bool emsgf(const char *const fmt, ...) bool emsgf(const char *const fmt, ...)
FUNC_ATTR_PRINTF(1, 2)
{ {
bool ret; bool ret;
@ -644,6 +647,7 @@ static void msg_emsgf_event(void **argv)
} }
void msg_schedule_emsgf(const char *const fmt, ...) void msg_schedule_emsgf(const char *const fmt, ...)
FUNC_ATTR_PRINTF(1, 2)
{ {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);
@ -1672,7 +1676,7 @@ void msg_puts_attr_len(const char *const str, const ptrdiff_t len, int attr)
/// @param[in] attr Highlight attributes. /// @param[in] attr Highlight attributes.
/// @param[in] fmt Format string. /// @param[in] fmt Format string.
void msg_printf_attr(const int attr, const char *const fmt, ...) void msg_printf_attr(const int attr, const char *const fmt, ...)
FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_PRINTF(2, 3)
{ {
static char msgbuf[IOSIZE]; static char msgbuf[IOSIZE];

View File

@ -1384,8 +1384,8 @@ static int nfa_regatom(void)
re_has_z = REX_SET; re_has_z = REX_SET;
break; break;
default: default:
EMSGN(_("E867: (NFA) Unknown operator '\\z%c'"), emsgf(_("E867: (NFA) Unknown operator '\\z%c'"),
no_Magic(c)); no_Magic(c));
return FAIL; return FAIL;
} }
break; break;
@ -1524,8 +1524,8 @@ static int nfa_regatom(void)
break; break;
} }
} }
EMSGN(_("E867: (NFA) Unknown operator '\\%%%c'"), emsgf(_("E867: (NFA) Unknown operator '\\%%%c'"),
no_Magic(c)); no_Magic(c));
return FAIL; return FAIL;
} }
break; break;
@ -1937,7 +1937,7 @@ static int nfa_regpiece(void)
break; break;
} }
if (i == 0) { if (i == 0) {
EMSGN(_("E869: (NFA) Unknown operator '\\@%c'"), op); emsgf(_("E869: (NFA) Unknown operator '\\@%c'"), op);
return FAIL; return FAIL;
} }
EMIT(i); EMIT(i);

View File

@ -884,7 +884,7 @@ static int shada_read_file(const char *const file, const int flags)
if (p_verbose > 0) { if (p_verbose > 0) {
verbose_enter(); verbose_enter();
smsg(_("Reading ShaDa file \"%s\"%s%s%s"), smsg(_("Reading ShaDa file \"%s\"%s%s%s%s"),
fname, fname,
(flags & kShaDaWantInfo) ? _(" info") : "", (flags & kShaDaWantInfo) ? _(" info") : "",
(flags & kShaDaWantMarks) ? _(" marks") : "", (flags & kShaDaWantMarks) ? _(" marks") : "",
@ -2033,7 +2033,7 @@ static const char *shada_format_entry(const ShadaEntry entry)
{ {
static char ret[1024]; static char ret[1024];
ret[0] = 0; ret[0] = 0;
vim_snprintf(S_LEN(ret), "[ ] ts=%" PRIu64 " "); vim_snprintf(S_LEN(ret), "%s", "[ ] ts=%" PRIu64 " ");
// ^ Space for `can_free_entry` // ^ Space for `can_free_entry`
switch (entry.type) { switch (entry.type) {
case kSDItemMissing: { case kSDItemMissing: {
@ -2091,7 +2091,7 @@ static const char *shada_format_entry(const ShadaEntry entry)
entry.data.filemark.mark.lnum, \ entry.data.filemark.mark.lnum, \
entry.data.filemark.mark.col, \ entry.data.filemark.mark.col, \
entry.data.filemark.mark.coladd, \ entry.data.filemark.mark.coladd, \
entry.data.filemark.additional_data, \ (void *)entry.data.filemark.additional_data, \
ad_len, \ ad_len, \
ad); \ ad); \
} while (0) } while (0)

View File

@ -3096,8 +3096,8 @@ static int spell_read_dic(spellinfo_T *spin, char_u *fname, afffile_T *affile)
if (spin->si_verbose && spin->si_msg_count > 10000) { if (spin->si_verbose && spin->si_msg_count > 10000) {
spin->si_msg_count = 0; spin->si_msg_count = 0;
vim_snprintf((char *)message, sizeof(message), vim_snprintf((char *)message, sizeof(message),
_("line %6d, word %6d - %s"), _("line %6d, word %6ld - %s"),
lnum, spin->si_foldwcount + spin->si_keepwcount, w); lnum, spin->si_foldwcount + spin->si_keepwcount, w);
msg_start(); msg_start();
msg_puts_long_attr(message, 0); msg_puts_long_attr(message, 0);
msg_clr_eos(); msg_clr_eos();
@ -3570,7 +3570,7 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname)
if (spin->si_conv.vc_type != CONV_NONE) { if (spin->si_conv.vc_type != CONV_NONE) {
pc = string_convert(&spin->si_conv, rline, NULL); pc = string_convert(&spin->si_conv, rline, NULL);
if (pc == NULL) { if (pc == NULL) {
smsg(_("Conversion failure for word in %s line %d: %s"), smsg(_("Conversion failure for word in %s line %ld: %s"),
fname, lnum, rline); fname, lnum, rline);
continue; continue;
} }
@ -3583,13 +3583,13 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname)
if (*line == '/') { if (*line == '/') {
++line; ++line;
if (STRNCMP(line, "encoding=", 9) == 0) { if (STRNCMP(line, "encoding=", 9) == 0) {
if (spin->si_conv.vc_type != CONV_NONE) if (spin->si_conv.vc_type != CONV_NONE) {
smsg(_("Duplicate /encoding= line ignored in %s line %d: %s"), smsg(_("Duplicate /encoding= line ignored in %s line %ld: %s"),
fname, lnum, line - 1); fname, lnum, line - 1);
else if (did_word) } else if (did_word) {
smsg(_("/encoding= line after word ignored in %s line %d: %s"), smsg(_("/encoding= line after word ignored in %s line %ld: %s"),
fname, lnum, line - 1); fname, lnum, line - 1);
else { } else {
char_u *enc; char_u *enc;
// Setup for conversion to 'encoding'. // Setup for conversion to 'encoding'.
@ -3607,13 +3607,13 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname)
} }
if (STRNCMP(line, "regions=", 8) == 0) { if (STRNCMP(line, "regions=", 8) == 0) {
if (spin->si_region_count > 1) if (spin->si_region_count > 1) {
smsg(_("Duplicate /regions= line ignored in %s line %d: %s"), smsg(_("Duplicate /regions= line ignored in %s line %ld: %s"),
fname, lnum, line); fname, lnum, line);
else { } else {
line += 8; line += 8;
if (STRLEN(line) > MAXREGIONS * 2) { if (STRLEN(line) > MAXREGIONS * 2) {
smsg(_("Too many regions in %s line %d: %s"), smsg(_("Too many regions in %s line %ld: %s"),
fname, lnum, line); fname, lnum, line);
} else { } else {
spin->si_region_count = (int)STRLEN(line) / 2; spin->si_region_count = (int)STRLEN(line) / 2;
@ -3626,7 +3626,7 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname)
continue; continue;
} }
smsg(_("/ line ignored in %s line %d: %s"), smsg(_("/ line ignored in %s line %ld: %s"),
fname, lnum, line - 1); fname, lnum, line - 1);
continue; continue;
} }
@ -3652,13 +3652,13 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname)
l = *p - '0'; l = *p - '0';
if (l == 0 || l > spin->si_region_count) { if (l == 0 || l > spin->si_region_count) {
smsg(_("Invalid region nr in %s line %d: %s"), smsg(_("Invalid region nr in %s line %ld: %s"),
fname, lnum, p); fname, lnum, p);
break; break;
} }
regionmask |= 1 << (l - 1); regionmask |= 1 << (l - 1);
} else { } else {
smsg(_("Unrecognized flags in %s line %d: %s"), smsg(_("Unrecognized flags in %s line %ld: %s"),
fname, lnum, p); fname, lnum, p);
break; break;
} }
@ -5136,7 +5136,7 @@ mkspell (
} else if (vim_strchr(path_tail(wfname), '_') != NULL) { } else if (vim_strchr(path_tail(wfname), '_') != NULL) {
EMSG(_("E751: Output file name must not have region name")); EMSG(_("E751: Output file name must not have region name"));
} else if (incount > MAXREGIONS) { } else if (incount > MAXREGIONS) {
EMSGN(_("E754: Only up to %ld regions supported"), MAXREGIONS); emsgf(_("E754: Only up to %d regions supported"), MAXREGIONS);
} else { } else {
// Check for overwriting before doing things that may take a lot of // Check for overwriting before doing things that may take a lot of
// time. // time.

View File

@ -693,6 +693,7 @@ static float_T tv_float(typval_T *const tvs, int *const idxp)
/// ///
/// @see vim_vsnprintf(). /// @see vim_vsnprintf().
int vim_snprintf_add(char *str, size_t str_m, char *fmt, ...) int vim_snprintf_add(char *str, size_t str_m, char *fmt, ...)
FUNC_ATTR_PRINTF(3, 4)
{ {
const size_t len = strlen(str); const size_t len = strlen(str);
size_t space; size_t space;
@ -718,6 +719,7 @@ int vim_snprintf_add(char *str, size_t str_m, char *fmt, ...)
/// @return Number of bytes excluding NUL byte that would be written to the /// @return Number of bytes excluding NUL byte that would be written to the
/// string if str_m was greater or equal to the return value. /// string if str_m was greater or equal to the return value.
int vim_snprintf(char *str, size_t str_m, const char *fmt, ...) int vim_snprintf(char *str, size_t str_m, const char *fmt, ...)
FUNC_ATTR_PRINTF(3, 4)
{ {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);

View File

@ -144,7 +144,7 @@ void terminfo_info_msg(const unibi_term *const ut)
for (enum unibi_numeric i = unibi_numeric_begin_ + 1; for (enum unibi_numeric i = unibi_numeric_begin_ + 1;
i < unibi_numeric_end_; i++) { i < unibi_numeric_end_; i++) {
int n = unibi_get_num(ut, i); // -1 means "empty" int n = unibi_get_num(ut, i); // -1 means "empty"
msg_printf_attr(0, " %-25s %-10s = %hd\n", unibi_name_num(i), msg_printf_attr(0, " %-25s %-10s = %d\n", unibi_name_num(i),
unibi_short_name_num(i), n); unibi_short_name_num(i), n);
} }
@ -173,7 +173,7 @@ void terminfo_info_msg(const unibi_term *const ut)
if (unibi_count_ext_num(ut)) { if (unibi_count_ext_num(ut)) {
msg_puts("Extended numeric capabilities:\n"); msg_puts("Extended numeric capabilities:\n");
for (size_t i = 0; i < unibi_count_ext_num(ut); i++) { for (size_t i = 0; i < unibi_count_ext_num(ut); i++) {
msg_printf_attr(0, " %-25s = %hd\n", msg_printf_attr(0, " %-25s = %d\n",
unibi_get_ext_num_name(ut, i), unibi_get_ext_num_name(ut, i),
unibi_get_ext_num(ut, i)); unibi_get_ext_num(ut, i));
} }

View File

@ -2503,8 +2503,8 @@ void ex_undolist(exarg_T *eap)
while (uhp != NULL) { while (uhp != NULL) {
if (uhp->uh_prev.ptr == NULL && uhp->uh_walk != nomark if (uhp->uh_prev.ptr == NULL && uhp->uh_walk != nomark
&& uhp->uh_walk != mark) { && uhp->uh_walk != mark) {
vim_snprintf((char *)IObuff, IOSIZE, "%6ld %7ld ", vim_snprintf((char *)IObuff, IOSIZE, "%6ld %7d ",
uhp->uh_seq, changes); uhp->uh_seq, changes);
u_add_time(IObuff + STRLEN(IObuff), IOSIZE - STRLEN(IObuff), u_add_time(IObuff + STRLEN(IObuff), IOSIZE - STRLEN(IObuff),
uhp->uh_time); uhp->uh_time);
if (uhp->uh_save_nr > 0) { if (uhp->uh_save_nr > 0) {