aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDongdong Zhou <dzhou121@gmail.com>2017-02-23 09:53:12 +0000
committerBjörn Linse <bjorn.linse@gmail.com>2017-10-26 09:35:12 +0200
commit6e90bc7200c87f0af448a8cf0998715db9175f15 (patch)
tree0795eb9366cdc56ed8bfb1058d51922b201c9e4b /src
parent439c39a2cfb0712eb68ad76354b1fd7e92bb71fe (diff)
downloadrneovim-6e90bc7200c87f0af448a8cf0998715db9175f15.tar.gz
rneovim-6e90bc7200c87f0af448a8cf0998715db9175f15.tar.bz2
rneovim-6e90bc7200c87f0af448a8cf0998715db9175f15.zip
ext_cmdline: Added cmdline prompt
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c18
-rw-r--r--src/nvim/ex_getln.c21
2 files changed, 27 insertions, 12 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index aab777955c..72b97cbab9 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -11149,15 +11149,19 @@ void get_user_input(const typval_T *const argvars,
// Only the part of the message after the last NL is considered as
// prompt for the command line.
const char *p = strrchr(prompt, '\n');
- if (p == NULL) {
+ if (ui_is_external(kUICmdline)) {
p = prompt;
} else {
- p++;
- msg_start();
- msg_clr_eos();
- msg_puts_attr_len(prompt, p - prompt, echo_attr);
- msg_didout = false;
- msg_starthere();
+ if (p == NULL) {
+ p = prompt;
+ } else {
+ p++;
+ msg_start();
+ msg_clr_eos();
+ msg_puts_attr_len(prompt, p - prompt, echo_attr);
+ msg_didout = false;
+ msg_starthere();
+ }
}
cmdline_row = msg_row;
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 87bf46d4d0..a05331d13a 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -3114,11 +3114,17 @@ static void redrawcmdprompt(void)
}
}
if (ccline.cmdprompt != NULL) {
- msg_puts_attr((const char *)ccline.cmdprompt, ccline.cmdattr);
- ccline.cmdindent = msg_col + (msg_row - cmdline_row) * Columns;
- /* do the reverse of set_cmdspos() */
- if (ccline.cmdfirstc != NUL)
- --ccline.cmdindent;
+ if (cmdline_external) {
+ Array args = ARRAY_DICT_INIT;
+ ADD(args, STRING_OBJ(cstr_to_string((char *)(ccline.cmdprompt))));
+ ui_event("cmdline_prompt", args);
+ } else {
+ msg_puts_attr((const char *)ccline.cmdprompt, ccline.cmdattr);
+ ccline.cmdindent = msg_col + (msg_row - cmdline_row) * Columns;
+ /* do the reverse of set_cmdspos() */
+ if (ccline.cmdfirstc != NUL)
+ --ccline.cmdindent;
+ }
} else
for (i = ccline.cmdindent; i > 0; --i)
msg_putchar(' ');
@@ -6036,3 +6042,8 @@ void cmdline_set_external(bool external)
{
cmdline_external = external;
}
+
+bool cmdline_get_external(void)
+{
+ return cmdline_external;
+}