aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/event/libuv_proc.c
Commit message (Collapse)AuthorAge
* refactor(os): libuv_proc_stdio #40506Justin M. Keyes2026-06-30
|
* fix(process): avoid inherited stdio for Windows jobs #40074Sanzhar Kuandyk2026-06-29
| | | | | | | | | | | Problem: On Windows, channel jobs inherit Nvim's stdio, so a background job writing to CON (e.g. gutentags) draws onto the TUI and stays until redraw. Solution: Give Windows job stdin/stderr libuv-created pipes (UV_CREATE_PIPE) instead of inherited fds, so libuv spawns the child with CREATE_NO_WINDOW and CON writes no longer leak onto the TUI.
* fix(path): normalize path slashes on Windows #37729tao2026-04-24
| | | | | | | | | | | | | | | | | | | | Problem: On Windows, path separators may become inconsistent for various reasons, which makes normalization quite painful. Solution: Normalize paths to `/` at the entry boundaries and always use it internally, converting back only in rare cases where `\` is really needed (e.g. cmd.exe/bat scripts?). This is the first commit in a series of incremental steps. Note: * some funcs won't respect shellslash. e.g. `expand/fnamemodify` * some funcs still respect shellslash, but will be updated in a follow PR. e.g. `ex_pwd/f_chdir/f_getcwd` * uv's built-in funcs always return `\`. e.g. `uv.cwd/uv.exepath` Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* build: update clang v21, fix warningsdundargoc2026-04-14
| | | | | - `src/nvim/ex_cmds_defs.h`: use "U" instead of "u" per `readability-uppercase-literal-suffix`
* revert: "fix(tui): server --listen error sometimes not visible (#38027)" ↵zeertzjq2026-03-06
| | | | | | | | (#38175) This reverts commit ab8371a26cf47a40d26af637455ea71da0d5a59d. Need to think of a different solution, which may require adding new flags to nvim_ui_attach() (e.g. passing stdout or stderr fd).
* fix(tui): server --listen error sometimes not visible (#38027)zeertzjq2026-03-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: If Nvim server fails to --listen and prints error before the TUI enters alternate screen, the error isn't visible. Solution: Forward server stderr using client side stderr handler instead of having the server inherit client stderr file descriptor. This does mean that `stderr_isatty` will be `false` in the server, but that value doesn't matter in embedded mode. Always pass `stdin_fd` to embedded server to avoid a hang when reading from stdin when it's a TTY (not sure why one wants to do that, perhaps by mistake), because if `stdin_fd` isn't passed, the server will try to use stderr as stdin. Example test failure on CI: FAILED test/functional/terminal/tui_spec.lua @ 41: TUI exit status 1 and error message with server --listen error #34365 test/functional/terminal\tui_spec.lua:55: Failed to match any screen lines. Expected (anywhere): "nvim%.exe: Failed to %-%-listen: address already in use:" Actual: |{114:nvim.exe -h"} | | | |[Process exited 1]^ | | | | | | | | | | | | | | | | | | | | | | | | | | | |{5:-- TERMINAL --} | Snapshot: screen:expect([[ {114:nvim.exe -h"} | | [Process exited 1]^ | |*13 {5:-- TERMINAL --} | ]]) stack traceback: test\functional\ui\screen.lua:909: in function '_wait' test\functional\ui\screen.lua:537: in function 'expect' test/functional/terminal\tui_spec.lua:55: in function <test/functional/terminal\tui_spec.lua:41> In this case, it appears that the client entered alternate screen in the middle of the server's print_mainerr().
* fix(shell): ceci n'est pas une pipebfredl2026-01-13
| | | | | | | | | | | | | | | | | | On linux /dev/stdin is defined as a symlink to /proc/self/fd/0 This in turn is defined as a "magic" symlink which is allowed to point to internal kernel objects which really does not have a file name. As a glaring inconsistency, fopen("/proc/self/fd/0", "r") works if fd was originally opened using pipe() but not using socketpair(). As it happens UV_CREATE_PIPE does not create pipes but creates socket pairs. These two unfortunate conditions means that using /dev/stdin and similar does not work in shell commands in nvim on linux. as a work around, override libuv's descicion and create an actual pipe pair. This change is not needed on BSD:s but done unconditionally for simplicity, except for on windows where it is not done for stdout because of windows fixes #35984
* refactor(build): remove INCLUDE_GENERATED_DECLARATIONS guardsbfredl2025-08-14
| | | | | | | | | These are not needed after #35129 but making uncrustify still play nice with them was a bit tricky. Unfortunately `uncrustify --update-config-with-doc` breaks strings with backslashes. This issue has been reported upstream, and in the meanwhile auto-update on every single run has been disabled.
* refactor: rename "process" => "proc" #30387Justin M. Keyes2024-09-15
Problem: - "process" is often used as a verb (`multiqueue_process_events`), which is ambiguous for cases where it's used as a topic. - The documented naming convention for processes is "proc". - `:help dev-name-common` - Shorter is better, when it doesn't harm readability or discoverability. Solution: Rename "process" => "proc" in all C symbols and module names.