Commit Graph

1467 Commits

Author SHA1 Message Date
ZyX
cd8f07cb75 eval: Do not allocate b:changedtick dictionary item 2017-02-24 02:47:43 +03:00
ZyX
9c1865c7f8 *: Fix linter errors 2017-02-23 19:48:41 +03:00
ZyX
8faa4af396 api: Rename dict_set_value to dict_set_var
Reasonings:
1. It is not used for anything, but scope dictionaries currenly. So there is no 
   need to generalize and split it into dict_set_var (which will contain some 
   scope-dictionary-specific checks) and dict_set_value (which will work for any 
   dictionary).
2. Check for key size is no longer valid for non-scope dictionaries: you *can* 
   use empty keys there. In scope dictionaries also, but you actually are not 
   supposed to store there anything, but variables.

Note that actually one may still do

    let b:[''] = 1

and “bypass” check for variable name. It won’t change what `echo b:` will show, 
but it may affect code which iterates over scope dictionary keys and sets them 
to something (if there is such code).
2017-02-23 19:48:41 +03:00
ZyX
f387de4ec0 eval: Remove incorrect workaround
Was replaced by the previous patch. Also fixes legacy test 055.
2017-02-23 19:48:41 +03:00
ZyX
d8a7e5fdbb eval: Forbid (un)locking b:changedtick
Port of vim-patch:8.0.0343
2017-02-23 19:48:41 +03:00
ZyX
9668d26a43 eval: Make sure islocked('b:.changedtick') does not error out
Port of vim-patch:8.0.0345
2017-02-23 19:48:41 +03:00
ZyX
9972db79c8 eval: Specify more precise len for var_check_ro in get_lval 2017-02-23 19:46:45 +03:00
ZyX
d5ab50a040 eval: Refactor var_check_ro, tv_check_lock and var_check_fixed
- They are no longer responble for using gettext.
- They now receive string length and use %.* format specifier in messages.
- And one less global: one of the error messages is never repeated.
2017-02-23 19:46:45 +03:00
ZyX
7869b978e8 eval: Fix memory leak
Ref vim/vim#1497
2017-02-23 19:46:45 +03:00
ZyX
e2fbbb292f eval: Refactor item_lock
If I am not mistaking, this commit should not change any functionality.
2017-02-23 19:46:45 +03:00
ZyX
f2c9fd312c eval: Make sure that b:changedtick may not be unlocked via :unlo b:var
It still may be unlocked by `:unlock b:.var`.
2017-02-23 19:46:44 +03:00
ZyX
4f10d42f82 buffer: Bind b:changedtick to b:['changedtick'], remove special cases 2017-02-23 19:46:44 +03:00
James McCoy
bc76ce2c4f Merge remote-tracking branch 'origin/master' into lambda 2017-02-22 19:23:20 -05:00
ZyX
31cdb227ba eval: Flush buffer in write_list
This way success/failure return from this function is more precise.
2017-02-23 01:49:05 +03:00
Kurt Bonatz
b0bbe82a60 eval.c: has("unnamedplus"). (#6136)
Return 1 for UNIX  with a functioning clipboard provider.

Closes #6103
2017-02-18 14:04:46 +01:00
Michael Ennen
10c9ecc211 vim-patch:8.0.0297
Problem:    Double free on exit when using a closure. (James McCoy)
Solution:   Split free_al_functions in two parts. (closes #1428)

03ff9bcbc9
2017-02-14 17:38:19 -07:00
Michael Ennen
ef8701610b Allow lambdas to be used with jobs, timers and dictwatchers. 2017-02-14 17:38:19 -07:00
Michael Ennen
bae8a19c63 vim-patch:7.4.2235
Problem:    submatch() does not check for a valid argument.
Solution:   Give an error if the argument is out of range. (Dominique Pelle)

989f592f7f
2017-02-14 17:38:19 -07:00
Michael Ennen
effe760b13 vim-patch:7.4.2233
Problem:    Crash when using funcref() with invalid name. (Dominique Pelle)
Solution:   Check for NULL translated name.

843b884461
2017-02-14 17:38:19 -07:00
Michael Ennen
8cae66b5e0 vim-patch:7.4.2197
Problem:    All functions are freed on exit, which may hide leaks.
Solution:   Only free named functions, not reference counted ones.

c257487035
2017-02-14 17:38:18 -07:00
Michael Ennen
e2f76d190d vim-patch:7.4.2143
Problem:    A funccal is garbage collected while it can still be used.
Solution:   Set copyID in all referenced functions.  Do not list lambda
            functions with ":function".

bc7ce675b2
2017-02-14 17:38:18 -07:00
Michael Ennen
00ac82eae2 vim-patch:7.4.2142
Problem:    Leaking memory when redefining a function.
Solution:   Don't increment the function reference count when it's found by
            name. Don't remove the wrong function from the hashtab.  More
            reference counting fixes.

8dd3a43d75
2017-02-14 17:38:18 -07:00
Michael Ennen
42727ecf08 vim-patch:7.4.2141
Problem:    Coverity reports bogus NULL check.
Solution:   When checking for a variable in the funccal scope don't pass the
            varname.

ba96e9af38
2017-02-14 17:38:18 -07:00
Michael Ennen
e71e9020eb vim-patch:7.4.2139
Problem:    :delfunction causes illegal memory access.
Solution:   Correct logic when deciding to free a function.

0588d4f9d2
2017-02-14 17:38:18 -07:00
Michael Ennen
53fad45115 vim-patch:7.4.2137
Problem:    Using function() with a name will find another function when it is
            redefined.
Solution:   Add funcref().  Refer to lambda using a partial.  Fix several
            reference counting issues.

437bafe4c8
2017-02-14 17:38:18 -07:00
Michael Ennen
1f715ac1c1 vim-patch:7.4.2136
Problem:    Closure function fails.
Solution:   Don't reset uf_scoped when it points to another funccal.

5801644819
2017-02-14 17:38:18 -07:00
Michael Ennen
1e3c0efa0f vim-patch:7.4.2134
Problem:    No error for using function() badly.
Solution:   Check for passing wrong function name. (Ken Takata)

b54c3ff317
2017-02-14 17:38:17 -07:00
Michael Ennen
d7c798cd86 vim-patch:7.4.2121
Problem:    No easy way to check if lambda and closure are supported.
Solution:   Add the +lambda feature.

9532fe7fbe
2017-02-14 17:38:17 -07:00
Michael Ennen
f59321e319 vim-patch:7.4.2120
Problem:    User defined functions can't be a closure.
Solution:   Add the "closure" argument. Allow using :unlet on a bound
            variable. (Yasuhiro Matsumoto, Ken Takata)

10ce39a0d5
2017-02-14 17:38:17 -07:00
Michael Ennen
9f6f7fe26d vim-patch:7.4.2119
Problem:    Closures are not supported.
Solution:   Capture variables in lambdas from the outer scope. (Yasuhiro
            Matsumoto, Ken Takata)

1e96d9bf98
2017-02-14 17:38:17 -07:00
Michael Ennen
6563d85990 vim-patch:7.4.2104
Problem:    Code duplication when unreferencing a function.
Solution:   De-duplicate.

97baee80f0
2017-02-14 17:38:17 -07:00
Michael Ennen
cbaa87a639 vim-patch:7.4.2096
Problem:    Lambda functions show up with completion.
Solution:   Don't show lambda functions. (Ken Takata)

b49edc11a1
2017-02-14 17:38:17 -07:00
Michael Ennen
7f4848aff4 vim-patch:7.4.2090
Problem:    Using submatch() in a lambda passed to substitute() is verbose.
Solution:   Use a static list and pass it as an optional argument to the
            function.  Fix memory leak.

df48fb456f
2017-02-14 17:38:17 -07:00
Michael Ennen
fc46efd3f2 vim-patch:7.4.2072
Problem:    substitute() does not support a Funcref argument.
Solution:   Support a Funcref like it supports  a string starting with "\=".

72ab729c3d
2017-02-14 17:38:16 -07:00
Michael Ennen
bb7d0deb2f vim-patch:7.4.2044
Problem:    filter() and map() either require a string or defining a function.
Solution:   Support lambda, a short way to define a function that evaluates an
            expression. (Yasuhiro Matsumoto, Ken Takata)

069c1e7fa9
2017-02-14 17:38:16 -07:00
Michael Ennen
6c423989fc vim-patch:7.4.2002
Problem:    Crash when passing number to filter() or map().
Solution:   Convert to a string. (Ozaki Kiichi)

a06ec8f345
2017-02-14 17:38:16 -07:00
Michael Ennen
bb2afeb026 vim-patch:7.4.1989
Problem:    filter() and map() only accept a string argument.
Solution:   Implement using a Funcref argument (Yasuhiro Matsumoto, Ken
            Takata)

b33c7eb5b8
2017-02-14 17:38:16 -07:00
Michael Ennen
b0fc6108c9 vim-patch:7.4.1727
Problem:    Cannot detect a crash in tests when caused by garbagecollect().
Solution:   Add garbagecollect_for_testing().  Do not free a job if is still
            useful.

ebf7dfa6f1
2017-02-14 17:38:15 -07:00
ZyX
095e6cc2e0 *: Fix linter errors 2017-02-15 03:15:47 +03:00
ZyX
efa2682e3b *: Partial string handling refactoring
Main points:

- Replace `char_u` with `char` in some cases.
- Remove `str[len] = NUL` hack in some cases when `str` may be considered
  `const`.
2017-02-15 02:48:33 +03:00
ZyX
0086991b1b eval: Fix linter error 2017-02-15 00:28:34 +03:00
ZyX
f489827b5f eval: Fix error messages from writefile
1. When calling writefile(list, fname, []) do not show error message twice.
2. Do not allow file name to be overwritten for writefile([1], 2).
3. Do not show “Can’t open file with an empty name” error after error like 
   “using Float as a String” when type of the second argument is not correct.
4. Do not give multiple error messages and still continue for code like 
   `writefile(["test", [], [], [], "tset"])`.

Note that to fix 4. ideally I need tv_check_str_or_nr which is currently present 
in two PRs: #6114 and #5119. I would want to avoid copying this function into 
a yet another PR.

Ref vim/vim#1476.
2017-02-14 20:46:12 +03:00
ZyX
066e6b8e9b eval: Return immediately after an error in write_list()
Previously it could attempt to write trailing newline before returning.
2017-02-14 19:40:16 +03:00
ZyX
2e179214b8 eval: Remove outdated comment 2017-02-14 01:39:43 +03:00
ZyX
fe0eecf9cc eval: writefile: Give more adequate IO errors and do not call putc() 2017-02-14 01:10:31 +03:00
Nikolai Aleksandrovich Pavlov
abdbfd26bc eval: Add id() function and make printf("%p") return something useful (#6095) 2017-02-11 19:47:02 +01:00
Justin M. Keyes
5b8fac8ace process_spawn: Return status code (#6075) 2017-02-09 14:20:24 +01:00
James McCoy
11efbc80e3 Merge pull request #5913 from mhinz/buf-lookup-patches
vim-patch:7.4.2017,7.4.2018,7.4.2021,7.4.2022,7.4.2023,7.4.2024
2017-02-06 10:20:49 -05:00
Justin M. Keyes
a767fee8cd eval: set_ref_in_item(): remove dead code
Missed in 25438f149f
2017-02-06 03:05:16 +01:00
Marco Hinz
d60d1b3232 vim-patch:7.4.2022
Problem:  Warnings from 64 bit compiler.
Solution: Add type casts. (Mike Williams)

25065ec375
2017-02-04 17:55:45 -05:00