Commit Graph

8225 Commits

Author SHA1 Message Date
Florian Walch
1bbf8c4ed2 Update German translation: Sync to 9f1b9726fb. 2014-07-01 17:25:58 -04:00
Eduardo Elias Ferreira
e5c4b520a2 Update pt_BR translation: Improve translations.
[ci skip]
2014-07-01 14:51:14 -04:00
Eduardo Elias Ferreira
8536d743ff Update pt_BR translation: Sync to a321480342 2014-07-01 14:51:14 -04:00
Felipe Oliveira Carvalho
5ed74cfb7c Introduce ga_append_via_ptr() and GA_APPEND_VIA_PTR()
Similar to GA_APPEND(). Replaces this pattern:

    ga_grow(&ga, 1);
    item_type *p = ((item_type *)ga.ga_data) + ga.ga_len;
    p->field1 = v1;
    p->field2 = v2;
    ga.ga_len++;
2014-06-30 03:57:50 -04:00
Felipe Oliveira Carvalho
45e7814e6a Introduce GA_APPEND()
This macro is used to append an element to a growable array. It replaces this
common idiom:

   ga_grow(&ga, 1);
   ((item_type *)ga.ga_data)[ga.ga_len] = item;
   ++ga.ga_len;
2014-06-30 03:57:50 -04:00
Felipe Oliveira Carvalho
be3a4b6ca8 ga_growsize should be >= 1
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
2014-06-30 03:57:50 -04:00
Justin M. Keyes
d723e7fd61 keep statusline within window width. @oni-link fix #858
PR #866
ref #858
2014-06-29 15:25:06 -04:00
Nicolas Hillegeer
8c51804d52 libcall: remove libcall ifdefs
Remove all the legacy code that related to mch_libcall in some way.
os_libcall is implemented on top of libuv now.
2014-06-28 14:44:17 -04:00
Nicolas Hillegeer
bbb649ac69 os: remove legacy mch_libcall
Remove as much leftover cruft as possible. Tried to see which globals are
now not used anymore.
2014-06-28 14:44:16 -04:00
Nicolas Hillegeer
99163c9f13 os: implement VimL libcall with {mch,os}_libcall
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.
2014-06-28 14:42:59 -04:00
Stefan Hoffmann
147ab48d1c FileID: remove CHECK_INODE macro 2014-06-27 13:59:29 +02:00
Stefan Hoffmann
cc02c3537d FileID: remove last use of st_ino in memline.c
* 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
2014-06-27 13:59:29 +02:00
Stefan Hoffmann
a0394f5e77 FileID: make os_stat() static 2014-06-27 13:59:29 +02:00
Stefan Hoffmann
de35948960 FileID: refactor os_unix.c to use FileID 2014-06-27 13:59:29 +02:00
Stefan Hoffmann
21af178b14 FileID: refactor path.c to use FileID 2014-06-27 13:59:29 +02:00
Stefan Hoffmann
7340f619d7 FileID: refactor if_cscope.c to use FileID 2014-06-27 13:59:29 +02:00
Stefan Hoffmann
d3257c4ddf FileID: refactor file_search.c to use FileID 2014-06-27 13:59:29 +02:00
Stefan Hoffmann
fc2a668c7c FileID: refactor ex_cmds2.c to use FileID 2014-06-27 13:59:28 +02:00
Stefan Hoffmann
a294a0e1c5 FileID: refactor buffer.c to use FileID 2014-06-27 13:59:28 +02:00
Stefan Hoffmann
d8ec5ef88d FileID: remove INVALID_DEVICE_ID macro 2014-06-27 13:59:28 +02:00
Stefan Hoffmann
4a22fb06b9 FileID: implement FileID struct
`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.
2014-06-27 13:59:28 +02:00
Thiago de Arruda
296da85198 channel/msgpack_rpc: Refactor API dispatching
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
2014-06-24 13:02:24 -03:00
Thiago de Arruda
bc0380038e channel/msgpack_rpc: Refactor to better split functions across modules
Move validation/conversion functions and to msgpack_rpc_helpers to separate
those from the functions that are used from the channel module
2014-06-24 13:02:24 -03:00
Thiago de Arruda
ea7a389ec7 channel: Implement the 'channel_send_call' function
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.
2014-06-24 13:02:24 -03:00
Thiago de Arruda
09605cec03 channel/msgpack_rpc: Refactor msgpack_rpc_notification/serialize_event
- 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
2014-06-24 13:02:24 -03:00
Thiago de Arruda
c0b0bd07fd channel: Extract function for sending errors that are not responses 2014-06-24 13:02:24 -03:00
Thiago de Arruda
c8297e462a channel: Extract 'channel_write' function 2014-06-24 13:02:24 -03:00
Thiago de Arruda
0dea2682dc job: Add a maxmem parameter to job_start
The value is forwarded to it's own WStream instance
2014-06-24 13:02:24 -03:00
Thiago de Arruda
c722e22ee6 wstream: Make wstream_write consider the return value from uv_write 2014-06-24 13:02:23 -03:00
Thiago de Arruda
30fc6a4fd1 wstream: Use a default value of 10mb for maxmem when 0 is passed 2014-06-24 13:02:23 -03:00
Thiago de Arruda
11916b6b59 wstream: Refactor buffer memory management
- Extract code to release WBuffer instances into `release_wbuffer`
- Fix memory leak when wstream_write returns false
2014-06-24 13:02:23 -03:00
Thiago de Arruda
0fd46ae8f0 job: Fix vimscript wrapper by returning when an invalid id is passed 2014-06-24 13:02:23 -03:00
Thiago de Arruda
ef4c5ccb21 event: Decouple user input checks from event_poll
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.
2014-06-24 13:02:23 -03:00
Thiago de Arruda
b00a37544c event: Bail out of event_poll when any event is processed
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
2014-06-24 13:02:23 -03:00
Pavel Platto
7a67828630 Use generated declarations in cursor.h #849 2014-06-20 02:44:11 -04:00
oni-link
90385163d5 coverity/15010: Remove dead code. #829
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.
2014-06-20 02:41:14 -04:00
oni-link
4ccf1125ff vim-patch:7.4.303 #818
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
2014-06-20 02:38:29 -04:00
oni-link
c388737957 vim-patch:7.4.302 #817
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
2014-06-20 02:34:39 -04:00
oni-link
02d935729f vim-patch:7.4.301 #816
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
2014-06-20 02:31:21 -04:00
oni-link
937c78fe2e vim-patch:7.4.298 #815
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
2014-06-20 02:28:51 -04:00
Will Stamper
3141c02c02 coverity/68215: removed failed variable + dead code from f_readfile #860 2014-06-18 23:57:05 -04:00
Nikolay Orlyuk
ec72b7adc7 spatch to drop check after alloc/lalloc/xmalloc #690 2014-06-18 19:21:01 -04:00
ZyX
24a08b32ab test1.in is not a test and it must be run always
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.
2014-06-18 16:21:11 -04:00
Thiago de Arruda
a7d027c8ab api: Add helper macros for dealing with API type casts 2014-06-18 11:36:08 -03:00
Thiago de Arruda
caf2fb8480 api: Enable usage of Arrays and Dictionaries as [k]vectors
- Rename a/n/m to items/size/capactity in kvec.h
- Add capactity field to Arrays/Dictionaries
2014-06-18 11:36:08 -03:00
Thiago de Arruda
20fda27cda api: Change type of event data to Object from typval_T 2014-06-18 11:36:07 -03:00
Thiago de Arruda
5aca2a6cd8 api: Rename find_{buffer,window,tabpage}
They were renamed to find_{buffer,window,tabpage}_by_handle to avoid conflicts
with existing functions of the same name.
2014-06-18 11:36:07 -03:00
Thiago de Arruda
0621a6eaa5 events: Refactor how events are queued for processing
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.
2014-06-18 11:36:07 -03:00
Thiago de Arruda
05bf7808e0 events: Refactor event_poll to use stack-allocated timer handles 2014-06-18 11:36:07 -03:00
Thiago de Arruda
4cb5ce3c52 channel: Make channel_{un}subscribe abort the program for invalid ids
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.
2014-06-18 11:36:07 -03:00