| Commit message (Collapse) | Author | Age |
| | |
|
| |
|
| |
ref #15440
|
| |
|
|
|
|
|
|
|
|
| |
After a process's refcnt is decremented to zero, it enqueues a
`process_close_event` on its own event queue. In `process_wait`, this
event should be processed immediately so that any process close
callbacks are executed before `process_wait` returns.
Update `process_wait` to always process the process's event queue after
the process is freed, rather than the event queue passed in as an
argument.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Code to handle callbacks is duplicated.
Solution: Add callback_T and functions to deal with it.
https://github.com/vim/vim/commit/3a97bb3f0f8bd118ae23f1c97e55d84ff42eef20
Port Vim's put_callback() as callback_put()
because Neovim's naming convention is {type}_{action},
not {action}_{type}.
Renaming put_callback type as PutCallback.
https://neovim.io/develop/style-guide.xml#Type_Names
|
| |
|
|
| |
[skip ci]
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before #12937, the only way to specify the `$TERM` for a pty job was
through the `TERM` key in the job's opts dict. This was shuttled to the
child process throug a special field on the PtyProcess object and
injected into the environment after forking.
Now that we have a proper way to specify the environment for a job, we
can simply ensure that the env dict has a proper `TERM` set and avoid
the extra shuttling of data around.
This deprecates the use of the `TERM` option, but will still honor it if
present, although at a lower priority than a `TERM` present in the env
dict.
This also fixes #13874 because we're no longer trying to overwrite
`TERM` in the env dict with the special pty `term_name`. Doing so
raises an internal error because of the existing key which, under
certain circumstances, would cause the "hit enter" prompt. However,
since the child process had already forked, there was no way for the
user to acknowledge the prompt and we would just hang there.
|
| |
|
|
|
|
|
|
|
|
| |
When starting a pty job, there are certain env vars that we need to
either add or remove. Currently, there are two relevant scenarios.
* Removing irrelevant env vars on Unix, mostly related to the terminal
hosting nvim since they do not apply to a libvterm-hosted terminal.
* Adding required env vars for Windows jobs.
|
| |
|
|
| |
Co-authored-by: Matthieu Coudron <mattator@gmail.com>
|
| |
|
|
|
|
|
| |
When UV_OVERLAPPED_PIPE was used for the pipe passed to the child process, a
problem occurred with the standard input of the .Net Framework application
(#11809). Therefore, add the overlapped option to jobstart() and change it so
that it is set only when necessary
|
| | |
|
| |
|
|
|
| |
fixes #9514
fixes #11773
|
| |
|
|
|
|
| |
uv_stream_get_write_queue_size isn't a define, it's a
function. It seems like this would always be shadowing the
actual function name.
|
| |
|
|
| |
(found for example on openSUSE/Leap 15.*)
|
| |
|
|
|
|
|
|
|
|
| |
- Move uv_stop(), it still causes a "leak" on exit somehow.
- Tenatively restore `UV_RUN_DEFAULT`. It shouldn't hang since we
clobber the handles via `uv_walk((h)=>uv_close(h))`. Although this
still "leaks" on exit, it's faster than the 2-second timeout.
fix #11820
fix #7376
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Call uv_stop().
- Restore `uv_loop_close` condition (braindead cosmetic change from
a2efc9cf8b0f that caused uv_loop_close *not* to be called if
wait=false, sorry).
Not doing `uv_walk(() => uv_close)`: see source comment for explanation.
fix #11820
fix #7376
Q: Should we restore use of `UV_RUN_DEFAULT`/`UV_RUN_ONCE` (removed in
a2efc9cf8b0f)?
A: The while-loop (hopefully) achieves the same purpose while avoiding
a hang.
|
| |
|
|
|
| |
never UV_RUN_DEFAULT
ref #11820
ref #7376
|
| |
|
|
| |
to modify the environment of the launched job.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This avoids having a dummy event to tickle the main loop.
Confirmed using `nvim -u NONE -c 'au FocusGained * q'` in tmux (with
`:set -g focus-events on`): without the flushing it would only exit
after pressing a key.
Moves the flushing done recently in 3626d2107.
`nvim -u NONE -cq` is still working (i.e. consuming the response for the
terminal background query itself), and the flickering mentioned in
3626d2107 is reduced again.
Reverts part of bfb21f3e0 (#7729).
|
| | |
|
| |
|
|
|
| |
"Multicast" is perhaps a more conventional name for the concept.
"One-shot" is the conventional name for how the event is (currently)
scheduled.
|
| |
|
|
|
|
| |
This makes external UI behave consistenly with TUI w.r.t resizes.
Which will be needed anyway as TUI will use the external UI protocol
soon.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
HACK: The cursor does not get repositioned after the paste completes.
Scheduling a dummy event seems to fix it.
Test case:
0. Revert this commit.
1. Paste some text in Normal-mode.
2. Notice the cursor is still in the cmdline area.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
This was overlooked in 8072f085d2ed.
Analogous to 8a782f1699e2.
fix #10668
ref 8072f085d2ed #9884
ref 8a782f1699e2 #2377
|
| |
|
|
|
| |
Uses `128 + term_signal` in case of exit due to a signal.
Fixes https://github.com/neovim/neovim/issues/10571.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
- process_stop: do not close stdin explicitly. The "close stdin" step was from
aa9cb48, before we fixed/reworked the SIGTERM timing logic. So it's probably
outdated / no longer needed.
- win: jobstop: exit_code 15
GetExitCodeProcess appears to return the used signal.
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getexitcodeprocess
ref #10573
|
| |
|
|
|
|
|
|
|
| |
- Move __gcov_flush to process_spawn, for more reliable coverage
tracking of subprocesses
- Travis: use GCOV_ERROR_FILE
- codecov: use "-X fix" to skip "fixing" uploaded coverage data; it
should be handled by codecov's backend instead.
- AppVeyor: no $PATH mangling, which breaks with the improved coverage tracking
due to missing .dll in PATH.
|
| |
|
|
|
|
|
|
|
|
|
| |
This matches Vim behavior. From `:help :ls` :
R a terminal buffer with a running job
F a terminal buffer with a finished job
? a terminal buffer without a job: `:terminal NONE`
TODO: implement `:terminal NONE`.
ref #10349
|
| |
|
|
|
|
| |
This restores missing coverage again.
Move it to process_spawn in os/pty_process_unix.c, since it seems to
break printargs-test on Windows/AppVeyor otherwise (#10248).
|
| |
|
| |
Fixes https://github.com/neovim/neovim/pull/3926#issuecomment-502343527.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
../src/nvim/event/rstream.c:119:44: warning: format specifies type 'void *' but the argument has type 'Stream *' (aka 'struct stream *') [-Wformat-pedantic]
DLOG("Closing Stream (%p): %s (%s)", stream,
~~ ^~~~~~
../src/nvim/event/stream.c:95:30: warning: format specifies type 'void *' but the argument has type 'Stream *' (aka 'struct stream *') [-Wformat-pedantic]
DLOG("closing Stream: %p", stream);
~~ ^~~~~~
../src/nvim/msgpack_rpc/channel.c:71:72: warning: format specifies type 'void *' but the argument has type 'Stream *' (aka 'struct stream *') [-Wformat-pedantic]
DLOG("rpc ch %" PRIu64 " in-stream=%p out-stream=%p", channel->id, in, out);
~~ ^~
../src/nvim/msgpack_rpc/channel.c:71:76: warning: format specifies type 'void *' but the argument has type 'Stream *' (aka 'struct stream *') [-Wformat-pedantic]
DLOG("rpc ch %" PRIu64 " in-stream=%p out-stream=%p", channel->id, in, out);
~~ ^~~
../src/nvim/msgpack_rpc/channel.c:226:28: warning: format specifies type 'void *' but the argument has type 'Stream *' (aka 'struct stream *') [-Wformat-pedantic]
channel->id, count, stream);
^~~~~~
|
| |
|
| |
ref #9825
|
| |
|
|
| |
closes #9719
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Notable changes since v1.23.2:
- v1.26.0
- uv_os_uname()
- unix: don't attempt to invalidate invalid fd
https://github.com/libuv/libuv/commit/1ce6393a5780538ad8601cae00c5bd079b9415a9
- v1.25.0
- unix: better handling of unsupported F_FULLFSYNC (fixes #6725)
https://github.com/libuv/libuv/commit/6fc797c3fe18d8df71b36ecf2184f085c0283251
- tty,win: fix Alt+key under WSL
https://github.com/libuv/libuv/commit/d2e59bb6003d707bdebd7a381f5a7e1d0cc3fd3b
- fsevents: really watch files with fsevents on macos 10.7+
https://github.com/libuv/libuv/commit/2d2af382ce84b91d6ee7a185af32fca7f0acd84b
- win: fix duplicate tty vt100 fn key
- v1.24.0
- win,fs: retry if uv_fs_rename fails
https://github.com/libuv/libuv/commit/e94c184c7c4a18f3de569c97caeb83f4ff98a4b2
- later [reverted](https://github.com/libuv/libuv/issues/2098) but may be useful reference
- win: support more fine-grained windows hiding
https://github.com/libuv/libuv/commit/4c2dcca27b80945d6b7063f0ea031b8a75a46a52
|
| |
|
|
| |
- tutor: emphasize K
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, when neovim would wrap a line across multiple lines,
terminal emulators could not detect that the lines represent a single
wrapped line as opposed to several separate lines. As a result, many
terminals' selection/copying functionality would treat a wrapped line as
several newline-delimited lines.
Fix this by reenabling a "special trick" from Vim. When a line is
wrapped, write the last character of that line followed by the first
character of the next line to the terminal. This hints to the terminal
that the next line is a continuation of the current line.
Extends the raw_line event with a "wrap" parameter which controls when
to do wrap hinting.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add ext_newgrid and ext_hlstate extensions. These use predefined
highlights and line-segment based updates, for efficiency and
simplicity.. The ext_hlstate extension in addition allows semantic
identification of builtin and syntax highlights.
Reimplement the old char-based updates in the remote UI layer, for
compatibility. For the moment, this is still the default. The bulitin
TUI uses the new line-based protocol.
cmdline uses curwin cursor position when ext_cmdline is active.
|
| |\ |
|
| | | |
|
| |/ |
|
| |
|
|
| |
https://github.com/neovim/neovim/pull/8218#issuecomment-383412049
|
| |
|
|
|
|
|
|
| |
fixes #6974
Before this change, the partial could be freed before the last due
callback got invoked, which caused a use-after-free when the due
callback called the partial.
|
| |\
| |
| | |
closes #4983
|
| | |
| |
| |
| | |
Not familiar with the code, but I assume that loop_poll_events can actually
change stream->num_bytes, so condition is not always false.
|
| | | |
|