diff options
32 files changed, 246 insertions, 131 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 02b555d540..fa020bf55c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,8 +96,8 @@ endif() # Set default build type. if(NOT CMAKE_BUILD_TYPE) - message(STATUS "CMAKE_BUILD_TYPE not given, defaulting to 'Debug'.") - set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE) + message(STATUS "CMAKE_BUILD_TYPE not given, defaulting to 'Debug'") + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build" FORCE) endif() # Set available build types for CMake GUIs. @@ -137,7 +137,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Default to -O2 on release builds. if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3") - message(STATUS "Replacing -O3 in CMAKE_C_FLAGS_RELEASE with -O2.") + message(STATUS "Replacing -O3 in CMAKE_C_FLAGS_RELEASE with -O2") string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") endif() @@ -205,12 +205,12 @@ main(void) " HAS_ACCEPTABLE_FORTIFY) if(NOT HAS_ACCEPTABLE_FORTIFY) - message(STATUS "Unsupported _FORTIFY_SOURCE found, forcing _FORTIFY_SOURCE=1.") + message(STATUS "Unsupported _FORTIFY_SOURCE found, forcing _FORTIFY_SOURCE=1") # Extract possible prefix to _FORTIFY_SOURCE (e.g. -Wp,-D_FORTIFY_SOURCE). STRING(REGEX MATCH "[^\ ]+-D_FORTIFY_SOURCE" _FORTIFY_SOURCE_PREFIX "${CMAKE_C_FLAGS}") STRING(REPLACE "-D_FORTIFY_SOURCE" "" _FORTIFY_SOURCE_PREFIX "${_FORTIFY_SOURCE_PREFIX}" ) if(NOT _FORTIFY_SOURCE_PREFIX STREQUAL "") - message(STATUS "Detected _FORTIFY_SOURCE Prefix=${_FORTIFY_SOURCE_PREFIX}.") + message(STATUS "Detected _FORTIFY_SOURCE Prefix=${_FORTIFY_SOURCE_PREFIX}") endif() # -U in add_definitions doesn't end up in the correct spot, so we add it to # the flags variable instead. @@ -222,7 +222,7 @@ endif() if(CMAKE_EXE_LINKER_FLAGS MATCHES "--sort-common" OR CMAKE_SHARED_LINKER_FLAGS MATCHES "--sort-common" OR CMAKE_MODULE_LINKER_FLAGS MATCHES "--sort-common") - message(STATUS "Removing --sort-common from linker flags.") + message(STATUS "Removing --sort-common from linker flags") string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") string(REGEX REPLACE ",--sort-common(=[^,]+)?" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}") @@ -309,10 +309,10 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU") endif() endif() -option(TRAVIS_CI_BUILD "Travis/QuickBuild CI. Extra flags will be set." OFF) +option(TRAVIS_CI_BUILD "Travis/QuickBuild CI, extra flags will be set" OFF) if(TRAVIS_CI_BUILD) - message(STATUS "Travis/QuickBuild CI build enabled.") + message(STATUS "Travis/QuickBuild CI build enabled") add_definitions(-Werror) if(DEFINED ENV{BUILD_32BIT}) # Get some test coverage for unsigned char @@ -433,11 +433,11 @@ option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF) if((CLANG_ASAN_UBSAN AND CLANG_MSAN) OR (CLANG_ASAN_UBSAN AND CLANG_TSAN) OR (CLANG_MSAN AND CLANG_TSAN)) - message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously.") + message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously") endif() if((CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) AND NOT CMAKE_C_COMPILER_ID MATCHES "Clang") - message(FATAL_ERROR "Sanitizers are only supported for Clang.") + message(FATAL_ERROR "Sanitizers are only supported for Clang") endif() if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD|FreeBSD|Windows") # see #5318 @@ -449,7 +449,7 @@ endif() if(ENABLE_JEMALLOC) if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) - message(STATUS "Sanitizers have been enabled; don't use jemalloc.") + message(STATUS "Sanitizers enabled; disabling jemalloc") else() find_package(JeMalloc REQUIRED) include_directories(SYSTEM ${JEMALLOC_INCLUDE_DIRS}) @@ -505,10 +505,10 @@ else() endif() if(NOT LUA_PRG_WORKS) - message(FATAL_ERROR "A suitable Lua interpreter was not found.") + message(FATAL_ERROR "Failed to find a Lua 5.1-compatible interpreter") endif() -message(STATUS "Using the Lua interpreter ${LUA_PRG}.") +message(STATUS "Using Lua interpreter: ${LUA_PRG}") # Setup busted. find_program(BUSTED_PRG NAMES busted busted.bat) diff --git a/cmake/GenerateHelptags.cmake.in b/cmake/GenerateHelptags.cmake.in index 3ced2c0b17..db6f15b1be 100644 --- a/cmake/GenerateHelptags.cmake.in +++ b/cmake/GenerateHelptags.cmake.in @@ -8,7 +8,7 @@ else() HELPTAGS_WORKING_DIRECTORY) endif() -message(STATUS "Generating helptags in ${HELPTAGS_WORKING_DIRECTORY}.") +message(STATUS "Generating helptags in ${HELPTAGS_WORKING_DIRECTORY}") if(EXISTS ${HELPTAGS_WORKING_DIRECTORY}/) message(STATUS "${HELPTAGS_WORKING_DIRECTORY} already exists") # If the doc directory already exists, helptags could fail due to duplicate diff --git a/cmake/LuaHelpers.cmake b/cmake/LuaHelpers.cmake index 3cba47412b..0239460f2b 100644 --- a/cmake/LuaHelpers.cmake +++ b/cmake/LuaHelpers.cmake @@ -17,7 +17,7 @@ endfunction() function(check_lua_deps LUA_PRG_PATH MODULES RESULT_VAR) # Check if the lua interpreter at the given path # satisfies all Neovim dependencies - message(STATUS "Checking Lua interpreter ${LUA_PRG_PATH}") + message(STATUS "Checking Lua interpreter: ${LUA_PRG_PATH}") if(NOT EXISTS ${LUA_PRG_PATH}) message(STATUS "[${LUA_PRG_PATH}] file not found") diff --git a/cmake/RunLuacheck.cmake b/cmake/RunLuacheck.cmake index 5129541cd8..4887e562a5 100644 --- a/cmake/RunLuacheck.cmake +++ b/cmake/RunLuacheck.cmake @@ -18,5 +18,5 @@ execute_process( if(NOT res EQUAL 0) message(STATUS "Output to stderr:\n${err}") - message(FATAL_ERROR "Linting tests failed with error: ${res}.") + message(FATAL_ERROR "Linting tests failed with error: ${res}") endif() diff --git a/cmake/RunTests.cmake b/cmake/RunTests.cmake index a51990e925..a764b19850 100644 --- a/cmake/RunTests.cmake +++ b/cmake/RunTests.cmake @@ -50,5 +50,5 @@ file(REMOVE_RECURSE ${WORKING_DIR}/Xtest-tmpdir) if(NOT res EQUAL 0) message(STATUS "Output to stderr:\n${err}") - message(FATAL_ERROR "Running ${TEST_TYPE} tests failed with error: ${res}.") + message(FATAL_ERROR "${TEST_TYPE} tests failed with error: ${res}") endif() diff --git a/src/clint.py b/src/clint.py index 9fd93ce143..34af5d15fd 100755 --- a/src/clint.py +++ b/src/clint.py @@ -49,6 +49,7 @@ from __future__ import unicode_literals import codecs import copy +import fileinput import getopt import math # for log import os @@ -65,7 +66,7 @@ _USAGE = """ Syntax: clint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] [--counting=total|toplevel|detailed] [--root=subdir] [--linelength=digits] [--record-errors=file] - [--suppress-errors=file] + [--suppress-errors=file] [--stdin-filename=filename] <file> [file] ... The style guidelines this tries to follow are those in @@ -167,6 +168,9 @@ Syntax: clint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] suppress-errors=file Errors listed in the given file will not be reported. + + stdin-filename=filename + Use specified filename when reading from stdin (file "-"). """ # We categorize each error message we print. Here are the categories. @@ -3456,10 +3460,12 @@ def ProcessFile(filename, vlevel, extra_check_functions=[]): # is processed. if filename == '-': - lines = codecs.StreamReaderWriter(sys.stdin, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace').read().split('\n') + stdin = sys.stdin.read() + if sys.version_info < (3, 0): + stdin = stdin.decode('utf8') + lines = stdin.split('\n') + if _cpplint_state.stdin_filename is not None: + filename = _cpplint_state.stdin_filename else: lines = codecs.open( filename, 'r', 'utf8', 'replace').read().split('\n') @@ -3540,7 +3546,9 @@ def ParseArguments(args): 'linelength=', 'extensions=', 'record-errors=', - 'suppress-errors=']) + 'suppress-errors=', + 'stdin-filename=', + ]) except getopt.GetoptError: PrintUsage('Invalid arguments.') @@ -3550,6 +3558,7 @@ def ParseArguments(args): counting_style = '' record_errors_file = None suppress_errors_file = None + stdin_filename = None for (opt, val) in opts: if opt == '--help': @@ -3586,6 +3595,8 @@ def ParseArguments(args): record_errors_file = val elif opt == '--suppress-errors': suppress_errors_file = val + elif opt == '--stdin-filename': + stdin_filename = val if not filenames: PrintUsage('No files were specified.') @@ -3596,6 +3607,7 @@ def ParseArguments(args): _SetCountingStyle(counting_style) _SuppressErrorsFrom(suppress_errors_file) _RecordErrorsTo(record_errors_file) + _cpplint_state.stdin_filename = stdin_filename return filenames diff --git a/src/nvim/buffer_updates.c b/src/nvim/buffer_updates.c index 18b53a0685..9d9c998a68 100644 --- a/src/nvim/buffer_updates.c +++ b/src/nvim/buffer_updates.c @@ -180,7 +180,7 @@ void buf_updates_send_changes(buf_T *buf, // change notifications are so frequent that many dead channels will be // cleared up quickly. 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); } } diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 2aab2d72a7..9c678168bb 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -1943,7 +1943,7 @@ static char_u *ex_let_one(char_u *arg, typval_T *const tv, emsgf(_(e_letwrong), op); } else if (endchars != NULL && vim_strchr(endchars, *skipwhite(arg + 1)) == NULL) { - emsgf(_(e_letunexp)); + EMSG(_(e_letunexp)); } else { 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 || rettv->vval.v_list == NULL)) { if (!quiet) { - emsgf(_("E709: [:] requires a List value")); + EMSG(_("E709: [:] requires a List value")); } tv_clear(&var1); return NULL; @@ -2179,7 +2179,7 @@ static char_u *get_lval(char_u *const name, typval_T *const rettv, if (*p != ']') { if (!quiet) { - emsgf(_(e_missbrac)); + EMSG(_(e_missbrac)); } tv_clear(&var1); tv_clear(&var2); @@ -3325,7 +3325,7 @@ static int eval1(char_u **arg, typval_T *rettv, int evaluate) * Check for the ":". */ if ((*arg)[0] != ':') { - emsgf(_("E109: Missing ':' after '?'")); + EMSG(_("E109: Missing ':' after '?'")); if (evaluate && result) { tv_clear(rettv); } @@ -4433,7 +4433,7 @@ eval_index( /* Check for the ']'. */ if (**arg != ']') { if (verbose) { - emsgf(_(e_missbrac)); + EMSG(_(e_missbrac)); } tv_clear(&var1); if (range) { @@ -4545,7 +4545,7 @@ eval_index( case VAR_DICT: { if (range) { if (verbose) { - emsgf(_(e_dictrange)); + EMSG(_(e_dictrange)); } if (len == -1) { 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); } if (noref < 0 || noref > 1) { - emsgf(_(e_invarg)); + EMSG(_(e_invarg)); } else { var_item_copy(NULL, &argvars[0], rettv, true, (noref == 0 ? get_copyID() @@ -7835,7 +7835,7 @@ static void f_delete(typval_T *argvars, typval_T *rettv, FunPtr fptr) // delete a directory recursively rettv->vval.v_number = delete_recursive(name); } 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 && (is_funcref ? find_func(trans_name) == NULL : !translated_function_exists((const char *)trans_name))) { - EMSG2(_("E700: Unknown function: %s"), s); + emsgf(_("E700: Unknown function: %s"), s); } else { int dict_idx = 0; int arg_idx = 0; @@ -11190,7 +11190,7 @@ void get_user_input(const typval_T *const argvars, char def[1] = { 0 }; if (argvars[0].v_type == VAR_DICT) { if (argvars[1].v_type != VAR_UNKNOWN) { - emsgf(_("E5050: {opts} must be the only argument")); + EMSG(_("E5050: {opts} must be the only argument")); return; } 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) { if (tv->v_type != VAR_DICT) { - emsgf(_(e_dictreq)); + EMSG(_(e_dictreq)); return; } 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) { - emsgf(_("E474: Failed to parse %.*s"), (int) len, s); + emsgf(_("E474: Failed to parse %.*s"), (int)len, s); rettv->v_type = VAR_NUMBER; rettv->vval.v_number = 0; } @@ -12919,7 +12919,7 @@ static void f_nr2char(typval_T *argvars, typval_T *rettv, FunPtr fptr) return; } if (num < 0) { - emsgf(_("E5070: Character number must not be less than zero")); + EMSG(_("E5070: Character number must not be less than zero")); return; } 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. } if (stride == 0) { - emsgf(_("E726: Stride is zero")); + EMSG(_("E726: Stride is zero")); } else if (stride > 0 ? end + 1 < start : end - 1 > start) { - emsgf(_("E727: Start past end")); + EMSG(_("E727: Start past end")); } else { tv_list_alloc_ret(rettv, (end - start) / 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". - emsgf(_(e_invrange)); + EMSG(_(e_invrange)); } else { tv_list_move_items(l, item, item2, tv_list_alloc_ret(rettv, 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) { d = title_arg->vval.v_dict; } else { - emsgf(_(e_dictreq)); + EMSG(_(e_dictreq)); return; } @@ -16217,7 +16217,7 @@ static void f_submatch(typval_T *argvars, typval_T *rettv, FunPtr fptr) } if (no < 0 || no >= NSUBEXP) { - EMSGN(_("E935: invalid submatch number: %d"), no); + emsgf(_("E935: invalid submatch number: %d"), no); return; } 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 || (dict = argvars[0].vval.v_dict) == NULL) { - emsgf(_(e_invarg)); + EMSG(_(e_invarg)); } else { dictitem_T *di; 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) { 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 false; @@ -19976,7 +19976,7 @@ void ex_function(exarg_T *eap) if (*p == '\n') { line_arg = p + 1; } else if (*p != NUL && *p != '"' && !eap->skip && !did_emsg) { - emsgf(_(e_trailing)); + EMSG(_(e_trailing)); } /* diff --git a/src/nvim/eval/encode.c b/src/nvim/eval/encode.c index 9bae436e3d..2563e38258 100644 --- a/src/nvim/eval/encode.c +++ b/src/nvim/eval/encode.c @@ -609,14 +609,14 @@ static inline int convert_to_json_string(garray_T *const gap, if (ch > 0x7F && shift == 1) { emsgf(_("E474: String \"%.*s\" contains byte that does not start " "any UTF-8 character"), - utf_len - (i - shift), utf_buf + i - shift); + (int)(utf_len - (i - shift)), utf_buf + i - shift); xfree(tofree); return FAIL; } else if ((SURROGATE_HI_START <= ch && ch <= SURROGATE_HI_END) || (SURROGATE_LO_START <= ch && ch <= SURROGATE_LO_END)) { emsgf(_("E474: UTF-8 string contains code point which belongs " "to a surrogate pair: %.*s"), - utf_len - (i - shift), utf_buf + i - shift); + (int)(utf_len - (i - shift)), utf_buf + i - shift); xfree(tofree); return FAIL; } else if (ENCODE_RAW(ch)) { diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c index 55dcfcc198..6a93b20345 100644 --- a/src/nvim/eval/typval.c +++ b/src/nvim/eval/typval.c @@ -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); if (li == NULL) { - emsgf(_(e_listidx), (int64_t)n); + EMSG2(_(e_listidx), (int64_t)n); return NULL; } 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) { - emsgf(_("E6000: Argument is not a function or function name")); + EMSG(_("E6000: Argument is not a function or function name")); return false; } @@ -2298,7 +2298,7 @@ void tv_item_lock(typval_T *const tv, const int deep, const bool lock) static int recurse = 0; if (recurse >= DICT_MAXNEST) { - emsgf(_("E743: variable nested too deep for (un)lock")); + EMSG(_("E743: variable nested too deep for (un)lock")); return; } if (deep == 0) { @@ -2546,28 +2546,28 @@ bool tv_check_str_or_nr(const typval_T *const tv) return true; } 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; } case VAR_PARTIAL: 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; } 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; } 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; } case VAR_SPECIAL: { - emsgf(_("E5300: Expected a Number or a String")); + EMSG(_("E5300: Expected a Number or a String")); return false; } case VAR_UNKNOWN: { - emsgf(_(e_intern2), "tv_check_str_or_nr(UNKNOWN)"); + EMSG2(_(e_intern2), "tv_check_str_or_nr(UNKNOWN)"); return false; } } @@ -2611,7 +2611,7 @@ bool tv_check_num(const typval_T *const tv) case VAR_DICT: case VAR_FLOAT: case VAR_UNKNOWN: { - emsgf(_(num_errors[tv->v_type])); + EMSG(_(num_errors[tv->v_type])); return false; } } @@ -2655,7 +2655,7 @@ bool tv_check_str(const typval_T *const tv) case VAR_DICT: case VAR_FLOAT: case VAR_UNKNOWN: { - emsgf(_(str_errors[tv->v_type])); + EMSG(_(str_errors[tv->v_type])); 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_DICT: case VAR_FLOAT: { - emsgf(_(num_errors[tv->v_type])); + EMSG(_(num_errors[tv->v_type])); break; } case VAR_NUMBER: { @@ -2778,23 +2778,23 @@ float_T tv_get_float(const typval_T *const tv) } case VAR_PARTIAL: case VAR_FUNC: { - emsgf(_("E891: Using a Funcref as a Float")); + EMSG(_("E891: Using a Funcref as a Float")); break; } case VAR_STRING: { - emsgf(_("E892: Using a String as a Float")); + EMSG(_("E892: Using a String as a Float")); break; } case VAR_LIST: { - emsgf(_("E893: Using a List as a Float")); + EMSG(_("E893: Using a List as a Float")); break; } case VAR_DICT: { - emsgf(_("E894: Using a Dictionary as a Float")); + EMSG(_("E894: Using a Dictionary as a Float")); break; } case VAR_SPECIAL: { - emsgf(_("E907: Using a special value as a Float")); + EMSG(_("E907: Using a special value as a Float")); break; } 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_FLOAT: case VAR_UNKNOWN: { - emsgf(_(str_errors[tv->v_type])); + EMSG(_(str_errors[tv->v_type])); return false; } } diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 4d6720ef23..1ec00b1e25 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -2696,7 +2696,7 @@ static bool color_cmdline(CmdlineInfo *colored_ccline) } const list_T *const l = TV_LIST_ITEM_TV(li)->vval.v_list; 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)); goto color_cmdline_error; } diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c index ae0b24f3c8..3ab7710de5 100644 --- a/src/nvim/fileio.c +++ b/src/nvim/fileio.c @@ -3686,7 +3686,7 @@ nofail: } else if (errmsgarg != 0) { emsgf(errmsg, os_strerror(errmsgarg)); } else { - emsgf(errmsg); + EMSG(errmsg); } if (errmsg_allocated) { 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 */ if (is_buflocal && (buflocal_nr == 0 || buflist_findnr(buflocal_nr) == NULL)) { - EMSGN(_("E680: <buffer=%d>: invalid buffer number "), - buflocal_nr); + emsgf(_("E680: <buffer=%d>: invalid buffer number "), + buflocal_nr); return FAIL; } diff --git a/src/nvim/garray.h b/src/nvim/garray.h index 94e1b61671..58738df691 100644 --- a/src/nvim/garray.h +++ b/src/nvim/garray.h @@ -37,7 +37,7 @@ typedef struct growarray { static inline void *ga_append_via_ptr(garray_T *gap, size_t item_size) { 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); return ((char *)gap->ga_data) + (item_size * (size_t)gap->ga_len++); diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 2eb2df399e..94702a9a3a 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -420,7 +420,7 @@ void typeahead_noflush(int c) * typeahead buffer (used in case of an error). If "flush_typeahead" is true, * flush all typeahead characters (used when interrupted by a CTRL-C). */ -void flush_buffers(int flush_typeahead) +void flush_buffers(flush_buffers_T flush_typeahead) { init_typebuf(); @@ -428,22 +428,24 @@ void flush_buffers(int flush_typeahead) while (read_readbuffers(TRUE) != NUL) { } - if (flush_typeahead) { /* remove all typeahead */ - /* - * We have to get all characters, because we may delete the first part - * of an escape sequence. - * In an xterm we get one char at a time and we have to get them all. - */ - while (inchar(typebuf.tb_buf, typebuf.tb_buflen - 1, 10L) != 0) { + if (flush_typeahead == FLUSH_MINIMAL) { + // remove mapped characters at the start only + typebuf.tb_off += typebuf.tb_maplen; + typebuf.tb_len -= typebuf.tb_maplen; + } else { + // remove typeahead + if (flush_typeahead == FLUSH_INPUT) { + // We have to get all characters, because we may delete the first + // part of an escape sequence. In an xterm we get one char at a + // time and we have to get them all. + while (inchar(typebuf.tb_buf, typebuf.tb_buflen - 1, 10L) != 0) { + } } typebuf.tb_off = MAXMAPLEN; typebuf.tb_len = 0; // Reset the flag that text received from a client or from feedkeys() // was inserted in the typeahead buffer. typebuf_was_filled = false; - } else { // remove mapped characters at the start only - typebuf.tb_off += typebuf.tb_maplen; - typebuf.tb_len -= typebuf.tb_maplen; } typebuf.tb_maplen = 0; typebuf.tb_silent = 0; @@ -1538,6 +1540,7 @@ int plain_vgetc(void) * Check if a character is available, such that vgetc() will not block. * If the next character is a special character or multi-byte, the returned * character is not valid!. + * Returns NUL if no character is available. */ int vpeekc(void) { @@ -1602,7 +1605,8 @@ vungetc ( /* unget one character (can only be done once!) */ /// KeyTyped is set to TRUE in the case the user typed the key. /// KeyStuffed is TRUE if the character comes from the stuff buffer. /// if "advance" is FALSE (vpeekc()): -/// just look whether there is a character available. +/// Just look whether there is a character available. +/// Return NUL if not. /// /// When `no_mapping` (global) is zero, checks for mappings in the current mode. /// Only returns one byte (of a multi-byte character). @@ -1709,7 +1713,7 @@ static int vgetorpeek(int advance) } else { c = Ctrl_C; } - flush_buffers(true); // flush all typeahead + flush_buffers(FLUSH_INPUT); // flush all typeahead if (advance) { /* Also record this character, it might be needed to @@ -1970,8 +1974,8 @@ static int vgetorpeek(int advance) redrawcmdline(); else setcursor(); - flush_buffers(FALSE); - mapdepth = 0; /* for next one */ + flush_buffers(FLUSH_MINIMAL); + mapdepth = 0; // for next one c = -1; break; } diff --git a/src/nvim/getchar.h b/src/nvim/getchar.h index 38a2e75663..4f548d975a 100644 --- a/src/nvim/getchar.h +++ b/src/nvim/getchar.h @@ -16,6 +16,13 @@ enum { REMAP_SKIP = -3, ///< No remapping for first char. } RemapValues; +// Argument for flush_buffers(). +typedef enum { + FLUSH_MINIMAL, + FLUSH_TYPEAHEAD, // flush current typebuf contents + FLUSH_INPUT // flush typebuf and inchar() input +} flush_buffers_T; + #define KEYLEN_PART_KEY -1 /* keylen value for incomplete key-code */ #define KEYLEN_PART_MAP -2 /* keylen value for incomplete mapping */ #define KEYLEN_REMOVED 9999 /* keylen value for removed sequence */ diff --git a/src/nvim/log.c b/src/nvim/log.c index 719f0da340..4d912c452b 100644 --- a/src/nvim/log.c +++ b/src/nvim/log.c @@ -103,7 +103,7 @@ void log_unlock(void) /// @param line_num source line number, or -1 bool logmsg(int log_level, const char *context, const char *func_name, 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) { return false; @@ -245,7 +245,8 @@ end: 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* fmt, ...) + const char *fmt, ...) + FUNC_ATTR_PRINTF(7, 8) { va_list args; va_start(args, fmt); diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c index 02eabb9c89..a7bda9d037 100644 --- a/src/nvim/lua/executor.c +++ b/src/nvim/lua/executor.c @@ -291,7 +291,7 @@ static int nlua_print(lua_State *const lstate) return 0; nlua_print_error: emsgf(_("E5114: Error while converting print argument #%i: %.*s"), - curargidx, errmsg_len, errmsg); + curargidx, (int)errmsg_len, errmsg); ga_clear(&msg_ga); lua_pop(lstate, lua_gettop(lstate)); return 0; diff --git a/src/nvim/main.c b/src/nvim/main.c index 1db988b5f4..af54e62393 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -840,7 +840,7 @@ static void command_line_scan(mparm_T *parmp) } if (p == NULL) { - emsgf(_(e_outofmem)); + EMSG(_(e_outofmem)); } Object md = DICTIONARY_OBJ(api_metadata()); diff --git a/src/nvim/memline.c b/src/nvim/memline.c index ec0238e7c9..51f99db0de 100644 --- a/src/nvim/memline.c +++ b/src/nvim/memline.c @@ -49,6 +49,7 @@ #include "nvim/buffer.h" #include "nvim/cursor.h" #include "nvim/eval.h" +#include "nvim/getchar.h" #include "nvim/fileio.h" #include "nvim/func_attr.h" #include "nvim/main.h" @@ -3358,12 +3359,16 @@ static char *findswapname(buf_T *buf, char **dirp, char *old_fname, choice = do_swapexists(buf, (char_u *) fname); if (choice == 0) { - /* Show info about the existing swap file. */ - attention_message(buf, (char_u *) fname); + // Show info about the existing swap file. + attention_message(buf, (char_u *)fname); - /* We don't want a 'q' typed at the more-prompt - * interrupt loading a file. */ - got_int = FALSE; + // We don't want a 'q' typed at the more-prompt + // interrupt loading a file. + got_int = false; + + // If vimrc has "simalt ~x" we don't want it to + // interfere with the prompt here. + flush_buffers(FLUSH_TYPEAHEAD); } if (swap_exists_action != SEA_NONE && choice == 0) { diff --git a/src/nvim/message.c b/src/nvim/message.c index fc7e96ac2c..1778e0048f 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -331,6 +331,7 @@ void trunc_string(char_u *s, char_u *buf, int room_in, int buflen) */ int smsg(char *s, ...) + FUNC_ATTR_PRINTF(1, 2) { va_list arglist; @@ -341,6 +342,7 @@ int smsg(char *s, ...) } int smsg_attr(int attr, char *s, ...) + FUNC_ATTR_PRINTF(2, 3) { va_list arglist; @@ -550,7 +552,7 @@ int emsg(const char_u *s_) if (p_eb) { beep_flush(); // also includes flush_buffers() } else { - flush_buffers(false); // flush internal buffers + flush_buffers(FLUSH_MINIMAL); // flush internal buffers } did_emsg = true; // flag for DoOneCmd() } @@ -581,6 +583,7 @@ void emsg_invreg(int name) /// Print an error message with unknown number of arguments bool emsgf(const char *const fmt, ...) + FUNC_ATTR_PRINTF(1, 2) { bool ret; @@ -644,6 +647,7 @@ static void msg_emsgf_event(void **argv) } void msg_schedule_emsgf(const char *const fmt, ...) + FUNC_ATTR_PRINTF(1, 2) { va_list ap; 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] fmt Format string. 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]; diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 2e7fe4d7a9..7e9d68a4b4 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -2548,7 +2548,7 @@ void msgmore(long n) void beep_flush(void) { if (emsg_silent == 0) { - flush_buffers(false); + flush_buffers(FLUSH_MINIMAL); vim_beep(BO_ERROR); } } diff --git a/src/nvim/ops.c b/src/nvim/ops.c index e902127a40..5a6e56299d 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -2159,9 +2159,17 @@ void op_insert(oparg_T *oap, long count1) * Subsequent calls to ml_get() flush the firstline data - take a * copy of the required string. */ - firstline = ml_get(oap->start.lnum) + bd.textcol; - if (oap->op_type == OP_APPEND) - firstline += bd.textlen; + firstline = ml_get(oap->start.lnum); + const size_t len = STRLEN(firstline); + colnr_T add = bd.textcol; + if (oap->op_type == OP_APPEND) { + add += bd.textlen; + } + if ((size_t)add > len) { + firstline += len; // short line, point to the NUL + } else { + firstline += add; + } ins_len = (long)STRLEN(firstline) - pre_textlen; if (pre_textlen >= 0 && ins_len > 0) { ins_text = vim_strnsave(firstline, (size_t)ins_len); diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c index 65ddcf3b07..fe18cb4389 100644 --- a/src/nvim/regexp_nfa.c +++ b/src/nvim/regexp_nfa.c @@ -1384,8 +1384,8 @@ static int nfa_regatom(void) re_has_z = REX_SET; break; default: - EMSGN(_("E867: (NFA) Unknown operator '\\z%c'"), - no_Magic(c)); + emsgf(_("E867: (NFA) Unknown operator '\\z%c'"), + no_Magic(c)); return FAIL; } break; @@ -1524,8 +1524,8 @@ static int nfa_regatom(void) break; } } - EMSGN(_("E867: (NFA) Unknown operator '\\%%%c'"), - no_Magic(c)); + emsgf(_("E867: (NFA) Unknown operator '\\%%%c'"), + no_Magic(c)); return FAIL; } break; @@ -1937,7 +1937,7 @@ static int nfa_regpiece(void) break; } if (i == 0) { - EMSGN(_("E869: (NFA) Unknown operator '\\@%c'"), op); + emsgf(_("E869: (NFA) Unknown operator '\\@%c'"), op); return FAIL; } EMIT(i); diff --git a/src/nvim/shada.c b/src/nvim/shada.c index f4454504a4..11da7195bf 100644 --- a/src/nvim/shada.c +++ b/src/nvim/shada.c @@ -884,7 +884,7 @@ static int shada_read_file(const char *const file, const int flags) if (p_verbose > 0) { verbose_enter(); - smsg(_("Reading ShaDa file \"%s\"%s%s%s"), + smsg(_("Reading ShaDa file \"%s\"%s%s%s%s"), fname, (flags & kShaDaWantInfo) ? _(" info") : "", (flags & kShaDaWantMarks) ? _(" marks") : "", @@ -2033,7 +2033,7 @@ static const char *shada_format_entry(const ShadaEntry entry) { static char ret[1024]; ret[0] = 0; - vim_snprintf(S_LEN(ret), "[ ] ts=%" PRIu64 " "); + vim_snprintf(S_LEN(ret), "%s", "[ ] ts=%" PRIu64 " "); // ^ Space for `can_free_entry` switch (entry.type) { case kSDItemMissing: { @@ -2091,7 +2091,7 @@ static const char *shada_format_entry(const ShadaEntry entry) entry.data.filemark.mark.lnum, \ entry.data.filemark.mark.col, \ entry.data.filemark.mark.coladd, \ - entry.data.filemark.additional_data, \ + (void *)entry.data.filemark.additional_data, \ ad_len, \ ad); \ } while (0) diff --git a/src/nvim/spellfile.c b/src/nvim/spellfile.c index f52ae61534..8be8d24b9f 100644 --- a/src/nvim/spellfile.c +++ b/src/nvim/spellfile.c @@ -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) { spin->si_msg_count = 0; vim_snprintf((char *)message, sizeof(message), - _("line %6d, word %6d - %s"), - lnum, spin->si_foldwcount + spin->si_keepwcount, w); + _("line %6d, word %6ld - %s"), + lnum, spin->si_foldwcount + spin->si_keepwcount, w); msg_start(); msg_puts_long_attr(message, 0); 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) { pc = string_convert(&spin->si_conv, rline, 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); continue; } @@ -3583,13 +3583,13 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname) if (*line == '/') { ++line; if (STRNCMP(line, "encoding=", 9) == 0) { - if (spin->si_conv.vc_type != CONV_NONE) - smsg(_("Duplicate /encoding= line ignored in %s line %d: %s"), + if (spin->si_conv.vc_type != CONV_NONE) { + smsg(_("Duplicate /encoding= line ignored in %s line %ld: %s"), fname, lnum, line - 1); - else if (did_word) - smsg(_("/encoding= line after word ignored in %s line %d: %s"), + } else if (did_word) { + smsg(_("/encoding= line after word ignored in %s line %ld: %s"), fname, lnum, line - 1); - else { + } else { char_u *enc; // 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 (spin->si_region_count > 1) - smsg(_("Duplicate /regions= line ignored in %s line %d: %s"), + if (spin->si_region_count > 1) { + smsg(_("Duplicate /regions= line ignored in %s line %ld: %s"), fname, lnum, line); - else { + } else { line += 8; 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); } else { spin->si_region_count = (int)STRLEN(line) / 2; @@ -3626,7 +3626,7 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname) continue; } - smsg(_("/ line ignored in %s line %d: %s"), + smsg(_("/ line ignored in %s line %ld: %s"), fname, lnum, line - 1); continue; } @@ -3652,13 +3652,13 @@ static int spell_read_wordfile(spellinfo_T *spin, char_u *fname) l = *p - '0'; 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); break; } regionmask |= 1 << (l - 1); } else { - smsg(_("Unrecognized flags in %s line %d: %s"), + smsg(_("Unrecognized flags in %s line %ld: %s"), fname, lnum, p); break; } @@ -5136,7 +5136,7 @@ mkspell ( } else if (vim_strchr(path_tail(wfname), '_') != NULL) { EMSG(_("E751: Output file name must not have region name")); } else if (incount > MAXREGIONS) { - EMSGN(_("E754: Only up to %ld regions supported"), MAXREGIONS); + emsgf(_("E754: Only up to %d regions supported"), MAXREGIONS); } else { // Check for overwriting before doing things that may take a lot of // time. diff --git a/src/nvim/strings.c b/src/nvim/strings.c index 17c4a75a64..3b0a950ff2 100644 --- a/src/nvim/strings.c +++ b/src/nvim/strings.c @@ -693,6 +693,7 @@ static float_T tv_float(typval_T *const tvs, int *const idxp) /// /// @see vim_vsnprintf(). int vim_snprintf_add(char *str, size_t str_m, char *fmt, ...) + FUNC_ATTR_PRINTF(3, 4) { const size_t len = strlen(str); 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 /// string if str_m was greater or equal to the return value. int vim_snprintf(char *str, size_t str_m, const char *fmt, ...) + FUNC_ATTR_PRINTF(3, 4) { va_list ap; va_start(ap, fmt); diff --git a/src/nvim/testdir/test_blockedit.vim b/src/nvim/testdir/test_blockedit.vim index 4a8d59952e..527224ccd2 100644 --- a/src/nvim/testdir/test_blockedit.vim +++ b/src/nvim/testdir/test_blockedit.vim @@ -16,5 +16,18 @@ func Test_blockinsert_indent() bwipe! endfunc +func Test_blockinsert_delete() + new + let _bs = &bs + set bs=2 + call setline(1, ['case Arg is ', ' when Name_Async,', ' when Name_Num_Gangs,', 'end if;']) + exe "norm! ggjVj\<c-v>$o$A\<bs>\<esc>" + "call feedkeys("Vj\<c-v>$o$A\<bs>\<esc>", 'ti') + call assert_equal(["case Arg is ", " when Name_Async", " when Name_Num_Gangs,", "end if;"], + \ getline(1,'$')) + " reset to sane state + let &bs = _bs + bwipe! +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim index 8fde63b55f..b1138bfc96 100644 --- a/src/nvim/testdir/test_functions.vim +++ b/src/nvim/testdir/test_functions.vim @@ -189,6 +189,52 @@ func Test_strftime() call assert_fails('call strftime("%Y", [])', 'E745:') endfunc +func Test_resolve() + if !has('unix') + return + endif + + " Xlink1 -> Xlink2 + " Xlink2 -> Xlink3 + silent !ln -s -f Xlink2 Xlink1 + silent !ln -s -f Xlink3 Xlink2 + call assert_equal('Xlink3', resolve('Xlink1')) + call assert_equal('./Xlink3', resolve('./Xlink1')) + call assert_equal('Xlink3/', resolve('Xlink2/')) + " FIXME: these tests result in things like "Xlink2/" instead of "Xlink3/"?! + "call assert_equal('Xlink3/', resolve('Xlink1/')) + "call assert_equal('./Xlink3/', resolve('./Xlink1/')) + "call assert_equal(getcwd() . '/Xlink3/', resolve(getcwd() . '/Xlink1/')) + call assert_equal(getcwd() . '/Xlink3', resolve(getcwd() . '/Xlink1')) + + " Test resolve() with a symlink cycle. + " Xlink1 -> Xlink2 + " Xlink2 -> Xlink3 + " Xlink3 -> Xlink1 + silent !ln -s -f Xlink1 Xlink3 + call assert_fails('call resolve("Xlink1")', 'E655:') + call assert_fails('call resolve("./Xlink1")', 'E655:') + call assert_fails('call resolve("Xlink2")', 'E655:') + call assert_fails('call resolve("Xlink3")', 'E655:') + call delete('Xlink1') + call delete('Xlink2') + call delete('Xlink3') + + silent !ln -s -f Xdir//Xfile Xlink + call assert_equal('Xdir/Xfile', resolve('Xlink')) + call delete('Xlink') + + silent !ln -s -f Xlink2/ Xlink1 + call assert_equal('Xlink2', resolve('Xlink1')) + call assert_equal('Xlink2/', resolve('Xlink1/')) + call delete('Xlink1') + + silent !ln -s -f ./Xlink2 Xlink1 + call assert_equal('Xlink2', resolve('Xlink1')) + call assert_equal('./Xlink2', resolve('./Xlink1')) + call delete('Xlink1') +endfunc + func Test_simplify() call assert_equal('', simplify('')) call assert_equal('/', simplify('/')) @@ -818,6 +864,19 @@ func Test_filewritable() bw! endfunc +func Test_Executable() + if has('win32') + call assert_equal(1, executable('notepad')) + call assert_equal(1, executable('notepad.exe')) + call assert_equal(0, executable('notepad.exe.exe')) + call assert_equal(1, executable('shell32.dll')) + call assert_equal(1, executable('win.ini')) + elseif has('unix') + call assert_equal(1, executable('cat')) + call assert_equal(0, executable('nodogshere')) + endif +endfunc + func Test_hostname() let hostname_vim = hostname() if has('unix') diff --git a/src/nvim/testdir/test_options.vim b/src/nvim/testdir/test_options.vim index 66acb79206..7b640ee2ff 100644 --- a/src/nvim/testdir/test_options.vim +++ b/src/nvim/testdir/test_options.vim @@ -262,7 +262,7 @@ func Test_set_ttytype() " in travis on some builds. Why? Catch both for now try set ttytype= - call assert_report('set ttype= did not fail') + call assert_report('set ttytype= did not fail') catch /E529\|E522/ endtry @@ -270,7 +270,7 @@ func Test_set_ttytype() " check for failure of finding the entry and for missing 'cm' entry. try set ttytype=xxx - call assert_report('set ttype=xxx did not fail') + call assert_report('set ttytype=xxx did not fail') catch /E522\|E437/ endtry diff --git a/src/nvim/tui/terminfo.c b/src/nvim/tui/terminfo.c index c3dc4124b9..ad86dd928b 100644 --- a/src/nvim/tui/terminfo.c +++ b/src/nvim/tui/terminfo.c @@ -144,7 +144,7 @@ void terminfo_info_msg(const unibi_term *const ut) for (enum unibi_numeric i = unibi_numeric_begin_ + 1; i < unibi_numeric_end_; i++) { 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); } @@ -173,7 +173,7 @@ void terminfo_info_msg(const unibi_term *const ut) if (unibi_count_ext_num(ut)) { msg_puts("Extended numeric capabilities:\n"); 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(ut, i)); } diff --git a/src/nvim/undo.c b/src/nvim/undo.c index 7dd101cb90..df0507ed41 100644 --- a/src/nvim/undo.c +++ b/src/nvim/undo.c @@ -2503,8 +2503,8 @@ void ex_undolist(exarg_T *eap) while (uhp != NULL) { if (uhp->uh_prev.ptr == NULL && uhp->uh_walk != nomark && uhp->uh_walk != mark) { - vim_snprintf((char *)IObuff, IOSIZE, "%6ld %7ld ", - uhp->uh_seq, changes); + vim_snprintf((char *)IObuff, IOSIZE, "%6ld %7d ", + uhp->uh_seq, changes); u_add_time(IObuff + STRLEN(IObuff), IOSIZE - STRLEN(IObuff), uhp->uh_time); if (uhp->uh_save_nr > 0) { diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index b55b0cee69..4ca00b26cd 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -88,7 +88,7 @@ if(MINGW AND CMAKE_GENERATOR MATCHES "Ninja") if(NOT MAKE_PRG) message(FATAL_ERROR "GNU Make for mingw32 is required to build the dependecies.") else() - message(STATUS "Found GNU Make for mingw32 at ${MAKE_PRG}") + message(STATUS "Found GNU Make for mingw32: ${MAKE_PRG}") endif() endif() |