aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api
Commit message (Collapse)AuthorAge
...
| * Add empty options dict to buf_attachKillTheMule2018-05-23
| |
| * Send changedtick as first event if buffer contents weren't requestedKillTheMule2018-05-23
| |
| * Some renamings and doc changesKillTheMule2018-05-23
| |
| * Enable -WconversionKillTheMule2018-05-23
| |
| * The grand renamingKillTheMule2018-05-23
| |
| * LintKillTheMule2018-05-23
| |
| * Make separate functions to start/stop live updatesKillTheMule2018-05-23
| |
| * Adjust FUNC_API_SINCE for nvim_buf_live_updatesKillTheMule2018-05-23
| |
| * Add argument to not send a buffers content when updates are enabledKillTheMule2018-05-23
| | | | | | | | Add a test.
| * API: Implement buffer updatesPeter Hodge2018-05-23
| | | | | | | | | | Originally written by @phodge in https://github.com/neovim/neovim/pull/5269.
* | API: validation: mention invalid method name (#8489)Justin M. Keyes2018-06-07
| |
* | tui: handle termguicolors rgb value in bridge for nowBjörn Linse2018-06-02
| | | | | | | | | | When/if TUI/bridge teardown is refactored to use events, this commit can be reverted.
* | nvim_list_uis: include channel idBjörn Linse2018-06-01
|/
* api: list information about all channels/jobs.Björn Linse2018-05-23
| | | | | Fire autocmd when channel opens or its info changes. Add a way for API clients can describe themselves.
* API: nvim_get_commands(): return DictionaryJustin M. Keyes2018-05-12
|
* API: nvim_get_commands(): builtin is irrelevant for buffer-localJustin M. Keyes2018-05-12
| | | | | builtin commands are never buffer-local, so we can return empty for that case.
* API: nvim_get_commands(): more attributesJustin M. Keyes2018-05-11
| | | | | | | Support more :command attributes: -bang -bar -register
* API: nvim_get_commands(): always return keysJustin M. Keyes2018-05-11
| | | | | | - Always return all keys, with at least NIL value. - Require `opts` param to be {"builtin":false} - Validate `opts` param
* API: nvim_get_commands()Nimit Bhardwaj2018-05-11
|
* Merge #8329 'API: Make nvim_set_option() update `:verbose set …`'Justin M. Keyes2018-05-11
|\
| * api: Make nvim_set_option() update `:verbose set ...`b-r-o-c-k2018-05-03
| | | | | | | | | | | | Make `:verbose set ...` show when an option was last modified by an API client or Lua script/chunk. In the case of an API client, the channel ID is displayed.
* | nvim_eval: fix memory leakJustin M. Keyes2018-05-10
| |
* | API: nvim_eval(): return non-generic VimL errorsJustin M. Keyes2018-05-09
| | | | | | | | Use the same pattern as nvim_call_function (_call_function).
* | API: better way to capture abort-causing non-exception errorsJustin M. Keyes2018-05-09
| | | | | | | | | | | | | | | | This condition is not perfectly reliable: (did_emsg && force_abort && !current_exception) The more proper way to check for abort-causing non-exception errors is to set up `msg_list` using the "pattern" given by do_cmdline().
* | API: return non-generic VimL errorsJustin M. Keyes2018-05-09
| | | | | | | | | | | | | | | | | | | | - Return VimL errors instead of generic errors for: - nvim_call_function - nvim_call_dict_function - Fix tests which were silently broken before this change. This violates #6150 where we agreed not to translate API errors. But that can be fixed later.
* | docJustin M. Keyes2018-05-09
| |
* | API: nvim_call_dict_function: expect actual function, not nameJustin M. Keyes2018-05-06
| |
* | API: nvim_call_dict_function: eliminate `internal` paramJustin M. Keyes2018-05-06
| | | | | | | | | | | | The `internal` param is difficult to explain, and will rarely be anything but `true`. To avoid it, use a hack: check if the resolved dict value starts with "function(".
* | refactor: nvim_call_dict_functionJustin M. Keyes2018-05-06
| | | | | | | | | | - Add test coverage for errors. - Rename, rearrange.
* | API: nvim_call_dict_function #3032Sebastian Witte2018-05-06
|/
* Merge #8218 'Fix errors reported by PVS'Justin M. Keyes2018-04-27
|\ | | | | closes #4983
| * api/vim: Fix PVS/V547: node was already dereferenced, so can’t be NULLZyX2018-04-22
| |
| * api/buffer: Fix PVS/V547: use correct border for lnumZyX2018-04-02
| | | | | | | | | | Should actually be silencing that for the sake of the case when `long` is actually not 64-bit. But it appears that Vim had already defined maximal line number. And even declared that exact value invalid, so no need in silencing.
* | API: nvim__stats()Justin M. Keyes2018-04-24
| | | | | | | | Use it to verify fsync() behavior.
* | ui_events: correct wrong argument orderBjörn Linse2018-04-17
| |
* | API/nvim_command_output: handle :echon capture (#8265)Justin M. Keyes2018-04-13
| | | | | | ref https://github.com/neovim/python-client/pull/290
* | ui_set_option: pass String.data, not StringJustin M. Keyes2018-04-12
| |
* | test/util: expect_err() (#8257)Justin M. Keyes2018-04-11
| | | | | | other cleanup, ref #8245
* | test/API: validate channel arg (#8245)Justin M. Keyes2018-04-08
|/
* *: Replace did_throw checks with current_exception checksZyX2018-03-25
| | | Removes obsolete did_throw after that.
* *: Make sure that !did_throw implies !current_exceptionZyX2018-03-25
| | | | Fixes #7876
* Merge #8107 'jobs: separate process-group'Justin M. Keyes2018-03-18
|\
| * API: nvim_get_proc()Justin M. Keyes2018-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TODO: "exepath" field (win32: QueryFullProcessImageName()) On unix-likes `ps` is used because the platform-specific APIs are a nightmare. For reference, below is a (incomplete) attempt: diff --git a/src/nvim/os/process.c b/src/nvim/os/process.c index 09769925aca5..99afbbf290c1 100644 --- a/src/nvim/os/process.c +++ b/src/nvim/os/process.c @@ -208,3 +210,60 @@ int os_proc_children(int ppid, int **proc_list, size_t *proc_count) return 0; } +/// Gets various properties of the process identified by `pid`. +/// +/// @param pid Process to inspect. +/// @return Map of process properties, empty on error. +Dictionary os_proc_info(int pid) +{ + Dictionary pinfo = ARRAY_DICT_INIT; +#ifdef WIN32 + +#elif defined(__APPLE__) + char buf[PROC_PIDPATHINFO_MAXSIZE]; + if (proc_pidpath(pid, buf, sizeof(buf))) { + name = getName(buf); + PUT(pinfo, "exepath", STRING_OBJ(cstr_to_string(buf))); + return name; + } else { + ILOG("proc_pidpath() failed for pid: %d", pid); + } +#elif defined(BSD) +# if defined(__FreeBSD__) +# define KP_COMM(o) o.ki_comm +# else +# define KP_COMM(o) o.p_comm +# endif + struct kinfo_proc *proc = kinfo_getproc(pid); + if (proc) { + PUT(pinfo, "name", cstr_to_string(KP_COMM(proc))); + xfree(proc); + } else { + ILOG("kinfo_getproc() failed for pid: %d", pid); + } + +#elif defined(__linux__) + char fname[256] = { 0 }; + char buf[MAXPATHL]; + snprintf(fname, sizeof(fname), "/proc/%d/comm", pid); + FILE *fp = fopen(fname, "r"); + // FileDescriptor *f = file_open_new(&error, fname, kFileReadOnly, 0); + // ptrdiff_t file_read(FileDescriptor *const fp, char *const ret_buf, + // const size_t size) + if (fp == NULL) { + ILOG("fopen() of /proc/%d/comm failed", pid); + } else { + size_t n = fread(buf, sizeof(char), sizeof(buf) - 1, fp); + if (n == 0) { + WLOG("fread() of /proc/%d/comm failed", pid); + } else { + size_t end = MIN(sizeof(buf) - 1, n); + end = (end > 0 && buf[end - 1] == '\n') ? end - 1 : end; + buf[end] = '\0'; + PUT(pinfo, "name", STRING_OBJ(cstr_to_string(buf))); + } + } + fclose(fp); +#endif + return pinfo; +}
| * nvim_get_proc_children: fallback to shellJustin M. Keyes2018-03-16
| | | | | | | | | | /proc/…/children may be unavailable because of an unset kernel option. Fallback to `pgrep` invoked in a shell.
| * API: nvim_get_proc_children()Justin M. Keyes2018-03-16
| | | | | | | | ref https://github.com/libuv/libuv/pull/836
* | build/MSVC: fix "C4003: not enough actual parameters for macro"Justin M. Keyes2018-03-18
| | | | | | | | | | | | For the case of TV_DICTITEM_STRUCT, we can't just pass `1` because: https://github.com/neovim/neovim/pull/8142#discussion_r175262436 > this variant will trigger array overrun warnings from various static analyzers.
* | build/MSVC: fix "C4028: formal parameter different from declaration"Justin M. Keyes2018-03-18
|/
* api: nvim_list_uis #8004geekodour2018-03-03
| | | | | ref #7438 closes #4842
* ui: refactor ui optionsBjörn Linse2018-02-13
|
* ui/tui: highlighting refactorBjörn Linse2018-02-11
| | | | | | | | Make HlAttr contain highlighting state for both color modes (cterm and rgb). This allows us to implement termguicolors completely in the TUI. Simplify some logic duplicated between ui.c and screen.c. Also avoid some superfluous highlighting reset events.