Commit Graph

1486 Commits

Author SHA1 Message Date
Justin M. Keyes
a3b6c2a3dc API: rename nvim_execute_lua => nvim_exec_lua
- We already find ourselves renaming nvim_execute_lua in tests and
  scripts, which suggests "exec" is the verb we actually want.
- Add "exec" verb to `:help dev-api`.
2019-12-02 22:06:42 -08:00
Jan Edmund Lazo
7646e73a27 vim-patch:8.1.2355: test with "man" fails on FreeBSD
Problem:    Test with "man" fails on FreeBSD.
Solution:   Use "-P" instead of "--pager".
c7d2a57b3a

Cherry-picked "has('bsd')" from vim-patch:8.1.0846.
Cherry-picked test_normal.vim fix from vim-patch:8.1.2358
2019-11-30 11:42:31 -05:00
Jan Edmund Lazo
f196ab87a1 vim-patch:8.1.2348: :const cannot be followed by "| endif"
Problem:    :const cannot be followed by "| endif".
Solution:   Check following command for :const. (closes vim/vim#5269)
            Also fix completion after :const.
8f76e6b12b
2019-11-26 20:38:59 -05:00
Björn Linse
dab40f43b1 Add v:lua.func() vimL syntax for calling lua
Also simplify error messages when calling lua from vimL.
2019-11-16 22:33:21 +01:00
James McCoy
570ee5f404 f_getenv/setenv: Access v_special when v_type is VAR_SPECIAL #11388
Multiple Debian builds were failing these tests:

    Failures:
    	From test_environ.vim:
    	Found errors in Test_external_env():
    	function RunTheTest[37]..Test_external_env line 16: Expected '' but got 'FOO=null\n'
    	Found errors in Test_getenv():
    	function RunTheTest[37]..Test_getenv line 2: Expected v:null but got v:false
    	Found errors in Test_setenv():
    	function RunTheTest[37]..Test_setenv line 5: Expected v:null but got 'null'

This is because nvim has a separate tag (`v_special`) in `typval_T` for
special variables, whereas vim re-uses the `v_number` tag.

On little-endian architectures, using the incorrect tag is not an issue
because the byte representation is the same.  However, on big-endian
systems this caused the `v_number == kSpecialVarNull` checks to fail,
and the non-special code to execute.
2019-11-13 21:34:10 -08:00
Jan Edmund Lazo
3e2f7baf21 vim-patch:8.1.2262: unpack assignment in function not recognized
Problem:    Unpack assignment in function not recognized.
Solution:   Skip over "[a, b]". (closes vim/vim#5051)
1e673b9eb6
2019-11-09 09:58:32 -05:00
Jaehwang Jerry Jung
034077ed1c vim-patch:8.1.2173: searchit() has too many arguments
Problem:    Searchit() has too many arguments.
Solution:   Move optional arguments to a struct.  Add the "wrapped" argument.
92ea26b925
2019-10-27 03:35:19 +09:00
Marco Hinz
2e4465e058 vim-patch:8.1.2168: heredoc not skipped in if-block #11265
Problem:    Heredoc assignment not skipped in if block.
Solution:   Check if "skip" is set.

b1ba9abcb3

Fixes https://github.com/neovim/neovim/issues/11264
2019-10-20 17:17:25 -07:00
Jurica Bradaric
76f548a476 vim-patch:8.1.1729: heredoc with trim not properly handled in function
Problem:    Heredoc with trim not properly handled in function.
Solution:   Allow for missing indent. (FUJIWARA Takuya, closes vim/vim#4713)
ecaa75b4ce
2019-10-13 11:54:54 +02:00
Jurica Bradaric
3b894b1cb1 vim-patch:8.1.1723: heredoc assignment has no room for new features
Problem:    Heredoc assignment has no room for new features. (FUJIWARA Takuya)
Solution:   Require the marker does not start with a lower case character.
            (closes vim/vim#4705)
2458200729
2019-10-13 11:54:54 +02:00
Jurica Bradaric
fcc24d0df3 vim-patch:8.1.1625: script line numbers are not exactly right
Problem:    Script line numbers are not exactly right.
Solution:   Handle heredoc and continuation lines better. (Ozaki Kiichi,
            closes vim/vim#4611, closes vim/vim#4511)
bc2cfe4672
2019-10-13 11:54:54 +02:00
Jurica Bradaric
6c012b0624 vim-patch:8.1.1585: :let-heredoc does not trim enough
Problem:    :let-heredoc does not trim enough.
Solution:   Trim indent from the contents based on the indent of the first
            line.  Use let-heredoc in more tests.
e7eb92708e
2019-10-13 00:03:27 +02:00
Rob Pilling
5f60861f5a fnamemodify: fix handling of :r after :e #11165
- Test fnamemodify()
- Test handling of `expand("%:e:e:r")`.
- Fix :e:e:r on filenames with insufficiently many extensions

During `fnamemodify()`, ensuring that we don't go before the filename's
tail is insufficient in cases where we've already handled a ":e"
modifier, for example:

```
"path/to/this.file.ext" :e:e:r:r
         ^    ^-------- *fnamep
         +------------- tail
```

This means for a ":r", we'll go before `*fnamep`, and outside the bounds
of the filename. This is both incorrect and causes neovim to exit with
an allocation error.

We exit because we attempt to calculate `s - *fnamep` (line 23948).
Since `s` is before `*fnamep`, we caluclate a negative length, which
ends up being interpreted as an amount to allocate, causing neovim to
exit with ENOMEM (`memory.c:xmalloc`).

We must instead ensure we don't go before `*fnamep` nor `tail`.
The check for `tail` is still relevant, for example:

```
"path/to/this.file.ext" :r:r:r
 ^       ^------------- tail
 +--------------------- *fnamep
```
Here we don't want to go before `tail`.

close #11165
2019-10-10 22:33:42 -07:00
Justin M. Keyes
3b3a409781 Merge #11077 'vim-patch:8.1.{1354,1356,1362,1588}' 2019-10-07 21:51:04 -07:00
Jurica Bradaric
0586a4b512 vim-patch:8.1.1588: in :let-heredoc line continuation is recognized
Problem:    In :let-heredoc line continuation is recognized.
Solution:   Do not consume line continuation. (Ozaki Kiichi, closes vim/vim#4580)
e96a2498f9
2019-10-07 14:14:13 +02:00
Jurica Bradaric
b5ac11139e vim-patch:8.1.1356: some text in heredoc assignment ends the text
Problem:    Some text in heredoc assignment ends the text. (Ozaki Kiichi)
Solution:   Recognize "let v =<<" and skip until the end.
8471e57026
2019-10-07 14:14:13 +02:00
Jurica Bradaric
b1ada8ec21 vim-patch:8.1.1354: getting a list of text lines is clumsy
Problem:    Getting a list of text lines is clumsy.
Solution:   Add the =<< assignment. (Yegappan Lakshmanan, closes vim/vim#4386)
f5842c5a53
2019-10-07 14:14:13 +02:00
Jan Edmund Lazo
09232958ff vim-patch:8.1.2120: some MB_ macros are more complicated than necessary
Problem:    Some MB_ macros are more complicated than necessary. (Dominique
            Pelle)
Solution:   Simplify the macros.  Expand inline.
1614a14901
2019-10-06 21:11:38 -04:00
Jan Edmund Lazo
8b67c8f8c6 vim-patch:8.1.2095: leaking memory when getting item from dict
Problem:    Leaking memory when getting item from dict.
Solution:   Also free the key when not evaluating.
a893194d91
2019-10-01 22:27:44 -04:00
Björn Linse
0636b25f28 cmdline: wildmenumode() should be true with wildoptions+=pum 2019-09-28 21:00:27 +02:00
Daniel Hahler
ad0f97f412 vim-patch:8.1.2055: profile: adjust line format #11058
Problem:    Not easy to jump to function line from profile.
Solution:   Use "file:99" instead of "file line 99" so that "gf" works.
            (Daniel Hahler, closes vim/vim#4951)
181d4f58cc
2019-09-21 14:18:56 -07:00
Justin M. Keyes
fd82ce4a3a Merge #11060 from janlazo/vim-8.1.1783
vim-patch:8.0.{1109,1529,1539,1621,1733,1771,1776},8.1.{1783,2054,2058}
2019-09-21 14:07:50 -07:00
Jan Edmund Lazo
b3e56957f8 vim-patch:8.1.0460: assert_fails() message argument #11051
Problem:    assert_fails() does not take a message argument
Solution:   Add the argument.
1307d1c003
2019-09-21 14:03:46 -07:00
Jan Edmund Lazo
eb3888a322 vim-patch:8.0.1529: assert_equalfile() does not close file descriptors
Problem:    Assert_equalfile() does not close file descriptors. (Coverity)
Solution:   Close the file descriptors.
3049418f3d
2019-09-21 08:43:08 -04:00
Jan Edmund Lazo
b853b6e4ea vim-patch:8.0.1109: timer causes error on exit from Ex mode
Problem:    Timer causes error on exit from Ex mode. (xtal8)
Solution:   save and restore the ex_pressedreturn flag. (Christian Brabandt,
            closes vim/vim#2079)
f5291f301e
2019-09-21 08:43:07 -04:00
Jan Edmund Lazo
8db9e82e3e vim-patch:8.0.1770: assert functions don't return anything
Problem:    Assert functions don't return anything.
Solution:   Return non-zero when the assertion fails.
65a5464985
2019-09-16 23:42:44 -04:00
Jan Edmund Lazo
792c290343 vim-patch:8.0.1523: cannot write and read terminal screendumps
Problem:    Cannot write and read terminal screendumps.
Solution:   Add term_dumpwrite(), term_dumpread() and term_dumpdiff().
            Also add assert_equalfile().
d96ff16511
2019-09-16 21:36:46 -04:00
Justin M. Keyes
ffdf8c4c12 Context: rename "buflist" => "bufs"
Given the other type names "jumps", "vars", etc., the name "buflist"
is somewhat unintuitive.
2019-09-14 18:57:35 -07:00
Justin M. Keyes
6aae0e7c94 lint 2019-09-13 19:29:25 -07:00
Justin M. Keyes
3344cffe7b getdigits: introduce strict, def parameters
Problem:
During a refactor long ago, we changed the `getdigits_*` familiy of
functions to abort on overflow.  But this is often wrong, because many
of these codepaths are handling user input.

Solution:
Decide at each call-site whether to use "strict" mode.

fix #5555
2019-09-13 19:29:25 -07:00
Jaskaran Singh
3afb397407 syntax, TUI: support "strikethrough"
fix #3436

Includes:
vim-patch:8.0.1038: strike-through text not supported
2019-09-13 14:46:19 -07:00
Justin M. Keyes
7652904f79 eval: wait(): always spin up dummy-timer #10990
This avoids getting "stuck".  If user actually _wants_ to get stuck
forever, they could use `:sleep` or specify a really big `interval`.
2019-09-11 12:56:46 -07:00
Justin M. Keyes
853683e72a provider: has("python3_dynamic") et al. #10980
Vim added more flags for testing yet more dimensions of its Python
situation.  Handle those in eval_has_provider().

vim-patch:8.0.1436: not enough information about what Python version may work
Problem:    Not enough information about what Python version may work.
Solution:   Add "python_compiled", "python3_compiled", "python_dynamic" and
            "python3_dynamic" values for has().

ref: https://github.com/neovim/neovim/pull/10942#issuecomment-529479500
2019-09-09 10:54:07 -07:00
Björn Linse
e6b7613e89 refactor: allow us to process a child queue only while waiting on input 2019-09-08 15:24:14 +02:00
Justin M. Keyes
8b06231612 Merge #10869 'vim-patch:8.1.{0309,0362,0365,0515,1946}' 2019-09-05 14:10:32 -07:00
Björn Linse
d5162afa2a anchor float to buffer position
vim-patch:8.1.1645: cannot use a popup window for a balloon
2019-09-04 23:57:02 +02:00
Björn Linse
e7e2c8d7ff Merge pull request #10926 from blueyed/fix-echon-q
Check got_int in msg_multiline_attr with ex_echo
2019-09-04 15:31:56 +02:00
Daniel Hahler
ac6fd11fa1 only check got_int with ex_echo
Ref: https://github.com/neovim/neovim/pull/10926#discussion_r320706446
2019-09-04 13:30:11 +02:00
erw7
d3f1eb3024 vim-patch:8.1.1946: memory error when profiling a function without a script ID
Problem:    Memory error when profiling a function without a script ID.
Solution:   Check for missing script ID.  (closes vim/vim#4877)
163588005d
2019-09-04 14:48:21 +09:00
erw7
9db60b06a1 vim-patch:8.1.0515: reloading a script gives errors for existing functions
Problem:    Reloading a script gives errors for existing functions.
Solution:   Allow redefining a function once when reloading a script.
ded5f1bed7
2019-09-04 13:40:05 +09:00
erw7
e4a4786241 vim-patch:8.1.0365: function profile doesn't specify where it was defined
Problem:    Function profile doesn't specify where it was defined.
Solution:   Show the script name and line number.
4c7b08f640
2019-09-04 13:40:05 +09:00
erw7
a2e48b556b vim-patch:8.1.0362: cannot get the script line number when executing a function
Problem:    Cannot get the script line number when executing a function.
Solution:   Store the line number besides the script ID. (Ozaki Kiichi,
            closes vim/vim#3362)  Also display the line number with ":verbose set".
f29c1c6aa3
2019-09-04 13:40:04 +09:00
Justin M. Keyes
6242bac904 f_jobwait: cleanup 2019-09-03 16:14:29 +02:00
Justin M. Keyes
58318af718 jobwait(): fix race if job exits before waiting on it
Problem:  If a job exits while waiting on another job, the on_exit
          handler is queued but f_jobwait() skips it.
Solution: Always do process_wait(), so that handlers are run during
          f_jobwait().

fix #8302

Test case:
    $ BUSTED_ARGS="--repeat=2000 --no-keep-going" TEST_FILE=test/functional/core/job_spec.lua TEST_FILTER=waiting make functionaltest

Failure example (macOS CI):
    FAILED  test/functional/core/job_spec.lua: jobs jobwait will run callbacks while waiting
    test/functional/core/job_spec.lua:606: Expected objects to be the same.
    Passed in:
    (table: 0x1be77c80) {
      [1] = 'notification'
      [2] = 'wait'
     *[3] = {
       *[1] = 3 } }
    Expected:
    (table: 0x1be77d10) {
      [1] = 'notification'
      [2] = 'wait'
     *[3] = {
       *[1] = 4 } }
    stack traceback:
      test/functional/core/job_spec.lua:606: in function <test/functional/core/job_spec.lua:583
2019-09-03 16:14:29 +02:00
Jan Edmund Lazo
4a60818071 vim-patch:8.0.1729: no comma after last enum item
Problem:    No comma after last enum item.
Solution:   Add a few commas to check if this works for all compilers.  Also
            add a few // comments.
ea3ece405a
2019-09-02 12:19:10 -04:00
Abdelhakeem
b447bdb68c fixup! eval: add wait() test 2019-09-01 21:17:14 +02:00
Abdelhakeem
7844501c2b eval: add wait()
closes #10362
2019-09-01 21:17:14 +02:00
Björn Linse
b51ba122c1 screen: use dedicated message grid
add proper msg_set_pos event, delet win_scroll_over_*

make compositor click through unfocusable grids

add MsgArea attribute for the message/cmdline area, and add docs and tests
2019-09-01 15:55:10 +02:00
Jan Edmund Lazo
97c1775646 vim-patch:8.1.0233: "safe" argument of call_vim_function() is always FALSE
Problem:    "safe" argument of call_vim_function() is always FALSE.
Solution:   Remove the argument.
ded27a1feb
2019-08-30 00:24:46 -04:00
Jan Edmund Lazo
f575b71449 vim-patch:8.1.1938: may crash when out of memory
Problem:    May crash when out of memory.
Solution:   Initialize v_type to VAR_UNKNOWN. (Dominique Pelle, closes vim/vim#4871)
c507a2d164
2019-08-29 20:48:01 -04:00