Vim-fork focused on extensibility and usability
Go to file
Justin M. Keyes 8fa0b8051d job-control: mitigate process-kill race
children_kill_cb() is racey. One obvious problem is that
process_close_handles() is *queued* by on_process_exit(), so when
children_kill_cb() is invoked, the dead process might still be in the
`loop->children` list.  If the OS already reclaimed the dead PID, Nvim
may try to SIGKILL it.

Avoid that by checking `proc->status`.

Vim doesn't have this problem because it doesn't attempt to kill
processes that ignored SIGTERM after a timeout.

closes #8269
2018-04-15 18:23:11 +02:00
busted/outputHandlers test/busted: eager-flushing TAP.lua handler 2017-07-29 23:50:29 +02:00
ci ci/win: redirect stderr to fix mingw build 2018-04-13 13:42:12 -04:00
cmake build/msvc: Add libintl to bundled dependencies (#8163) 2018-03-24 17:58:32 +01:00
config win: has("wsl") on Windows Subsystem for Linux #7330 2018-01-30 21:12:49 +01:00
contrib cmake: Remove custom "Dev" build-type. (#6932) 2017-06-29 09:29:40 +02:00
man test/util: expect_err() (#8257) 2018-04-11 22:07:00 +02:00
runtime job-control: mitigate process-kill race 2018-04-15 18:23:11 +02:00
scripts remove scripts/run-api-tests.exp 2018-04-11 00:56:36 +02:00
snap dist: snap packaging #7918 2018-01-29 23:02:15 +01:00
src job-control: mitigate process-kill race 2018-04-15 18:23:11 +02:00
test Merge #8120 'test: win: prefer cmd.exe' 2018-04-15 18:16:37 +02:00
third-party build/freebsd: set CMAKE_MAKE_PROGRAM iff "Unix Makefiles" (#8260) 2018-04-12 12:51:38 +02:00
unicode Update unicode files 2017-06-29 17:46:29 -04:00
.editorconfig editorconfig: handle Vim help files (#7354) 2017-10-04 09:18:03 +02:00
.gitignore .gitignore 2018-03-30 17:47:25 +02:00
.travis.yml ci/travis: also cache $DEPS_DOWNLOAD_DIR 2018-03-18 14:11:38 +01:00
appveyor.yml ci/AppVeyor: enable MSVC_32 build 2018-03-26 10:54:44 -05:00
BACKERS.md Update backer URL 2015-11-11 19:50:33 -08:00
BSDmakefile build: show a hint for BSD make (#7275) 2017-09-16 10:54:49 +02:00
CMakeLists.txt version: rename "0.2.3" to "0.3.0" (#8268) 2018-04-13 22:15:52 +02:00
codecov.yml codecov: Report coverage even if some CI failed 2018-02-07 07:51:22 -05:00
CONTRIBUTING.md doc 2017-12-10 17:13:22 +01:00
ISSUE_TEMPLATE.md doc: ISSUE_TEMPLATE.md 2017-07-08 14:59:06 +02:00
LICENSE LICENSE: add LuaJIT notice. #899 2014-06-30 13:59:56 -04:00
Makefile build: respect $DEPS_BUILD_DIR 2018-03-11 15:38:18 +01:00
README.md build: avoid CMP0046 "dependency target does not exist" #8128 2018-03-18 23:41:48 +01: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

To install to a non-default location, set CMAKE_INSTALL_PREFIX:

make CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=/full/path/"
make install

To list all targets:

cmake --build build --target help

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.