| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unfortunately we cannot indiscriminately replace xfree() with
XFREE_CLEAR(), because comparing pointers after freeing them is a common
pattern. Example in `tv_list_remove_items()`:
xfree(li);
if (li == item2) {
break;
}
Instead we can do it selectively/explicitly.
ref #1375
|
|
|
| |
ref #10012
|
|
|
|
|
|
|
| |
- don't underflow itr->p pointer (C standard only allows one past the end, not
one before the beginning)
- make sure itr->p->i is always initialized (even when not used)
- don't rely on `NULL < &object` (likely UB)
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add ext_newgrid and ext_hlstate extensions. These use predefined
highlights and line-segment based updates, for efficiency and
simplicity.. The ext_hlstate extension in addition allows semantic
identification of builtin and syntax highlights.
Reimplement the old char-based updates in the remote UI layer, for
compatibility. For the moment, this is still the default. The bulitin
TUI uses the new line-based protocol.
cmdline uses curwin cursor position when ext_cmdline is active.
|
| |
|
|
|
|
| |
MSVC has the __restrict keyword and a marco is defined for it in `win_defs.h`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need to disable -Warray-bounds locally for kbtree.h, but we can't
because _Pragma("GCC diagnostic pop") is broken in GCC 5.x+.
So this commit disables -Warray-bounds entirely (for GCC only).
GCC bug:
"_Pragma diagnostic 'ignored' in macro with strict-overflow not
suppressing warning fully with -Werror"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66099
ref https://github.com/neovim/neovim/pull/7083#issuecomment-326323599
closes #7921
|
|
|
|
|
|
|
|
|
|
|
| |
First stage: something compiling without klee, but with a buch of dirty
hacks - done.
Second stage: something running under klee, able to emit useful results,
but still using dirty hacks - done.
Third stage: make CMake care about clang argumnets - not done, may be
omitted if proves to be too hard. Not that klee can be run on CI in any
case.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Closes #1234
multiqueue:
- Implement multiqueue_size()
- Rename MultiQueueItem.parent to MultiQueueItem.parent_item, to avoid confusion
with MultiQueue.parent.
|
|
|
| |
This avoids gcc warnings about undefined behaviour.
|
| |
|
| |
|
| |
|
|\
| |
| | |
lib/queue: Refactor queue.h
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Changes:
1. Linter finds no errors now.
2. Most of macros changed to `static inline … FUNC_ATTR_ALWAYS_INLINE` functions
(that was the purpose: they are easier to debug).
3. Queue is now not a pair of void* pointers, but a struct with two QUEUE
pointers, next and prev. This should not affect anything, except that _QUEUE
private macros can really be avoided without reducing readability and they do
not need any casts.
|
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
|
|
|
| |
msgpack_rpc_dispatch doesn't exist anymore
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Currently only merges history when reading ShaDa file. No tests yet.
|
|
|
|
|
| |
This is simpler and more efficient than klist.h for implementing queues that
support insertion or removal at arbitrary positions.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- New libuv/pty process abstraction with simplified API and no globals.
- Remove nvim/os/job*. Jobs are now a concept that apply only to programs
spawned by vimscript job* functions.
- Refactor shell.c/channel.c to use the new module, which brings a number of
advantages:
- Simplified API, less code
- No slots in the user job table are used
- Not possible to acidentally receive data from vimscript
- Implement job table in eval.c, which is now a hash table with unilimited job
slots and unique job ids.
|
|
|
|
|
|
|
|
|
|
|
| |
- Add `kl_shift_at` macro and backing function. This can be used to shift
elements at arbitrary positions. `kl_shift` is now defined on top of the new
macro.
- Change shift/push API, now `kl_push` accepts an object as parameter and
`kl_shift` returns the object instead of a status. An assertion against
shifting at the end of a list(or empty lists) was added.
- Add `kl_iter` and `kl_iter_at` macros. `kl_iter_at` is for starting the
iteration at arbitrary positions.
|
|
|
|
|
|
| |
We already use wrappers for allocation, the new `xfree` function is the
equivalent for deallocation and provides a way to fully replace the malloc
implementation used by Neovim.
|
|
|
|
|
|
| |
JobActivity autocommands run vimscript and must be executed on Nvim main loop.
Since the previous commit removed automatic calls to `event_push` on RStream/Job
callbacks, this adds it back, but in eval.c where job control is implemented.
|
|
|
|
|
| |
Also include stdint.h in khash.h. It was transitively included by vim.h via
memory.h before. khash.h accidentally relied on that.
|
|
|
|
|
|
|
| |
Done by manual inspection of the output of this script:
grep -r -l -w "bool\|true\|false" * | grep 'c$\|h$' > has_bool
grep -r -l "stdbool.h" * | grep 'c$\|h$' > has_include
grep -F -x -v -f has_bool has_include
|
|
|
|
|
| |
- Rename a/n/m to items/size/capactity in kvec.h
- Add capactity field to Arrays/Dictionaries
|
|
|
|
| |
Otherwise FUNC_ATTR_* macros may appear empty
|