| Commit message (Collapse) | Author | Age |
... | |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
- updated script_host_execute and script_host_execute_file to pass current range
|
|
|
|
|
| |
Travis build will now fail when core files are dumped, so call `abort()` when
the event loop is not fully released before exiting.
|
|
|
|
|
| |
Since `mch_exit` will re-enter event_poll, it is necessary to call it outside
libuv event loop.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Add input_teardown/signal_teardown to take care of closing signal/stdin
handles.
- Call those functions in event_teardown, and ensure there are no active handles
by entering an infinite loop when there are unclosed handles(think of this as
an assertion that can't go unoticed on travis).
- Move event_teardown call to the end of mch_exit. That is required because
event_poll may still be called in that function.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit @264e0d872c("Remove automatic event deferral") removed the immediate
event queue because event deferral now had to be explicit. The problem is that
while some events don't need to be deferred, they still can result in recursive
`event_poll` calls, and recursion is not supported by libuv. Examples of those
are msgpack-rpc requests while a server->client request is pending, or signals
which can call `mch_exit`(and that will result in `uv_run` calls).
To fix the problem, this reintroduces the immediate event queue for events that
can potentially result in event loop recursion. The non-deferred events are
still processed in `event_poll`, but only after `uv_run` returns.
|
| |
|
|
|
|
|
|
|
|
| |
If the server fails to start(due to used address for example), the
`server_start` function was freeing the handle memory before it was properly
removed from libuv event loop queue. Fix that by replacing the `free(server)`
call by `uv_close` call, which will take care of freeing the server on the next
event loop iteration. Also replace `EMSG` calls by `ELOG`/`WLOG`.
|
|
|
|
|
|
| |
- Rename WriteData to WRequest
- Inline uv_write_t into WRequest, avoiding an extra allocation
- Manage WBuffer/WRequest instances using klib memory pools
|
|
|
|
|
| |
Remove the current teardown logic and reuse the job top timers with
event_poll_until all jobs exit or are killed.
|
|\
| |
| | |
api: window_set_cursor doesn't always update position.
|
| |
| |
| |
| |
| | |
Previously, the cursor could be left outside the visible range if window
is not the current window
|
|/ |
|
| |
|
|
|
|
|
|
|
| |
Use a timer to periodically compare the current HR time against the HR time of
when `job_stop` was called. After 1 second, send SIGTERM, after 2 seconds, send
SIGKILL. The timer is only active when there's at least one `job_stop` call
pending.
|
| |
|
| |
|
|
|
|
| |
To follow our coding conventions
|
|
|
|
|
|
|
|
| |
Passing NULL as the callback for stdout/stderr will result in job_start ignoring
stdout/stderr, respectively. A 'writable' boolean argument was also added, and
when false `job_start` will ignore stdin.
Also, refactor os_system to allow passing NULL as the `output` argument.
|
|
|
|
|
|
|
| |
Commit @709685b4612f4 removed the close_job_* calls when uv_spawn fails because
of memory errors when trying to cleanup unitialized {R,W}Stream instances, but
the uv_pipe_t instances must be closed because they are added to the event loop
queue by previous `uv_pipe_init()` calls
|
| |
|
|\
| |
| | |
coverity/71507: Unchecked return value (CHECKED_RETURN)
|
| |
| |
| |
| | |
Don't check for err->set since object_to_vim always return false when error is set
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
The `vim_feedkeys` must be deferred because it can potentially free the buffer
passed to `os_inchar`(which in turns calls `vim_feedkeys` indirectly).
The new `vim_input` function can be used to emulate user input(Since it does not
mess with the typeahead, it is safe to execute without deferring).
|
| |
| |
| |
| |
| | |
Input buffer must be bigger than read buffer to ensure it always has space for
converted data.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Extract `process_interrupts` out of `convert_input`
- Instead of waiting for os_breakcheck/os_inchar calls, call `convert_input`
and `process_interrupts` directly from the read callback in input.c.
- Remove the `settmode` calls from `job_wait`. Now that interrupts are
processed in the event loop, there's no need to set the terminal to cooked
which introduces other problems(ref 7.4.427)
|
| | |
|
|\ \
| | |
| | | |
vim-patch:7.4.433
|
| | |
| | |
| | |
| | | |
Not relevant because we always compile with +conceal.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Test 75 fails on MS-Windows.
Solution: Use ":normal" instead of feedkeys(). (Michael Soyka)
https://code.google.com/p/vim/source/detail?r=v7-4-433
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since the introduction of the FOR_ALL_BUFFERS macro, 'sign unplace id'
without a buffer was only removing the sign from the first buffer rather
than all buffers, as described in the documentation.
:help sign-unplace
--
modeline discussion: https://github.com/akkartik/neovim/commit/7863c247db#commitcomment-8342590
|
| | |
| | |
| | |
| | |
| | | |
This function can be used by API clients to execute a command and capture the
output.
|
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The `rbuffer_consumed` was being passed a consumed count from another buffer,
causing integer overflow in `rbuffer_relocate`.
Fixes #1343
|
| | | |
|
|/ / |
|