| Commit message (Collapse) | Author | Age |
... | |
| |\ \ |
|
| | | | |
|
| |\ \ \ |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Fixes:
1. Allocate space for the NUL byte.
2. Do not exclude last line from range.
3. Remove code for sandbox: it is handled earlier.
4. Fix index in new_line_transformed when converting NULs to NLs.
5. Always allocate new_line_transformed, but save allocated value.
|
| | | | | |
|
| | | | |
| | | | |
| | | | | |
Missing: updates to various lists.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
During testing found the following bugs:
1. msgpack-gen.lua script is completely unprepared for Float values either in
return type or in arguments. Specifically:
1. At the time of writing relevant code FLOAT_OBJ did not exist as well as
FLOATING_OBJ, but it would be used by msgpack-gen.lua should return type
be Float. I added FLOATING_OBJ macros later because did not know that
msgpack-gen.lua uses these _OBJ macros, otherwise it would be FLOAT_OBJ.
2. msgpack-gen.lua should use .data.floating in place of .data.float. But it
did not expect that .data subattribute may have name different from
lowercased type name.
2. vim_replace_termcodes returned its argument as-is if it receives an empty
string (as well as _vim_id*() functions did). But if something in returned
argument lives in an allocated memory such action will cause double free:
once when freeing arguments, then when freeing return value. It did not cause
problems yet because msgpack bindings return empty string as {NULL, 0} and
nothing was actually allocated.
3. New code in msgpack-gen.lua popped arguments in reversed order, making lua
bindings’ signatures be different from API ones.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Note: this will *still* crash when using API in cases similar to the one
described in first commit. Just it needs different code to reproduce.
|
| | | | | |
|
| |_|_|/
|/| | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The terminfo entry for linux only advertises 8 colours, but nvim tries
to make it display 16 colours anyway, resulting in erroneous SGR control
sequences for colours 8 and above. The Linux kernel terminal emulator
itself has actually understood the 256-colour control sequences since
version 4.8 and the 16-colour control sequences since version 4.9. Thus
we apply the same terminfo fixup as we apply for *xterm* and *256*, to
emit the 16-colour and 256-colour control sequences even if terminfo's
setaf and setab do not advertise them.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As part of the refactoring in #5119, some vim_strchr() were changed to
strchr(). However, vim_strchr() behaves differently than strchr() when
c is NUL, returning NULL instead of a pointer to the NUL.
Revert the strchr() calls where it isn't known whether c is NUL, since
this causes a semantic change the surrounding code doesn't expect. In
the case of #6650, this led to a heap overrun.
Closes #6650
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
FEATURES:
bc4a2e1576c6 help, man.vim: "outline" (TOC) feature #5169
58422f17d8e7 'guicursor' works in the TUI (and sends info to UIs) #6423
129f107c0c26 api: nvim_get_mode() #6247
0b59f988f447 api/ui: externalize tabline #6583
bc6d868d00a7 'listchars': `Whitespace` highlight group #6367
6afa7d66cd63 writefile() obeys 'fsync' option #6427
c60e409471c5 eval.c refactor (also improves some error messages) #5119
9d200cd0a3ef getcompletion("cmdline") #6376
2ea7bfc627e5 terminal: Support extra arguments in 'shell'. #4504
bf5110266ca9 DirChanged autocmd #5928 #6262
1743df82f900 'cpoptions': "_" flag to toggle `cw` behaviour #6235
22337b1c0144 CTRL-R omits trailing ^M when pasting to cmdline #6137
0e44916fff88 :edit allows unescaped spaces in filename #6119
abdbfd26bc7f eval: Add id() function and make printf("%p") useful #6095
bdfa1479d296 findfile(), :find, gf work in :terminal. #6009
2f38ed11c98a providers: Disable if `g:loaded_*` exists.
b5560a69b12b setpos() can set lowercase marks in other buffers #5753
7c513d646d87 Throttle :! output, pulse "..." message. #5396
d2e8c76dc224 v:exiting #5651
:terminal improvements #6185 #6142
- cursor keeps position after leaving insert-mode.
- 4ceec30cd0b4 Follows output only if cursor is at end of buffer.
- e7bbd35c812d new option: 'scrollback'
- fedb8443d58a quasi-support for undo and 'modifiable'
- b45ddf731be5 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
81525dc5c35c 'mouse=a' is no longer the default. (This will probably
change again after it is improved.) #6022
0c1f7831649e defaults: 'showcmd', 'belloff', 'ruler' #6087
eb0e94f71b1f api: {get,set}_option update local options as appropriate #6405
bdcb2a38b366 "Reading from stdin..." message was removed. #6298
FIXES:
12fc1defd6a1 ops: fix i<c-r> with multi-byte text #6524
dd391bfca1f3 Windows: system() and friends #6497
13352c00f190 Windows: os_get_hostname() #6413
16babc66870b tui: Less-noisy mouse seqs #6411
3a9dd13f9e64 (vim bug) folding edge-cases #6207
f6946c68aee9 job-control: set CLOEXEC on pty processes. #5986
d1afd434f302 rplugin: Call s:LoadRemotePlugins() on startup.
1215084676f0 backtick-expansion works with `shell=fish` #6224
e32ec03d67ee tui: Improved behavior after resize. #6202
86c2adc07463 edit.c: CTRL-SPC: Insert previously-inserted text. #6090
c318d8e672a3 b:changedtick now follows VimL rules #6112
34e24cb2f734 terminal: Initialize colors in reverse order #6160
e8899178ec34 undo: Don't set b_u_curhead in ex_undojoin() #5869
d25649fa0120 undo: :earlier, g-: Set b_u_seq_cur correctly. (#6016)
043d8ba422b4 'Visual-mode put from @. register' #5782
42c922b32c0a open_buffer(): Do `BufEnter` for directories.
50d0d891299c inccommand: Preview :sub commands only after delimiter #5932
1420e1047454 CheckHealth improvements #5519
c8d5e9230ee3 jobstart(): Return -1 if cmd is not executable. #5671
|
|\ \ \ \
| | | | |
| | | | | |
vim-patch:7.4.2231,7.4.2239,7.4.2244,7.4.2245,7.4.2246,7.4.2263,8.0.0150
|
| | | | | |
|
| | | | | |
|
|/ / / /
| | | |
| | | |
| | | | |
Closes #6577
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Introduce multiqueue_process_priority() to process only events at or
above a certain priority.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Asynchronous API functions are served immediately, which means pending
input could change the state of Nvim shortly after an async API function
result is returned.
nvim_get_mode() is different:
- If RPCs are known to be blocked, it responds immediately (without
flushing the input/event queue)
- else it is handled just-in-time before waiting for input, after
pending input was processed. This makes the result more reliable
(but not perfect).
Internally this is handled as a special case, but _semantically_ nothing
has changed: API users never know when input flushes, so this internal
special-case doesn't violate that. As far as API users are concerned,
nvim_get_mode() is just another asynchronous API function.
In all cases nvim_get_mode() never blocks for more than the time it
takes to flush the input/event queue (~µs).
Note: This doesn't address #6166; nvim_get_mode() will provoke #6166 if
e.g. `d` is operator-pending.
Closes #6159
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Work with a bool[] array parallel to the UIWidget enum.
- Rename some functions.
- Documentation.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
If the CWD contains a directory with the literal name "~" then the tests
will have bogus failures.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Also re-word some error messages:
- "Key does not exist: %s"
- "Invalid channel: %<PRIu64>"
- "Request array size must be 4 (request) or 3 (notification)"
- "String cannot contain newlines"
References #6150
|
| | | |
| | | |
| | | |
| | | | |
Closes #5984
|
| | | | |
|
|\ \ \ \ |
|
| |\ \ \ \ |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Not using enum{} because SIZE_MAX exceeds integer and I do not really like how
enum definition is described in C99:
1. Even though all values must fit into the chosen type (6.7.2.2, p 4) the type
to choose is still implementation-defined.
2. 6.4.4.3 explicitly states that “an identifier declared as an enumeration
constant has type `int`”. So it looks like “no matter what type was chosen
for enumeration, constants will be integers”. Yet the following simple
program:
#include <stdint.h>
#include <stdio.h>
#include <stddef.h>
enum { X=SIZE_MAX };
int main(int argc, char **argv)
{
printf("x:%zu m:%zu t:%zu v:%zu",
sizeof(X), sizeof(SIZE_MAX), sizeof(size_t), (size_t)X);
}
yields one of the following using different compilers:
- clang/gcc/pathcc: `x:8 m:8 t:8 v:18446744073709551615`
- pcc/tcc: `x:4 m:8 t:8 v:1844674407370955161`
If I remove the cast of X to size_t then pcc/tcc both yield `x:4 m:8 t:8
v:4294967295`, other compilers’ output does not change.
All compilers were called with `$compiler -std=c99 -xc -` (feeding program
from echo), except for `tcc` which has missing `-std=c99`. `pcc` seems to
ignore the argument though: it is perfectly fine with `-std=c1000`.
|
|\ \ \ \ \ \ |
|
| | | | | | | |
|