FEATURES:
bc4a2e1576 help, man.vim: "outline" (TOC) feature #5169
58422f17d8 'guicursor' works in the TUI (and sends info to UIs) #6423
129f107c0c api: nvim_get_mode() #6247
0b59f988f4 api/ui: externalize tabline #6583
bc6d868d00 'listchars': `Whitespace` highlight group #6367
6afa7d66cd writefile() obeys 'fsync' option #6427
c60e409471 eval.c refactor (also improves some error messages) #5119
9d200cd0a3 getcompletion("cmdline") #6376
2ea7bfc627 terminal: Support extra arguments in 'shell'. #4504
bf5110266c DirChanged autocmd #5928 #6262
1743df82f9 'cpoptions': "_" flag to toggle `cw` behaviour #6235
22337b1c01 CTRL-R omits trailing ^M when pasting to cmdline #6137
0e44916fff :edit allows unescaped spaces in filename #6119
abdbfd26bc eval: Add id() function and make printf("%p") useful #6095
bdfa1479d2 findfile(), :find, gf work in :terminal. #6009
2f38ed11c9 providers: Disable if `g:loaded_*` exists.
b5560a69b1 setpos() can set lowercase marks in other buffers #5753
7c513d646d Throttle :! output, pulse "..." message. #5396
d2e8c76dc2 v:exiting #5651
:terminal improvements #6185 #6142
- cursor keeps position after leaving insert-mode.
- 4ceec30cd0 Follows output only if cursor is at end of buffer.
- e7bbd35c81 new option: 'scrollback'
- fedb8443d5 quasi-support for undo and 'modifiable'
- b45ddf731b disables 'list' by default
- disables 'relativenumber' by default
:help now contains full API documentation at `:help api`.
man.vim saw numerous improvements.
Windows support:
- Windows is no longer "experimental", it is fully supported.
- Windows package includes a GUI, curl.exe and other utilities.
"Vim 8" features: partials, lambdas.
SECURITY FIXES:
CVE-2017-5953 CVE-2017-6349 CVE-2017-6350 #6485
CHANGES:
NVIM_TUI_ENABLE_CURSOR_SHAPE was removed. Use 'guicursor' instead.
See https://github.com/neovim/neovim/wiki/Following-HEAD#20170402
81525dc5c3 'mouse=a' is no longer the default. (This will probably
change again after it is improved.) #6022
0c1f783164 defaults: 'showcmd', 'belloff', 'ruler' #6087
eb0e94f71b api: {get,set}_option update local options as appropriate #6405
bdcb2a38b3 "Reading from stdin..." message was removed. #6298
FIXES:
12fc1defd6 ops: fix i<c-r> with multi-byte text #6524
dd391bfca1 Windows: system() and friends #6497
13352c00f1 Windows: os_get_hostname() #6413
16babc6687 tui: Less-noisy mouse seqs #6411
3a9dd13f9e (vim bug) folding edge-cases #6207
f6946c68ae job-control: set CLOEXEC on pty processes. #5986
d1afd434f3 rplugin: Call s:LoadRemotePlugins() on startup.
1215084676 backtick-expansion works with `shell=fish` #6224
e32ec03d67 tui: Improved behavior after resize. #6202
86c2adc074 edit.c: CTRL-SPC: Insert previously-inserted text. #6090
c318d8e672 b:changedtick now follows VimL rules #6112
34e24cb2f7 terminal: Initialize colors in reverse order #6160
e8899178ec undo: Don't set b_u_curhead in ex_undojoin() #5869
d25649fa01 undo: :earlier, g-: Set b_u_seq_cur correctly. (#6016)
043d8ba422 'Visual-mode put from @. register' #5782
42c922b32c open_buffer(): Do `BufEnter` for directories.
50d0d89129 inccommand: Preview :sub commands only after delimiter #5932
1420e10474 CheckHealth improvements #5519
c8d5e9230e jobstart(): Return -1 if cmd is not executable. #5671
Tests
Tests are run by /cmake/RunTests.cmake file, using busted.
Directory structure
Directories with tests: /test/benchmark for benchmarks, /test/functional for
functional tests, /test/unit for unit tests. /test/config contains *.in
files (currently a single one) which are transformed into *.lua files using
configure_file CMake command: this is for acessing CMake variables in lua
tests. /test/includes contains include files for use by luajit ffi.cdef
C definitions parser: normally used to make macros not accessible via this
mechanism accessible the other way.
Files /test/*/preload.lua contain modules which will be preloaded by busted,
via --helper option. /test/**/helpers.lua contain various “library”
functions, (intended to be) used by a number of tests and not just a single one.
/test/*/**/*_spec.lua are files containing actual tests. Files that do not end
with a _spec.lua are libraries like /test/**/helpers.lua, except that they
have some common topic.
Tests inside /test/unit and /test/functional are normally divided into
groups by the semantic component they are testing.
Environment variables
Test behaviour is affected by environment variables. Currently supported (Functional, Unit, Benchmarks) (when Defined; when set to 1; when defined, treated as Integer; when defined, treated as String; when defined, treated as Number; !must be defined to function properly):
GDB (F) (D): makes nvim instances to be run under gdbserver. It will be
accessible on localhost:7777: use gdb build/bin/nvim, type target remote :7777 inside.
GDBSERVER_PORT (F) (I): overrides port used for GDB.
VALGRIND (F) (D): makes nvim instances to be run under valgrind. Log files
are named valgrind-%p.log in this case. Note that non-empty valgrind log may
fail tests. Valgrind arguments may be seen in /test/functional/helpers.lua.
May be used in conjunction with GDB.
VALGRIND_LOG (F) (S): overrides valgrind log file name used for VALGRIND.
TEST_SKIP_FRAGILE (F) (D): makes test suite skip some fragile tests.
NVIM_PROG, NVIM_PRG (F) (S): override path to Neovim executable (default to
build/bin/nvim).
CC (U) (S): specifies which C compiler to use to preprocess files. Currently
only compilers with gcc-compatible arguments are supported.
NVIM_TEST_MAIN_CDEFS (U) (1): makes ffi.cdef run in main process. This
raises a possibility of bugs due to conflicts in header definitions, despite the
counters, but greatly speeds up unit tests by not requiring ffi.cdef to do
parsing of big strings with C definitions.
NVIM_TEST_PRINT_I (U) (1): makes cimport print preprocessed, but not yet
filtered through formatc headers. Used to debug formatc. Printing is done
with the line numbers.
NVIM_TEST_PRINT_CDEF (U) (1): makes cimport print final lines which will be
then passed to ffi.cdef. Used to debug errors ffi.cdef happens to throw
sometimes.
NVIM_TEST_PRINT_SYSCALLS (U) (1): makes it print to stderr when syscall
wrappers are called and what they returned. Used to debug code which makes unit
tests be executed in separate processes.
NVIM_TEST_RUN_FAILING_TESTS (U) (1): makes itp run tests which are known to
fail (marked by setting third argument to true).
LOG_DIR (FU) (S!): specifies where to seek for valgrind and ASAN log files.
NVIM_TEST_CORE_* (FU) (S): a set of environment variables which specify where
to search for core files. Are supposed to be defined all at once.
NVIM_TEST_CORE_GLOB_DIRECTORY (FU) (S): directory where core files are
located. May be .. This directory is then recursively searched for core files.
Note: this variable must be defined for any of the following to have any effect.
NVIM_TEST_CORE_GLOB_RE (FU) (S): regular expression which must be matched by
core files. E.g. /core[^/]*$. May be absent, in which case any file is
considered to be matched.
NVIM_TEST_CORE_EXC_RE (FU) (S): regular expression which excludes certain
directories from searching for core files inside. E.g. use ^/%.deps$ to not
search inside /.deps. If absent, nothing is excluded.
NVIM_TEST_CORE_DB_CMD (FU) (S): command to get backtrace out of the debugger.
E.g. gdb -n -batch -ex "thread apply all bt full" "$_NVIM_TEST_APP" -c "$_NVIM_TEST_CORE". Defaults to the example command. This debug command may use
environment variables _NVIM_TEST_APP (path to application which is being
debugged: normally either nvim or luajit) and _NVIM_TEST_CORE (core file to
get backtrace from).
NVIM_TEST_CORE_RANDOM_SKIP (FU) (D): makes check_cores not check cores after
approximately 90% of the tests. Should be used when finding cores is too hard
for some reason. Normally (on OS X or when NVIM_TEST_CORE_GLOB_DIRECTORY is
defined and this variable is not) cores are checked for after each test.
NVIM_TEST_RUN_TESTTEST (U) (1): allows running test/unit/testtest_spec.lua
used to check how testing infrastructure works.
NVIM_TEST_TRACE_LEVEL (U) (N): specifies unit tests tracing level: 0
disables tracing (the fastest, but you get no data if tests crash and there was
no core dump generated), 1 or empty/undefined leaves only C function cals and
returns in the trace (faster then recording everything), 2 records all
function calls, returns and lua source lines exuecuted.