Vim-fork focused on extensibility and usability
Go to file
Justin M. Keyes 10a54ad12e signal_init: Always unblock SIGCHLD. (#5243)
Inherited signal mask may block SIGCHLD, which causes libuv to hang at
epoll_wait.

Closes #5230

Helped-by: Nicolas Hillegeer <nicolas@hillegeer.com>
Helped-by: John Szakmeister <john@szakmeister.net>

Note: the #pragma gymnastics are a workaround for broken system headers on
macOS.

  signal.h:
      int  sigaddset(sigset_t *, int);
      #define     sigaddset(set, signo)   (*(set) |= __sigbits(signo), 0)
  sys/_types/_sigset.h:
      typedef __darwin_sigset_t            sigset_t;
  sys/_types.h:
      typedef __uint32_t   __darwin_sigset_t;      /* [???] signal set */

sigset_t is defined as unsigned int, but the sigaddset() ORs it with an int,
mixing the types.  So GCC generates a sign-conversion warning:

  sig.c:9:13: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
    (*(&s) |= __sigbits((sigset_t) 20), 0);
           ~~ ^~~~~~~~~~~~~~~~~~~~~~~~
  1 warning generated.

System headers are normally ignored when the compiler generates warnings:
https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html

  > GCC gives code found in system headers special treatment. All warnings,
  > other than those generated by ‘#warning’ (see Diagnostics), are suppressed
  > while GCC is processing a system header. Macros defined in a system header
  > are immune to a few warnings wherever they are expanded. This immunity is
  > granted on an ad-hoc basis, when we find that a warning generates lots of
  > false positives because of code in macros defined in system headers.

Instead of the #pragma workaround, we could cast the sigset_t pointer:

    # if defined(__APPLE__)
      sigaddset((int *)&mask, SIGCHLD);
    # else
      sigaddset(&mask, SIGCHLD);
    # endif

but that could break if the headers are later fixed.
2016-08-29 13:39:32 -04:00
.ci build: Refactor appveyor/Windows scripts (#5244) 2016-08-26 01:38:46 -04:00
cmake tests: Set env variables in RunTests.cmake 2016-08-17 16:22:21 -04:00
config file: Add buffered reading and writing 2016-06-23 21:17:51 +03:00
contrib Improve YCM contrib: Fix db path 2016-01-17 20:50:10 -05:00
man man: fix description of XDG_DATA_HOME (#5120) 2016-07-27 08:52:35 -04:00
runtime api/ui: add documentation for remote ui redraw events 2016-08-29 10:17:31 +02:00
scripts release.sh: Sign the tag. 2016-08-26 03:51:52 -04:00
src signal_init: Always unblock SIGCHLD. (#5243) 2016-08-29 13:39:32 -04:00
test api/ui: add tests for popupmenu_external events 2016-08-29 10:17:31 +02:00
third-party third-party: force the use of penlight 1.3.2-2 until busted is fixed 2016-08-15 05:55:12 -04:00
unicode Update unicode files 2016-06-26 19:16:11 +03:00
.editorconfig add .editorconfig 2016-02-23 18:03:27 +09:00
.gitignore ignore .res files generated by the tests in testdir 2016-08-11 02:14:02 -04:00
.travis.yml Travis: Remove MinGW builds 2016-08-01 12:57:58 +01:00
appveyor.yml build: Refactor appveyor/Windows scripts (#5244) 2016-08-26 01:38:46 -04:00
BACKERS.md Update backer URL 2015-11-11 19:50:33 -08:00
CMakeLists.txt version bump 2016-08-22 00:28:47 -04:00
CONTRIBUTING.md doc: CONTRIBUTING.md (#5239) 2016-08-23 23:49:09 -04:00
ISSUE_TEMPLATE.md doc: precision, concision, elision 2016-06-03 17:11:10 -04:00
LICENSE LICENSE: add LuaJIT notice. #899 2014-06-30 13:59:56 -04:00
Makefile Travis: Fix accidental building of 3rd-party dependencies. 2016-07-30 10:21:04 +02:00
README.md doc 2016-08-10 00:47:17 -04:00

Neovim

Website | Community | Wiki | Documentation | Mailing List | Twitter | Bountysource

Travis Build Status AppVeyor Build status Pull requests waiting for review Coverage Status Coverity Scan Build Clang Scan Build Gitter chat

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

  • Simplify maintenance and encourage contributions
  • Split the work between multiple developers
  • Enable the implementation of new/modern UIs without modifications to the core
  • Improve extensibility with a new plugin architecture

For more details, see the wiki!

Throughput Graph

What's been done so far

See :help nvim-features for a comprehensive list.

What's being worked on now

See the Roadmap.

How do I get it?

There is a formula for OSX/homebrew, a PKGBUILD for Arch Linux, RPM, deb, and more. See the wiki!

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.