aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* doc: Some small fixesZyX2017-11-26
|
* Merge branch 'master' into expression-parserZyX2017-11-26
|\
| * Merge pull request #6844 from bfredl/channelBjörn Linse2017-11-26
| |\ | | | | | | channels: support buffered output and bytes sockets/stdio
| | * provider: delete vimL stderr collector, now that it exists builtinBjörn Linse2017-11-26
| | |
| | * channels: testsBjörn Linse2017-11-26
| | |
| | * channels: update documentationBjörn Linse2017-11-25
| | |
| | * core dumps: don't use pipe, it does not workBjörn Linse2017-11-25
| | |
| | * test: add hexdump utilitiy functionBjörn Linse2017-11-25
| | |
| | * input: only change mode of input fd if there is an input fdBjörn Linse2017-11-25
| | |
| | * tui: job-control: use saved termios for pty jobsJustin M. Keyes2017-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On startup, if running in a terminal, save the termios properties. Use the saved termios for `:terminal` and `jobstart()` pty jobs. This won't affect nvim spawned outside of a terminal. questions: - This affects `:terminal` and `jobstart({'pty':v:true})`. Should we be more conservative for `jobstart({'pty':v:true})` (e.g. pass NULL to forkpty() and let the OS defaults prevail)? - Note: `iutf8` would not be set in that case.
| | * channels: improvements to bufferingBjörn Linse2017-11-25
| | |
| | * channels: more consistent event handlingBjörn Linse2017-11-25
| | | | | | | | | | | | | | | terminal: libvterm now receives data in async context. This was "almost" safe already, as redraws were queued anyway.
| | * channels: refactor jobwaitBjörn Linse2017-11-25
| | |
| | * channels: reimplement logging (as stub for proper event)Björn Linse2017-11-25
| | |
| | * channels: stderr channelBjörn Linse2017-11-25
| | |
| | * channels: generalize jobclose()Björn Linse2017-11-25
| | |
| | * channels: move away term code from eval.cBjörn Linse2017-11-25
| | |
| | * channels: allow bytes sockets and stdio, and buffered bytes outputBjörn Linse2017-11-24
| | |
| | * channels: refactorBjörn Linse2017-11-24
| | |
| | * Revert channel logging, rebased on new code belowBjörn Linse2017-11-24
| | |
| * | Merge #7631 'highlight: no refresh on validation error'Justin M. Keyes2017-11-25
| |\ \
| | * | test: :highlight validation errorsnate2017-11-25
| | | | | | | | | | | | | | | | | | | | add test when highlight group doesn't exist. add test when an invalid color name is used for `cterm`.
| | * | :highlight : avoid redraw on errornate2017-11-25
| |/ / | | | | | | | | | | | | do_highlight() should not redraw if a validation error occurred. closes #7489
| * | Merge #7624 'tui: disable BCE almost always'Justin M. Keyes2017-11-25
| |\ \ | | |/ | |/| | | | closes #7035 closes #7337
| | * tui: update cleared area only if non-default bgJustin M. Keyes2017-11-24
| | | | | | | | | | | | This check was removed in 133ae5eeeff3 without explanation.
| | * tui: Disable BCE almost always. #7624Justin M. Keyes2017-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 133ae5eeeff3 implemented BCE (background color erase). But we can't trust terminfo, so it is safer disable BCE if we are not certain. Per https://github.com/kovidgoyal/kitty/issues/160#issuecomment-346470545 terminal support for BCE seems to be (1) optional and (2) inconsistent. ref #4210 #4421 #7035 #7337 #7381 #7425 #7618
| | * tui: Disable BCE by default. #7624Justin M. Keyes2017-11-23
| |/ | | | | | | | | | | | | | | | | | | | | | | 133ae5eeeff3 implemented BCE (background color erase). That's fine if the system terminfo claims to support it; but our built-in fallback should not assume it. Per https://github.com/kovidgoyal/kitty/issues/160#issuecomment-346470545 terminal support for BCE seems to be (1) optional and (2) inconsistent. So the built-in terminfos should disable it by default. ref #4210 #4421 #7035 #7337 #7381 #7425 #7618
| * FIXUP: duplicate error number in #7422Björn Linse2017-11-23
| |
| * tui: move terminfo_is_term_family()Justin M. Keyes2017-11-22
| |
| * Merge #7593 'PVS static analysis fixes'Justin M. Keyes2017-11-22
| |\
| | * move.c: remove unreachable break statementPeter Kalauskas2017-11-22
| | | | | | | | | | | | n > 0 verified by while condition, (--n < 0) always false
| | * eval.c: remove nonnullret deadcodePeter Kalauskas2017-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following calls can't return null: * xmalloc * xcalloc * get_buffer_info * get_tabpage_info * get_vim_var_str * get_win_info * tv_get_string * tv_list_alloc * tv_list_alloc_ret * vim_strnsave
| | * helpers.c: statically assert integer falls within rangePeter Kalauskas2017-11-22
| | |
| | * Fix for pvs V782, pointer access to first element of arrayPeter Kalauskas2017-11-22
| | |
| | * input.c: replace if/else with switchPeter Kalauskas2017-11-22
| | |
| | * menu.c: remove conditional expression that is always truePeter Kalauskas2017-11-22
| | |
| * | cmdline: CmdlineEnter and CmdlineLeave autocommands (#7422)Björn Linse2017-11-22
| |/ | | | | | | | | | | | | | | | | | | vim-patch:fafcf0dd59fd patch 8.0.1206: no autocmd for entering or leaving the command line Problem: No autocmd for entering or leaving the command line. Solution: Add CmdlineEnter and CmdlineLeave. https://github.com/vim/vim/commit/fafcf0dd59fd9c4ef743bb333ae40d1d322b6079
| * vim-patch:8.0.0289 (#7591)KunMing Xie2017-11-22
| | | | | | | | | | | | | | Problem: No test for "ga" and :ascii. Solution: Add a test. (Dominique Pelle, closes vim/vim#1429) https://github.com/vim/vim/commit/21d7c9b601f3048e1293ecd6c09b8325a15503cd
| * vim-patch:8.0.0292 (#7592)KunMing Xie2017-11-22
| | | | | | | | | | | | | | Problem: The stat test is a bit slow. Solution: Remove a couple of sleep comments and reduce another. https://github.com/vim/vim/commit/a2f28859bfb3fa52bde14c9d2ca3ab7196a9154a
| * win: default grepprg to findstr.exe (#7611)Jan Edmund Lazo2017-11-22
| |
| * Merge #7345 'location-list update on buffer-modified'Justin M. Keyes2017-11-21
| |\
| | * quickfix: fix location list updates.Lech Lorens2017-10-31
| | | | | | | | | | | | | | | | | | Fix quickfix performance optimization which prevented quickfix items from being updated when there were multiple windows with location lists but the buffer with errors only in one of the lists.
| | * quickfix: fix location list updates (test).Lech Lorens2017-10-31
| | |
| * | pvscheck.sh: auto-detect URL by defaultJustin M. Keyes2017-11-21
| | | | | | | | | | | | | | | | | | | | | The hardcoded URL breaks very often, this confuses people. Instead, auto-detect if no URL is provided. Also auto-detect if the script is invoked with no arguments.
| * | syntax.c: Fix maybe-uninitialized warning (#7596)Phlosioneer2017-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building in release mode, gcc generated a maybe-initialized warning in get_syn_options. The warning is both right and wrong; there is an execution path where the len variable is not initialized in the code: ... int len; ... for (fidx = ARRAY_SIZE(flagtab); --fidx >= 0; ) { p = flagtab[fidx].name; int i; for (i = 0, len = 0; p[i] != NUL; i += 2, ++len) if (arg[len] != p[i] && arg[len] != p[i + 1]) break; // <snip> } ... arg = skipwhite(arg + len); ... The initial for loop will not execute if ARRAY_SIZE(flagtab) == 0, and thus len will never be initialized. flagtab is a local-static variable, initialized to a long array of structured data, so ARRAY_SIZE(flagtab) can't be 0. However, gcc doesn't recognize ARRAY_SIZE(flagtab) as a constant. There are any number of reasons this could happen. In any case, the message can be fixed with a len=0 before the first for loop. In addition to the above warning, I've labeled flagtab and first_letters as const. They should never change.
| * | helptags: fix double-free (#7600)Hannu Hartikainen2017-11-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | closes #7599 Helped-by: oni-link <knil.ino@gmail.com> Freeing `dirname` was first introduced by a code refactoring from `ex_helptags()` to `do_helptags()` (`vim-patch:7.4.1551`)(#4648) and later removed by `vim-patch:7.4.1562`(#4660). Only problem with that is, that the patches were not applied in order so the fixing patch was declared `N/A`. So `do_helptags()` should have never freed `dirname`.
| * | vim-patch:8.0.0287 (#7590)KunMing Xie2017-11-20
| | | | | | | | | | | | | | | | | | | | | Problem: Cannot access the arguments of the current function in debug mode. (Luc Hermitte) Solution: use get_funccal(). (Lemonboy, closes vim/vim#1432, closes vim/vim#1352) https://github.com/vim/vim/commit/c7d9eacefa319e5ac3b3b2334fda5acb126b8716
| * | server.c: Fix bug in release mode (#7594)Phlosioneer2017-11-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When compiling with CMAKE_BUILD_TYPE=RelWithDebInfo, several -Wmaybe-uninitialized warnings are printed. These were thought to be false positives (#5061); there are no control paths that lead to an uninitialized value. However, when gcc is run in -O2 mode, it makes a mistake while generating the necessary logic. Specifically, for the code: ... int = 0; // Index of the server whose address equals addr. for (; i < watchers.ga_len; i++) { watcher = ((SocketWatcher **)watchers.ga_data)[i]; // <snip> } if (i >= watchers.ga_len) { ELOG("Not listening on %s", addr); return; } ... Gcc generates: ... <+98>: cmp %ebx, %ebp <+100>: jg 0x530f13 <server_stop+55> <+102>: cmp %ebp, ebx <+104>: jl 0x530f7e <server_stop+162> ... Normally, the if statement should catch the only control path where watcher is not assigned: watchers.ga_len <= 0. When compiled, the assembly lines 98 and 100 correspond to checking if i < watchers.ga_len, and the lines 102 and 104 correspond to checking if i >= watchers.ga_len. The assembly seems to compare ebp (which is watchers.ga_len) with ebx (which is i), and jump if greater; then do the same comparison and jump if less. This is where gcc makes a mistake: it flips the order of the cmp instruction. This means that the REAL behavior is first check if i < watchers.ga_len and then check if i < watchers.ga_len. Which means the code inside the if statement is NEVER executed; no combination of i and watchers.ga_len will ever trigger ELOG(). So not only is this a use of an uninitialized value if watchers.ga_len == 0 (or technically, if it's less than zero too), it also clobbers any error detection if the for loop reaches the last entry (which would normally cause i == watchers.ga_len too). This commit fixes this issue by adding a bool to keep track of whether a watcher was found during the loop. This makes gcc generate the correct code, avoiding both bugs.
* | | unittests: Run vim_str2nr tests with GC enabledZyX2017-11-19
| | |
* | | doc: Update documentationZyX2017-11-19
| | |