Justin M. Keyes 241fe704a5 pvs/V575: false positive (#7462)
./src/nvim/ex_getln.c:2787:1: error: V575 The 'memcpy' function doesn't
copy the whole string. Use 'strcpy / strcpy_s' function to preserve
terminal null.

We could instead "trick" PVS like this:

    diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
    index e79476ab532a..295630693b27 100644
    --- a/src/nvim/ex_getln.c
    +++ b/src/nvim/ex_getln.c
    @@ -2782,9 +2782,10 @@ static void ui_ext_cmdline_show(CmdlineInfo *line)

     void ui_ext_cmdline_block_append(int indent, const char *line)
     {
    -  char *buf = xmallocz(indent + strlen(line));
    +  size_t linelen = strlen(line);
    +  char *buf = xmallocz(indent + linelen);
       memset(buf, ' ', indent);
    -  memcpy(buf+indent, line, strlen(line));
    +  memcpy(buf + indent, line, linelen);

       Array item = ARRAY_DICT_INIT;
       ADD(item, DICTIONARY_OBJ((Dictionary)ARRAY_DICT_INIT));
2017-10-30 23:29:47 +01:00
2017-09-10 14:14:00 +02:00
2017-10-30 23:29:47 +01:00
2017-06-29 17:46:29 -04:00
2015-11-11 19:50:33 -08:00
2017-07-29 18:51:54 +02:00
2017-07-08 14:59:06 +02:00
2014-06-30 13:59:56 -04:00
2017-10-27 19:34:02 +02:00

Neovim

Wiki | Documentation | Twitter | Community | Gitter Chat

Travis Build Status AppVeyor Build status codecov Coverity Scan Build Clang Scan Build PVS-studio Check

Debian CI Downloads

Neovim is a project that seeks to aggressively refactor Vim in order to:

See the wiki and Roadmap for more information.

Throughput Graph

Install from source

make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install

See the wiki for details.

Install from package

Pre-built packages for Windows, macOS, and Linux are found at the Releases page.

Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Gentoo, and more!

Project layout

├─ ci/              build automation
├─ cmake/           build scripts
├─ runtime/         user plugins/docs
├─ src/             application source code (see src/nvim/README.md)
│  ├─ api/          API subsystem
│  ├─ eval/         VimL subsystem
│  ├─ event/        event-loop subsystem
│  ├─ generators/   code generation (pre-compilation)
│  ├─ lib/          generic data structures
│  ├─ lua/          lua subsystem
│  ├─ msgpack_rpc/  RPC subsystem
│  ├─ os/           low-level platform code
│  └─ tui/          built-in UI
├─ third-party/     cmake subproject to build dependencies
└─ test/            tests (see test/README.md)
  • To disable third-party/ specify USE_BUNDLED_DEPS=NO or USE_BUNDLED=NO (CMake option).

Features

See :help nvim-features for the full list!

License

Neovim is licensed under the terms of the Apache 2.0 license, except for parts that were contributed under the Vim license.

  • Contributions committed before b17d96 remain under the Vim license.

  • Contributions committed after b17d96 are licensed under Apache 2.0 unless those contributions were copied from Vim (identified in the commit logs by the vim-patch token).

See LICENSE for details.

Vim is Charityware.  You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda.  Please see the
kcc section of the vim docs or visit the ICCF web site, available at these URLs:

        http://iccf-holland.org/
        http://www.vim.org/iccf/
        http://www.iccf.nl/

You can also sponsor the development of Vim.  Vim sponsors can vote for
features.  The money goes to Uganda anyway.
Description
Vim-fork focused on extensibility and usability
Readme 472 MiB
Languages
Vim Script 40.8%
Lua 30.8%
C 27.6%
CMake 0.4%
Shell 0.1%
Other 0.1%