Commit Graph

10610 Commits

Author SHA1 Message Date
Justin M. Keyes
ff98f61601 vim-patch:8.1.0965: search test fails
Problem:    Search test fails.
Solution:   Wait a bit longer for the 'ambiwidth' redraw.
e86ecbd922
2019-03-01 01:56:17 +01:00
Justin M. Keyes
1a0ee090ab vim-patch:8.1.0963: illegal memory access when using 'incsearch'
Problem:    Illegal memory access when using 'incsearch'.
Solution:   Reset highlight_match when changing text. (closes vim/vim#4022)
4a7d2d3b40
2019-03-01 01:56:17 +01:00
Justin M. Keyes
b183534c81 vim-patch:8.1.0968: crash when using search pattern \%Ufffffc23
Problem:    Crash when using search pattern \%Ufffffc23.
Solution:   Limit character to INT_MAX. (closes vim/vim#4009)
527a2d86fb
2019-03-01 01:56:17 +01:00
Justin M. Keyes
900e96781f clint: check env functions 2019-02-28 12:48:21 +01:00
Justin M. Keyes
a66b1d4615 vim-patch:8.1.0985: crash with large number in regexp
Problem:    Crash with large number in regexp. (Kuang-che Wu)
Solution:   Check for long becoming negative int. (closes #)
ab350f89f9
2019-02-28 12:07:25 +01:00
Justin M. Keyes
89515304e4 os/env: use libuv v1.12 getenv/setenv API
- Minimum required libuv is now v1.12
- Because `uv_os_getenv` requires allocating, we must manage a map
  (`envmap` in `env.c`) to maintain the old behavior of `os_getenv` .
- free() map-items after removal. khash.h does not make copies of
  anything, so even its keys must be memory-managed by the caller.

closes #8398
closes #9267
2019-02-27 23:29:07 +01:00
Justin M. Keyes
1d8e768360 os_getenv, os_setenv: revert "widechar" impl
It's reported that the Windows widechar variants do automatically
convert from the current codepage to UTF16, which is very helpful. So
the "widechar" impls are a good direction.  But libuv v1.12 does that
for us, so the next commit will use that instead.

ref #8398
ref #9267
2019-02-26 22:38:52 +01:00
Justin M. Keyes
865584dd0c win: os_getenv(): use _wgetenv() 2019-02-25 23:47:54 +01:00
Justin M. Keyes
76562fa192 utf16_to_utf8: minor fixes 2019-02-25 23:47:54 +01:00
Justin M. Keyes
9153062095 os_setenv: use _wputenv_s; remove vestigial code #7920
_putenv_s variant was left over from 810d31a430, should have been
removed in cd5b131575.
2019-02-25 23:47:54 +01:00
Justin M. Keyes
533d4a36ec TUI: do not resize host-terminal on startup (#9645)
...unless the 'lines' and/or 'columns' options were set.

ref 5732340c20
fixes #5843
2019-02-25 23:30:12 +01:00
Jan Edmund Lazo
88652c49a8 vim-patch:8.1.0980: extend() insufficiently tested (#9646)
Problem:    extend() insufficiently tested.
Solution:   Add more tests. (Dominique Pelle, closes vim/vim#4040)
58d63a0a23
2019-02-25 11:34:55 +01:00
Justin M. Keyes
3b2d5317a5 vim-patch:8.1.0225: mode() does not indicate using CTRL-O from Insert mode (#9644)
Problem:    Mode() does not indicate using CTRL-O from Insert mode.
Solution:   Add "niI", "niR" and "niV" to mode() result. (closes vim/vim#3000)
612cc3888b
2019-02-24 21:44:31 +01:00
Jan Edmund Lazo
9327ea3e5a vim-patch:8.1.0959: sorting large numbers is not tested (#9641)
Problem:    Sorting large numbers is not tested and does not work properly.
Solution:   Add test.  Fix comparing lines with and without a number.
            (Dominique Pelle, closes vim/vim#4017)
a25e3d0695
2019-02-23 11:54:41 +01:00
Justin M. Keyes
246408621c Merge #9509 'TUI: detect background color' 2019-02-22 22:14:38 +01:00
Justin M. Keyes
d3dc946155 TUI: rework background-color detection
- Like Vim, use set_option_value() followed by reset_option_was_set().
- Do not use set_string_default(), so the default is predictable.
  This affects `:set bg&`.
- Wait until end-of-startup (VimEnter) to handle the response. The
  response is racey anyways, so timing is irrelevant. This allows
  OptionSet to be triggered, unlike during startup.
2019-02-22 21:15:16 +01:00
Justin M. Keyes
996916277d I/O: ignore ENOTSUP for failed fsync()
Suggested by ZyX in https://github.com/neovim/neovim/issues/6725#issuecomment-312197691 :
> There already is an exception if writing to a “device” (e.g. FIFO).
> It makes sense to ignore certain errors like ENOTSUP or EOPNOTSUPP
> since it is not something we or user can do anything about.

ref #6725
2019-02-21 02:00:51 +01:00
Justin M. Keyes
c59aa771a6 deps: update to libuv v1.26.0
Notable changes since v1.23.2:

- v1.26.0
  - uv_os_uname()
  - unix: don't attempt to invalidate invalid fd
    1ce6393a57
- v1.25.0
  - unix: better handling of unsupported F_FULLFSYNC (fixes #6725)
    6fc797c3fe
  - tty,win: fix Alt+key under WSL
    d2e59bb600
  - fsevents: really watch files with fsevents on macos 10.7+
    2d2af382ce
  - win: fix duplicate tty vt100 fn key
- v1.24.0
  - win,fs: retry if uv_fs_rename fails
    e94c184c7c
    - later [reverted](https://github.com/libuv/libuv/issues/2098) but may be useful reference
  - win: support more fine-grained windows hiding
    4c2dcca27b
2019-02-21 02:00:51 +01:00
Justin M. Keyes
0e97d3d4ee fix "E667: Fsync failed" on macOS
macOS: Try direct fsync() if F_FULLFSYNC fails.
closes #6725
ref https://github.com/vim/vim/pull/4016
vim-patch:8.1.0957

> on macOS F_FULLFSYNC fails with ENOTSUP for unsupported storage systems
> (e.g. SMB), though this is not documented in the Apple fcntl man page.

libuv fixed this in v1.25.0:
6fc797c3fe
2019-02-21 02:00:51 +01:00
Justin M. Keyes
ece19b459c Merge #9626 from janlazo/vim-8.1.0926 2019-02-18 10:40:33 +01:00
Jan Edmund Lazo
d595ca021d vim-patch:8.1.0276: no test for 'incsearch' highlighting with :s
Problem:    No test for 'incsearch' highlighting with :s.
Solution:   Add a screendump test.
164251ff80
2019-02-17 21:59:49 -05:00
Jan Edmund Lazo
a4a024245b vim-patch:8.1.0387: no test for 'ambiwidth' detection
Problem:    No test for 'ambiwidth' detection.
Solution:   Add a test.
24839edc54
2019-02-17 21:47:12 -05:00
Jan Edmund Lazo
0735893caf vim-patch:8.1.0668: no test for overstrike mode in the command line
Problem:    No test for overstrike mode in the command line.
Solution:   Add a test. (Dominique Pelle, closes vim/vim#3742)
c0676bab92
2019-02-17 20:10:36 -05:00
Jan Edmund Lazo
486234ab3d vim-patch:8.1.0937: invalid memory access in search pattern
Problem:    Invalid memory access in search pattern. (Kuang-che Wu)
Solution:   Check for incomplete collation element. (Dominique Pelle,
            closes vim/vim#3985)
f1b57ab2ab
2019-02-17 19:37:44 -05:00
Jan Edmund Lazo
279ecaff00 vim-patch:8.1.0934: invalid memory access in search pattern
Problem:    Invalid memory access in search pattern. (Kuang-che Wu)
Solution:   Check for incomplete equivalence class. (closes vim/vim#3970)
985079c514
2019-02-17 19:35:41 -05:00
Jan Edmund Lazo
67c99ec620 vim-patch:8.1.0926: no test for :wnext, :wNext and :wprevious
Problem:    No test for :wnext, :wNext and :wprevious.
Solution:   Add a test. (Dominique Pelle, closes vim/vim#3963)
e93e5a504f
2019-02-17 19:31:57 -05:00
Jan Edmund Lazo
d8b4fb7838 lint 2019-02-17 19:14:40 -05:00
Jan Edmund Lazo
55821948cf vim-patch:8.1.0945: internal error when using pattern with NL in the range
Problem:    Internal error when using pattern with NL in the range.
Solution:   Use an actual newline for the range. (closes vim/vim#3989)  Also fix
            error message.  (Dominique Pelle)
a5483448cb
2019-02-17 19:11:16 -05:00
Justin M. Keyes
6bd6927656 Merge #5027 'TUI: detect background color' 2019-02-17 14:47:40 +01:00
Justin M. Keyes
33ce70c883 vim-patch:8.1.0932: remove Farsi support (#9622)
Problem:    Farsi support is outdated and unused.
Solution:   Delete the Farsi support.
14184a3133
2019-02-17 10:54:00 +01:00
Justin M. Keyes
dc9dd8d664 Merge #9593 'API: nvim_create_buf: "scratch" param' 2019-02-17 08:32:25 +01:00
Justin M. Keyes
5225c1ec30 terminal: Fix potential invalid local 'scrollback' (#9605)
TermOpen autocmd may set local 'scrollback' to -1, this needs to be
adjusted as in on_scrollback_option_changed().

fixes #9588 (OOM, out of memory)
2019-02-17 08:07:30 +01:00
Justin M. Keyes
aee29e51a6 API: nvim_create_buf: add scratch parameter
Creating a scratch buffer is a chore/ritual, and would be more
useful/common if formally exposed.
2019-02-17 06:58:03 +01:00
Marco Hinz
023e832d40 vim-patch:8.1.0803: session restore: handle single quotes #9620
Problem:    Session file has problem with single quote in file name. (Jon
            Crowe)
Solution:   Use a double quoted string.  Add a test.

ad36a3588d

Fixes https://github.com/neovim/neovim/issues/9618
2019-02-17 05:00:14 +01:00
Justin M. Keyes
3d3a54f455 clang/"null pointer dereference": win_rotate 2019-02-14 05:54:42 +01:00
Justin M. Keyes
b7f518cbfa PVS/V1028: cast operands, not the result 2019-02-14 05:49:35 +01:00
Jan Edmund Lazo
969cc55993 vim-patch:8.1.0852: findfile() and finddir() are not properly tested (#9609)
Problem:    findfile() and finddir() are not properly tested.
Solution:   Extend the test and add more. (Dominique Pelle, closes vim/vim#3880)
ed71ed37bc
2019-02-13 08:30:30 +01:00
Justin M. Keyes
e50d0b6fc1 UI: change implementation of hl_rgb2cterm_color()
Replace the implementation cargo-culted from Vim's source with something
simpler which "seems to look better" with 'pumblend'.
2019-02-12 10:11:30 +01:00
Justin M. Keyes
c5173230f0 UI: 'pumblend' for cterm (256-color TUI)
hl_rgb2cterm_color, hl_cterm2rgb_color were adapted from Vim 8.1
(color2index, cterm_color2rgb).
ref: c5cd88554f
2019-02-12 09:26:06 +01:00
Justin M. Keyes
9b4383261a Merge #9601 from justinmk/tui-italic 2019-02-12 08:51:10 +01:00
Justin M. Keyes
1083c626b9 TUI: assume italics support in all xterm-likes
https://github.com/neovim/neovim/issues/9598#issuecomment-462421302
> On systems other than macOS, terminfo always has them set. It's part
> of the ANSI standard SGR codes
2019-02-12 08:09:21 +01:00
Björn Linse
af51ae944e highlight: handle blending with gui=reverse and guisp attributes 2019-02-11 19:38:02 +01:00
Justin M. Keyes
1b746c0ea9 TUI: sniff nsterm (Terminal.app) from $TERM_PROGRAM 2019-02-11 11:02:48 +01:00
Justin M. Keyes
ee21fe3d2a TUI: force italics in tmux
tmux users are encouraged to use "tmux-256color" instead of the old
"screen-256color". Put this in your .tmux.conf :

    if-shell 'infocmp tmux-256color' 'set -g default-terminal "tmux-256color"' 'set -g default-terminal "screen-256color"'

If default-terminal is "tmux-256color" AND tmux finds its terminfo, THEN
it will enable italics (regardless of whether the terminfo contains
sitm/ritm).

OTHERWISE tmux "emulates screen", which means it emits italics as
"reverse". That's unfortunate, but it's an acceptable compromise that
allows Nvim to support italics in tmux by default in compatible (and
increasingly-common) configurations.

Test case:

    tmux
    nvim -u NORC +'hi Comment cterm=italic' CMakeLists.txt

ref #9598
2019-02-11 10:52:30 +01:00
Justin M. Keyes
2beb731ed4 TUI: italics in Terminal.app (nsterm)
This is the conservative approach, requiring TERM=nsterm as recommended
at `:help $TERM`.  It won't work with Terminal.app's default of
TERM=xterm-256color, nor in tmux.

Test case:

    TERM=nsterm nvim -u NORC +'hi Comment cterm=italic' CMakeLists.txt

closes #9598
2019-02-11 10:51:52 +01:00
Björn Linse
51fc54325c ui: implement ext_messages
Co-Author: Dongdong Zhou <dzhou121@gmail.com>
2019-02-10 13:36:46 +01:00
Björn Linse
891ed14f13 api: add nvim_create_buf to create a new empty buffer.
Loading existing files into a buffer is non-trivial and requires a window.
Creating an unnamed emtpy buffer is trivial and safe though, thus worth a
special case.

Change nvim_buf_set_option to use aucmd_prepbuf. This is necessary
to allow some options to be set on a not yet displayed buffer, such
as 'buftype' option.

vim-patch:7.4.1858: Add BLN_NEW to enforce buflist_new creating new buffer
2019-02-09 11:48:45 +01:00
Björn Linse
be8058cfe4 screen: cleanup allocation, clearing and validation
grid_xx functions shouldn't randomly be called when the screen is not valid.
Nvim deterministically initializes a default screen early in main(), so the
default grid can be assumed to be allocated.
2019-02-07 17:56:02 +01:00
Björn Linse
6e9ea5adce screen: simplify scrolling code
Since the separation between internal screen and TUI, internal scroll
cannot FAIL. Delete the conditions for this.
2019-02-07 17:56:02 +01:00
Björn Linse
37f8df8824 UI: implement 'pumblend' option for semi-transparent popupmenu
Why?

- Because we can.
- Because the TUI is just another GUI™
- Because it looks kinda nice, and provides useful context like 1 out of 100
  times

Complies with "don't pay for what you don't use".

Some crashes for resizing were unfolded, add tests for those.
2019-02-07 16:43:51 +01:00