Commit Graph

1187 Commits

Author SHA1 Message Date
Justin M. Keyes
e4abb9e09a Merge #830 'GA_APPEND() and GA_APPEND_VIA_PTR()' 2014-06-30 03:57:59 -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
Justin M. Keyes
2ddeb74202 Merge #802 'implement VimL libcall with os_libcall' 2014-06-28 14:44:34 -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
Justin M. Keyes
2fcc07892f Merge #775 'Implement FileID struct' 2014-06-28 03:24:35 -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
John Szakmeister
8a85b37253 Merge #887 'Fix #867: cmake doesn't issue -isystem for versioned gcc' 2014-06-27 06:58:46 -04:00
John Szakmeister
3b3811b165 Fix #867: cmake doesn't issue -isystem for versioned gcc
CMake purposefully disables the use of the `-isystem` flag on Apple
platforms, but it's overly blunt with the detection.  Apple's compilers
have supported the flag since at least 10.4.  Let's force the switch to
be on when gcc/g++ is detected on an Apple platform to reduce the
warnings out of the msgpack-related bits.
2014-06-27 06:58:46 -04:00
John Szakmeister
b083c03462 Merge pull request #844:
'Fix #838: build with "USE_BUNDLED=OFF" fails to find dependencies'
2014-06-27 06:53:29 -04:00
John Szakmeister
b235793dac Fix #838: build with "USE_BUNDLED=OFF" fails to find dependencies
Stop forcing some platform setting that are really intended to be used
for Travis CI.  Under other systems, like Arch Linux, it prevents
dependencies from being correctly located.
2014-06-27 06:52:59 -04:00
Justin M. Keyes
b17d9691a2 Add LICENSE. fix #878. PR #883
- change to Apache 2.0
- include Vim license in LICENSE
- upate README
2014-06-26 18:54:33 -04:00
Thiago de Arruda
9f1b9726fb Merge pull request #872 'Add support for client-side RPC' 2014-06-24 13:47:36 -03: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
Justin M. Keyes
e1264412f8 update style guide URL 2014-06-23 17:44:12 -04: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
Justin M. Keyes
59fc9e3aec Merge #824 'Doxygen neovim.org theme' 2014-06-19 17:20:21 -04:00
Stefan Hoffmann
f02a725e22 update customdoxygen.css for doxygen 1.8.7
some icon images in the html are replaced with css.
2014-06-19 11:53:57 +02:00
Stefan Hoffmann
c0a6c04f08 update theme to match neovim.org 2014-06-19 11:53:57 +02:00