Commit Graph

6089 Commits

Author SHA1 Message Date
Justin M. Keyes
fe5f38d8bd terminal: do not call redraw_buf_later() (#8306)
fixes #8290
2018-04-21 04:11:45 +02:00
Björn Linse
c8189096e8 ui_events: correct wrong argument order 2018-04-17 19:09:18 +02:00
Justin M. Keyes
7a13611ba2 Merge #8276 'startup: Make -s - read from stdin' 2018-04-17 10:33:36 +02:00
Justin M. Keyes
0cec184cd6 startup: ignore -X
closes #8285
2018-04-16 22:38:02 +02:00
Andrew Pyatkov
84359a467f terminal: resize to the max dimensions (#8249)
closes #8096
2018-04-16 22:25:23 +02:00
Justin M. Keyes
b2c066409d job-control: children_kill_cb(): do not check elapsed time
1. Don't check elapsed time in children_kill_cb(), it's already implied
   by the start-time of the timer itself.
2. Restart timer from children_kill_cb() for PTY jobs, to send SIGKILL
   after SIGTERM. There is an edge case where SIGKILL might follow
   SIGTERM too quickly, if jobstop() is called near the 2-second timer
   window.  But this edge case is not worth code complication.
2018-04-15 18:23:11 +02:00
Justin M. Keyes
142ac021ac job-control: one-shot timer instead of repeating
Before f31c26f1af the timer was used to try SIGTERM *and* SIGKILL, so
a repeating timer was needed.  After f31c26f1af process_stop() sends
SIGTERM immediately, and the timer only sends SIGKILL.

So we don't need a repeating timer.
- Simplifies the logic: don't need to call uv_timer_stop() explicitly.
- Avoids a problem: if process_stop() is called more than once in the
  2-second window, the first on_process_exit() would call
  uv_timer_stop() which stops the timer for all stopped processes.
2018-04-15 18:23:11 +02:00
Justin M. Keyes
8fa0b8051d job-control: mitigate process-kill race
children_kill_cb() is racey. One obvious problem is that
process_close_handles() is *queued* by on_process_exit(), so when
children_kill_cb() is invoked, the dead process might still be in the
`loop->children` list.  If the OS already reclaimed the dead PID, Nvim
may try to SIGKILL it.

Avoid that by checking `proc->status`.

Vim doesn't have this problem because it doesn't attempt to kill
processes that ignored SIGTERM after a timeout.

closes #8269
2018-04-15 18:23:11 +02:00
Justin M. Keyes
c8f409c2f2 loop: remove children_stop_requests
It serves no purpose because process_stop() is already guarded by
`proc->stopped_time`.
2018-04-15 18:23:11 +02:00
geekodour
1e71978cf0 events: VimSuspend, VimResume #8280
closes #3648
ref #5959
2018-04-15 15:05:02 +02:00
Justin M. Keyes
1e7d5e8cdf Merge #6272 'stdpath()' 2018-04-15 04:09:30 +02:00
Justin M. Keyes
a7e7f7bd83 Merge #8160 'win: oldtests: prefer cmd.exe' 2018-04-15 02:37:22 +02:00
b-r-o-c-k
ee4e1fd8ec win: Fix reading content from stdin (#8267)
Fixes #6890 by reading from the Windows console input buffer after
stdin has been closed.

Vim defines HAVE_DUP for Windows and does the close-dup dance[1]:

    close(0);
    dup(2);

which always fails, then falls back to reading from the Windows console
input buffer[2].

[1] e7499ddc33/src/fileio.c (L2397-L2398)
[2] e7499ddc33/src/os_win32.c (L1703-L1714)
2018-04-14 21:59:07 +02:00
b-r-o-c-k
387fbcd95c win: Fix reading from stdin
* Reading from stdin on Windows is fixed in the same way as it was in
  #8267.
* The file_read function was returning without filling the
  destination buffer when it was called with a non-blocking file
  descriptor.
2018-04-14 14:21:36 -05:00
b-r-o-c-k
ad999eaa77 Merge branch 'master' into s-dash-stdin 2018-04-14 14:17:51 -05:00
Jan Edmund Lazo
8e87d89a99 oldtests: win: skip test49
Vim doesn't test it on Windows.
See https://github.com/vim/vim/blob/master/src/testdir/Make_all.mak
2018-04-12 21:11:55 -04:00
John Szakmeister
27e26b10a2 tui: abort on unexpected enum value (#8266)
ref #8261
2018-04-13 01:03:00 +02:00
Justin M. Keyes
1c3a849881 API/nvim_command_output: handle :echon capture (#8265)
ref https://github.com/neovim/python-client/pull/290
2018-04-13 00:49:37 +02:00
Björn Linse
0865adbbc2 channels: cleanup channel freeing code 2018-04-12 22:33:05 +02:00
Björn Linse
aea079a25d channels: delay free so that libuv can cleanup handles
add test for a crash this caused
2018-04-12 18:22:47 +02:00
Justin M. Keyes
2cbeb7ca56 ui_set_option: pass String.data, not String 2018-04-12 12:58:27 +02:00
John Szakmeister
d48df146d1 tui: fix uninitialize variable usage (#8261)
This fixes an issue with compiles failing in release mode due to shape
having the possibility of being used uninitialized (since the default
case was missing).
2018-04-12 12:50:01 +02:00
Jan Edmund Lazo
714e0f8bf0 oldtests: win: keep set dir=/
Any user can create a directory on root.
Creating a directory on root allows any user to write files within that directory.

Test_recover_root_dir() passes when run locally as a regular user (not admin).
2018-04-12 02:44:06 -04:00
Jan Edmund Lazo
7c8122f36d win: getftype(symlink) returns 'link'
Vim doesn't detect symlinks correctly so stick with Neovim's behaviour.
2018-04-12 02:28:38 -04:00
Jan Edmund Lazo
49e86cebf0 oldtests: check +iconv for makeencoding
MSVC builds don't include it.
Test utf8 and latin only if +iconv is missing.
2018-04-12 02:27:10 -04:00
Jan Edmund Lazo
4bbe51b79e oldtests: win: help sp?it opens split()
Vim 8 and Neovim 0.2.3 open the same target on Windows.
2018-04-12 02:24:46 -04:00
Jan Edmund Lazo
6245b4873d oldtests: win: shellslash for cdpath,tags,:find 2018-04-12 02:24:29 -04:00
Jan Edmund Lazo
fa0e32fba2 oldtests: win: cmd.exe echo has trailing CR 2018-04-12 02:23:53 -04:00
Jan Edmund Lazo
e3687165a7 oldtests: use expand() to fix pathsep
Fix failing oldtests because of noshellslash.
2018-04-12 02:22:33 -04:00
Jan Edmund Lazo
79a8d905ab oldtests: newstyle: win: reset shell to cmd.exe
Unset $SHELL so that child nvim use cmd.exe as default shell.

Unset $TERM so that child nvim don't segfault with negative exit code.
sh/bash use TERM=cygwin by default if it is unset.
mintty sets TERM to xterm.
2018-04-12 02:18:18 -04:00
Justin M. Keyes
87f4d2592c test/util: expect_err() (#8257)
other cleanup, ref #8245
2018-04-11 22:07:00 +02:00
Justin M. Keyes
f96d99ad11 Merge #8247 'server: introduce --listen' 2018-04-11 03:29:18 +02:00
Justin M. Keyes
777d34ec37 lint 2018-04-11 02:41:05 +02:00
Justin M. Keyes
704ba4151e server: init v:servername if $NVIM_LISTEN_ADDRESS is invalid
Before this change, if $NVIM_LISTEN_ADDRESS was invalid, v:servername
was left empty.
2018-04-11 02:41:05 +02:00
Justin M. Keyes
507bda1c95 server: introduce --listen, deprecate $NVIM_LISTEN_ADDRESS 2018-04-11 02:41:05 +02:00
Justin M. Keyes
7362ca4430 cleanup: remove main_start_gui() 2018-04-11 01:58:42 +02:00
Justin M. Keyes
9f598e5765 serverstop(): return FALSE for invalid address 2018-04-11 01:58:41 +02:00
Björn Linse
d4688add96 os/shell: use msg functions instead of screen when throttling 2018-04-09 10:34:31 +02:00
Björn Linse
c28dbede27 os/shell: remove dead calls to screen functions 2018-04-09 10:30:24 +02:00
Justin M. Keyes
fa6415f13f test/API: validate channel arg (#8245) 2018-04-08 03:01:15 +02:00
Marco Hinz
929a732d00 build/clang 6.0.0: fix type conversion warnings (#8235) 2018-04-07 16:20:31 +02:00
Justin M. Keyes
2ec94eb23f win/install: xxd.exe (#8241) 2018-04-07 04:09:43 +02:00
Björn Linse
de0d1a0d2a TUI: EMSG2 must not be used from TUI thread 2018-04-06 11:50:11 +02:00
Marco Hinz
1fd54f29c1 Make vim_fgets() return the same values as in Vim
The implementation of vim_fgets() differs between Neovim and Vim.

Vim says that it only returns `true` for EOF. But it always returns `true` when
fgets() returns NULL. This happens for EOF _or_ errors.

That probably misguided the author of Neovim's vim_fgets(), which does NOT
return `true` for errors.

Since all the callers of vim_fgets() probably expect it to work as it does in
Vim (and not as it says), it now returns the same values as the Vim
implementation.

Fixes #8227
2018-04-04 21:13:14 +02:00
Justin M. Keyes
e8c39f72fd Merge #8226 from justinmk/insert-mode-meta 2018-04-04 04:36:13 +02:00
Justin M. Keyes
224ebc0078 insert-mode: interpret unmapped META as ESC
closes #2454
closes #8213
ref #7972
2018-04-04 03:23:15 +02:00
Justin M. Keyes
8b8a75b2cf Merge #7524 from justinmk/vim-8.0.1281 2018-04-04 01:29:56 +02:00
Daniel Hahler
e40e300c16 ins_compl_add_tv: fix memory leaks via get_spec_reg (#8224)
Fixes #8186
2018-04-03 01:30:48 +02:00
Justin M. Keyes
e25e552a3d vim-patch:8.0.1284: loading file type detection slows down startup
Problem:    Loading file type detection slows down startup.
Solution:   Store the last pattern of an autocommand event to make appending
            quicker.
462455ee8b
2018-04-02 23:59:49 +02:00
Björn Linse
60e96a45b4 screen: winhl=Normal:Background should not override syntax (#8093)
fixes #7375
2018-04-02 14:21:14 +02:00