aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/event
Commit message (Collapse)AuthorAge
* refactor: format files with uncrustify #15663dundargoc2021-09-14
|
* feat(api): nvim_get_chan_info: include "argv" for jobs #15537Justin M. Keyes2021-09-01
| | | ref #15440
* fix(process_wait): drain proc.events directly #15501Gregory Anders2021-08-27
| | | | | | | | | | 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.
* chore: use codespell to spell check #15016dundargoc2021-07-07
|
* vim-patch:8.1.1437: code to handle callbacks is duplicatedJan Edmund Lazo2021-06-23
| | | | | | | | | | | | | 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
* Add more info to debug messagesJames McCoy2021-04-08
| | | | [skip ci]
* Change QUEUE_FOREACH macro to use while instead of forerw72021-03-30
|
* fix(pty): Always use $TERM from the job's env dictJames McCoy2021-02-06
| | | | | | | | | | | | | | | | | | | | | | 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.
* Common handling of required/ignored env varsJames McCoy2021-01-31
| | | | | | | | | | 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.
* Use dict_T to pass env vars to process spawning codeJames McCoy2021-01-31
| | | | Co-authored-by: Matthieu Coudron <mattator@gmail.com>
* Add overlapped option to jobstarterw72020-06-10
| | | | | | | 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
* win/TUI: enable mouse on ConEmu and vtpcon without vtierw72020-05-26
|
* win: use virtual terminal input (VTI) if available #11803erw72020-05-26
| | | | | fixes #9514 fixes #11773
* Test on actual libuv version number, not on existence of symbol.Matěj Cepl2020-04-21
| | | | | | 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.
* Make neovim building even with libuv 1.18.0Matěj Cepl2020-04-21
| | | | (found for example on openSUSE/Leap 15.*)
* loop_close: close all handlesJustin M. Keyes2020-02-17
| | | | | | | | | | - 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
* loop_close: call uv_stop(), fix bugJustin M. Keyes2020-02-17
| | | | | | | | | | | | | | | | | - 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.
* loop_close: timout after 2 seconds #11821Justin M. Keyes2020-02-16
| | | | | never UV_RUN_DEFAULT ref #11820 ref #7376
* jobstart now supports env/clear_envMatthieu Coudron2019-12-11
| | | | to modify the environment of the launched job.
* tui: flush ui buffer in tui_terminal_after_startup (#11083)Daniel Hahler2019-09-24
| | | | | | | | | | | | | | 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).
* rename: getdigits_safe => try_getdigitsJustin M. Keyes2019-09-13
|
* rename: SplitEvent => MulticastEvent #10989Justin M. Keyes2019-09-11
| | | | | "Multicast" is perhaps a more conventional name for the concept. "One-shot" is the conventional name for how the event is (currently) scheduled.
* rpc: allow handling of nvim_ui_try_resize at the pagerBjörn Linse2019-09-08
| | | | | | 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.
* f_jobwait: cleanupJustin M. Keyes2019-09-03
|
* events: loop_schedule() is unclear, rename it loop_schedule_fast()Björn Linse2019-08-31
|
* paste: tickle cursorJustin M. Keyes2019-08-27
| | | | | | | | | | 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.
* paste: WIP #4448Justin M. Keyes2019-08-27
|
* win: stream: reset tty stream on closeAnciety2019-08-20
| | | | | | | | | | This was overlooked in 8072f085d2ed. Analogous to 8a782f1699e2. fix #10668 ref 8072f085d2ed #9884 ref 8a782f1699e2 #2377
* channels: reflect exit due to signals in exit status code (#10573)Daniel Hahler2019-08-09
| | | | | Uses `128 + term_signal` in case of exit due to a signal. Fixes https://github.com/neovim/neovim/issues/10571.
* stream: log unwritten bytes, if any #10663Justin M. Keyes2019-08-01
|
* process_stop: uv: do not close stdin first/explicitly #10584Daniel Hahler2019-08-01
| | | | | | | | | | - 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
* CI: improve gcov handling #10404Daniel Hahler2019-07-07
| | | | | | | | | - 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.
* :ls : show "R", "F" for terminal-jobs #10370Justin M. Keyes2019-06-29
| | | | | | | | | | | 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
* gcov: use __gcov_flush instead of __gcov_dump (#10260)Daniel Hahler2019-06-18
| | | | | | 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).
* Dump gcov coverage in process_spawn (#10230)Daniel Hahler2019-06-15
| | | Fixes https://github.com/neovim/neovim/pull/3926#issuecomment-502343527.
* build: fix some warningsJustin M. Keyes2019-06-03
| | | | | | | | | | | | | | | | | | ../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); ^~~~~~
* win: stream_init() issue with tty on Windows #9884erw72019-04-28
| | | ref #9825
* doc [ci skip]Justin M. Keyes2019-03-26
| | | | closes #9719
* deps: update to libuv v1.26.0Justin M. Keyes2019-02-21
| | | | | | | | | | | | | | | | | | | | | | | 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
* doc: xdg, MAINTAIN.md, channel-id, job controlJustin M. Keyes2018-10-11
| | | | - tutor: emphasize K
* tui: Hint wrapped lines to terminals.Ricky Zhou2018-09-03
| | | | | | | | | | | | | | | | 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.
* ui: use line-based rather than char-based updates in screen.cBjörn Linse2018-07-21
| | | | | | | | | | | | | 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.
* Merge #7679 'startup: treat stdin as text instead of commands'Justin M. Keyes2018-06-10
|\
| * lintJustin M. Keyes2018-06-04
| |
* | Bump up buffer capacity to 2GBKillTheMule2018-05-23
|/
* socket.c: Ignore PVS/V547: False positiveJustin M. Keyes2018-05-20
| | | | https://github.com/neovim/neovim/pull/8218#issuecomment-383412049
* timer: make sure to free callback after the last timer due callbackBjörn Linse2018-05-13
| | | | | | | | 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.
* Merge #8218 'Fix errors reported by PVS'Justin M. Keyes2018-04-27
|\ | | | | closes #4983
| * event/process: Silence PVS/V547: assuming stream->num_bytes changesZyX2018-04-17
| | | | | | | | Not familiar with the code, but I assume that loop_poll_events can actually change stream->num_bytes, so condition is not always false.
| * event/loop: Silence PVS/V547: condition is false in case of no timeoutZyX2018-04-09
| |