diff options
author | Sean Dewar <seandewar@users.noreply.github.com> | 2023-04-20 21:17:25 +0100 |
---|---|---|
committer | Sean Dewar <seandewar@users.noreply.github.com> | 2023-07-05 08:31:52 +0100 |
commit | 77118d0da8badc4135be430f4cbb15bc95bc760f (patch) | |
tree | e1168e881f49751b807524559720e5212661244e /src/nvim/api/buffer.c | |
parent | b2e8c0df2062f765a4cf7d96379c5f0f19393dfd (diff) | |
download | rneovim-77118d0da8badc4135be430f4cbb15bc95bc760f.tar.gz rneovim-77118d0da8badc4135be430f4cbb15bc95bc760f.tar.bz2 rneovim-77118d0da8badc4135be430f4cbb15bc95bc760f.zip |
fix(api): use text_locked() to check textlock
Problem: some API functions that check textlock (usually those that can change
curwin or curbuf) can break the cmdwin.
Solution: make FUNC_API_CHECK_TEXTLOCK call text_locked() instead, which already
checks for textlock, cmdwin and `<expr>` status.
Add FUNC_API_TEXTLOCK_ALLOW_CMDWIN to allow such functions to be usable in the
cmdwin if they can work properly there; the opt-in nature of this attribute
should hopefully help mitigate future bugs.
Also fix a regression in #22634 that made functions checking textlock usable in
`<expr>` mappings, and rename FUNC_API_CHECK_TEXTLOCK to FUNC_API_TEXTLOCK.
Diffstat (limited to 'src/nvim/api/buffer.c')
-rw-r--r-- | src/nvim/api/buffer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 8774aee20b..7cd9686544 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -347,7 +347,7 @@ end: void nvim_buf_set_lines(uint64_t channel_id, Buffer buffer, Integer start, Integer end, Boolean strict_indexing, ArrayOf(String) replacement, Error *err) FUNC_API_SINCE(1) - FUNC_API_CHECK_TEXTLOCK + FUNC_API_TEXTLOCK_ALLOW_CMDWIN { buf_T *buf = find_buffer_by_handle(buffer, err); @@ -1061,7 +1061,7 @@ Boolean nvim_buf_is_loaded(Buffer buffer) /// - unload: Unloaded only, do not delete. See |:bunload| void nvim_buf_delete(Buffer buffer, Dictionary opts, Error *err) FUNC_API_SINCE(7) - FUNC_API_CHECK_TEXTLOCK + FUNC_API_TEXTLOCK { buf_T *buf = find_buffer_by_handle(buffer, err); |