Commit Graph

1823 Commits

Author SHA1 Message Date
zeertzjq
a0cb53eca7 vim-patch:8.2.2533: Vim9: cannot use a range with :unlet
Problem:    Vim9: cannot use a range with :unlet.
Solution:   Implement ISN_UNLETRANGE.

5b5ae29bd3

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-06-12 17:20:55 +08:00
zeertzjq
971049f318 revert: "refactor: eliminate autocmd_fname_full global"
This reverts commit 82cd0be2ea.
2023-06-07 09:26:46 +08:00
Famiu Haque
b3d5138fd0 refactor(options): remove getoption_T and introduce OptVal (#23850)
Removes the `getoption_T` struct and also introduces the `OptVal` struct
to unify the methods of getting/setting different option value types.
This is the first of many PRs to reduce code duplication in the Vim
option code as well as to make options easier to maintain. It also
increases the flexibility and extensibility of options. Which opens the
door for things like Array and Dictionary options.
2023-06-07 08:05:16 +08:00
zeertzjq
9f3c4c1526 vim-patch:9.0.1597: cursor ends up below the window after a put (#23873)
Problem:    Cursor ends up below the window after a put.
Solution:   Mark w_crow and w_botline invalid when changing the cursor line.
            (closes vim/vim#12465)

8509014add

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-06-02 08:48:49 +08:00
Famiu Haque
cfd4fdfea4 refactor(api): new helper macros
Adds new API helper macros `CSTR_AS_OBJ()`, `STATIC_CSTR_AS_OBJ()`, and `STATIC_CSTR_TO_OBJ()`, which cleans up a lot of the current code. These macros will also be used extensively in the upcoming option refactor PRs because then API Objects will be used to get/set options. This PR also modifies pre-existing code to use old API helper macros like `CSTR_TO_OBJ()` to make them cleaner.
2023-05-23 15:20:41 +06:00
bfredl
e2fdd53d8c refactor(map): avoid duplicated khash_t types for values
This reduces the total number of khash_t instantiations from 22 to 8.

Make the khash internal functions take the size of values as a runtime
parameter. This is abstracted with typesafe Map containers which
are still specialized for both key, value type.

Introduce `Set(key)` type for when there is no value.

Refactor shada.c to use Map/Set instead of khash directly.
This requires `map_ref` operation to be more flexible.
Return pointers to both key and value, plus an indicator for new_item.
As a bonus, `map_key` is now redundant.

Instead of Map(cstr_t, FileMarks), use a pointer map as the FileMarks struct is
humongous.

Make `event_strings` actually work like an intern pool instead of wtf it
was doing before.
2023-05-17 12:26:21 +02:00
zeertzjq
84378c4dd5 test(old): remove python2 tests (#23547)
Because python2 provider is no longer supported.
2023-05-09 09:18:21 +08:00
zeertzjq
ca344b715b vim-patch:8.2.2459: Coverity reports dead code (#23531)
Problem:    Coverity reports dead code.
Solution:   Remove the dead code.

8bead9a058

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-08 09:49:40 +08:00
zeertzjq
e8661133c5 vim-patch:9.0.0904: various comment and indent flaws (#23498)
Problem:    Various comment and indent flaws.
Solution:   Improve comments and indenting.

88456cd3c4

Omit test_function_lists.vim change as that file is likely not
applicable to Nvim due to the existence of Nvim-only functions.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-06 09:34:29 +08:00
zeertzjq
6b912dec8e vim-patch:9.0.1508: catch does not work when lines are joined with a newline
Problem:    Catch does not work when lines are joined with a newline.
Solution:   Set "nextcmd" appropriately. (closes vim/vim#12348)

f2588b6fc9
2023-05-06 07:47:43 +08:00
zeertzjq
ad7f9a701c vim-patch:8.2.2141: a user command with try/catch may not catch an expression error
Problem:    A user command with try/catch may not catch an expression error.
Solution:   When an expression fails check for following "|". (closes vim/vim#7469)

8143a53c53

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-06 07:47:43 +08:00
zeertzjq
aa5f3a7962 vim-patch:8.2.2094: when an expression fails getting next command may be wrong
Problem:    When an expression fails getting the next command may be wrong.
Solution:   Do not check for a next command after :eval fails. (closes vim/vim#7415)

d0fe620cbb

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-06 07:47:40 +08:00
zeertzjq
88cfb49bee vim-patch:8.2.4890: inconsistent capitalization in error messages
Problem:    Inconsistent capitalization in error messages.
Solution:   Make capitalization consistent. (Doug Kearns)

cf030578b2

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-05 09:20:30 +08:00
zeertzjq
b16729f816 vim-patch:8.2.1697: inconsistent capitalization of error messages (#23476)
Problem:    Inconsistent capitalization of error messages.
Solution:   Always start with a capital.

7707228aac

Most of these errors are Vim9 script only.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 23:17:43 +08:00
zeertzjq
8752da89b8 vim-patch:8.2.2756: Vim9: blob index and slice not implemented yet
Problem:    Vim9: blob index and slice not implemented yet.
Solution:   Implement blob index and slice.

cfc3023cb6

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 17:59:21 +08:00
zeertzjq
b441dafdf5 vim-patch:8.2.2344: using inclusive index for slice is not always desired
Problem:    Using inclusive index for slice is not always desired.
Solution:   Add the slice() method, which has an exclusive index. (closes
            vim/vim#7408)

6601b62943

Cherry-pick a line in docs added later.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 17:40:29 +08:00
zeertzjq
62351ff3d2 vim-patch:8.2.1466: Vim9: cannot index or slice a variable with type "any"
Problem:    Vim9: cannot index or slice a variable with type "any".
Solution:   Add runtime index and slice.

cc673e746a

Missing changes from the last PR.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 17:30:18 +08:00
zeertzjq
f5cefd70e4 vim-patch:8.2.1462: Vim9: string slice not supported yet
Problem:    Vim9: string slice not supported yet.
Solution:   Add support for string slicing.

11107bab7e

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 17:20:53 +08:00
zeertzjq
dd3d857c39 vim-patch:8.2.1461: Vim9: string indexes are counted in bytes
Problem:    Vim9: string indexes are counted in bytes.
Solution:   Use character indexes. (closes vim/vim#6574)

e3c37d8ebf

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 17:16:23 +08:00
zeertzjq
7ac63906ea vim-patch:8.2.1466: Vim9: cannot index or slice a variable with type "any"
Problem:    Vim9: cannot index or slice a variable with type "any".
Solution:   Add runtime index and slice.

cc673e746a

Omit E1024 and E1062: Vim9 script only.
Omit string_slice() and char_idx2byte(): Vim9 script only.
Remove the first tv_is_luafunc() check because it always returns false.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 16:10:17 +08:00
zeertzjq
f4043e290e vim-patch:8.2.1463: Vim9: list slice not supported yet
Problem:    Vim9: list slice not supported yet.
Solution:   Add support for list slicing.

ed5918771f

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 14:44:38 +08:00
zeertzjq
1659cd15be vim-patch:8.2.0987: Vim9: cannot assign to [var; var]
Problem:    Vim9: cannot assign to [var; var].
Solution:   Assign rest of items to a list.

9af78769ee

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-05-04 14:44:38 +08:00
dundargoc
3b0df1780e refactor: uncrustify
Notable changes: replace all infinite loops to `while(true)` and remove
`int` from `unsigned int`.
2023-04-26 23:23:44 +02:00
zeertzjq
255e547e18 fix(timer): allow timer_info() to get info about current timer 2023-04-25 22:22:40 +08:00
zeertzjq
43c49746d9 vim-patch:9.0.0335: checks for Dictionary argument often give a vague error (#23309)
Problem:    Checks for Dictionary argument often give a vague error message.
Solution:   Give a useful error message. (Yegappan Lakshmanan, closes vim/vim#11009)

04c4c5746e

Cherry-pick removal of E922 from docs from patch 9.0.1403.

Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-04-25 21:32:12 +08:00
zeertzjq
1c12f844ad refactor(eval): use tv_list_append_allocated_string() 2023-04-19 11:29:35 +08:00
zeertzjq
481c6e6cac vim-patch:8.2.4197: cannot use an import in the "expr" part of 'spellsuggest'
Problem:    Cannot use an import in the "expr" part of 'spellsuggest'.
Solution:   Set the script context when evaluating "expr" of 'spellsuggest'.

2a7aa83458

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-17 15:46:24 +08:00
zeertzjq
f560c97059 vim-patch:8.2.4193: cannot use an import in 'charconvert'
Problem:    Cannot use an import in 'charconvert'.
Solution:   Set the script context when evaluating 'charconvert'.  Also expand
            script-local functions in 'charconvert'.

f4e88f2152

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-17 15:46:24 +08:00
zeertzjq
cec42e07bc vim-patch:8.2.4186: cannot use an import in 'patchexpr'
Problem:    Cannot use an import in 'patchexpr'.
Solution:   Set the script context when evaluating 'patchexpr'.  Do not
            require 'patchexpr' to return a bool, it was ignored anyway.

36c2add7f8

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-17 15:46:24 +08:00
zeertzjq
9cf59acfaa vim-patch:8.2.4182: memory leak when evaluating 'diffexpr'
Problem:    Memory leak when evaluating 'diffexpr'.
Solution:   Use free_tv() instead of clear_tv().

39b8944539

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-17 15:46:24 +08:00
zeertzjq
ba57566601 vim-patch:8.2.4181: Vim9: cannot use an import in 'diffexpr'
Problem:    Vim9: cannot use an import in 'diffexpr'.
Solution:   Set the script context when evaluating 'diffexpr'.  Do not require
            'diffexpr' to return a bool, it was ignored anyway.

7b29f6a394

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-17 15:46:24 +08:00
zeertzjq
227f06b7df vim-patch:9.0.1145: invalid memory access with recursive substitute expression (#23132)
Problem:    Invalid memory access with recursive substitute expression.
Solution:   Check the return value of vim_regsub().

3ac1d97a1d

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-16 18:43:15 +08:00
zeertzjq
42e55ba009 vim-patch:9.0.0398: members of funccall_T are inconsistently named (#23123)
Problem:    Members of funccall_T are inconsistently named.
Solution:   Use the "fc_" prefix for all members.

ca16c60f33

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-16 16:57:25 +08:00
zeertzjq
68ca16c376 vim-patch:8.2.3783: confusing error for using a variable as a function
Problem:    Confusing error for using a variable as a function.
Solution:   If a function is not found but there is a variable, give a more
            useful error. (issue vim/vim#9310)

2ef9156b42

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-16 10:15:15 +08:00
zeertzjq
2e8cec5f2b vim-patch:8.2.2978: warning for uninitialized variable
Problem:    Warning for uninitialized variable.
Solution:   Set return value to FAIL.

744aecf877

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-16 10:15:15 +08:00
zeertzjq
f4d3e279e8 vim-patch:8.2.2977: crash when using a null function reference
Problem:    Crash when using a null function reference. (Naohiro Ono)
Solution:   Check for an invalid function name. (closes vim/vim#8367)

22db0d549f

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-16 10:15:15 +08:00
zeertzjq
08121ef69f vim-patch:8.2.2848: crash whn calling partial
Problem:    Crash whn calling partial.
Solution:   Check for NULL pointer. (Dominique Pellé, closes vim/vim#8202)

fe8ebdbe5c

Co-authored-by: Dominique Pelle <dominique.pelle@gmail.com>
2023-04-16 10:15:15 +08:00
dundargoc
c08b030761 refactor: deprecate checkhealth functions
The following functions are deprecated and will be removed in
Nvim v0.11:

- health#report_start()
- health#report_info()
- health#report_ok()
- health#report_warn()
- health#report_error()
- vim.health.report_start()
- vim.health.report_info()
- vim.health.report_ok()
- vim.health.report_warn()
- vim.health.report_error()

Users should instead use these:

- vim.health.start()
- vim.health.info()
- vim.health.ok()
- vim.health.warn()
- vim.health.error()
2023-04-15 23:40:48 +02:00
zeertzjq
c6ebcd523d vim-patch:9.0.0104: going beyond allocated memory when evaluating string constant
Problem:    Going beyond allocated memory when evaluating string constant.
Solution:   Properly skip over <Key> form.

1e56bda904

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 19:01:24 +08:00
zeertzjq
29efd54e02 vim-patch:8.2.4934: string interpolation fails when not evaluating
Problem:    String interpolation fails when not evaluating.
Solution:   Skip the expression when not evaluating. (closes vim/vim#10398)

70c41241c2

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 19:01:19 +08:00
zeertzjq
ef9af89da7 vim-patch:8.2.4930: interpolated string expression requires escaping
Problem:    Interpolated string expression requires escaping.
Solution:   Do not require escaping in the expression.

0abc2871c1

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 18:19:17 +08:00
zeertzjq
bacb5021d4 vim-patch:8.2.4883: string interpolation only works in heredoc
Problem:    String interpolation only works in heredoc.
Solution:   Support interpolated strings.  Use syntax for heredoc consistent
            with strings, similar to C#. (closes vim/vim#10327)

2eaef106e4

Cherry-pick Test_Debugger_breakadd_expr() from Vim.

Co-authored-by: LemonBoy <thatlemon@gmail.com>
2023-04-15 17:59:32 +08:00
zeertzjq
700152fbf8 vim-patch:8.2.1378: cannot put space between function name and paren
Problem:    Cannot put space between function name and paren.
Solution:   Allow this for backwards compatibility.

bbd3e3c357

This fixes a regression from patch 8.2.1365, which isn't ported yet.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 17:09:41 +08:00
zeertzjq
9636ae6a13 vim-patch:8.2.3329: v_lock not set when getting value of environment variable
Problem:    v_lock not set when getting value of environment variable.
Solution:   Set v_lock to zero.

16e63e6d35

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 14:28:40 +08:00
zeertzjq
031cf60d4a vim-patch:8.2.1014: using "name" for a string result is confusing
Problem:    Using "name" for a string result is confusing.
Solution:   Rename to "end".

1e0b7b11db

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 14:21:07 +08:00
zeertzjq
85741677c8 vim-patch:8.2.0634: crash with null partial and blob
Problem:    Crash with null partial and blob.
Solution:   Check for NULL pointer.  Add more tests. (Yegappan Lakshmanan,
            closes vim/vim#5984)

92b83ccfda

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 13:48:30 +08:00
zeertzjq
4b49f312a0 vim-patch:8.2.0633: crash when using null partial in filter()
Problem:    Crash when using null partial in filter().
Solution:   Fix crash.  Add more tests. (Yegappan Lakshmanan, closes vim/vim#5976)

9d8d0b5c64

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-15 13:31:10 +08:00
zeertzjq
90efe85a99 vim-patch:8.2.1111: inconsistent naming of get_list_tv() and eval_dict() (#23086)
Problem:    Inconsistent naming of get_list_tv() and eval_dict().
Solution:   Rename get_list_tv() to eval_list().  Similarly for eval_number(),
            eval_string(), eval_lit_string() and a few others.

9a78e6df17

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-14 19:28:39 +08:00
zeertzjq
3be966f725 vim-patch:9.0.1452: code using EVAL_CONSTANT is dead, it is never set
Problem:    Code using EVAL_CONSTANT is dead, it is never set.
Solution:   Remove EVAL_CONSTANT. (closes vim/vim#12252)

b7f6f93475
2023-04-14 18:04:12 +08:00
zeertzjq
d6e2804ab4 vim-patch:8.2.1794: no falsy Coalescing operator
Problem:    No falsy Coalescing operator.
Solution:   Add the "??" operator.  Fix mistake with function argument count.

92f26c256e

Cherry-pick tv2bool() into eval/typval.c.
Cherry-pick *??* tag from Vim runtime.

Co-authored-by: Bram Moolenaar <Bram@vim.org>
2023-04-14 18:04:09 +08:00