aboutsummaryrefslogtreecommitdiff
path: root/src/nvim
Commit message (Collapse)AuthorAge
* ga_growsize should be >= 1Felipe Oliveira Carvalho2014-06-30
| | | | | | | | | | | I know it could be 0 sometimes. Running the tests with `assert(gap->ga_growsize > 0)` in ga_grow() crashes nvim while running the tests. - Add a setter for ga_growsize that checks whether the value passed is >=1 (log in case it's not) - log when ga_grow() tries to use a ga_growsize that's not >=1 - use GA_EMPTY_INIT_VALUE is many places
* keep statusline within window width. @oni-link fix #858Justin M. Keyes2014-06-29
| | | | | PR #866 ref #858
* libcall: remove libcall ifdefsNicolas Hillegeer2014-06-28
| | | | | Remove all the legacy code that related to mch_libcall in some way. os_libcall is implemented on top of libuv now.
* os: remove legacy mch_libcallNicolas Hillegeer2014-06-28
| | | | | Remove as much leftover cruft as possible. Tried to see which globals are now not used anymore.
* os: implement VimL libcall with {mch,os}_libcallNicolas Hillegeer2014-06-28
| | | | | | | | The old mch_libcall was removed from neovim. This is a partial reimplementation on top of libuv. It doesn't catch exceptions (windows) nor signals (unix) though, so it's quite a bit more prone to crashing if the loadable library throws an exception or crashes. Still, it should be fine for well-behaved libraries. Requested by @Shougo.
* FileID: remove `CHECK_INODE` macroStefan Hoffmann2014-06-27
|
* FileID: remove last use of `st_ino` in memline.cStefan Hoffmann2014-06-27
| | | | | | | * FileID can’t be used in memline.c, because the block0 is defined to use only a 32bit ino. * implemented `os_file_info_get_inode` * deprecated `os_file_info_get_inode
* FileID: make `os_stat()` staticStefan Hoffmann2014-06-27
|
* FileID: refactor os_unix.c to use `FileID`Stefan Hoffmann2014-06-27
|
* FileID: refactor path.c to use `FileID`Stefan Hoffmann2014-06-27
|
* FileID: refactor if_cscope.c to use `FileID`Stefan Hoffmann2014-06-27
|
* FileID: refactor file_search.c to use `FileID`Stefan Hoffmann2014-06-27
|
* FileID: refactor ex_cmds2.c to use `FileID`Stefan Hoffmann2014-06-27
|
* FileID: refactor buffer.c to use `FileID`Stefan Hoffmann2014-06-27
|
* FileID: remove `INVALID_DEVICE_ID` macroStefan Hoffmann2014-06-27
|
* FileID: implement `FileID` structStefan Hoffmann2014-06-27
| | | | | | | `FileID` should encapsulate `st_dev` and `st_ino`. It is a new abstraction used to check if two files are the same. `FileID`s will be embeded inside other struts like `buf_t` or `ff_visited_T`, where a full `FileInfo` would be to big.
* channel/msgpack_rpc: Refactor API dispatchingThiago de Arruda2014-06-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is how API dispatching worked before this commit: - The generated `msgpack_rpc_dispatch` function receives a the `msgpack_packer` argument. - The response is incrementally built while validating/calling the API. - Return values/errors are also packed into the `msgpack_packer` while the final response is being calculated. Now the `msgpack_packer` argument is no longer provided, and the `msgpack_rpc_dispatch` function returns `Object`/`Error` values to `msgpack_rpc_call`, which will use those values to build the response in a single pass. This was done because the new `channel_send_call` function created the possibility of having recursive API invocations, and this wasn't possible when sharing a single `msgpack_sbuffer` across call frames(it was shared implicitly through the `msgpack_packer` instance). Since we only start to build the response when the necessary information has been computed, it's now safe to share a single `msgpack_sbuffer` instance across all channels and API invocations. Some other changes also had to be performed: - Handling of the metadata discover was moved to `msgpack_rpc_call` - Expose more types as subtypes of `Object`, this was required to forward the return value from `msgpack_rpc_dispatch` to `msgpack_rpc_call` - Added more helper macros for casting API types to `Object` any
* channel/msgpack_rpc: Refactor to better split functions across modulesThiago de Arruda2014-06-24
| | | | | Move validation/conversion functions and to msgpack_rpc_helpers to separate those from the functions that are used from the channel module
* channel: Implement the 'channel_send_call' functionThiago de Arruda2014-06-24
| | | | | | | | This function is used to send RPC calls to clients. In contrast to `channel_send_event`, this function will block until the client sends a response(But it will continue processing requests from that client). The RPC call stack has a maximum depth of 20.
* channel/msgpack_rpc: Refactor msgpack_rpc_notification/serialize_eventThiago de Arruda2014-06-24
| | | | | | | | | | - Generalize some argument names(event type -> event name, event data -> event arg) - Rename serialize_event to serialize_message - Rename msgpack_rpc_notification to msgpack_rpc_message - Extract the message type out of msgpack_rpc_message - Add 'id' parameter to msgpack_rpc_message/serialize_message to create messages that are not notifications
* channel: Extract function for sending errors that are not responsesThiago de Arruda2014-06-24
|
* channel: Extract 'channel_write' functionThiago de Arruda2014-06-24
|
* job: Add a `maxmem` parameter to job_startThiago de Arruda2014-06-24
| | | | The value is forwarded to it's own WStream instance
* wstream: Make wstream_write consider the return value from uv_writeThiago de Arruda2014-06-24
|
* wstream: Use a default value of 10mb for `maxmem` when 0 is passedThiago de Arruda2014-06-24
|
* wstream: Refactor buffer memory managementThiago de Arruda2014-06-24
| | | | | - Extract code to release WBuffer instances into `release_wbuffer` - Fix memory leak when wstream_write returns false
* job: Fix vimscript wrapper by returning when an invalid id is passedThiago de Arruda2014-06-24
|
* event: Decouple user input checks from `event_poll`Thiago de Arruda2014-06-24
| | | | | | | | | | | | | | This was done to generalize the usage of `event_poll`, which will now return `true` only if a event has been processed/deferred before the timeout(if not -1). To do that, the `input_ready` calls have been extracted to the input.c module(the `event_poll` call has been surrounded by `input_ready` calls, resulting in the same behavior). The `input_start`/`input_stop` calls still present in `event_poll` are temporary: When the API becomes the only way to read user input, it will no longer be necessary to start/stop the input stream.
* event: Bail out of event_poll when any event is processedThiago de Arruda2014-06-24
| | | | | The loop condition was set to only exit when user input is processed, but we must exit on any event to properly notify `event_poll` callers
* Use generated declarations in cursor.h #849Pavel Platto2014-06-20
|
* coverity/15010: Remove dead code. #829oni-link2014-06-20
| | | | | | | In win_close_othertab: Code can never be reached because of a logical contradiction (CWE-561). Pointer tp cannot be NULL at this point, so conditional operator ? can be replaced with its second expression.
* vim-patch:7.4.303 #818oni-link2014-06-20
| | | | | | | | Problem: When using double-width characters the text displayed on the command line is sometimes truncated. Solution: Reset the string lenght. (Nobuhiro Takasaki) https://code.google.com/p/vim/source/detail?r=463ef551e9f62b63ac3f85f1f297b668b14bcd09
* vim-patch:7.4.302 #817oni-link2014-06-20
| | | | | | | | Problem: Signs placed with 'foldcolumn' set don't show up after filler lines. Solution: Take filler lines into account. (Olaf Dabrunz) https://code.google.com/p/vim/source/detail?r=df141c80ea3a1ffcbf82d05c1314675231fcfa75
* vim-patch:7.4.301 #816oni-link2014-06-20
| | | | | | | Problem: Still a scrolling problem when loading a session file. Solution: Fix off-by-one mistake. (Nobuhiro Takasaki) https://code.google.com/p/vim/source/detail?r=8cb42aa3c4957a543e5dffe307475dbab969612f
* vim-patch:7.4.298 #815oni-link2014-06-20
| | | | | | | Problem: Can't have a funcref start with "t:". Solution: Add "t" to the list of accepted names. (Yukihiro Nakadaira) https://code.google.com/p/vim/source/detail?r=156f891d520e93eab5d3ce02784660fb13a3b0d3
* coverity/68215: removed failed variable + dead code from f_readfile #860Will Stamper2014-06-18
|
* spatch to drop check after alloc/lalloc/xmalloc #690Nikolay Orlyuk2014-06-18
|
* test1.in is not a test and it must be run alwaysZyX2014-06-18
| | | | | test1.in generates files like small.vim, tiny.vim, mbyte.vim, mzscheme.vim, lua.vim which are then used by other tests. So it must be run always.
* api: Add helper macros for dealing with API type castsThiago de Arruda2014-06-18
|
* api: Enable usage of Arrays and Dictionaries as [k]vectorsThiago de Arruda2014-06-18
| | | | | - Rename a/n/m to items/size/capactity in kvec.h - Add capactity field to Arrays/Dictionaries
* api: Change type of event data to `Object` from `typval_T`Thiago de Arruda2014-06-18
|
* api: Rename find_{buffer,window,tabpage}Thiago de Arruda2014-06-18
| | | | | They were renamed to find_{buffer,window,tabpage}_by_handle to avoid conflicts with existing functions of the same name.
* events: Refactor how events are queued for processingThiago de Arruda2014-06-18
| | | | | | | | | | | | | | | | | | To make it possible reuse `event_poll` recursively and in other blocking function calls, this changes how deferred/immediate events are processed: - There are two queues in event.c, one for immediate events and another for deferred events. The queue used when pushing/processing events is determined with boolean arguments passed to `event_push`/`event_process` respectively. - Events pushed to the immediate queue are processed inside `event_poll` but after the `uv_run` call. This is required because libuv event loop does not support recursion, and processing events may result in other `event_poll` calls. - Events pushed to the deferred queue are processed later by calling `event_process(true)`. This is required to "trick" vim into treating all asynchronous events as special keypresses, which is the least obtrusive way of introducing asynchronicity into the editor. - RStream instances will now forward the `defer` flag to the `event_push` call.
* events: Refactor event_poll to use stack-allocated timer handlesThiago de Arruda2014-06-18
|
* channel: Make channel_{un}subscribe abort the program for invalid idsThiago de Arruda2014-06-18
| | | | | | These functions will never be called directly by the user so bugs are the only reason for passing invalid channel ids. Instead of returning silently we abort to improve bug detection.
* job: Refactor job_write to receive WBuffer instances.Thiago de Arruda2014-06-18
| | | | This was done to give more control over memory management to job_write callers.
* job: Add defer flag and setter methodThiago de Arruda2014-06-18
| | | | | This is has the same effect as the RStream 'defer' flag, but also works for the job's exit event.
* job: Refactor to use pointers instead of idsThiago de Arruda2014-06-18
| | | | | 'job_start' returns the id as an out paramter, and the 'job_find' function is now used by eval.c to translate job ids into pointers.
* rstream: Implement the rstream_set_defer functionThiago de Arruda2014-06-18
| | | | | This function will be used to temporarily change the `defer` flag on rstream instances.
* rstream: Rename RStream `async` flag to `defer`Thiago de Arruda2014-06-18
| | | | | The name `async` was not appropriate to describe the behavior enabled by the flag.