aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* executor/converter: Use readable lua numbers for handlesZyX2017-03-27
|
* api: Reserve more numbers for internal callsZyX2017-03-27
| | | | | | Reasoning; currently INTERNAL_CALL is mostly used to determine whether it is needed to deal with NL-used-as-NUL problem. This code is useful for nvim_… API calls done from VimL, but not for API calls done from lua, yet lua needs to supply something as channel_id.
* executor/converter: Allow converting self-referencing lua objectsZyX2017-03-27
|
* functests: Test for error conditionsZyX2017-03-27
| | | | | | | | | | | | | | | | | | | | | | | 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.
* executor/converter: Make it possible to supply `{}` to Dictionary argZyX2017-03-27
|
* executor/converter: Make nlua_pop_Object not recursiveZyX2017-03-27
|
* executor/converter: Fix how maxidx is determinedZyX2017-03-27
|
* executor/converter: Fix conversion of self-containing containersZyX2017-03-27
|
* executor: Make sure it works with API valuesZyX2017-03-27
|
* *: Silence linterZyX2017-03-27
|
* viml/executor: Directly generate typval_T valuesZyX2017-03-27
| | | | | 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.
* eval: Add luaeval functionZyX2017-03-27
| | | | | | | | | | | | No tests yet, no documentation update, no :lua* stuff, no vim module. converter.c should also work with typval_T, not Object. Known problem: luaeval("1", {}) results in PANIC: unprotected error in call to Lua API (attempt to index a nil value) Ref #3823
* vim-patch:7.4.2349 (#6368)lonerover2017-03-26
| | | | | | Problem: Valgrind reports using uninitialzed memory. (Dominique Pelle) Solution: Check the length before checking for a NUL. https://github.com/vim/vim/commit/2321ca2a78286bc026fa7f407281ddbeb04114bb
* highlight: :match should override 'list' (#6343)Yichao Zhou2017-03-26
| | | Closes #4946
* refactor: Remove allow_keys global (#6346)Matthew Malcomson2017-03-25
| | | | | | * The allow_keys global is unused in nvim, remove it * clint
* Merge #6221Justin M. Keyes2017-03-25
|\
| * fold.c: uppercase macrosJustin M. Keyes2017-03-25
| |
| * vim-patch:8.0.0407 : filtering folds with marker method not testedMatthew Malcomson2017-03-23
| | | | | | | | | | Problem: Filtering folds with marker method not tested. Solution: Also set 'foldmethod' to "marker".
| * Fix wrap-around in 32 bitMatthew Malcomson2017-03-23
| |
| * Robustly handle folds during a :move commandMatthew Malcomson2017-03-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to re-order marks according to the :move command, do_move() uses mark_adjust() in a non-standard manner. The non-standard action is that it moves some marks *past* other marks. This doesn't matter for marks, but mark_adjust() calls foldMarkAdjust() which simply changes fold starts and lengths and doesn't have enough information to know that other folds have to be checked and reordered. The array of folds for each window are assumed to be in order of increasing line number, and if this gets broken some folds can get "lost". There has been a previous patch to avoid this problem by deleting and recalculating all folds in the window, but this comes at the cost of closing all folds when executing :move, and doesn't cover the case of manual folds. This patch adds a new function foldMoveRange() specifically for the :move command that handles reordering folds as well as simply moving them. Additionally, we allow calling mark_adjust_nofold() that does the same as mark_adjust() but doesn't affect any fold array. Calling mark_adjust_nofold() should be done in the same manner as calling mark_adjust(), but according changes to the fold arrays must be done seperately by the calling function. vim-patch:8.0.0457 vim-patch:8.0.0459 vim-patch:8.0.0461 vim-patch:8.0.0465
* | vim-patch:8.0.0250James McCoy2017-03-24
| | | | | | | | | | | | | | | | | | | | | | | | Problem: When virtcol() gets a column that is not the first byte of a multi-byte character the result is unpredictable. (Christian Ludwig) Solution: Correct the column to the first byte of a multi-byte character. Change the utf-8 test to new style. https://github.com/vim/vim/commit/0c0590d9827cb07a33c1552cb3558b94bddcb4dc Closes #6269
* | XXX: ex_tabonly(): aucmd_win is not part of the window list.Justin M. Keyes2017-03-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During free_all_mem, somehow ex_tabonly() may free aucmd_win. But it isn't fully destroyed (maybe autocmd_busy?). When win_free_all() tries to free aucmd_win directly, it double-frees the sub-fields. Tried unnsuccessfully to work around this by invoking `:tabonly!` with autocmds disabled: diff --git a/src/nvim/memory.c b/src/nvim/memory.c index 58c01fbe7a12..91c845e94d22 100644 --- a/src/nvim/memory.c +++ b/src/nvim/memory.c @@ -565,9 +565,9 @@ void free_all_mem(void) /* Close all tabs and windows. Reset 'equalalways' to avoid redraws. */ p_ea = false; if (first_tabpage->tp_next != NULL) - do_cmdline_cmd("tabonly!"); + do_cmdline_cmd("noautocmd tabonly!"); if (firstwin != lastwin) - do_cmdline_cmd("only!"); + do_cmdline_cmd("noautocmd only!"); /* Free all spell info. */ spell_free_all();
* | vim-patch:8.0.0307Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | | | | | Problem: Asan detects a memory error when EXITFREE is defined. (Dominique Pelle) Solution: In getvcol() check for ml_get_buf() returning an empty string. Also skip adjusting the scroll position. Set "exiting" in mch_exit() for all systems. https://github.com/vim/vim/commit/955f198fc546cc30a34361932d3f454a61df0efa
* | vim-patch:8.0.0502Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Coverity complains about possible NULL pointer. Solution: Add an assert(), let's see if this works on all systems. https://github.com/vim/vim/commit/a37ffaa5e0a47e2db27bc0cc23f49e7094f47f3b
* | vim-patch:8.0.0331Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Restoring help snapshot accesses freed memory. (Dominique Pelle) Solution: Don't restore a snapshot when the window closes. https://github.com/vim/vim/commit/343b8c042967da82f2f022afa31f2c97a264c1c8
* | vim-patch:8.0.0482Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: The setbufvar() function may mess up the window layout. (Kay Z.) Solution: Do not check the window to be valid if it is NULL. https://github.com/vim/vim/commit/2c90d51123fba44a90e09aa4a4f2b7d972dadb94
* | vim-patch:8.0.0483Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Illegal memory access when using :all. (Dominique Pelle) Solution: Adjust the cursor position right after setting "curwin". https://github.com/vim/vim/commit/f79225ed4f81bc579bb3360ad2eb06adc8058153
* | test/legacy: Test_three_windows: rtp for :helpJustin M. Keyes2017-03-22
| |
* | ex_tabnext: Disallow "+NN" arg.Justin M. Keyes2017-03-22
| | | | | | | | | | Need to do this explicitly because our implementation of getdigits() is slightly different.
* | vim-patch:8.0.0485Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | | | Problem: Not all windows commands are tested. Solution: Add more tests for windows commands. (Dominique Pelle, closes vim/vim#1575) Run test_autocmd separately, it interferes with other tests. Fix tests that depended on side effects. https://github.com/vim/vim/commit/4520d440c59034452d1450b27fcd56825c090687
* | vim-patch:8.0.0172Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | Problem: The command selected in the command line window is not executed. (Andrey Starodubtsev) Solution: Save and restore the command line at a lower level. (closes vim/vim#1370) https://github.com/vim/vim/commit/1d669c233c97486555a34f7d3f069068d9ebdb63
* | vim-patch:8.0.0083Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Using freed memory with win_getid(). (Domenique Pelle) Solution: For the current tab use curwin. https://github.com/vim/vim/commit/8e639052638a9bb8c7dd6e3e10776b1218cec1a3
* | vim-patch:8.0.0159Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | | | | | | | References #5406 Problem: Using a NULL pointer when using feedkeys() to trigger drawing a tabline. Solution: Skip drawing a tabline if TabPageIdxs is NULL. (Dominique Pelle) Also fix recursing into getcmdline() from the cmd window. https://github.com/vim/vim/commit/c695cec4698b41d7b9555efdd47dda9b1945d3ae
* | vim-patch:8.0.0037Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | Problem: Get E924 when switching tabs. () Solution: Use win_valid_any_tab() instead of win_valid(). (Martin Vuille, closes vim/vim#1167, closes vim/vim#1171) https://github.com/vim/vim/commit/0a9046fbcb33770517ab0220b8100c4494bddab2
* | get_tabpage_arg: satisfy clang warningJustin M. Keyes2017-03-22
| | | | | | | | vim-patch:8.0.0266
* | lintJustin M. Keyes2017-03-22
| |
* | vim-patch:8.0.0259Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Tab commands do not handle count correctly. (Ken Hamada) Solution: Add ADDR_TABS_RELATIVE. (Hirohito Higashi) https://github.com/vim/vim/commit/2f72c70657129c16e6b0e413752a775c804f02f8
* | test/legacy: Makefile Add missing testsJustin M. Keyes2017-03-22
| | | | | | | | | | These tests aren't in test_alot.vim, so they need to be added to the Makefile or they won't be run.
* | test/legacy: Run test_match, test_tabpage isolatedJustin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | These are failing when run as a batch. Most likely some Vim runtime patch fixed something, but we don't have it yet. Just isolate them for now. Also test_matchadd_conceal_utf8 (it's not there in Vim tree, either).
* | vim-patch:7.4.2339Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Tab page test fails when run as fake root. Solution: Check 'buftype' instead of 'filetype'. (James McCoy, closes vim/vim#1042) https://github.com/vim/vim/commit/100f5c90f4d4fb40bc3aeabc35192db371f5988f
* | vim-patch:8.0.0032Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Tests may change the input file when something goes wrong. Solution: Avoid writing the input file. https://github.com/vim/vim/commit/3e8474dd50f64c998bb665ce852f584a58dede6b
* | vim-patch:8.0.0049Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | | | Problem: When a match ends in part of concealed text highlighting, it might mess up concealing by resetting prev_syntax_id. Solution: Do not reset prev_syntax_id and add a test to verify. (Christian Brabandt, closes vim/vim#1092) https://github.com/vim/vim/commit/2f97912800e86a296c001832bbbf2fc425f1e533
* | vim-patch:8.0.0033Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | Problem: Cannot use overlapping positions with matchaddpos(). Solution: Check end of match. (Ozaki Kiichi) Add a test (Hirohito Higashi) https://github.com/vim/vim/commit/a6c27ee6db2c328e0ab0e6d143e2a295a0bb9c9a
* | vim-patch:7.4.2355Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | Problem: Regexp fails to match when using "\>\)\?". (Ramel) Solution: When a state is already in the list, but addstate_here() is used and the existing state comes later, add the new state anyway. https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
* | lintJustin M. Keyes2017-03-22
| |
* | test/legacy: fix test_autocmd.vimJustin M. Keyes2017-03-22
| | | | | | | | vim-patch:8.0.0487
* | vim-patch:8.0.0178Justin M. Keyes2017-03-22
| | | | | | | | | | | | | | | | Problem: test_command_count may fail when a previous test interferes, seen on MS-Windows. Solution: Run it separately. https://github.com/vim/vim/commit/9b73c4a215cb5f0f7df1e7f0663aea2bce1914ab
* | vim-patch:7.4.2328Justin M. Keyes2017-03-22
| | | | | | | | | | | | Problem: Crash when BufWinLeave autocmd goes to another tab page. (Hirohito Higashi) Solution: Make close_buffer() go back to the right window.
* | vim-patch:7.4.2341Justin M. Keyes2017-03-22
| | | | | | | | | | Problem: Tiny things. Test doesn't clean up properly. Solution: Adjust comment and white space. Restore option value.
* | vim-patch:7.4.2346Justin M. Keyes2017-03-22
| | | | | | | | | | | | Problem: Autocommand test fails when run directly, passes when run as part of test_alot. Solution: Add command to make the cursor move. Close a tab page.