Jonathan de Boyne Pollard
0de7b17d03
tui: Reset the scroll region when resizing.
...
DECSLPP is explicitly documented as not affecting the scroll region. The
dtterm extension is not as well documented, but it is safer than not to
assume that it operates similarly.
This also eliminates a pointlessly repeated test from tui_scroll(). It
additionally uses a non-parameterized DECSTBM sequence when attempting
to reset back to whole-screen scrolling.
2017-05-23 15:35:47 +02:00
Jonathan de Boyne Pollard
593af64943
tui: resize: use an extended terminal capability
...
... rather than hardwiring the string and testing the terminal
type every time the screen is re-sized.
2017-05-23 15:35:16 +02:00
Jonathan de Boyne Pollard
36d1fd0602
tui: Only use dtterm's extension where supported.
...
This limits the use of dtterm's extension to DECSLPP to only those
terminal types where it is known to be supported.
Because it can be potentially understood as genuine DECSLPP
sequence, setting the number of lines to a number larger than 25,
which of course can cause confusion (especially if it is the width
parameter that results in this) only use it on terminals that are
known to support the dtterm extension.
rxvt (Unicode) also understands dtterm's extension.
2017-05-23 15:24:34 +02:00
Justin M. Keyes
41fd278317
oldtests: Mark Test_lambda_with_timer as flaky
2017-05-23 00:44:21 +02:00
Marco Hinz
fd5e4e2e4c
Server: don't fall back to Unix sockets
2017-05-22 23:38:09 +02:00
ZyX
a5a5c83608
api/vim: Fix nvim_list_runtimepaths
...
It used to
1. Always omit last component in runtimepath.
2. Always omit trailing empty item and leave uninitialized memory in place of
it.
2017-05-23 00:16:23 +03:00
Justin M. Keyes
7b55d50bbd
tui.c: Initialize TUI input component only once. ( #6784 )
...
term_input_start should be called only once. This fixes a leak
introduced by af2e629be4
.
Closes #6780
Steps to demonstrate memory leak:
CC=clang CFLAGS=" -O0 -g -DEXITFREE " cmake .. -DMIN_LOG_LEVEL=0 -DCMAKE_BUILD_TYPE=Debug -DBUSTED_OUTPUT_TYPE=nvim -DCMAKE_INSTALL_PREFIX=$PWD/root -DCLANG_ASAN_UBSAN=ON -DPREFER_LUAJIT=false
nvim -u NONE -i NONE --cmd $'function S()\nsuspend\nendfunction' --cmd 'inoremap <expr> X S()' --cmd 'call feedkeys("iX", "t")'
fg<CR><Esc>:cq<CR>
```
=================================================================
==25050==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4159 byte(s) in 1 object(s) allocated from:
#0 0x4f6a30 in calloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:72
#1 0xf8d222 in xcalloc /home/zyx/a.a/Proj/c/neovim/src/nvim/memory.c:147:15
#2 0x1349d28 in rbuffer_new /home/zyx/a.a/Proj/c/neovim/src/nvim/rbuffer.c:24:17
#3 0xa6867b in rstream_init /home/zyx/a.a/Proj/c/neovim/src/nvim/event/rstream.c:42:20
#4 0xa68651 in rstream_init_fd /home/zyx/a.a/Proj/c/neovim/src/nvim/event/rstream.c:28:3
#5 0x1866451 in term_input_init /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/input.c:55:3
#6 0x187f049 in tui_terminal_start /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:223:3
#7 0x187b491 in tui_main /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:258:3
#8 0x18b3171 in ui_thread_run /home/zyx/a.a/Proj/c/neovim/src/nvim/ui_bridge.c:124:3
#9 0x7f54c2d5f39b (/lib64/libpthread.so.0+0x739b)
Direct leak of 4159 byte(s) in 1 object(s) allocated from:
#0 0x4f6a30 in calloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:72
#1 0xf8d222 in xcalloc /home/zyx/a.a/Proj/c/neovim/src/nvim/memory.c:147:15
#2 0x1349d28 in rbuffer_new /home/zyx/a.a/Proj/c/neovim/src/nvim/rbuffer.c:24:17
#3 0x1865a4a in term_input_init /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/input.c:29:23
#4 0x187f049 in tui_terminal_start /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:223:3
#5 0x187b491 in tui_main /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:258:3
#6 0x18b3171 in ui_thread_run /home/zyx/a.a/Proj/c/neovim/src/nvim/ui_bridge.c:124:3
#7 0x7f54c2d5f39b (/lib64/libpthread.so.0+0x739b)
Indirect leak of 7144 byte(s) in 62 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c231636c (/usr/lib64/libtermkey.so.1+0x636c)
Indirect leak of 1500 byte(s) in 75 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c2316b34 (/usr/lib64/libtermkey.so.1+0x6b34)
Indirect leak of 704 byte(s) in 1 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c23129dd in _init (/usr/lib64/libtermkey.so.1+0x29dd)
Indirect leak of 520 byte(s) in 1 object(s) allocated from:
#0 0x4f6c40 in realloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:77
#1 0x7f54c2313b7c in termkey_register_keyname (/usr/lib64/libtermkey.so.1+0x3b7c)
Indirect leak of 256 byte(s) in 1 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c2313c3c (/usr/lib64/libtermkey.so.1+0x3c3c)
Indirect leak of 48 byte(s) in 2 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c2313d9e (/usr/lib64/libtermkey.so.1+0x3d9e)
Indirect leak of 40 byte(s) in 1 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c2316553 (/usr/lib64/libtermkey.so.1+0x6553)
Indirect leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c2315a2f (/usr/lib64/libtermkey.so.1+0x5a2f)
Indirect leak of 8 byte(s) in 1 object(s) allocated from:
#0 0x485ca8 in __interceptor_strdup /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_interceptors.cc:562
#1 0x7f54c2316bef (/usr/lib64/libtermkey.so.1+0x6bef)
Indirect leak of 8 byte(s) in 1 object(s) allocated from:
#0 0x485ca8 in __interceptor_strdup /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_interceptors.cc:562
#1 0x7f54c2316c0f (/usr/lib64/libtermkey.so.1+0x6c0f)
Indirect leak of 4 byte(s) in 1 object(s) allocated from:
#0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
#1 0x7f54c2316a26 (/usr/lib64/libtermkey.so.1+0x6a26)
SUMMARY: AddressSanitizer: 18574 byte(s) leaked in 149 allocation(s).
```
2017-05-22 17:26:26 +02:00
Marco Hinz
3efc82cbb2
Server: use uv_getaddrinfo() for $NVIM_LISTEN_ADDRESS
...
This change implicitly adds IPv6 support.
If the address contains ":", we try to use a TCP socket instead of a Unix domain
socket. Everything in front of the last occurrence of ":" is the hostname and
everything after it the port.
If the hostname lookup fails, we fall back to using a Unix domain socket.
If the port is empty ("localhost:"), a random port will be assigned.
Examples:
NVIM_LISTEN_ADDRESS=localhost:12345 -> TCP (IPv4 or IPv6), port: 12345
NVIM_LISTEN_ADDRESS=localhost: -> TCP (IPv4 or IPv6), port: random (> 1024)
NVIM_LISTEN_ADDRESS=localhost:0 -> TCP (IPv4 or IPv6), port: random (> 1024)
NVIM_LISTEN_ADDRESS=localhost -> Unix domain socket "localhost" in current dir
2017-05-22 01:05:39 +02:00
Justin M. Keyes
17a46dc5e0
pty_process_unix.c: include <libutil.h> on DragonFly BSD
...
From FreeBSD ports patch:
https://svnweb.freebsd.org/ports/head/editors/neovim/files/patch-src_nvim_os_pty__process__unix.c?revision=425833&view=markup
References https://github.com/neovim/neovim/issues/6771#issuecomment-302921368
2017-05-21 13:47:39 +02:00
Justin M. Keyes
bdd73fc07f
api/nvim_replace_termcodes: Document keycodes behavior
2017-05-20 22:20:32 +02:00
Justin M. Keyes
bfb9cf1fc3
vim_getenv: Remove redundant NULL check.
2017-05-20 19:40:38 +02:00
James McCoy
6a7514feaa
Merge pull request #6735 from justinmk/funcattr
...
clang 3.6+ REAL_FATTR_NONNULL_RET
2017-05-20 12:37:18 -04:00
ZyX
7dc7d2f83f
lua: Add PVS comment to lua/*.c
2017-05-20 05:06:55 +03:00
ZyX
e14f678689
options: Silence V542 without using comments
2017-05-20 05:02:03 +03:00
ZyX
a052040430
options: Silence V542 the other way
...
Still does not work though.
2017-05-20 04:56:38 +03:00
ZyX
1dafe1e002
syntax: Silence V782
...
Just another pointer hack used with hash tables.
2017-05-20 04:47:01 +03:00
ZyX
a494bf847d
tui: Fix V547: always true condition
...
The variable in question is initalized at the start of the function with
something non-NULL, specifically pointer to a static buffer.
2017-05-20 04:47:01 +03:00
ZyX
d9398982ea
spellfile: Fix V547: always true condition
...
This condition was already checked at the surrounding if() at line 2422.
2017-05-20 04:47:01 +03:00
ZyX
c7c4aad387
tag: Silence V522: potential null dereference
...
Call PVS is referring to is using DT_FREE which will make function exit earlier,
in #ifdef EXITFREE block.
2017-05-20 04:47:01 +03:00
ZyX
b2265a0977
shada: Fix V581: adjacent branches with same condition
2017-05-20 04:29:54 +03:00
ZyX
8bd903cd51
search: Fix V502: ?: ambiguity
2017-05-20 04:28:21 +03:00
ZyX
5bea4906a2
options: Silence V542: odd casts for .def_val
2017-05-20 04:26:24 +03:00
ZyX
7d895ee053
memfile: Fix V547: always true condition
...
`blocksize` was checked against UINT_MAX after it was checked against
MAX_SWAP_PAGE_SIZE which makes it always pass the check. Better use
STATIC_ASSERT instead.
2017-05-20 04:21:00 +03:00
ZyX
40444e9186
main: Silence V522: potential NULL pointer dereference
...
AFAIK there is no way NULL can be there, including from the line it points to.
Dunno what analyser was thinking, but dereferencing of `argv[0]` happened just
before `get_number_arg()` call: in `ascii_isdigit()` two lines above. And `idx`
cannot possibly be NULL ever, it comes from `&varname`, this could not ever give
anything, but a valid pointer.
2017-05-20 04:21:00 +03:00
ZyX
9ec2bf26ce
getchar: Eliminate two-iteration loop
2017-05-20 04:21:00 +03:00
ZyX
37a77506b0
eval: Silence V614: potentially uninitialized variable
...
Could not be uninitialized because `func_or_func_caller_profiling` is true only
if `do_profiling` is `YES`, and if `do_profiling` is `YES` then
`script_prof_save()` was called to initialize the variable.
2017-05-20 03:54:07 +03:00
ZyX
d9239181af
eval: Fix V507
2017-05-20 03:51:19 +03:00
ZyX
98baea63ff
eval: Silence V782
2017-05-20 03:49:36 +03:00
ZyX
1db29cb5e5
eval/encode: Silence V595 error
2017-05-20 03:47:01 +03:00
ZyX
a914029278
buffer: Silence V519
2017-05-20 03:28:44 +03:00
ZyX
956ef785f5
edit: Silence V595
2017-05-20 03:28:27 +03:00
ZyX
df67785886
*: Fix all V641 errors
2017-05-20 03:25:22 +03:00
ZyX
2411b6f137
charset: Fix V695: dead branches
...
Based on comments it appears that some non-printable characters intended to be
shown as `|x` (0xA0..0xFE) and some as `~x` (0x80..0x9F, 0xFF, excluding
previous). But this never happens because this is being catched by condition `c
>= 0x80` above which makes them be represented as `<A0>`. Since I find this
variant more useful and it additionally is backwards compatible (Vim does the
same thing) I just dropped dead branches.
2017-05-20 03:21:18 +03:00
Justin M. Keyes
060ce0e0bc
startup: init v:progpath before calling vim_getenv ( #6755 )
2017-05-17 03:23:34 +02:00
James McCoy
4a08320007
oldtests: Mark test_timer's Test_oneshot as flaky
2017-05-16 15:32:19 -04:00
Justin M. Keyes
597d65b4b7
Merge #6741 from justinmk/progpath
2017-05-15 16:11:01 +02:00
Justin M. Keyes
cc5a42a774
env_iter: Learn delim
parameter.
2017-05-15 15:01:52 +02:00
Justin M. Keyes
5bda5c5bf2
vim_getenv: Use v:progpath instead of os_exepath.
2017-05-15 15:01:52 +02:00
Justin M. Keyes
4c5398bc40
startup: v:progpath fallback: path_guess_exepath
...
If procfs is missing then libuv cannot find the exe path.
Fallback to path_guess_exepath(), adapted from Vim findYourself().
Closes #6734
2017-05-15 15:01:52 +02:00
Justin M. Keyes
8e052f677e
Merge #6737 "options: make 'highlight' read-only"
2017-05-15 14:53:31 +02:00
Björn Linse
8d8b6224d9
options: make 'highlight' read-only
2017-05-15 07:22:31 +02:00
Justin M. Keyes
17531ed082
Merge #6480 from ZyX-I/colored-cmdline'/input-dict
2017-05-13 21:17:33 +02:00
Florian Walch
7383274f66
cmake: Support building without LuaJIT. #6736
...
Compile `nvim` executable against Lua if PREFER_LUA=ON.
As the testing library `nvim-test` requires LuaJIT, it is
still compiled against LuaJIT. If LuaJIT is not available,
`nvim-test` is not built.
2017-05-13 16:59:06 +02:00
ZyX
d66ef56739
eval/typval: Fix numbuf parameter documentation
2017-05-13 17:01:22 +03:00
Björn Linse
244a1f97db
Merge pull request #6704 from bfredl/luaexec
...
execute lua directly from the remote API
2017-05-13 15:06:41 +02:00
Justin M. Keyes
c77c54f1bc
func_attr.h: use NVIM_HAS_ATTRIBUTE
2017-05-13 15:04:32 +02:00
Justin M. Keyes
8d98780932
func_attr.h: clang 3.7+: REAL_FATTR_NONNULL_RET
...
Closes #1627
2017-05-13 15:04:32 +02:00
Justin M. Keyes
9e5d55e2b0
path.c: Remove invalid FUNC_ATTR_NONNULL_RET
...
References https://github.com/neovim/neovim/pull/6514#issuecomment-301235265
2017-05-13 15:04:32 +02:00
Björn Linse
f424189093
api: execute lua directly from the remote api
2017-05-13 15:03:42 +02:00
oni-link
5886eaed7d
if_cscope: Fix truncation of formated output
...
snprintf() has to truncate the string written to buffer buf for maximal
size_t value.
Increase buffer size to fix this.
2017-05-13 14:30:56 +02:00