Vim-fork focused on extensibility and usability
Go to file
Justin M. Keyes aa0e09d251 'inccommand': Preserve curbuf->b_u_newhead.
Add tests for undotree().

Helped-by: Björn Linse <bjorn.linse@gmail.com>

When "curhead" points to a valid head, the value of "newhead" is
meaningless (and really should be set to null). The undo state for
a buffer is _logically_ the enum:

  enum UndoState {
    CurrentHead(head),
    NewHead(head),
    EmptyTree
  }

nvim _represents_ this as: whenever `curbuf->b_u_curhead` is nonnull it
should be used as the current head, and `curbuf->b_u_newhead` is
ignored. If the there is a current head, then this will be redoed on the
next redo, and its parent will be undone on next undo. Only if
`b_u_curhead` is NULL, `b_u_newhead` will be used as the head to undo
(and it is not possible to redo). Also both can be NULL, to indicate an
empty undotree. (To be fair, this only strictly true when calling undo.c
from the outside, in some places _within_ a function in undo.c both
values might be meaningful)

Apparently `undotree()` breaks this non-abstraction, this _cosmetic_
issue can easily be fixed by `ex_substitute` also saving and restoring
`b_u_newhead`, but is doesn't reflect any error really how
`u_undo_and_forget` manipulates the _actual_ state of the undo tree.
2016-11-09 01:03:47 +01:00
.ci eval: use gperf to generate the hash of builtin functions 2016-08-31 21:57:04 +02:00
cmake build: prevent in-tree builds for the time being, as it's not supported 2016-10-11 20:20:31 -04:00
config api: api_info()['version'] 2016-10-28 14:33:13 +02:00
contrib Revert "Makefile: add PREFIX variable" 2016-10-16 12:17:00 +02:00
man man: fix description of XDG_DATA_HOME (#5120) 2016-07-27 08:52:35 -04:00
runtime 'inccommand': rename 'incsubstitute' 2016-11-08 21:22:13 +01:00
scripts NVIM v0.1.6 2016-10-28 15:16:45 +02:00
src 'inccommand': Preserve curbuf->b_u_newhead. 2016-11-09 01:03:47 +01:00
test 'inccommand': Preserve curbuf->b_u_newhead. 2016-11-09 01:03:47 +01:00
third-party third-party: Bump luv to v1.9.1-0 2016-09-10 18:43:05 +01:00
unicode Update unicode files 2016-09-24 14:03:22 -04: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 ci: .travis.yml: Minimize scope of osx_image directive. (#5420) 2016-10-02 03:37:17 +02: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-10-28 15:16:59 +02: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 Revert "Makefile: add PREFIX variable" 2016-10-16 12:17:00 +02:00
README.md doc 2016-10-13 00:06:32 +02:00

Neovim

Wiki | Documentation | Twitter | Community | Gitter Chat

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

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

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 Debian package, homebrew formula, PKGBUILD for Arch Linux, RPM, 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.