Commit Graph

2595 Commits

Author SHA1 Message Date
Hettomei
848a5e2e87 Macro cleanup: USE_FILE_CHOOSER 2015-07-17 21:40:38 -04:00
Hettomei
6d937315b6 Macro cleanup: FEAT_GUI_MOTIF 2015-07-17 21:40:38 -04:00
Hettomei
031758ad5c Macro cleanup: FEAT_GUI_W32 2015-07-17 21:40:37 -04:00
Hettomei
1b7dcb2f70 Macro cleanup: FEAT_GUI and ALWAYS_USE_GUI 2015-07-17 21:40:37 -04:00
Michael Reed
4d79edccdc Cleanup after #3007 #3020
'guioptions' is mentioned in the "Option Defaults" section of vim_diff,
and while its default did indeed change, it was only because the 't'
flag was removed.  To make that clear, move its reference to the
"Removed Features" section instead.

Remove stray instance of 't' flag from GO_ALL.  Most if not all of the
GO_* #defines are unused, but lets keep them for now as it's not clear
whether they won't be used by Nvim GUIs.
2015-07-17 17:36:38 -04:00
Felipe Morales
5e9f9a8756 spell: Defer &spell prompt until VimEnter. #3027
Closes #1551
2015-07-17 06:59:25 -04:00
Thiago de Arruda
aa9cb48bf0 job: Replace by a better process abstraction layer
- New libuv/pty process abstraction with simplified API and no globals.
- Remove nvim/os/job*. Jobs are now a concept that apply only to programs
  spawned by vimscript job* functions.
- Refactor shell.c/channel.c to use the new module, which brings a number of
  advantages:
  - Simplified API, less code
  - No slots in the user job table are used
  - Not possible to acidentally receive data from vimscript
- Implement job table in eval.c, which is now a hash table with unilimited job
  slots and unique job ids.
2015-07-17 00:32:07 -03:00
Thiago de Arruda
9d8d2b7fa8 server: Extract most logic into the new socket abstraction
- Move event loop code into event/socket
- Reimplement server.c on top of the new SocketWatcher class
- Adapt msgpack_rpc/channel.c
2015-07-17 00:19:55 -03:00
Thiago de Arruda
ac2bd02561 rstream/wstream: Unify structures and simplify API
- Simplify RStream/WStream API and make it more consistent with libuv.
- Move into the event loop layer(event subdirectory)
- Remove uv_helpers module.
- Simplify job/process internal modules/API.
- Unify RStream and WStream into a single structure. This is necessary because
  libuv streams can be readable and writable at the same time(and because the
  uv_helpers.c hack to associate multiple streams with libuv handle was removed)
- Make struct definition public, allowing more flexible/simple memory
  management by users of the module.
- Adapt channel/job modules to cope with the changes.
2015-07-17 00:19:55 -03:00
Thiago de Arruda
991d3ec1e6 event loop: New abstraction layer with refactored time/signal API
- Add event loop abstraction module under src/nvim/event. The
  src/nvim/event/loop module replaces src/nvim/os/event
- Remove direct dependency on libuv signal/timer API and use the new abstraction
  instead.
- Replace all references to uv_default_loop() by &loop.uv, a new global variable
  that wraps libuv main event loop but allows the event loop functions to be
  reused in other contexts.
2015-07-17 00:19:19 -03:00
Lucas Hoffmann
d88c93acf3 tests: Style improvements and Makefile fix for migrated test 60. #2975 2015-07-16 20:31:20 -04:00
Marco Hinz
1e03165074 Remove :tearoff #3007
This also removes the 't' flag from 'guioptions'.

Side effect: :term[inal] -> :te[rminal]

Closes #3003.
2015-07-15 22:03:35 -04:00
Felipe Morales
59784b91db vim-patch:7.4.688 #2941
```
updated for version 7.4.668
Problem:    Can't use a glob pattern as a regexp pattern.
Solution:   Add glob2regpat(). (Christian Brabandt)
```

https://code.google.com/p/vim/source/detail?r=v7-4-668
2015-07-14 14:25:54 -04:00
oni-link
9a72f6b955 terminal.c: Fix memory leak #2982
dict_set_value() returns the replaced Object in a dictionary. Here
the Object is unused and needs to be freed.
2015-07-14 00:37:48 -04:00
Fredrik Fornwall
e0b550b5f0 Remove dead WIFSTOPPED and WIFCONTINUED checks
These macros would never return true since the preceding waitpid() call
did not specify the WUNTRACED or WCONTINUED options (which is correct
since we only care for processes that exited here).

Besides removing dead code, this improves portability since WIFCONTINUED
is not defined on all platforms.
2015-07-13 23:12:31 -03:00
cztchoice
c80ebfff82 vim-patch:7.4.736 #2998
Problem:    Invalid memory access.
Solution:   Avoid going over the end of a NUL terminated string. (Dominique
            Pelle)

https://github.com/vim/vim/commit/v7-4-736
2015-07-11 22:38:17 -04:00
Nick Hynes
7475c1c0f7 api: return error when starting a slice out of bounds. 2015-07-11 18:18:25 -04:00
Nick Hynes
90b4276d67 api: return empty array when slicing out of bounds. 2015-07-11 18:17:36 -04:00
Lucas Hoffmann
98c022c329 tests: Migrate legacy test 62. 2015-07-11 00:47:49 +02:00
oni-link
b165145084 rbuffer: Fix for problems with escape input sequences.
If at least two escape sequences were read, the beginning of the
second sequence would be off by one and the sequence would be
misinterpreted.

An escape sequence could be split in two parts and be
misinterpreted, when saved in a ring buffer with wrap around.

Fixes #2936
2015-07-07 16:58:10 +02:00
Justin M. Keyes
3955ffa305 os/*defs: restore some comments and formatting. 2015-07-06 08:23:21 -04:00
Yamakaky
d4b4d7d0ec refactor: remove SYS_MENU_FILE (unused) 2015-07-06 08:23:21 -04:00
Yamakaky
2e46765849 Split os_unix_defs.h into os/ 2015-07-06 08:23:21 -04:00
Florian Walch
e949c2bd62 vim-patch:7.4.646 #2926
Problem:    ":bufdo" may start at a deleted buffer.
Solution:   Find the first not deleted buffer. (Shane Harper)

https://github.com/vim/vim/commit/v7-4-646
2015-07-06 15:09:32 +03:00
Michael Reed
36e3f4f4c4 doc: Remove refs to dos(16|32), win16, and win95
This is primarily low-hanging fruit; there are still many references to
things such as MS-DOS throughout (see os_dos.txt).
2015-07-05 11:45:40 -04:00
Justin M. Keyes
8eb3470147 MSan: Initialize buffer in spell_delete_wordlist. 2015-07-05 10:31:17 +03:00
Florian Walch
624630eff5 CMake: Enable EXITFREE for all *San. 2015-07-05 10:31:16 +03:00
Florian Walch
fe6bd8cae2 CMake: Add option for Clang TSan, rename option ASAN -> ASAN_UBSAN. 2015-07-05 10:31:16 +03:00
Florian Walch
bd9042b1a9 CMake: Add option for Clang MSan. 2015-07-05 10:31:16 +03:00
Michael Reed
f48c8d652c Remove VisualNOS highlight group remnants
Nvim hasn't ever had X11 integration, so this has was never needed.
2015-07-04 15:43:54 -04:00
Michael Reed
cadf93e6fc Remove 'guipty' references
Presumably due to tarruda's unifdefing, it was already a no-op at the
time of nvim's first commit.

It's probably better to be clear that it doesn't exist, as opposed to
users thinking `:set guipty` is doing something when it isn't.
2015-07-04 15:43:54 -04:00
Björn Linse
e9c9d44f65 clipboard: don't overwrite before pasting in visual mode. #2945
This occured when clipboard=unnamedplus and doing "+p in visual mode.
Fixes #2942.
2015-07-04 18:17:30 +02:00
Thiago de Arruda
0ef80b9c2b rbuffer: Reimplement as a ring buffer and decouple from rstream
Extract the RBuffer class from rstream.c and reimplement it as a ring buffer,
a more efficient version that doesn't need to relocate memory.

The old rbuffer_read/rbuffer_write interfaces are kept for simple
reading/writing, and the RBUFFER_UNTIL_{FULL,EMPTY} macros are introduced to
hide wrapping logic when more control is required(such as passing the buffer
pointer to a library function that writes directly to the pointer)

Also add a basic infrastructure for writing helper C files that are only
compiled in the unit test library, and use this to write unit tests for RBuffer
which contains some macros that can't be accessed directly by luajit.

Helped-by: oni-link <knil.ino@gmail.com>
Reviewed-by: oni-link <knil.ino@gmail.com>
Reviewed-by: Scott Prager <splinterofchaos@gmail.com>
Reviewed-by: Justin M. Keyes <justinkz@gmail.com>
Reviewed-by: Michael Reed <m.reed@mykolab.com>
2015-07-01 05:40:53 -03:00
oni-link
dcaf9c6bc3 rstream: Fix bug triggered when libuv doesn't use the allocated buffer
Libuv will return 0 to signal that the buffer allocated by `alloc_cb` wasn't
used, and in this case the read_cb should simply be ignored.
2015-07-01 05:40:53 -03:00
Thiago de Arruda
4f5b250d4e klib: Improve klist.h
- Add `kl_shift_at` macro and backing function. This can be used to shift
  elements at arbitrary positions. `kl_shift` is now defined on top of the new
  macro.
- Change shift/push API, now `kl_push` accepts an object as parameter and
  `kl_shift` returns the object instead of a status. An assertion against
  shifting at the end of a list(or empty lists) was added.
- Add `kl_iter` and `kl_iter_at` macros. `kl_iter_at` is for starting the
  iteration at arbitrary positions.
2015-07-01 05:40:53 -03:00
Thiago de Arruda
d6ed2b3a39 os/fs: Use module-local uv_loop_t instance
This event loop is just a stub instance used in synchronous libuv function
calls, it needs to be decoupled from the main event loop in order to run it from
another thread.
2015-07-01 05:40:53 -03:00
Thiago de Arruda
67e45e1852 test: Don't run legacy test 87
The python3 emulation layer doesn't work well enough to run that test. Also add
notes to test86/test87 explaining why.
2015-07-01 05:40:53 -03:00
Florian Walch
bfadf5a28b ASan: Fix "null pointer passed for argument declared to never be null". #2925
Arguments passed to xmemdupz() are sometimes NULL, but xmemdupz() has
FUNC_ATTR_NONNULL_ALL. Check pointers for NULL before calling
xmemdupz().

Resolves #2533.
2015-06-30 18:36:41 +03:00
Eliseo Martínez
f77f644998 Fix warnings: shell.c: do_os_system(): Nonnull passed null: FP. #2923
Problem    : Argument with 'nonnull' attribute passed null @ 203.
Diagnostic : False positive.
Rationale  : Problem is supposed to appear when argv[0] is NULL within
             do_os_system. But argv is being generated by
             shell_build_argv(), which implies argv[0] is the current
             value for 'shell' option. Now, option has a non-null
             default ($SHELL or "sh"), and, if set by the user, it can
             be empty, but not NULL. So, argv[0] can never be NULL.
Resolution : Assert shell_build_argv() postcondition.
2015-06-28 14:45:13 -04:00
oni-link
4aa6279a6b event_teardown(): retry uv_loop_close() instead of abort. #2903
abort() causes a bad exit; retry uv_loop_close() instead.

Before this change, this ruby script will cause nvim to abort() instead
of exiting cleanly:
```
  require 'open3'
  require 'base64'

  Open3.popen3('nvim --embed -u -NONE') {|stdin, stdout, stderr, wait_thr|
    # base64-encoded msgpack message for the vim_command "qa!".
    stdin.write Base64.decode64('kwKrdmltX2NvbW1hbmSRo3FhIQ==')
    puts wait_thr.value
  }
```

References ##2663
Closes #2466
Closes #2648

Helped-by: Rui Abreu Ferreira <raf-ep@gmx.com>
2015-06-25 22:26:28 -04:00
Björn Linse
3fcfd52422 clipboard: avoid redundant error message on clipboard_get failure .
Fixes #2712

Helped-By: Michael Reed <m.reed@mykolab.com>
2015-06-25 19:30:29 -04:00
Ismail Badawi
34a5efd7a9 Enable -Wconversion: menu.c #2885 2015-06-25 01:28:02 -04:00
Justin M. Keyes
f78bf64771 api: vim_set_var() should return the old value #2899
Closes #2816
2015-06-25 01:26:17 -04:00
Lucas Hoffmann
8c999a9d6c tests: Migrate legacy test 61.
This test is real time based as it also tests the `:earlier` and `:later`
commands with time arguments (using `:sleep`).  This can sometimes case the
test to fail on systems that are under heavy load or where the time interval
between creating the expected buffer state and the `:earlier` or `:later`
command that tries to jump to it changes.

To be system independent we use nvim's `:sleep` command and `wait()` for it in
the test suit.

The legacy vim test writes to test.out a lot with `:.w >>test.out`.  This
does currently not work in the lua test suite so the test is modernized to use
busted's assertions instead of the output file.

This test was treated special in the legacy Makefile but after the conversion
the related code can be removed.
2015-06-22 11:58:43 +02:00
Nathan Wilson
a743297be2 spell.c: fix "[s" search. #2813
Closes #2791
2015-06-21 14:38:17 -04:00
Felipe Morales
6ed6d8d910 defaults: remove "options" in 'sessionoptions'. #2871
Re: https://github.com/neovim/neovim/issues/2676
2015-06-21 03:20:35 -04:00
Felipe Morales
721ffd6b65 defaults: prefix "!" to 'viminfo' by default #2870
Re: https://github.com/neovim/neovim/issues/2676
2015-06-21 02:06:23 -04:00
Felipe Morales
8963285530 defaults: set 'tabpagemax' to 50 by default. #2869
Re: https://github.com/neovim/neovim/issues/2676
2015-06-21 02:02:00 -04:00
Felipe Morales
2c40d117e6 defaults: set 'display' to "lastline" by default.
Re: https://github.com/neovim/neovim/issues/2676
2015-06-21 01:48:53 -04:00
Lucas Hoffmann
7e7d78b2a6 doc: Fix some typos and trailing whitespace. #2875 2015-06-21 00:34:51 -04:00