From 77118d0da8badc4135be430f4cbb15bc95bc760f Mon Sep 17 00:00:00 2001 From: Sean Dewar Date: Thu, 20 Apr 2023 21:17:25 +0100 Subject: 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 `` 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 `` mappings, and rename FUNC_API_CHECK_TEXTLOCK to FUNC_API_TEXTLOCK. --- src/nvim/func_attr.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/nvim/func_attr.h') diff --git a/src/nvim/func_attr.h b/src/nvim/func_attr.h index 57e5766f67..9ac4ee28d6 100644 --- a/src/nvim/func_attr.h +++ b/src/nvim/func_attr.h @@ -226,8 +226,10 @@ # define FUNC_API_REMOTE_ONLY /// API function not exposed in Vimscript/remote. # define FUNC_API_LUA_ONLY -/// API function checked textlock. -# define FUNC_API_CHECK_TEXTLOCK +/// API function fails during textlock. +# define FUNC_API_TEXTLOCK +/// API function fails during textlock, but allows cmdwin. +# define FUNC_API_TEXTLOCK_ALLOW_CMDWIN /// API function introduced at the given API level. # define FUNC_API_SINCE(X) /// API function deprecated since the given API level. -- cgit