Commit Graph

142 Commits

Author SHA1 Message Date
Sean Dewar
9f3d7dcda2 vim-patch:8.1.1195: Vim script debugger functionality needs cleanup
Problem:    Vim script debugger functionality needs cleanup.
Solution:   Move debugger code to a separate file.  Add more tests. (Yegappan
            Lakshmanan, closes vim/vim#4285)
eead75c5e8

Good to have for eval_expr_restore in v8.2.3417.

Doesn't actually add any tests.
2021-09-13 17:19:15 +01:00
dundargoc
d5b66e8860 refactor: replace TRUE/FALSE with true/false #15647 2021-09-13 04:57:36 -07:00
Sean Dewar
b2994e35c9 feat(v:lua): support calling v:lua as a method 2021-08-13 01:11:36 +01:00
Sean Dewar
da9005af79 fix(v:lua): fix emsg when calling v:lua directly
v:lua expressions are represented using vvlua_partial. As v:lua isn't
intended to be called directly, it's given an empty pt_name.

Because of this, calling v:lua directly like "v:lua()" will cause "E117:
Unknown function: ", with an empty name.

Instead, have call_func() show the name "v:lua" in the emsg.
2021-08-12 22:35:25 +01:00
Sean Dewar
7474db98af vim-patch:8.1.1878: negative float before method not parsed correctly
Problem:    Negative float before method not parsed correctly.
Solution:   Apply "!" and "-" in front of expression before using ->.
9cfe8f6e68
2021-08-12 22:35:23 +01:00
Sean Dewar
98dfe4adc4 vim-patch:8.1.1863: confusing error when using a builtin function as method
Problem:    Confusing error when using a builtin function as method while it
            does not support that.
Solution:   Add a specific error message.
9174639a82
2021-08-12 22:35:23 +01:00
Sean Dewar
d41b87e070 vim-patch:8.1.1820: using expr->FuncRef() does not work
Problem:    Using expr->FuncRef() does not work.
Solution:   Make FuncRef work as a method.
761fdf01c6
2021-08-12 22:35:21 +01:00
Sean Dewar
8d1ca37d1f vim-patch:8.1.1816: cannot use a user defined function as a method
Problem:    Cannot use a user defined function as a method.
Solution:   Pass the base as the first argument to the user defined function
            after "->". (partly by FUJIWARA Takuya)
fcfe1a9b89
2021-08-12 22:35:20 +01:00
Sean Dewar
e6be6c307a vim-patch:8.1.1803: all builtin functions are global
Problem:    All builtin functions are global.
Solution:   Add the method call operator ->.  Implemented for a limited number
            of functions.
ac92e25a33

- Note that to *exactly* port hunk @@ -7376,18 +7444,19 from
  handle_subscript(), we need the :scriptversion patches (I have an open
  PR for those, but this patch works fine without them anyway).
- Port call_internal_func() from v7.4.2058.
- Adjust some error messages in tests, as they rely on the Blob patches.
- Add a modeline to test_method.vim.

Ignore the global_functions and base_method tables and prefer the
current GPerf implementation. Instead, add an extra base_arg field to
VimLFuncDef that holds the number of the argument to use as the base
(1-indexed, so that 0 may be used to refer to functions that cannot be
used as methods).

This also means we support using any argument as a base from the get-go,
rather than just the first (Vim includes this ability in future patches,
however).

To mark a function as usable as a method, use the "base" key as
described in eval.lua.
2021-08-12 22:35:19 +01:00
Sean Dewar
4042ae5a2b vim-patch:8.1.1800: function call functions have too many arguments
Problem:    Function call functions have too many arguments.
Solution:   Pass values in a funcexe_T struct.
c6538bcc1c

Use FUNCEXE_INIT to initialize funcexe_T instances.

call_callback() and other Vim listener related stuff is N/A.
2021-08-12 22:31:18 +01:00
Dundar Göc
94120d2fd5 refactor: replace TRUE/FALSE with true/false 2021-07-30 12:29:32 +02:00
dundargoc
4339f528db vim-patch:8.2.3089: garbage collection has useless code #15027
Problem:    Garbage collection has useless code.
Solution:   Bail out when aborting. (closes vim/vim#8504)
20cc528320
2021-07-08 11:03:33 -07:00
dundargoc
4547137aaf chore: use codespell to spell check #15016 2021-07-07 15:28:44 -07:00
Jan Edmund Lazo
20dc3f1989 vim-patch:8.1.0897: can modify a:000 when using a reference (#14902)
Problem:    Can modify a:000 when using a reference.
Solution:   Make check for locked variable stricter. (Ozaki Kiichi,
            closes vim/vim#3930)
05c00c038b
2021-06-26 10:19:09 -04:00
Jan Edmund Lazo
729f270266 userfunc: pvs/v547
vim_strsave() returns nonnull.
2021-06-05 12:49:26 -04:00
James McCoy
d4fd139c2a coverity/331366: fname_trans_sid: Avoid buffer overrun
Since we're printf()ing into an offset of fname_buf, we need to reduce
the max length by the same amount.
2021-05-06 18:57:21 -04:00
Jan Edmund Lazo
97288e73c2 vim-patch:8.2.2764: memory leak when default function argument is allocated
Problem:    Memory leak when default function argument is allocated.
Solution:   Free the expression result.
b47bed2f7a
2021-04-15 18:30:04 -04:00
Jan Edmund Lazo
77bae79c07 fixup! vim-patch:8.1.1310: named function arguments are never optional 2021-02-22 09:27:49 -05:00
erw7
66b0ab0883 vim-patch:8.1.1310: named function arguments are never optional
Problem:    Named function arguments are never optional.
Solution:   Support optional function arguments with a default value. (Andy
            Massimino, closes vim/vim#3952)
42ae78cfff
2021-02-22 09:16:41 -05:00
Jan Edmund Lazo
883114e882 vim-patch:8.2.0928: many type casts are used for vim_strnsave()
Problem:    Many type casts are used for vim_strnsave().
Solution:   Make the length argument size_t instead of int. (Ken Takata,
            closes vim/vim#5633)  Remove some type casts.
df44a27b53

N/A patches for version.c:

vim-patch:8.2.0315: build failure on HP-UX system

Problem:    Build failure on HP-UX system.
Solution:   Use LONG_LONG_MIN instead of LLONG_MIN.  Add type casts for switch
            statement. (John Marriott)
c593bec412

vim-patch:8.2.1052: build failure with older compilers

Problem:    Build failure with older compilers.
Solution:   Move declaration to start of block.
7acde51832

vim-patch:8.2.2229: build failure without the +eval feature

Problem:    build failure without the +eval feature.
Solution:   Add #ifdef.
39cb2dab18

vim-patch:8.2.2232: compiler error for falling through into next case

Problem:    Compiler error for falling through into next case.
Solution:   Move FALLTHROUGH below the #endif
9618a25b9c
2020-12-27 14:05:41 -05:00
Jan Edmund Lazo
0561243771 vim-patch:8.2.2142: memory leak when heredoc is not terminated
Problem:    Memory leak when heredoc is not terminated.
Solution:   Free heredoc_trimmed.
fffdf4754f
2020-12-22 18:08:47 -05:00
Jan Edmund Lazo
297567780e eval: use VAR_UNLOCKED enum, not the direct value 2020-11-21 15:35:05 -05:00
Jan Edmund Lazo
41184660be vim-patch:8.2.0506: Coverity complains about ignoring return value
Problem:    Coverity complains about ignoring return value.
Solution:   Add (void).
d1e9dc2723
2020-10-25 02:27:52 -04:00
Jan Edmund Lazo
07022306e2 vim-patch:8.2.0268: trycatch test fails
Problem:    Trycatch test fails.
Solution:   When calling function fails only check for following command, do
            not give another error.
40d9da2a43
2020-10-21 21:06:52 -04:00
Jan Edmund Lazo
9bac43b1fb userfunc: abort early on invalid refs
Cherry-pick set_ref_in_call_stack() changes from patch 8.1.1575.
2020-09-30 21:00:18 -04:00
Jan Edmund Lazo
594a69579f vim-patch:8.2.0042: clearing funccal values twice
Problem:    Clearing funccal values twice.
Solution:   Remove clearing individual fields.
eac7ce01e9
2020-09-30 21:00:18 -04:00
Jan Edmund Lazo
578b0b0b52 vim-patch:8.2.0499: calling a lambda is slower than evaluating a string
Problem:    Calling a lambda is slower than evaluating a string.
Solution:   Make calling a lambda faster. (Ken Takata, closes vim/vim#5727)
f10806b250

Port "uf_flags" constants from patch 8.2.1054 to sync with Vim.
Port user_func_error() from patch 8.2.0149.
Port Test_lambda_scope() changes from patch 8.1.0736 so that it passes.
2020-09-30 21:00:17 -04:00
Jan Edmund Lazo
2a57dce9f2 vim-patch:8.1.1319: computing function length name in many places
Problem:    Computing function length name in many places.
Solution:   compute name length in call_func().
6ed8819822

In call_func(), reassign "len" param to (int)STRLEN(funcname)
instead of using vim_strsave() which runs strlen().
"len" param is checked for v:lua functions.
call_func() states that strlen() is used if "len" is set to -1.
2020-09-30 21:00:17 -04:00
erw7
7cb38d5ac4 vim-patch:8.1.1563: crash when using closures
Problem:    Crash when using closures.
Solution:   Set reference in varlist of funccal when running the garbage
            collector. (Ozaki Kiichi, closes vim/vim#4554, closes vim/vim#4547)
6e5000d493
2020-09-30 21:00:17 -04:00
Björn Linse
5f3ddb195e lua: cleanup naming conventions of executor functions 2020-09-10 10:02:41 +02:00
Jan Edmund Lazo
1d9b146ce3 vim-patch:8.2.0607: gcc warns for using uninitialized variable
Problem:    Gcc warns for using uninitialized variable. (John Marriott)
Solution:   Set name_end also for environment variables.
2bb76accc6
2020-08-19 21:38:42 -04:00
Jan Edmund Lazo
aab71dbd03 userfunc: fix pvs/v547
xcalloc() never returns NULL.
2020-08-15 10:57:17 -04:00
TJ DeVries
6360cf7ce8 lua: Add ability to pass tables with __call
vim-patch:8.2.1054: not so easy to pass a lua function to Vim
vim-patch:8.2.1084: Lua: registering function has useless code

I think I have also opened up the possibility for people to use these
callbacks elsewhere, since I've added a new struct that we should be
able to use.

Also, this should allow us to determine what the state of a list is in
Lua or a dictionary in Lua, since we now can track the luaref as we go.
2020-07-10 20:23:12 -04:00
TJ DeVries
971a191c4d lua: Add ability to pass lua functions directly to vimL 2020-07-10 16:17:33 -04:00
Jan Edmund Lazo
2298350884 vim-patch:8.1.0917: double free when running out of memory
Problem:    Double free when running out of memory.
Solution:   Remove one free. (Ken Takata, closes vim/vim#3955)
445e71c5ee
2020-06-04 20:52:52 -04:00
erw7
c3dab08c8f vim-patch:8.1.1485: double free when garbage_collect() is used in autocommand
Problem:    Double free when garbage_collect() is used in autocommand.
Solution:   Have garbage collection also set the copyID in funccal_stack.
c07f67ad0e
2020-05-25 18:52:30 +09:00
erw7
1212390254 vim-patch:8.1.1007: using closure may consume a lot of memory
Problem:    Using closure may consume a lot of memory.
Solution:   unreference items that are no longer needed. Add a test. (Ozaki
            Kiichi, closes vim/vim#3961)
209b8e3e3b
2020-05-07 16:47:41 +09:00
erw7
17f067f4b4 vim-patch:8.1.0475: memory not freed on exit when quit in autocmd
Problem:    Memory not freed on exit when quit in autocmd.
Solution:   Remember funccal stack when executing autocmd.
27e80c885b
2020-05-07 16:00:46 +09:00
Jan Edmund Lazo
a89d64b687 vim-patch:8.1.0868: crash if triggering garbage collector after a function call
Problem:    Crash if triggering garbage collector after a function call.
            (Michael Henry)
Solution:   Don't call the garbage collector right away, do it later.
            (closes vim/vim#3894)
889da2f243
2020-05-03 13:16:38 -04:00
Jan Edmund Lazo
66369cd9d0 vim-patch:8.1.0800: may use a lot of memory when a function refers itself
Problem:    May use a lot of memory when a function creates a cyclic
            reference.
Solution:   After saving a funccal many times, invoke the garbage collector.
            (closes vim/vim#3835)
4456ab527a
2020-05-03 13:16:37 -04:00
Justin M. Keyes
6b050a145d Merge #11851 'eval.c: factor out eval/userfunc.c'
vim-patch:7.4.2058
2020-04-26 20:01:58 -07:00
Jakub Łuczyński
5e815edece rename: user_funcs -> userfunc
Lets stick with vim for now
2020-02-13 14:11:55 +01:00