aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-08-25 09:13:49 +0200
committerGitHub <noreply@github.com>2019-08-25 09:13:49 +0200
commitc8fc285db60decb020c180622613d3880cbefbfe (patch)
tree6fb4be0c1465c2eeb8d6dfd55f9e811423507500 /src/nvim/eval.c
parent2e621553c089ca6b7de5123a9c63a7a54ee06c20 (diff)
parent66c06dad62638106fadad389f585dc11f482c6b1 (diff)
downloadrneovim-c8fc285db60decb020c180622613d3880cbefbfe.tar.gz
rneovim-c8fc285db60decb020c180622613d3880cbefbfe.tar.bz2
rneovim-c8fc285db60decb020c180622613d3880cbefbfe.zip
Merge #10840 from janlazo/vim-8.1.1757
vim-patch:8.1.{1757,1924}
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 1570af07d7..06254953cb 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -7353,14 +7353,19 @@ static buf_T * get_buf_arg(typval_T *arg)
*/
static void f_bufname(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
+ const buf_T *buf;
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
- if (!tv_check_str_or_nr(&argvars[0])) {
- return;
+ if (argvars[0].v_type == VAR_UNKNOWN) {
+ buf = curbuf;
+ } else {
+ if (!tv_check_str_or_nr(&argvars[0])) {
+ return;
+ }
+ emsg_off++;
+ buf = tv_get_buf(&argvars[0], false);
+ emsg_off--;
}
- emsg_off++;
- const buf_T *const buf = tv_get_buf(&argvars[0], false);
- emsg_off--;
if (buf != NULL && buf->b_fname != NULL) {
rettv->vval.v_string = (char_u *)xstrdup((char *)buf->b_fname);
}
@@ -7371,15 +7376,21 @@ static void f_bufname(typval_T *argvars, typval_T *rettv, FunPtr fptr)
*/
static void f_bufnr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
+ const buf_T *buf;
bool error = false;
rettv->vval.v_number = -1;
- if (!tv_check_str_or_nr(&argvars[0])) {
- return;
+
+ if (argvars[0].v_type == VAR_UNKNOWN) {
+ buf = curbuf;
+ } else {
+ if (!tv_check_str_or_nr(&argvars[0])) {
+ return;
+ }
+ emsg_off++;
+ buf = tv_get_buf(&argvars[0], false);
+ emsg_off--;
}
- emsg_off++;
- const buf_T *buf = tv_get_buf(&argvars[0], false);
- emsg_off--;
// If the buffer isn't found and the second argument is not zero create a
// new buffer.
@@ -15194,6 +15205,7 @@ static void set_buffer_lines(buf_T *buf, linenr_T lnum_arg, bool append,
}
}
check_cursor_col();
+ update_topline();
}
if (!is_curbuf) {