Mercurial > vim
comparison src/evalfunc.c @ 17855:285f7a700185 v8.1.1924
patch 8.1.1924: using empty string for current buffer is unexpected
Commit: https://github.com/vim/vim/commit/a8eee21e75324d199acb1663cb5009e03014a13a
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Aug 24 22:14:58 2019 +0200
patch 8.1.1924: using empty string for current buffer is unexpected
Problem: Using empty string for current buffer is unexpected.
Solution: Make the argument optional for bufname() and bufnr().
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 24 Aug 2019 22:30:03 +0200 |
parents | 73ddc462979d |
children | 4935244c1128 |
comparison
equal
deleted
inserted
replaced
17854:9cd094b68fa5 | 17855:285f7a700185 |
---|---|
455 {"browse", 4, 4, 0, f_browse}, | 455 {"browse", 4, 4, 0, f_browse}, |
456 {"browsedir", 2, 2, 0, f_browsedir}, | 456 {"browsedir", 2, 2, 0, f_browsedir}, |
457 {"bufadd", 1, 1, FEARG_1, f_bufadd}, | 457 {"bufadd", 1, 1, FEARG_1, f_bufadd}, |
458 {"bufexists", 1, 1, FEARG_1, f_bufexists}, | 458 {"bufexists", 1, 1, FEARG_1, f_bufexists}, |
459 {"buffer_exists", 1, 1, FEARG_1, f_bufexists}, // obsolete | 459 {"buffer_exists", 1, 1, FEARG_1, f_bufexists}, // obsolete |
460 {"buffer_name", 1, 1, 0, f_bufname}, // obsolete | 460 {"buffer_name", 0, 1, FEARG_1, f_bufname}, // obsolete |
461 {"buffer_number", 1, 1, 0, f_bufnr}, // obsolete | 461 {"buffer_number", 0, 1, FEARG_1, f_bufnr}, // obsolete |
462 {"buflisted", 1, 1, FEARG_1, f_buflisted}, | 462 {"buflisted", 1, 1, FEARG_1, f_buflisted}, |
463 {"bufload", 1, 1, FEARG_1, f_bufload}, | 463 {"bufload", 1, 1, FEARG_1, f_bufload}, |
464 {"bufloaded", 1, 1, FEARG_1, f_bufloaded}, | 464 {"bufloaded", 1, 1, FEARG_1, f_bufloaded}, |
465 {"bufname", 1, 1, FEARG_1, f_bufname}, | 465 {"bufname", 0, 1, FEARG_1, f_bufname}, |
466 {"bufnr", 1, 2, FEARG_1, f_bufnr}, | 466 {"bufnr", 0, 2, FEARG_1, f_bufnr}, |
467 {"bufwinid", 1, 1, FEARG_1, f_bufwinid}, | 467 {"bufwinid", 1, 1, FEARG_1, f_bufwinid}, |
468 {"bufwinnr", 1, 1, FEARG_1, f_bufwinnr}, | 468 {"bufwinnr", 1, 1, FEARG_1, f_bufwinnr}, |
469 {"byte2line", 1, 1, FEARG_1, f_byte2line}, | 469 {"byte2line", 1, 1, FEARG_1, f_byte2line}, |
470 {"byteidx", 2, 2, FEARG_1, f_byteidx}, | 470 {"byteidx", 2, 2, FEARG_1, f_byteidx}, |
471 {"byteidxcomp", 2, 2, FEARG_1, f_byteidxcomp}, | 471 {"byteidxcomp", 2, 2, FEARG_1, f_byteidxcomp}, |
1818 static void | 1818 static void |
1819 f_bufname(typval_T *argvars, typval_T *rettv) | 1819 f_bufname(typval_T *argvars, typval_T *rettv) |
1820 { | 1820 { |
1821 buf_T *buf; | 1821 buf_T *buf; |
1822 | 1822 |
1823 (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ | 1823 if (argvars[0].v_type == VAR_UNKNOWN) |
1824 ++emsg_off; | 1824 buf = curbuf; |
1825 buf = tv_get_buf(&argvars[0], FALSE); | 1825 else |
1826 { | |
1827 (void)tv_get_number(&argvars[0]); // issue errmsg if type error | |
1828 ++emsg_off; | |
1829 buf = tv_get_buf(&argvars[0], FALSE); | |
1830 --emsg_off; | |
1831 } | |
1826 rettv->v_type = VAR_STRING; | 1832 rettv->v_type = VAR_STRING; |
1827 if (buf != NULL && buf->b_fname != NULL) | 1833 if (buf != NULL && buf->b_fname != NULL) |
1828 rettv->vval.v_string = vim_strsave(buf->b_fname); | 1834 rettv->vval.v_string = vim_strsave(buf->b_fname); |
1829 else | 1835 else |
1830 rettv->vval.v_string = NULL; | 1836 rettv->vval.v_string = NULL; |
1831 --emsg_off; | |
1832 } | 1837 } |
1833 | 1838 |
1834 /* | 1839 /* |
1835 * "bufnr(expr)" function | 1840 * "bufnr(expr)" function |
1836 */ | 1841 */ |
1839 { | 1844 { |
1840 buf_T *buf; | 1845 buf_T *buf; |
1841 int error = FALSE; | 1846 int error = FALSE; |
1842 char_u *name; | 1847 char_u *name; |
1843 | 1848 |
1844 (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ | 1849 if (argvars[0].v_type == VAR_UNKNOWN) |
1845 ++emsg_off; | 1850 buf = curbuf; |
1846 buf = tv_get_buf(&argvars[0], FALSE); | 1851 else |
1847 --emsg_off; | 1852 { |
1848 | 1853 (void)tv_get_number(&argvars[0]); // issue errmsg if type error |
1849 /* If the buffer isn't found and the second argument is not zero create a | 1854 ++emsg_off; |
1850 * new buffer. */ | 1855 buf = tv_get_buf(&argvars[0], FALSE); |
1856 --emsg_off; | |
1857 } | |
1858 | |
1859 // If the buffer isn't found and the second argument is not zero create a | |
1860 // new buffer. | |
1851 if (buf == NULL | 1861 if (buf == NULL |
1852 && argvars[1].v_type != VAR_UNKNOWN | 1862 && argvars[1].v_type != VAR_UNKNOWN |
1853 && tv_get_number_chk(&argvars[1], &error) != 0 | 1863 && tv_get_number_chk(&argvars[1], &error) != 0 |
1854 && !error | 1864 && !error |
1855 && (name = tv_get_string_chk(&argvars[0])) != NULL | 1865 && (name = tv_get_string_chk(&argvars[0])) != NULL |