aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2022-01-09 22:48:29 +0000
committerSean Dewar <seandewar@users.noreply.github.com>2022-02-05 13:16:34 +0000
commit22f0725aac300ed9b249f995df7889f6c203d1e0 (patch)
treef417e4a24d7e1dc5db1da23d087b65eba3a7f2e8 /runtime
parent806a7c976d78da2bf7a46499452b4a3e30fae798 (diff)
downloadrneovim-22f0725aac300ed9b249f995df7889f6c203d1e0.tar.gz
rneovim-22f0725aac300ed9b249f995df7889f6c203d1e0.tar.bz2
rneovim-22f0725aac300ed9b249f995df7889f6c203d1e0.zip
vim-patch:8.1.2342: random number generator in Vim script is slow
Problem: Random number generator in Vim script is slow. Solution: Add rand() and srand(). (Yasuhiro Matsumoto, closes vim/vim#1277) https://github.com/vim/vim/commit/06b0b4bc27077013e9b4b48fd1d9b33e543ccf99 Add missing method call usage to builtin.txt. vim_time and test_settime is N/A. Add a modeline to test_random.vim. Use typval_T* over listitem_T* vars so we don't need to use TV_LIST_ITEM_TV all over the place... Remove NULL list checks (tv_list_len covers this).
Diffstat (limited to 'runtime')
-rw-r--r--runtime/doc/builtin.txt34
1 files changed, 34 insertions, 0 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 4153c1c9d8..35beb97518 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -325,6 +325,7 @@ pumvisible() Number whether popup menu is visible
pyeval({expr}) any evaluate |Python| expression
py3eval({expr}) any evaluate |python3| expression
pyxeval({expr}) any evaluate |python_x| expression
+rand([{expr}]) Number get pseudo-random number
range({expr} [, {max} [, {stride}]])
List items from {expr} to {max}
readdir({dir} [, {expr}]) List file names in {dir} selected by {expr}
@@ -441,6 +442,7 @@ spellsuggest({word} [, {max} [, {capital}]])
split({expr} [, {pat} [, {keepempty}]])
List make |List| from {pat} separated {expr}
sqrt({expr}) Float square root of {expr}
+srand([{expr}]) List get seed for |rand()|
stdioopen({dict}) Number open stdio in a headless instance.
stdpath({what}) String/List returns the standard path(s) for {what}
str2float({expr} [, {quoted}]) Float convert String to Float
@@ -5530,6 +5532,22 @@ range({expr} [, {max} [, {stride}]]) *range()*
Can also be used as a |method|: >
GetExpr()->range()
<
+rand([{expr}]) *rand()*
+ Return a pseudo-random Number generated with an xorshift
+ algorithm using seed {expr}. {expr} can be initialized by
+ |srand()| and will be updated by rand().
+ If {expr} is omitted, an internal seed value is used and
+ updated.
+
+ Examples: >
+ :echo rand()
+ :let seed = srand()
+ :echo rand(seed)
+ :echo rand(seed)
+<
+ Can also be used as a |method|: >
+ seed->rand()
+<
*readdir()*
readdir({directory} [, {expr}])
Return a list with file and directory names in {directory}.
@@ -7178,6 +7196,22 @@ sqrt({expr}) *sqrt()*
Can also be used as a |method|: >
Compute()->sqrt()
+srand([{expr}]) *srand()*
+ Initialize seed used by |rand()|:
+ - If {expr} is not given, seed values are initialized by
+ time(NULL) a.k.a. epoch time.
+ - If {expr} is given, return seed values which x element is
+ {expr}. This is useful for testing or when a predictable
+ sequence is expected.
+
+ Examples: >
+ :let seed = srand()
+ :let seed = srand(userinput)
+ :echo rand(seed)
+<
+ Can also be used as a |method|: >
+ userinput->srand()
+
stdioopen({opts}) *stdioopen()*
With |--headless| this opens stdin and stdout as a |channel|.
May be called only once. See |channel-stdio|. stderr is not