aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2019-03-16 15:34:16 +0100
committerMarco Hinz <mh.codebro@gmail.com>2019-03-16 15:34:16 +0100
commit073ab7cda83ca2f804b02e10bc6be17a02c4d3c9 (patch)
tree06738c34484ec1134bdbb7135b6e6739d3970cb0 /src
parent86992a7bb1fbf7f4eb2632a473ae3dbe5221d50f (diff)
downloadrneovim-073ab7cda83ca2f804b02e10bc6be17a02c4d3c9.tar.gz
rneovim-073ab7cda83ca2f804b02e10bc6be17a02c4d3c9.tar.bz2
rneovim-073ab7cda83ca2f804b02e10bc6be17a02c4d3c9.zip
api: refactor FloatRelative usage
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/vim.c3
-rw-r--r--src/nvim/api/window.c18
-rw-r--r--src/nvim/buffer_defs.h8
-rw-r--r--src/nvim/window.c9
4 files changed, 16 insertions, 22 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index 223d90758b..ae8404a530 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -1047,7 +1047,8 @@ Buffer nvim_create_buf(Boolean listed, Boolean scratch, Error *err)
///
/// @param[out] err Error details, if any
/// @return the window handle or 0 when error
-Window nvim_open_win(Buffer buffer, Boolean enter, Dictionary config, Error *err)
+Window nvim_open_win(Buffer buffer, Boolean enter, Dictionary config,
+ Error *err)
FUNC_API_SINCE(6)
{
FloatConfig fconfig = FLOAT_CONFIG_INIT;
diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c
index 9e53a7bf14..2204170aab 100644
--- a/src/nvim/api/window.c
+++ b/src/nvim/api/window.c
@@ -512,21 +512,9 @@ Dictionary nvim_win_get_config(Window window, Error *err)
PUT(rv, "row", FLOAT_OBJ(wp->w_float_config.row));
PUT(rv, "col", FLOAT_OBJ(wp->w_float_config.col));
- if (wp->w_floating) {
- switch (wp->w_float_config.relative) {
- case kFloatRelativeEditor:
- PUT(rv, "relative", STRING_OBJ(cstr_to_string("editor")));
- break;
- case kFloatRelativeWindow:
- PUT(rv, "relative", STRING_OBJ(cstr_to_string("win")));
- break;
- case kFloatRelativeCursor:
- PUT(rv, "relative", STRING_OBJ(cstr_to_string("cursor")));
- break;
- }
- } else {
- PUT(rv, "relative", STRING_OBJ(cstr_to_string("")));
- }
+ const char *rel =
+ wp->w_floating ? float_relative_str[wp->w_float_config.relative] : "";
+ PUT(rv, "relative", STRING_OBJ(cstr_to_string(rel)));
return rv;
}
diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h
index f11f3e2332..614185a463 100644
--- a/src/nvim/buffer_defs.h
+++ b/src/nvim/buffer_defs.h
@@ -959,6 +959,7 @@ struct matchitem {
};
typedef int FloatAnchor;
+typedef int FloatRelative;
enum {
kFloatAnchorEast = 1,
@@ -971,11 +972,14 @@ enum {
// SE -> kFloatAnchorSouth | kFloatAnchorEast
EXTERN const char *const float_anchor_str[] INIT(= { "NW", "NE", "SW", "SE" });
-typedef enum {
+enum {
kFloatRelativeEditor = 0,
kFloatRelativeWindow = 1,
kFloatRelativeCursor = 2,
-} FloatRelative;
+};
+
+EXTERN const char *const float_relative_str[] INIT(= { "editor", "window",
+ "cursor" });
typedef struct {
Window window;
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 7acf2a7f7e..609d8f1b4f 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -685,11 +685,11 @@ static bool parse_float_relative(String relative, FloatRelative *out)
*out = (FloatRelative)0;
}
char *str = relative.data;
- if (!STRICMP(str, "editor")) {
+ if (striequal(str, "editor")) {
*out = kFloatRelativeEditor;
- } else if (!STRICMP(str, "win")) {
+ } else if (striequal(str, "win")) {
*out = kFloatRelativeWindow;
- } else if (!STRICMP(str, "cursor")) {
+ } else if (striequal(str, "cursor")) {
*out = kFloatRelativeCursor;
} else {
return false;
@@ -804,7 +804,8 @@ bool parse_float_config(Dictionary config, FloatConfig *fconfig, bool reconf,
}
}
- if (has_window && !(has_relative && fconfig->relative == kFloatRelativeWindow)) {
+ if (has_window && !(has_relative
+ && fconfig->relative == kFloatRelativeWindow)) {
api_set_error(err, kErrorTypeValidation,
"'win' key is only valid with relative='win'");
return false;