aboutsummaryrefslogtreecommitdiff
path: root/src/os/input.c
Commit message (Collapse)AuthorAge
* Introduce nvim namespace: Move files.Eliseo Martínez2014-05-15
| | | | | | Move files from src/ to src/nvim/. - src/nvim/ becomes the new root dir for nvim executable sources. - src/libnvim/ is planned to become root dir of the neovim library.
* Replace explicit uv_guest_handle(fd) == UV_TTY by os_isattyPavel Platto2014-04-20
|
* Added os_isattyPavel Platto2014-04-20
|
* Create EventType for RStream readingThiago de Arruda2014-04-18
| | | | | | | RStream will be the main way Neovim receives asynchronous messages, so it is best to have a specialized EventType for it. A new flag parameter was added to `rstream_new` which tells the RStream instance to defer event handling for later with KE_EVENT instead of handling it directly from libuv callback.
* Handle special KE_EVENT case where maxlen < 3Thiago de Arruda2014-04-16
| | | | | | | | | | Possible bug reported by @oni-link [here](https://github.com/neovim/neovim/pull/485/files#r11664573). It was handled by doing a circular walk through a key buffer and saving the index between calls with a static variable. Also replaced some `char_u` occurrences by `uint8_t` and removed unused headers in input.c module.
* Refactor input module to use RStream classThiago de Arruda2014-04-16
|
* Bring neovim up to date with recent libuv changesWill Tange2014-04-14
| | | | | | | | | As of v0.11.23 libuv's uv_timer_cb, uv_async_cb, uv_prepare_cb, uv_check_cb and uv_idle_cb no longer require a status parameter (this went unused in the first place). Bump third-party dependency `libuv` up to 0.11.23 and remove the extra parameters from the callbacks.
* Define special key for asynchronous eventsThiago de Arruda2014-04-08
| | | | | | | | | | | | | | | | | | | | | | K_EVENT/KE_EVENT are used to signal any loop that reads user input(scattered across normal.c edit.c , ex_getln.c and message.c) of asynchronous events that were not initiated by the user. Representing non-user asynchronous events as special keys has the following advantages: - We reuse the normal vim redrawing code. As far as the rest of the code in edit.c/normal.c is concerned, it's just the user pressing another key. - Assume less about vim tolerance for "out-of-band" modifications to its internal state. - We still have a very complex codebase and it's hard to predict what bugs may be introduced by these changes. With this we implement asynchronicity in a way that will be more "natural" to the editor and has less chance of causing unpredictable behavior. As the code is refactored, we will be able to treat user input as an 'event type' and not the other way around(With this we are treating arbitrary events as a special case of user input).
* Fix/add more files with to clint-files.txtThiago de Arruda2014-04-08
|
* Move signal handling to libuv event loopThiago de Arruda2014-04-01
| | | | | | | | | | | | | | | | | 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`
* Address clint warnings and other style issues.Thomas Wienecke2014-03-27
| | | | | | | * Add const. * Fix conditions (move && from end to start of line). * Use int32_t instead of long. * Use //-style comments.
* Rename mch_* functions to os_* in os module.Thomas Wienecke2014-03-27
|
* Make `EventType` enum private to input.cThiago de Arruda2014-03-27
| | | | | 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).
* Reimplement input functions on top of libuvThiago de Arruda2014-03-26
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