aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Merge PR #1350 'valgrind/jobs: Fix invalid reads.'Thiago de Arruda2014-10-28
|\
| * test/job: Implement some basic jobs tests.Scott Prager2014-10-28
| |
| * test/shell: Add failure tests for `system()`.Scott Prager2014-10-28
| |
| * job_start: Do not close in/out/err on error.Scott Prager2014-10-28
| | | | | | | | | | | | The streams job_close_*() reference have not been initialized by the time we call uv_spawn() and libuv closes these pipes for us when spawn() fails.
| * job/valgrind: Fix invalid reads/missing free.Scott Prager2014-10-28
|/ | | | | | | | The JobEvent structure may refer to a job after it has been freed. Apply @tarruda's patch to extract the job data before pushing the event. Also, fix the type, "data" -> "job", in on_job_exit() and free the job name in the last job event.
* Merge PR #1354 'Fixes to channel.c, input.c and helpers.lua'Thiago de Arruda2014-10-28
|\
| * input: Fix conversion error in `convert_input()`Thiago de Arruda2014-10-28
| | | | | | | | | | | | | | The `rbuffer_consumed` was being passed a consumed count from another buffer, causing integer overflow in `rbuffer_relocate`. Fixes #1343
| * test: Small fixes and improvements to functional helpers.luaThiago de Arruda2014-10-28
| | | | | | | | | | | | | | | | - Move the cleanup function definition into `restart()` so restart can be selectively used as a hook - Improve error handling: Before this, errors while running the event loop would cause busted to get stuck. Now the error is properly raised by stopping the event loop first.
| * msgpack-rpc: Terminate server->client calls when the channel closesThiago de Arruda2014-10-28
| |
| * channel: fix `REQ` definition for msgpack-rpc loggingThiago de Arruda2014-10-28
|/
* Merge PR #1331 'Fixes to job and channel modules'Thiago de Arruda2014-10-23
|\
| * test: verify that msgpacks-rpc exceptions are workingThiago de Arruda2014-10-23
| |
| * msgpack-rpc: Improve logging of msgpack-rpc messagesThiago de Arruda2014-10-23
| | | | | | | | | | | | | | | | | | | | - Expose more logging control from the log.c module(get log stream and omit newlines) - Remove logging from the generated functions in msgpack-gen.lua - Refactor channel.c/helpers.c to log every msgpack-rpc payload using msgpack_object_print(a helper function from msgpack.h) - Remove the api_stringify function, it was only useful for logging msgpack-rpc which is now handled by msgpack_object_print.
| * job: Only decrease refcount after `settmode` in `job_wait`Thiago de Arruda2014-10-23
| | | | | | | | This is required to prevent the scenario explained by @akkartik in #1324
| * travis: Setup xvfb for running xclip testsThiago de Arruda2014-10-23
| |
| * job: Refactor to ensure that all callbacks will be invokedThiago de Arruda2014-10-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It's possible that a child process won't close it's standard streams, even after it exits. This can be evidenced with the "xclip" program: :call system('xclip -i -selection clipboard', 'DATA') Before this commit, the above command wouldn't return, even though the xclip program had exited. That is because `xclip` wasn't closing it's stdout/stderr streams, which would block pending_refs from ever reaching 0. Now the job.c module was refactored to ensure all streams are closed when the uv_process_t handle is closed.
| * msgpack-rpc: Fix error handling and leak in call_request_handlerThiago de Arruda2014-10-23
| | | | | | | | | | Free the arguments array after sending the response and also avoid double-sending responses in cases of errors.
| * msgpack-rpc: Ensure stdio channels are properly closedThiago de Arruda2014-10-23
| | | | | | | | | | | | When stdio was closed, parse_msgpack was called with eof == true, with caused a free_channel call. To ensure the correct behavior for all types of channels, the close_channel must be called before free_channel.
| * runtime: Fix rpcstop call in python_setup.vimThiago de Arruda2014-10-23
|/
* Merge pull request #1332 from splinterofchaos/listbrJustin M. Keyes2014-10-23
|\ | | | | vim-patch:7.4.422
| * vim-patch:7.4.422Scott Prager2014-10-23
| | | | | | | | | | | | | | | | Problem: When using conceal with linebreak some text is not displayed correctly. (GrĂ¼ner Gimpel) Solution: Check for conceal mode when using linebreak. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=v7-4-422
* | Merge pull request #1330 from splinterofchaos/na-patchesJustin M. Keyes2014-10-23
|\ \ | |/ |/| N/A patches
| * version: update patches to 488Scott Prager2014-10-23
| |
| * version: More NA patches.Scott Prager2014-10-23
| |
| * vim-patch:7.4.406Scott Prager2014-10-23
|/ | | | | | | Problem: Test 72 and 100 fail on MS-Windows. Solution: Set fileformat to unix in the tests. (Taro Muraoka) https://code.google.com/p/vim/source/detail?r=v7-4-406
* legacy tests: migrate test35. #1318Nate Sullivan2014-10-22
| | | | | Migrate vim's integration test 35 (increment/decrement commands) to lua/busted.
* Merge PR #1326 'Add verification of log macros'Thiago de Arruda2014-10-22
|\
| * debug: Improve debugging of msgpack-rpc requestsThiago de Arruda2014-10-22
| | | | | | | | | | | | - Add the api_stringify function to display API objects - Use api_stringify to display request arguments and return values in DLOG statements.
| * debug: Fix broken DLOG macro callsThiago de Arruda2014-10-22
| |
| * travis: Force verification of DLOG macrosThiago de Arruda2014-10-22
| | | | | | | | | | | | | | We use INFO as the default log level, which leaves code inside DLOG macros unverified(currently it has compilation errors). Decrease the log level on travis builds for automatic verification in PRs.
| * input: Fix ctrl+c handling in convert_inputThiago de Arruda2014-10-22
|/
* Merge PR #1316 'Refactor event deferral'Thiago de Arruda2014-10-22
|\
| * test: verify that v:shell_error is set by `system()`/`systemlist()`Thiago de Arruda2014-10-22
| |
| * input: Don't remove Ctrl+C from the input_bufferThiago de Arruda2014-10-21
| |
| * event: Remove direct calls to `uv_run` from job.c/shell.cThiago de Arruda2014-10-21
| |
| * travis: Remove `install_functional_test_deps` functionThiago de Arruda2014-10-21
| | | | | | | | | | It is no longer needed after the lua client was added as dependency (@69561ea922ae6789703c06cbc245929d7c625db9)
| * compilation: Add -Wconversion to more files and validate CONV_SOURCESThiago de Arruda2014-10-21
| | | | | | | | | | | | All files under the os, api and msgpack_rpc directories have -Wconversion automatically applied. CONV_SOURCES is also checked for missing files(when renaming, for example)
| * api: Add FUNC_ATTR_DEFERRED attribute to a number of functionsThiago de Arruda2014-10-21
| | | | | | | | | | Any function that can directly mutate the screen or execute vimscript had the attribute applied.
| * msgpack-rpc: Allow selective deferral API callsThiago de Arruda2014-10-21
| | | | | | | | | | | | | | | | | | | | | | | | | | Since all API functions now run immediately after a msgpack-rpc request is parsed by libuv callbacks, a mechanism was added to override this behavior and allow certain functions to run in Nvim main loop. The mechanism is simple: Any API function tagged with the FUNC_ATTR_DEFERRED (a "dummy" attribute only used by msgpack-gen.lua) will be called when Nvim main loop receives a K_EVENT key. To implement this mechanism it was necessary some restructuration on the msgpack-rpc modules, especially in the msgpack-gen.lua script.
| * eval: Defer execution of JobActivity autocommandsThiago de Arruda2014-10-21
| | | | | | | | | | | | JobActivity autocommands run vimscript and must be executed on Nvim main loop. Since the previous commit removed automatic calls to `event_push` on RStream/Job callbacks, this adds it back, but in eval.c where job control is implemented.
| * event: Extract event_poll loops to `event_poll_until` macroThiago de Arruda2014-10-21
| | | | | | | | | | | | | | A pattern that is becoming common across the project is to poll for events until a certain condition is true, optionally passing a timeout. To address this scenario, the event_poll_until macro was created and the job/channel/input modules were refactored to use it on their blocking functions.
| * event: Remove automatic event deferallThiago de Arruda2014-10-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is how asynchronous events are currently handled by Nvim: - Libuv event loop is entered when Nvim blocks for user input(os_inchar is called) - Any event delivered by libuv that is not user input is queued for processing - The `K_EVENT` special key code is returned by os_inchar - `K_EVENT` is returned to a loop that is reading keys for the current Nvim mode, which will be handled by calling event_process() This approach has the advantage of integrating nicely with the current codebase, eg: vimscript code can be executed asynchronously with little surprises(Its the same as if the user typed a key). The problem with using keys to represent any event is that it also interferes with operators, and not every event needs or should do that. For example, consider this scenario: - A msgpack-rpc client calls vim_feedkeys("d") - Nvim processes K_EVENT, pushing "d" to the input queue - Nvim processes "d", entering operator-pending mode to wait for a motion - The client calls vim_feedkeys("w"), expecting Nvim to delete a word - Nvim processes K_EVENT, breaking out of operator-pending and pushing "w" - Nvim processes "w", moving a word This commit fixes the above problem by removing all automatic calls to `event_push`(which is what generates K_EVENT input). Right now this also breaks redrawing initiated by asynchronous events(and possibly other stuff too, Nvim is a complex state machine and we can't simply run vimscript code anywhere). In future commits the calls to `event_push` will be inserted only where it's absolutely necessary to run code in "key reading loops", such as when executing vimscript code or mutating editor data structures in ways that currently can only be done by the user.
| * event: Remove EventType enum and pass a callback to `event_push`Thiago de Arruda2014-10-21
| | | | | | | | | | | | This approach is more flexible because we don't need to support a fixed set of "event types", any module can push events to be handled in main loop by simply passing a callback to the Event structure.
| * channel: Simplify resource managementThiago de Arruda2014-10-21
| | | | | | | | | | | | | | | | | | - Remove unused rpc_call_level field - Add `returned` field to ChannelCallFrame. This is set when the call returns and is the only condition checked by `channel_send_call`. - Add job_exit callback for properly closing channels created from job(the job_exit callback is only called after all read callbacks, so it's the only safe place to free the channel).
| * msgpack-rpc: Create subdirectory for msgpack-rpc modulesThiago de Arruda2014-10-21
|/ | | | | Create the msgpack_rpc subdirectory and move all modules that deal with msgpack-rpc to it. Also merge msgpack_rpc.c into msgpack_rpc/helpers.c
* Merge pull request #1319 '[RFC] A few fixes for YCM contrib docs and code'Thiago de Arruda2014-10-21
|\
| * A few fixes for YCM contrib docs and codeJeff Widman2014-10-21
|/
* Merge pull request #1313 from fwalch/runtime-programsJohn Szakmeister2014-10-21
|\ | | | | CMake: Set execute permissions during installation.
| * CMake: Set execute permissions during installation.Florian Walch2014-10-20
| |
* | Merge pull request #1311 from GokuITA/issue1295Justin M. Keyes2014-10-20
|\ \ | | | | | | Fixed sign column redraw