| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
|
| |
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
|
| | | |
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 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.
|
| |
| |
| |
| | |
This is required to prevent the scenario explained by @akkartik in #1324
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
Free the arguments array after sending the response and also avoid
double-sending responses in cases of errors.
|
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | | |
vim-patch:7.4.422
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| | |
Migrate vim's integration test 35 (increment/decrement commands) to
lua/busted.
|
| |
| |
| |
| |
| |
| | |
- Add the api_stringify function to display API objects
- Use api_stringify to display request arguments and return values in DLOG
statements.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
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)
|
| |
| |
| |
| |
| | |
Any function that can directly mutate the screen or execute vimscript had the
attribute applied.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|