| Commit message (Collapse) | Author | Age |
... | |
| |
|
|
|
|
|
| |
If we ever need arbitrary data or more than very few bytes on `Events` we just
have to add a `void *` field in the `data` union.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add a new macro to klist.h: kl_empty()
The whole point of abstract data structures is to avoid reimplementing
common actions. The emptiness test seems to be such an action.
- Add a new function attribute to func_attr.h: FUNC_ATTR_UNUSED
Some of the many functions created by the macros in klist.h may end up not
being used. Unused functions cause compilation errors as we compile with
-Werror. To mark those functions as possibly unused we can use the
FUNC_ATTR_UNUSED now.
- Pass `Event` by value
`Event` is such a small struct that I don't think we should allocate heap space
and pass it by reference. Let's use the stack and memory cache in our favor
passing it by value.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By simpler cases I mean cases where the OOM error is not expected to be handled
by the caller of the function that calls `alloc`, `lalloc`, `xrealloc`,
`xmalloc`, `alloc_clear`, and `lalloc_clear`.
These are the functions that:
- Do not return an allocated buffer
- Have OOM as the only error condition
I took note of the functions that expect the caller to handle the OOM error and
will go through them to check all the callers that may be handling OOM error in
future commits.
I'm ignoring eval.c and ex_.c in this series of commits. eval.c will soon be
obsolete and I will deal with ex_.c in later PRs.
|
|
|
|
|
| |
This variable only existed for the old SIGQUIT handler. Now it's no longer
necessary, especially when Neovim stops being a terminal program.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
- Rename to `os_call_shell`
- Use another entry point for libuv default event loop
- Fix the `call_shell` reference in misc2.c
|
|
|
|
|
| |
The only exception is SIGINT, which will set `got_int` directly. This will be
necessary for the new implementation of `mch_call_shell`
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This is mostly a revert of 477031c03b2c525b117fae8a9b61c98245a06908.
Now that we are not setting `CMAKE_C_FLAGS`, the check can work
correctly and it helps `pcc` (portable c compiler) make it further
along--though it still doesn't produce usable results (see #427 for the
details).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all signal handling code from os_unix.c to os/signal.c. Now signal
handling is done like this:
- Watchers for signals are registered with libuv default event loop
- `event_poll` continuously calls `poll_uv_loop` to produce events until it
receives user input, SIGINT or a timeout
- Any signals received in `poll_uv_loop` will push events to a queue that is
drained and processed by `event_poll`
Signals aren't handled directly in the libuv callback to avoid recursion in the
event loop(which isn't supported by libuv).
The same principle will apply to other events in the future: Push to a queue
from a libuv callback and drain it from `event_poll`
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The SHELL_* defines are the bitflags that can be passed to `mch_call_shell`.
The enum is defined in 'os/shell.h', where all shell-related functions will
eventually be defined.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Add const.
* Fix conditions (move && from end to start of line).
* Use int32_t instead of long.
* Use //-style comments.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This feature was accidentally removed when doing the initial import from vim. It
makes vim use pipes instead of temporary files for filtering buffers through
shell commands.
I found that this was missing when looking for references of
SHELL_READ/SHELL_WRITE outside mch_call_shell`.
When `mch_call_shell` is reimplemented on top of libuv process management
facilities, pipes will always be used for communication with child processes so
it makes sense to enable the feature permanently.
|
|
|
|
|
| |
This enum doesn't need to be public since `event_poll` is only interested in
user input(but other events may be handled by libuv callbacks).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The functions `mch_inchar`, `mch_breakcheck`, `mch_char_avail` were
reimplemented on top of libuv. Here's how it works:
- When Neovim needs to wait for characters, it will transfer control to libuv
event loop.
- When the libuv event loop gets user input, it will transfer control back to
Neovim
- Neovim uses the `input_read` function to get the actual data read by libuv.
With this scheme its possible to keep Neovim single-threaded while enjoying the
benefits provided by libuv.
This commit leaves SIGWINCH broken for now
|
|
|
|
|
| |
Needed to temporarily move two static variables from os_unix.c to 'globals.h'
as those are shared by other functions still in os_unix.
|
| |
|
|
|
|
|
|
| |
* Move vim_fname from misc1 to os/fs:os_file_exists.
* Add unit tests for os_file_exists.
* Replace misuse of mch_getperm with os_file_exists.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
As described in Google's style guide, the basis for Neovim's
> All of a project's header files should be listed as descendants of the
> project's source directory without use of UNIX directory shortcuts .
> (the current directory) or .. (the parent directory).
Add src as an include directory to facilitate this.
|
| |
|
|
|
|
|
|
| |
buf in mch_dirname().
The copied error message is NUL-terminated.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* Add const specifiers, update comments, add assert.
* Move os_unix.moon tests to os/fs.moon + clean tests.
* Add uv_fs_req_cleanup call.
* Add tests with absolute paths to mch_isdir.
* Add to_cstr to test/unit/helpers.moon and fix respective unit tests.
|