aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* tui: Improve scrolling mechanism.Jonathan de Boyne Pollard2017-05-23
| | | | | | Respect the BGE flag from terminfo rather than guessing that it is always off. Emit DECLRMM and DECSLRM (or equivalent) to properly define the scroll rectangle.
* tui: Reset the scroll region when resizing.Jonathan de Boyne Pollard2017-05-23
| | | | | | | | | | 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.
* tui: resize: use an extended terminal capabilityJonathan de Boyne Pollard2017-05-23
| | | | | ... rather than hardwiring the string and testing the terminal type every time the screen is re-sized.
* tui: Only use dtterm's extension where supported.Jonathan de Boyne Pollard2017-05-23
| | | | | | | | | | | | 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.
* Merge pull request #6790 from justinmk/oldtestJames McCoy2017-05-22
|\ | | | | oldtests: Mark Test_lambda_with_timer as flaky
| * oldtests: Mark Test_lambda_with_timer as flakyJustin M. Keyes2017-05-23
|/
* docJustin M. Keyes2017-05-23
| | | | Closes #6788
* doc: *Terminal-mode* #6757Drew Neil2017-05-23
| | | | Closes #6756
* tui.c: Initialize TUI input component only once. (#6784)Justin M. Keyes2017-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | term_input_start should be called only once. This fixes a leak introduced by af2e629be4d20dda334a7c6ca817f5599956e4ff. 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). ```
* doc: on_stdout, on_stderr, onexit (#6761)Drew Neil2017-05-22
|
* doc: update *feature-list*, remove "gui_running"Justin M. Keyes2017-05-22
| | | | Closes #6783
* Merge #6775 from justinmk/docJustin M. Keyes2017-05-21
|\
| * docJustin M. Keyes2017-05-21
| |
| * api/nvim_replace_termcodes: Document keycodes behaviorJustin M. Keyes2017-05-20
|/
* vim_getenv: Remove redundant NULL check.Justin M. Keyes2017-05-20
|
* Merge pull request #6735 from justinmk/funcattrJames McCoy2017-05-20
|\ | | | | clang 3.6+ REAL_FATTR_NONNULL_RET
| * func_attr.h: use NVIM_HAS_ATTRIBUTEJustin M. Keyes2017-05-13
| |
| * func_attr.h: clang 3.7+: REAL_FATTR_NONNULL_RETJustin M. Keyes2017-05-13
| | | | | | | | Closes #1627
| * path.c: Remove invalid FUNC_ATTR_NONNULL_RETJustin M. Keyes2017-05-13
| | | | | | | | References https://github.com/neovim/neovim/pull/6514#issuecomment-301235265
* | Merge #6772 from ZyX-I/fix-pvs-errorsJustin M. Keyes2017-05-20
|\ \
| * | lua: Add PVS comment to lua/*.cZyX2017-05-20
| | |
| * | pvscheck: Provide arguments to `patch_sources` in correct orderZyX2017-05-20
| | |
| * | options: Silence V542 without using commentsZyX2017-05-20
| | |
| * | options: Silence V542 the other wayZyX2017-05-20
| | | | | | | | | Still does not work though.
| * | syntax: Silence V782ZyX2017-05-20
| | | | | | | | | | | | Just another pointer hack used with hash tables.
| * | tui: Fix V547: always true conditionZyX2017-05-20
| | | | | | | | | | | | | | | The variable in question is initalized at the start of the function with something non-NULL, specifically pointer to a static buffer.
| * | spellfile: Fix V547: always true conditionZyX2017-05-20
| | | | | | | | | This condition was already checked at the surrounding if() at line 2422.
| * | tag: Silence V522: potential null dereferenceZyX2017-05-20
| | | | | | | | | | | | | | | Call PVS is referring to is using DT_FREE which will make function exit earlier, in #ifdef EXITFREE block.
| * | shada: Fix V581: adjacent branches with same conditionZyX2017-05-20
| | |
| * | search: Fix V502: ?: ambiguityZyX2017-05-20
| | |
| * | options: Silence V542: odd casts for .def_valZyX2017-05-20
| | |
| * | memfile: Fix V547: always true conditionZyX2017-05-20
| | | | | | | | | | | | | | | `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.
| * | main: Silence V522: potential NULL pointer dereferenceZyX2017-05-20
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | getchar: Eliminate two-iteration loopZyX2017-05-20
| | |
| * | eval: Silence V614: potentially uninitialized variableZyX2017-05-20
| | | | | | | | | | | | | | | 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.
| * | eval: Fix V507ZyX2017-05-20
| | |
| * | eval: Silence V782ZyX2017-05-20
| | |
| * | eval/encode: Silence V595 errorZyX2017-05-20
| | |
| * | pvscheck: Handle invalid option error gracefullyZyX2017-05-20
| | |
| * | pvscheck: Add --only-analyse modeZyX2017-05-20
| | |
| * | buffer: Silence V519ZyX2017-05-20
| | |
| * | edit: Silence V595ZyX2017-05-20
| | |
| * | *: Fix all V641 errorsZyX2017-05-20
| | |
| * | charset: Fix V695: dead branchesZyX2017-05-20
|/ / | | | | | | | | | | | | | | 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.
* | man.vim: check for -l flag #6766raichoo2017-05-19
| |
* | startup: init v:progpath before calling vim_getenv (#6755)Justin M. Keyes2017-05-17
| |
* | Merge pull request #6759 from jamessan/flaky-timersJames McCoy2017-05-16
|\ \ | | | | | | oldtests: Mark test_timer's Test_oneshot as flaky
| * | oldtests: Mark test_timer's Test_oneshot as flakyJames McCoy2017-05-16
|/ /
* | Merge #6741 from justinmk/progpathJustin M. Keyes2017-05-15
|\ \
| * | env_iter: Learn `delim` parameter.Justin M. Keyes2017-05-15
| | |