aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc
Commit message (Collapse)AuthorAge
...
* coverity/109019: fixing "Sizeof not portable"Chris Hall2015-05-08
| | | | | | | | | suspicious_sizeof: Passing argument 8UL /* sizeof (char const **) */ to function xcalloc and then casting the return value to char ** is suspicious. In this particular case sizeof (char const **) happens to be equal to sizeof (char const *), but this is not a portable as
* Fix a couple uninitialized variable warnings in the release build.John Szakmeister2015-04-18
| | | | | | Reviewed-by: Eliseo Martínez <eliseomarmol@gmail.com> Reviewed-by: Marco Hinz <mh.codebro@gmail.com> Reviewed-by: Björn Linse <bjorn.linse@gmail.com>
* Merge pull request #2331 from splinterofchaos/serverlistenScott Prager2015-04-14
|\ | | | | vimL: serverlisten({addr}), list(), and stop({addr})
| * eval: learn serverstart, list, and close().Scott Prager2015-04-14
| | | | | | | | | | | | Implement functions for spawning, destroying, and listing active servers, and add server_address_list() to msgpack_rpc/server.c for the serverlist() vimL function.
| * msgpack_rpc/server.c: Use a garray over a kmap.Scott Prager2015-04-14
| | | | | | | | | | | | | | | | | | | | | | | | Testing of server_start() and server_stop() found that after adding a server at address addr, pmap_has(addr) would always return true, but pmap_get(addr) would always return NULL. Since a client is only expected to have a small number of servers, an array may be more efficient than a hash map, anyway. Discussion: https://github.com/neovim/neovim/pull/1302#issuecomment-88487148
* | channel: recognized nvim-style errorsScott Prager2015-04-13
| |
* | msgpack: Allow notifications to execute commands.Scott Prager2015-04-13
|/ | | | | | | | | | Consider: `let vim = rpcstart('nvim', ['--embed'])` Allows `rpcnotify(vim, ...)` to work like an asynchronous `rpcrequest(nvim, ...)`. Helped-by: Michael Reed <m.reed@mykolab.com> Helped-by: Justin M. Keyes <>
* memory: Add `free` wrapper and refactor project to use itThiago de Arruda2015-04-13
| | | | | | We already use wrappers for allocation, the new `xfree` function is the equivalent for deallocation and provides a way to fully replace the malloc implementation used by Neovim.
* memory: Replace klib memory pools by malloc/freeThiago de Arruda2015-04-12
| | | | | | Klib pools were used to improve allocation efficiency for some small objects, but it is not a thread-safe approach. Thread safety in allocations will be required for implementing #2371).
* Fix a memory leak for WBuffers used in channel_write().oni-link2015-04-03
| | | | | | | channel_write() uses a ref-counted buffer for writing. This buffer should be released if it was used in "refcount" channel_write() calls. But calling channel_write() on a closed channel would return early and not decrease the refcount of the used buffer.
* Prevent too early sending of delayed notifications.oni-link2015-04-03
| | | | | | | | | | | | | | Notifications for a channel will be sent directly if there are no pending requests (for this channel). Otherwise notifications are queued for later sending. But in two cases a notification could be sent with pending requests: * Broadcasting a notification * A channel that has just finished its last pending request would call send_delayed_notifications() for all channels. To prevent this, every channel can now only send its own delayed notifications and broadcasting checks for pending requests.
* eval: Refactor vimscript job control APIThiago de Arruda2015-03-29
| | | | | | | | | | - Remove JobActivity autocmd and v:job_data variable - Simplify `jobstart` to receive: - An argument vector - An optional dictionary which may contain any of the current `jobstart` options plus `on_stdout`, `on_stderr` and `on_exit` callbacks. - Refactor and add more job tests - Update documentation
* doc: Misc. cleanupJustin M. Keyes2015-03-24
| | | | | | | | | | Add missing parentheses and whatnot, move dangling comment, etc. Some specific items worth mentioning: Fixed some references to non-existent tags, found via `make html` msgpack_rpc/channel.c: ELOG already prefixes each line with "error @ ..."
* Merge pull request #2144 from jszakmeister/fix-warning-in-releaseJohn Szakmeister2015-03-20
|\ | | | | Fix a couple warnings in the release build.
| * Avoid an unused variable warning in the release build.John Szakmeister2015-03-13
| |
* | ui: Replace cursor_{on,off} by busy_{stop,start}Thiago de Arruda2015-03-15
|/ | | | | | | | | | | | | | | | | | | | | | | | Switching cursor off is only necessary in two occasions: - When redrawing to avoid terminal flickering - When the editor is busy The first can now be handled by the TUI, so most calls to ui_cursor_off can be removed from the core. So, before this commit it was only necessary to switch the cursor off to notify the user that nvim was running some long operation. Now the cursor_{on,off} functions have been replaced by busy_{stop,start} which can be handled in a UI-specific way(turning the cursor off or showing a busy indicator, for example). To make things even more simpler, nvim is always busy except when waiting for user input or other asynchronous events: It automatically switches to a non-busy state when the event loop is about to be entered for more than 100 milliseconds. `ui_busy_start` can be called when its not desired to change the busy state in the event loop (As its now done by functions that perform blocking shell invocations).
* remote_ui: Fix error messages #2045Carlos Castillo2015-03-04
| | | | Make the error messages more precise and uniform.
* job: Refactor process spawning and startup argumentsThiago de Arruda2015-02-23
| | | | | | | | - process spawning was decoupled from the rest of the job control logic. The goal is reusing it for spawning processes connected to pseudo terminal file descriptors. - job_start now receives a JobOptions structure containing all the startup options.
* refactor: Remove term modules and termcap optionsThiago de Arruda2015-02-21
| | | | | | | | | | | | | | | - Removed term.c, term.h and term_defs.h - Tests for T_* values were removed. screen.c was simplified as a consequence(the best strategy for drawing is implemented in the UI layer) - Redraw functions now call ui.c functions directly. Updates are flushed with `ui_flush()` - Removed all termcap options(they now return empty strings for compatibility) - &term/&ttybuiltin options return a constant value(nvim) - &t_Co is still available, but it mirrors t_colors directly - Remove cursor tracking from screen.c and the `screen_start` function. Now the UI is expected to maintain cursor state across any call, and reset it when resized. - Remove unused code
* ui: Remove/adapt some old code for a big UI refactorThiago de Arruda2015-02-16
| | | | | | | | | | | | | - Remove abstract_ui global, now it is always active - Remove some terminal handling code - Remove unused functions - Remove HAVE_TGETENT/TERMINFO/TERMIOS/IOCTL #ifdefs - Remove tgetent/terminfo from version.c - Remove curses/terminfo dependencies - Only start/stop termcap when starting/exiting the program - msg_use_printf will return true if there are no attached UIs( messages will be written to stdout) - Remove `ex_winpos`(implement `:winpos` with `ex_ni`)
* coverity/{68484,68485}: Read from pointer after free: RI.Thiago de Arruda2015-02-11
| | | | | | | | | Problem : Read from pointer after free @ {242, 391}. Diagnostic : Real issues. Rationale : Channel gets indeed freed on error case, producing incorrect accesses to freed pointer later on. Resolution : Implement reference counting mechanism to know when to free channel.
* build: upgrade msgpack-c #1900Michael Reed2015-02-09
| | | | | | | closes #1899 closes #1967 refs https://github.com/msgpack/msgpack-c/pull/194
* Fix CID #102150Jack Danger Canty2015-01-22
| | | | | | | Don't attempt to write an error message to a channel that may have been closed and freed. [CID #102150](https://scan8.coverity.com/reports.htm#v22612/p10672/fileInstanceId=3625286&defectInstanceId=1525721&mergedDefectId=102150)
* ui: Implement set_{title,icon}Thiago de Arruda2015-01-14
|
* channel: Make pending_requests a field of the Channel typeThiago de Arruda2015-01-13
| | | | | This is required to send redraw notifications while a msgpack-rpc call is being performed by another channel.
* ui: Fix `:suspend` command for remote UIsThiago de Arruda2015-01-13
| | | | | Forward the command to the remote UI and flush immediately. The semantics/handling is UI-specific.
* channel: Free channels created from libuv streamsThiago de Arruda2015-01-13
|
* ui: Add 'rgb' parameter to ui_attachThiago de Arruda2015-01-13
| | | | When set to false, nvim will send cterm color numbers with `highlight_set`.
* ui: Merge standout and reverse into one attributeThiago de Arruda2015-01-13
|
* ui: Fix ui resizing and change some method namesThiago de Arruda2015-01-13
|
* remote_ui: Move handler registration to remote_ui.cThiago de Arruda2015-01-13
| | | | Also disable deferral of attach_ui
* ui: Add update_fg/update_bg methodsThiago de Arruda2015-01-13
| | | | | It is necessary to notify the UI when the default background/foreground colors change in order to render correctly.
* Revert "[WIP] "abstract_ui" fixes and improvements"Justin M. Keyes2015-01-12
|
* channel: Make pending_requests a field of the Channel typeThiago de Arruda2015-01-12
| | | | | This is required to send redraw notifications while a msgpack-rpc call is being performed by another channel.
* ui: Reimplement `:suspend` command for remote UIs.Thiago de Arruda2015-01-12
| | | | | | - Remove suspend method from the UI protocol - Handle `:suspend` by disconnecting the last channel that sent a request to nvim.
* channel: Free channels created from libuv streamsThiago de Arruda2015-01-12
|
* ui: Add 'rgb' parameter to ui_attachThiago de Arruda2015-01-12
| | | | When set to false, nvim will send cterm color numbers with `highlight_set`.
* ui: Merge standout and reverse into one attributeThiago de Arruda2015-01-12
|
* ui: Fix ui resizing and change some method namesThiago de Arruda2015-01-12
|
* remote_ui: Move handler registration to remote_ui.cThiago de Arruda2015-01-10
| | | | Also don't defer attach_ui handling
* ui: Add update_fg/update_bg methodsThiago de Arruda2015-01-10
| | | | | It is necessary to notify the UI when the default background/foreground colors change in order to render correctly.
* msgpack-rpc: Add remote_ui moduleThiago de Arruda2014-12-08
| | | | | The remote_ui module is an implementation of the UI layer, and it attaches UI instances that redirect redraw notifications to connected clients.
* msgpack-rpc: Allow registration of handlers by other modulesThiago de Arruda2014-12-08
|
* channel.c: Fix for heap-use-after-freeoni-link2014-12-03
| | | | | | | | | ASAN detected this heap-use-after-free. A job started by channel_from_job() could terminate and result in a call to free_channel(), while channel_send_call() was still active/pending and accessing Channel elements. Original patch by @tarruda.
* Fix memory leak detected in PR 1510.oni-link2014-12-03
| | | | | LSAN/ASAN detected, on an error code path, that not all elements of a struct ChannelCallFrame were freed.
* channel: Improve error reporting for invalid responsesThiago de Arruda2014-11-18
|
* channel: Remove invalid free_channel callThiago de Arruda2014-11-18
| | | | | When a job fails to start, it will already call the exit_cb which takes care of freeing the channel.
* Mark some function arguments as [consumed] in the docs.oni-link2014-11-09
| | | | | The argument argv of job_start() and channel_from_job() will be freed. Mark them as such in the comments of this functions.
* msgpack-rpc: Close channel on invalid msgpack RPCRui Abreu Ferreira2014-11-07
| | | | | | - When an invalid msgpack RPC msg is received from a channel we now close that channel all calls on that channel fail with an error message.
* msgpack-rpc: Don't try to write into a closed channelRui Abreu Ferreira2014-11-07
|