aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/digraph.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/digraph.c')
-rw-r--r--src/nvim/digraph.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/nvim/digraph.c b/src/nvim/digraph.c
index ea0d1ba708..f32123e686 100644
--- a/src/nvim/digraph.c
+++ b/src/nvim/digraph.c
@@ -22,7 +22,6 @@
#include "nvim/getchar.h"
#include "nvim/gettext_defs.h"
#include "nvim/globals.h"
-#include "nvim/highlight.h"
#include "nvim/highlight_defs.h"
#include "nvim/keycodes.h"
#include "nvim/mapping.h"
@@ -1024,6 +1023,7 @@ static digr_T digraphdefault[] =
{ '?', '=', 0x2245 },
{ '?', '2', 0x2248 },
{ '=', '?', 0x224c },
+ { '.', '=', 0x2250 },
{ 'H', 'I', 0x2253 },
{ '!', '=', 0x2260 },
{ '=', '3', 0x2261 },
@@ -1715,6 +1715,7 @@ void listdigraphs(bool use_headers)
{
result_T previous = 0;
+ msg_ext_set_kind("list_cmd");
msg_putchar('\n');
const digr_T *dp = digraphdefault;
@@ -1954,16 +1955,16 @@ void f_digraph_get(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
/// "digraph_getlist()" function
void f_digraph_getlist(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
+ if (tv_check_for_opt_bool_arg(argvars, 0) == FAIL) {
+ return;
+ }
+
bool flag_list_all;
if (argvars[0].v_type == VAR_UNKNOWN) {
flag_list_all = false;
} else {
- bool error = false;
- varnumber_T flag = tv_get_number_chk(&argvars[0], &error);
- if (error) {
- return;
- }
+ varnumber_T flag = tv_get_bool(&argvars[0]);
flag_list_all = flag != 0;
}
@@ -2183,22 +2184,22 @@ static void keymap_unload(void)
/// @param fmt format string containing one %s item
/// @param buf buffer for the result
/// @param len length of buffer
-bool get_keymap_str(win_T *wp, char *fmt, char *buf, int len)
+int get_keymap_str(win_T *wp, char *fmt, char *buf, int len)
{
char *p;
if (wp->w_buffer->b_p_iminsert != B_IMODE_LMAP) {
- return false;
+ return 0;
}
buf_T *old_curbuf = curbuf;
win_T *old_curwin = curwin;
+ char to_evaluate[] = "b:keymap_name";
curbuf = wp->w_buffer;
curwin = wp;
- STRCPY(buf, "b:keymap_name"); // must be writable
emsg_skip++;
- char *s = p = eval_to_string(buf, false, false);
+ char *s = p = eval_to_string(to_evaluate, false, false);
emsg_skip--;
curbuf = old_curbuf;
curwin = old_curwin;
@@ -2209,9 +2210,12 @@ bool get_keymap_str(win_T *wp, char *fmt, char *buf, int len)
p = "lang";
}
}
- if (vim_snprintf(buf, (size_t)len, fmt, p) > len - 1) {
+ int plen = vim_snprintf(buf, (size_t)len, fmt, p);
+ xfree(s);
+ if (plen < 0 || plen > len - 1) {
buf[0] = NUL;
+ plen = 0;
}
- xfree(s);
- return buf[0] != NUL;
+
+ return plen;
}