Mercurial > vim
comparison src/evalfunc.c @ 17221:a8fc7d97b54d v8.1.1610
patch 8.1.1610: there is no way to add or load a buffer without side effects
commit https://github.com/vim/vim/commit/15e248e37f3925d430f96e945d52d3dc423cdc83
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 30 20:21:37 2019 +0200
patch 8.1.1610: there is no way to add or load a buffer without side effects
Problem: There is no way to add or load a buffer without side effects.
Solution: Add the bufadd() and bufload() functions.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 30 Jun 2019 20:30:05 +0200 |
parents | 210c4c5f783d |
children | 07bbe73b8e74 |
comparison
equal
deleted
inserted
replaced
17220:646872542fb3 | 17221:a8fc7d97b54d |
---|---|
69 static void f_balloon_split(typval_T *argvars, typval_T *rettv); | 69 static void f_balloon_split(typval_T *argvars, typval_T *rettv); |
70 # endif | 70 # endif |
71 #endif | 71 #endif |
72 static void f_browse(typval_T *argvars, typval_T *rettv); | 72 static void f_browse(typval_T *argvars, typval_T *rettv); |
73 static void f_browsedir(typval_T *argvars, typval_T *rettv); | 73 static void f_browsedir(typval_T *argvars, typval_T *rettv); |
74 static void f_bufadd(typval_T *argvars, typval_T *rettv); | |
74 static void f_bufexists(typval_T *argvars, typval_T *rettv); | 75 static void f_bufexists(typval_T *argvars, typval_T *rettv); |
75 static void f_buflisted(typval_T *argvars, typval_T *rettv); | 76 static void f_buflisted(typval_T *argvars, typval_T *rettv); |
77 static void f_bufload(typval_T *argvars, typval_T *rettv); | |
76 static void f_bufloaded(typval_T *argvars, typval_T *rettv); | 78 static void f_bufloaded(typval_T *argvars, typval_T *rettv); |
77 static void f_bufname(typval_T *argvars, typval_T *rettv); | 79 static void f_bufname(typval_T *argvars, typval_T *rettv); |
78 static void f_bufnr(typval_T *argvars, typval_T *rettv); | 80 static void f_bufnr(typval_T *argvars, typval_T *rettv); |
79 static void f_bufwinid(typval_T *argvars, typval_T *rettv); | 81 static void f_bufwinid(typval_T *argvars, typval_T *rettv); |
80 static void f_bufwinnr(typval_T *argvars, typval_T *rettv); | 82 static void f_bufwinnr(typval_T *argvars, typval_T *rettv); |
524 {"balloon_split", 1, 1, f_balloon_split}, | 526 {"balloon_split", 1, 1, f_balloon_split}, |
525 # endif | 527 # endif |
526 #endif | 528 #endif |
527 {"browse", 4, 4, f_browse}, | 529 {"browse", 4, 4, f_browse}, |
528 {"browsedir", 2, 2, f_browsedir}, | 530 {"browsedir", 2, 2, f_browsedir}, |
531 {"bufadd", 1, 1, f_bufadd}, | |
529 {"bufexists", 1, 1, f_bufexists}, | 532 {"bufexists", 1, 1, f_bufexists}, |
530 {"buffer_exists", 1, 1, f_bufexists}, /* obsolete */ | 533 {"buffer_exists", 1, 1, f_bufexists}, /* obsolete */ |
531 {"buffer_name", 1, 1, f_bufname}, /* obsolete */ | 534 {"buffer_name", 1, 1, f_bufname}, /* obsolete */ |
532 {"buffer_number", 1, 1, f_bufnr}, /* obsolete */ | 535 {"buffer_number", 1, 1, f_bufnr}, /* obsolete */ |
533 {"buflisted", 1, 1, f_buflisted}, | 536 {"buflisted", 1, 1, f_buflisted}, |
537 {"bufload", 1, 1, f_bufload}, | |
534 {"bufloaded", 1, 1, f_bufloaded}, | 538 {"bufloaded", 1, 1, f_bufloaded}, |
535 {"bufname", 1, 1, f_bufname}, | 539 {"bufname", 1, 1, f_bufname}, |
536 {"bufnr", 1, 2, f_bufnr}, | 540 {"bufnr", 1, 2, f_bufnr}, |
537 {"bufwinid", 1, 1, f_bufwinid}, | 541 {"bufwinid", 1, 1, f_bufwinid}, |
538 {"bufwinnr", 1, 1, f_bufwinnr}, | 542 {"bufwinnr", 1, 1, f_bufwinnr}, |
1918 } | 1922 } |
1919 return buf; | 1923 return buf; |
1920 } | 1924 } |
1921 | 1925 |
1922 /* | 1926 /* |
1927 * "bufadd(expr)" function | |
1928 */ | |
1929 static void | |
1930 f_bufadd(typval_T *argvars, typval_T *rettv) | |
1931 { | |
1932 rettv->vval.v_number = buflist_add(tv_get_string(&argvars[0]), 0); | |
1933 } | |
1934 | |
1935 /* | |
1923 * "bufexists(expr)" function | 1936 * "bufexists(expr)" function |
1924 */ | 1937 */ |
1925 static void | 1938 static void |
1926 f_bufexists(typval_T *argvars, typval_T *rettv) | 1939 f_bufexists(typval_T *argvars, typval_T *rettv) |
1927 { | 1940 { |
1936 { | 1949 { |
1937 buf_T *buf; | 1950 buf_T *buf; |
1938 | 1951 |
1939 buf = find_buffer(&argvars[0]); | 1952 buf = find_buffer(&argvars[0]); |
1940 rettv->vval.v_number = (buf != NULL && buf->b_p_bl); | 1953 rettv->vval.v_number = (buf != NULL && buf->b_p_bl); |
1954 } | |
1955 | |
1956 /* | |
1957 * "bufload(expr)" function | |
1958 */ | |
1959 static void | |
1960 f_bufload(typval_T *argvars, typval_T *rettv UNUSED) | |
1961 { | |
1962 buf_T *buf = get_buf_arg(&argvars[0]); | |
1963 | |
1964 if (buf != NULL && buf->b_ml.ml_mfp == NULL) | |
1965 { | |
1966 aco_save_T aco; | |
1967 | |
1968 aucmd_prepbuf(&aco, buf); | |
1969 swap_exists_action = SEA_NONE; | |
1970 open_buffer(FALSE, NULL, 0); | |
1971 aucmd_restbuf(&aco); | |
1972 } | |
1941 } | 1973 } |
1942 | 1974 |
1943 /* | 1975 /* |
1944 * "bufloaded(expr)" function | 1976 * "bufloaded(expr)" function |
1945 */ | 1977 */ |