Commit Graph

2141 Commits

Author SHA1 Message Date
Marco Hinz
c1a3d289d6 Eval: do not join a list if it's empty anyway #2441
This spares some work and also prevents list_join() from calling ga_init()
with a growsize of 0 which would lead to the nvimlog being littered with:

  [warning @ ga_set_growsize:64] 17675 - trying to set an invalid ga_growsize: 0

Also in Vim 7.4.702
  5216f767d4
2015-04-16 20:15:31 -04:00
John Szakmeister
52e995509f Merge pull request #2353 from jszakmeister/fix-unused-var-warnings-in-release
Fix several unused variable warnings in the release build.
2015-04-16 08:45:16 -04:00
John Szakmeister
bae1e05fc8 Fix several unused variable warnings in the release build.
Reviewed-by: Justin M. Keyes <justinkz@gmail.com>
Reviewed-by: Eliseo Martínez <eliseomarmol@gmail.com>
2015-04-16 08:43:20 -04:00
Scott Prager
b47ea5fcde Merge pull request #2331 from splinterofchaos/serverlisten
vimL: serverlisten({addr}), list(), and stop({addr})
2015-04-14 15:45:39 -04:00
Scott Prager
296719428a eval: learn serverstart, list, and close().
Implement functions for spawning, destroying, and listing active
servers, and add server_address_list() to msgpack_rpc/server.c for the
serverlist() vimL function.
2015-04-14 15:31:04 -04:00
Scott Prager
4a66c48d8b msgpack_rpc/server.c: Use a garray over a kmap.
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
2015-04-14 15:20:50 -04:00
Rui Abreu Ferreira
71487a935e Implement os_unsetenv()
- In UNIX systems where unsetenv() is available, it is used. Otherwise
  the variables are set with the empty string.
- New check HAVE_UNSETENV for unsetenv()
- Added unit test to env_spec.lua
2015-04-14 15:20:50 -04:00
Scott Prager
920e5905d8 channel: recognized nvim-style errors 2015-04-13 10:20:42 -04:00
Scott Prager
676133aa9b msgpack: Allow notifications to execute commands.
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 <>
2015-04-13 10:20:42 -04:00
Scott Prager
48c5b85fb4 object_to_vim: Recognize buffers, windows, tabpages. 2015-04-13 10:20:42 -04:00
Thiago de Arruda
8a1a9b9558 deps: Add jemalloc as an optional dependency
Jemalloc will be used if the cmake option `USE_JEMALLOC` is enabled(which is the
default). To avoid trouble with clang's ASAN, it is disabled by default if the
`SANITIZE` option is enabled.

Since jemalloc has thread cache for small objects, it fills the gap created by
removing klib memory pools.

The `xstrdup` funciton(memory.c) had to be reimplemented on top of `xmalloc` to
make it work with a custom allocator.
2015-04-13 08:22:59 -03:00
Thiago de Arruda
34c48aaf12 memory: Add free wrapper and refactor project to use it
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.
2015-04-13 08:22:44 -03:00
Thiago de Arruda
ba10e311bd memory: Replace klib memory pools by malloc/free
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).
2015-04-12 17:20:24 -03:00
Thiago de Arruda
27b5ef3975 eval: Fix memory deallocation of JobEvent
This causes a "read after free" error when kmp_free is replaced by `free`.
2015-04-12 17:20:24 -03:00
Mark Bainter
0248c75bc1 remove char_u: vim_version_dir #2414
See: #459
2015-04-12 16:14:45 -04:00
Mark Bainter
917ba54ff5 refactor remove_tail() function to no longer use char_u #2413
See #459
2015-04-12 16:13:22 -04:00
Marco Hinz
fb6e931268 Remove obsolete CENT macro #2397
The CENT macro was set condionally depending on the FEAT_GUI constant that was
removed a long time ago.

Other small refactorings:

  - remove obsolete TERM= flags
  - sort and indent lines in array for readability
  - 'Conceal' and 'WildMenu' were moved from highlight_init_{dark,light}[]
    to highlight_init_both[] since the same values were used anyway
2015-04-12 11:00:11 -04:00
Mark Bainter
675e363316 Refactor default_vim{,runtime}_dir to use char type. #2375
See: #459
Reviewed-by: Justin M. Keyes <justinkz@gmail.com>
Reviewed-by: Eliseo Martínez <eliseomarmol@gmail.com>
2015-04-12 10:52:51 +02:00
Justin M. Keyes
1e767ad96f fix: segfault in ml_recover() if swap file not found
- To reproduce: ":recover non_existent_swapfile"
- Regression: 00f18e2e09
2015-04-12 01:17:45 -04:00
Justin M. Keyes
813690bb68 fix: segfault in recover_names(): must not concat full path
- regression by 42f1bd9b22
- closes #1836
2015-04-12 01:14:54 -04:00
Justin M. Keyes
2275297f4a test: migrate legacy test 78 2015-04-12 01:02:58 -04:00
Justin M. Keyes
86ee88163e passing-by: mark non-null return; remove invalid OOM check.
remove some #ifdef noise
2015-04-12 01:02:58 -04:00
Marco Hinz
e4975f82c9 Expand :profile's filename #2390
vim_strsave() is replaced by expand_env_save_opt(), which expands ~ for
convenience:

    :profile start ~/.nvim/prof.log

Prior to this change you had to specify an absolute path.
2015-04-11 19:22:49 -04:00
Michael Reed
5b390395e6 Merge pull request #2404 from Pyrohh/coverity-108870
[RFC] coverity/108870: Missing break in switch
2015-04-11 18:05:06 -04:00
Eliseo Martínez
95d6f4416e coverity/{13738,13739,68853,13717,13720,13716,68854,13718,13721}: FP.
All these issues are false positives that result from coverity's
inability to properly follow arithmetic implications in expressions
using some macros. Redefining macros another way to make arithmetic
implications clearer fixes the issues.
2015-04-11 22:34:57 +02:00
Marco Hinz
0e65962a68 Remove all references to JobActivity
The JobActivity event got replaced by callback functions provided to
jobstart() or termopen().

It got removed here:

6e7757ad51
2015-04-11 18:32:18 +02:00
Thiago de Arruda
ccd42e81c8 eval: Fix jobwait()
- Properly save job event deferring state for recursive calls
- Disable breakcheck while running. Breakcheck can invoke job callbacks
  in unexpected places.
2015-04-11 08:46:59 -03:00
Thiago de Arruda
17db7f1e14 eval: Fix segfault caused by passing invalid callback to jobstart 2015-04-11 08:46:59 -03:00
Björn Linse
a6487ae9cb ops.c: cleanup of get_yank_register 2015-04-11 11:14:22 +02:00
Björn Linse
9978a01faa clipboard: fix "" register not updated when clipboard=unnamed
Helped-By: Scott Prager <splinterofchaos@gmail.com>
2015-04-11 11:11:52 +02:00
Björn Linse
941b02af4c clipboard: adjust v:register when clipboard=unnamed
Helped-By: Nicolas Hillegeer <nicolas@hillegeer.com>
Helped-By: Michael Reed <m.reed@mykolab.com>
2015-04-11 11:11:52 +02:00
Michael Reed
98f976b861 coverity/108870: Missing break in switch 2015-04-10 22:12:29 -04:00
Michael Reed
95b7059d45 Remove unused 'if_[language].txt': Review 2015-04-10 16:38:11 -04:00
Michael Reed
5bc151c2a4 Remove unused 'if_[language].txt': Clean up
Regarding |script-here|: despite being a language agnostic piece of
advice, it was in `if_perl.txt`. Regardless, we now only have one
support for one legacy plugin interface, so put it in `if_pyth.txt`
2015-04-10 16:38:11 -04:00
Michael Reed
ea8325024e Bring E319 (cmd not available) in line with E519 (opt not available) 2015-04-10 16:38:11 -04:00
Michael Reed
baba9f7096 Clarify that nvim has no built-in GUI 2015-04-10 16:38:10 -04:00
Alexey Shmalko
6139c72251 coverity/{108271,108272,108273}: add fallthrough annotation #2362
Signed-off-by: Michael Reed <m.reed@mykolab.com>
2015-04-10 02:05:48 -04:00
David Bürgin
42af7daa25 mark.c: Remove JUMPLIST_ROTATE #2376
JUMPLIST_ROTATE is never defined, and the feature is not popular.
2015-04-09 11:21:51 -04:00
Marco Hinz
cd7b910e81 Add new highlight groups TermCursor/TermCursorNC
These highlight groups replace the old mechanism of setting:

  - {g,b}:terminal_focused_cursor_highlight
  - {g,b}:terminal_unfocused_cursor_highlight
2015-04-09 16:38:32 +02:00
Scott Prager
93a3e331a3 event: Only process if event_init has been run.
Reported by @fourjay, a codepath that causes event_poll() to run before
event_init() will trigger a segfault as the events list will not have
been initialized. Exiting immediately from event_init() causes nvim to
hang, so just exit before running the events.

fixes #2339
2015-04-08 23:18:16 -04:00
Scott Prager
edbc9e6538 eval: do not assume a vval.v_string is nonnull.
In the fallowing functions, use get_tv_string() to safely avoid a NULL
pointer dereference.
  * rpcstart
  * rpcrequest
  * rpcnotify
  * jobstart

fixes #2321
2015-04-08 23:18:16 -04:00
Scott Prager
41ce69811a system(): Return an empty string if no output.
fixes #2286
2015-04-08 23:18:16 -04:00
Michael Reed
0f6e25a9e4 messages: Update common instances of Vim to Nvim #2031 2015-04-08 23:05:39 -04:00
Florian Walch
04e09ba742 Merge pull request #1805 from fwalch/vim-7.4.399
vim-patch: Port parts of Vim 7.4.399.
2015-04-09 00:02:09 +03:00
Scott Prager
e1bac3b840 Merge pull request #2346 from splinterofchaos/fix-terminal
[RFC] terminal: Handle loss of focus in event loop.
2015-04-08 12:27:52 -04:00
Florian Walch
dea2731184 vim-patch: Port parts of Vim 7.4.399.
Resolves #1753.

https://code.google.com/p/vim/source/detail?r=v7-4-399

Reviewed-by: Felipe Oliveira Carvalho <felipekde@gmail.com>

Helped-by: David Bürgin <676c7473@gmail.com>
Helped-by: Scott Prager <splinterofchaos@gmail.com>
Helped-by: Michael Reed <m.reed@mykolab.com>
Helped-by: Felipe Oliveira Carvalho <felipekde@gmail.com>
2015-04-08 18:33:54 +03:00
oni-link
5f98c32725 event.c: Simplify timer use in event_poll()
event_poll() always leaves the libuv I/O loop after one iteration. The
duration for how long the loop polls for I/O is given by the shortest
timeout of all active timers. Is no timer active, I/O is/could be polled
indefinitely.

To make sure our timer is still active when I/O polling begins,
a prepare handle is used to start the timer right before the polling.

But by only using a timer that restarts after its timeout was reached,
we also can assure that polling is done with (nearly) the same finite
timeout.

For a short explanation how the I/O loop is working, see
http://docs.libuv.org/en/latest/design.html#the-i-o-loop.
2015-04-08 09:46:14 -03:00
Eliseo Martínez
3c57f5a0e1 Fix warnings: window.c: close_last_window_tabpage(): Np deref: RI.
Problem    : Dereference of null pointer @ 1769.
Diagnostic : Real issue.
Rationale  : It seems buffer could be null. Not sure, though.
Resolution : Check for buffer null.
             This resolution was chosen as it will always work.
             But it could be that buffer can't really be null at that
             point. autocmd_win is ruled out by close_window, so that
             can't be the case. I'm not sure if other windows without
             buffers are possible, so leaving it this way.
             If it's confirmed buffer can't be null, resolution through
             an assert would be possible and this would be FP, not RI.
2015-04-07 20:04:34 -04:00
Eliseo Martínez
af8adc2d8c Fix warnings: terminal.c: get_config_int(): Dead init: RI.
Problem    : Dead initialization @ 1119.
Diagnostic : Real issue.
Rationale  : `obj` is immediately assigned another value through
             GET_CONFIG_VALUE macro.
Resolution : Don't initialize.

Helped-by: oni-link <knil.ino@gmail.com>
2015-04-07 20:04:34 -04:00
Eliseo Martínez
1b4dbdf45b Fix warnings: terminal.c: get_config_string(): Dead init: RI.
Problem    : Dead initialization @ 1109.
Diagnostic : Real issue.
Rationale  : `obj` is immediately assigned another value through
             GET_CONFIG_VALUE macro.
Resolution : Don't initialize.

Helped-by: oni-link <knil.ino@gmail.com>
2015-04-07 20:04:33 -04:00