Mercurial > vim
annotate runtime/doc/if_lua.txt @ 18795:79b689ff168d v8.1.2386
patch 8.1.2386: 'wincolor' is not used for 'listchars'
Commit: https://github.com/vim/vim/commit/42e931b0f52679d51de1a3832d1f2481512408fb
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Dec 4 19:08:50 2019 +0100
patch 8.1.2386: 'wincolor' is not used for 'listchars'
Problem: 'wincolor' is not used for 'listchars'.
Solution: Combine the colors. (closes https://github.com/vim/vim/issues/5308)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 04 Dec 2019 19:15:04 +0100 |
parents | 2704c4e3e20a |
children | af69c9335223 |
rev | line source |
---|---|
17571 | 1 *if_lua.txt* For Vim version 8.1. Last change: 2019 Jul 21 |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
2 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
3 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
4 VIM REFERENCE MANUAL by Luis Carvalho |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
5 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
6 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
7 The Lua Interface to Vim *lua* *Lua* |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
8 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
9 1. Commands |lua-commands| |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
10 2. The vim module |lua-vim| |
3450 | 11 3. List userdata |lua-list| |
12 4. Dict userdata |lua-dict| | |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
13 5. Blob userdata |lua-blob| |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
14 6. Funcref userdata |lua-funcref| |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
15 7. Buffer userdata |lua-buffer| |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
16 8. Window userdata |lua-window| |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
17 9. luaeval() Vim function |lua-luaeval| |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
18 10. Dynamic loading |lua-dynamic| |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
19 |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16076
diff
changeset
|
20 {only available when Vim was compiled with the |+lua| feature} |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
21 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
22 ============================================================================== |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
23 1. Commands *lua-commands* |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
24 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
25 *:lua* |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
26 :[range]lua {chunk} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16076
diff
changeset
|
27 Execute Lua chunk {chunk}. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
28 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
29 Examples: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
30 > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
31 :lua print("Hello, Vim!") |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
32 :lua local curbuf = vim.buffer() curbuf[7] = "line #7" |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
33 < |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
34 |
17571 | 35 :[range]lua << [endmarker] |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
36 {script} |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
37 {endmarker} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16076
diff
changeset
|
38 Execute Lua script {script}. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
39 Note: This command doesn't work when the Lua |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
40 feature wasn't compiled in. To avoid errors, see |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
41 |script-here|. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
42 |
17571 | 43 The {endmarker} must NOT be preceded by any white space. |
44 | |
45 If [endmarker] is omitted from after the "<<", a dot '.' must be used after | |
46 {script}, like for the |:append| and |:insert| commands. | |
47 | |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
48 This form of the |:lua| command is mainly useful for including Lua code |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
49 in Vim scripts. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
50 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
51 Example: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
52 > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
53 function! CurrentLineInfo() |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
54 lua << EOF |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
55 local linenr = vim.window().line |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
56 local curline = vim.buffer()[linenr] |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
57 print(string.format("Current line [%d] has %d chars", |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
58 linenr, #curline)) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
59 EOF |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
60 endfunction |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
61 < |
10153
715d6c5707b8
commit https://github.com/vim/vim/commit/abd468ed0fbcba391e7833feeaa7de3ced841455
Christian Brabandt <cb@256bit.org>
parents:
8673
diff
changeset
|
62 To see what version of Lua you have: > |
715d6c5707b8
commit https://github.com/vim/vim/commit/abd468ed0fbcba391e7833feeaa7de3ced841455
Christian Brabandt <cb@256bit.org>
parents:
8673
diff
changeset
|
63 :lua print(_VERSION) |
715d6c5707b8
commit https://github.com/vim/vim/commit/abd468ed0fbcba391e7833feeaa7de3ced841455
Christian Brabandt <cb@256bit.org>
parents:
8673
diff
changeset
|
64 |
715d6c5707b8
commit https://github.com/vim/vim/commit/abd468ed0fbcba391e7833feeaa7de3ced841455
Christian Brabandt <cb@256bit.org>
parents:
8673
diff
changeset
|
65 If you use LuaJIT you can also use this: > |
715d6c5707b8
commit https://github.com/vim/vim/commit/abd468ed0fbcba391e7833feeaa7de3ced841455
Christian Brabandt <cb@256bit.org>
parents:
8673
diff
changeset
|
66 :lua print(jit.version) |
715d6c5707b8
commit https://github.com/vim/vim/commit/abd468ed0fbcba391e7833feeaa7de3ced841455
Christian Brabandt <cb@256bit.org>
parents:
8673
diff
changeset
|
67 < |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
68 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
69 *:luado* |
3465 | 70 :[range]luado {body} Execute Lua function "function (line, linenr) {body} |
71 end" for each line in the [range], with the function | |
72 argument being set to the text of each line in turn, | |
73 without a trailing <EOL>, and the current line number. | |
74 If the value returned by the function is a string it | |
75 becomes the text of the line in the current turn. The | |
76 default for [range] is the whole file: "1,$". | |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
77 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
78 Examples: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
79 > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
80 :luado return string.format("%s\t%d", line:reverse(), #line) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
81 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
82 :lua require"lpeg" |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
83 :lua -- balanced parenthesis grammar: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
84 :lua bp = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" } |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
85 :luado if bp:match(line) then return "-->\t" .. line end |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
86 < |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
87 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
88 *:luafile* |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
89 :[range]luafile {file} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16076
diff
changeset
|
90 Execute Lua script in {file}. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
91 The whole argument is used as a single file name. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
92 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
93 Examples: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
94 > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
95 :luafile script.lua |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
96 :luafile % |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
97 < |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
98 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
99 All these commands execute a Lua chunk from either the command line (:lua and |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
100 :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
101 interpreter, each chunk has its own scope and so only global variables are |
3450 | 102 shared between command calls. All Lua default libraries are available. In |
103 addition, Lua "print" function has its output redirected to the Vim message | |
104 area, with arguments separated by a white space instead of a tab. | |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
105 |
2337
a0f87fc19d1d
Better conceal in help. (partly by Dominique Pelle)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
106 Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
107 and manage buffers (|lua-buffer|) and windows (|lua-window|). However, |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
108 procedures that alter buffer content, open new buffers, and change cursor |
2337
a0f87fc19d1d
Better conceal in help. (partly by Dominique Pelle)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
109 position are restricted when the command is executed in the |sandbox|. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
110 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
111 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
112 ============================================================================== |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
113 2. The vim module *lua-vim* |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
114 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
115 Lua interfaces Vim through the "vim" module. The first and last line of the |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
116 input range are stored in "vim.firstline" and "vim.lastline" respectively. The |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
117 module also includes routines for buffer, window, and current line queries, |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
118 Vim evaluation and command execution, and others. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
119 |
4911 | 120 vim.list([arg]) Returns an empty list or, if "arg" is a Lua |
121 table with numeric keys 1, ..., n (a | |
122 "sequence"), returns a list l such that l[i] = | |
123 arg[i] for i = 1, ..., n (see |List|). | |
124 Non-numeric keys are not used to initialize | |
125 the list. See also |lua-eval| for conversion | |
126 rules. Example: > | |
14298
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
127 :lua t = {math.pi, false, say = 'hi'} |
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
128 :echo luaeval('vim.list(t)') |
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
129 :" [3.141593, v:false], 'say' is ignored |
4911 | 130 < |
131 vim.dict([arg]) Returns an empty dictionary or, if "arg" is a | |
132 Lua table, returns a dict d such that d[k] = | |
133 arg[k] for all string keys k in "arg" (see | |
134 |Dictionary|). Number keys are converted to | |
135 strings. Keys that are not strings are not | |
136 used to initialize the dictionary. See also | |
137 |lua-eval| for conversion rules. Example: > | |
14298
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
138 :lua t = {math.pi, false, say = 'hi'} |
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
139 :echo luaeval('vim.dict(t)') |
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
140 :" {'1': 3.141593, '2': v:false, |
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
141 :" 'say': 'hi'} |
4911 | 142 < |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
143 vim.blob([arg]) Returns an empty blob or, if "arg" is a Lua |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
144 string, returns a blob b such that b is |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
145 equivalent to "arg" as a byte string. |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
146 Examples: > |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
147 :lua s = "12ab\x00\x80\xfe\xff" |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
148 :echo luaeval('vim.blob(s)') |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
149 :" 0z31326162.0080FEFF |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
150 < |
4911 | 151 vim.funcref({name}) Returns a Funcref to function {name} (see |
14298
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
152 |Funcref|). It is equivalent to Vim's |
4a588e3afd4a
Update runtime files, add Danish translations.
Christian Brabandt <cb@256bit.org>
parents:
14239
diff
changeset
|
153 function(). |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
154 |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
155 vim.buffer([arg]) If "arg" is a number, returns buffer with |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
156 number "arg" in the buffer list or, if "arg" |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
157 is a string, returns buffer whose full or short |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
158 name is "arg". In both cases, returns 'nil' |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
159 (nil value, not string) if the buffer is not |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
160 found. Otherwise, if "toboolean(arg)" is |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
161 'true' returns the first buffer in the buffer |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
162 list or else the current buffer. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
163 |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
164 vim.window([arg]) If "arg" is a number, returns window with |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
165 number "arg" or 'nil' (nil value, not string) |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
166 if not found. Otherwise, if "toboolean(arg)" |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
167 is 'true' returns the first window or else the |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
168 current window. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
169 |
3450 | 170 vim.type({arg}) Returns the type of {arg}. It is equivalent to |
171 Lua's "type" function, but returns "list", | |
4911 | 172 "dict", "funcref", "buffer", or "window" if |
173 {arg} is a list, dictionary, funcref, buffer, | |
174 or window, respectively. Examples: > | |
3450 | 175 :lua l = vim.list() |
176 :lua print(type(l), vim.type(l)) | |
14239
7457bf2db968
patch 8.1.0136: Lua tests don't cover new features
Christian Brabandt <cb@256bit.org>
parents:
13963
diff
changeset
|
177 :" list |
3450 | 178 < |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
179 vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
180 Examples: > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
181 :lua vim.command"set tw=60" |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
182 :lua vim.command"normal ddp" |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
183 < |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
184 vim.eval({expr}) Evaluates expression {expr} (see |expression|), |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
185 converts the result to Lua, and returns it. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
186 Vim strings and numbers are directly converted |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
187 to Lua strings and numbers respectively. Vim |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
188 lists and dictionaries are converted to Lua |
3450 | 189 userdata (see |lua-list| and |lua-dict|). |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
190 Examples: > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
191 :lua tw = vim.eval"&tw" |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
192 :lua print(vim.eval"{'a': 'one'}".a) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
193 < |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
194 vim.line() Returns the current line (without the trailing |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
195 <EOL>), a Lua string. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
196 |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
197 vim.beep() Beeps. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
198 |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
199 vim.open({fname}) Opens a new buffer for file {fname} and |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
200 returns it. Note that the buffer is not set as |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
201 current. |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
202 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
203 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
204 ============================================================================== |
3450 | 205 3. List userdata *lua-list* |
206 | |
207 List userdata represent vim lists, and the interface tries to follow closely | |
208 Vim's syntax for lists. Since lists are objects, changes in list references in | |
209 Lua are reflected in Vim and vice-versa. A list "l" has the following | |
210 properties and methods: | |
211 | |
212 Properties | |
213 ---------- | |
214 o "#l" is the number of items in list "l", equivalent to "len(l)" | |
215 in Vim. | |
216 o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim. | |
217 To modify the k-th item, simply do "l[k] = newitem"; in | |
218 particular, "l[k] = nil" removes the k-th item from "l". | |
219 o "l()" returns an iterator for "l". | |
220 | |
221 Methods | |
222 ------- | |
223 o "l:add(item)" appends "item" to the end of "l". | |
224 o "l:insert(item[, pos])" inserts "item" at (optional) | |
225 position "pos" in the list. The default value for "pos" is 0. | |
226 | |
227 Examples: | |
228 > | |
229 :let l = [1, 'item'] | |
230 :lua l = vim.eval('l') -- same 'l' | |
231 :lua l:add(vim.list()) | |
232 :lua l[0] = math.pi | |
233 :echo l[0] " 3.141593 | |
234 :lua l[0] = nil -- remove first item | |
235 :lua l:insert(true, 1) | |
236 :lua print(l, #l, l[0], l[1], l[-1]) | |
237 :lua for item in l() do print(item) end | |
238 < | |
239 | |
240 ============================================================================== | |
241 4. Dict userdata *lua-dict* | |
242 | |
243 Similarly to list userdata, dict userdata represent vim dictionaries; since | |
244 dictionaries are also objects, references are kept between Lua and Vim. A dict | |
245 "d" has the following properties: | |
246 | |
247 Properties | |
248 ---------- | |
249 o "#d" is the number of items in dict "d", equivalent to "len(d)" | |
250 in Vim. | |
251 o "d.key" or "d['key']" returns the value at entry "key" in "d". | |
252 To modify the entry at this key, simply do "d.key = newvalue"; in | |
253 particular, "d.key = nil" removes the entry from "d". | |
254 o "d()" returns an iterator for "d" and is equivalent to "items(d)" in | |
255 Vim. | |
256 | |
257 Examples: | |
258 > | |
259 :let d = {'n':10} | |
260 :lua d = vim.eval('d') -- same 'd' | |
261 :lua print(d, d.n, #d) | |
262 :let d.self = d | |
263 :lua for k, v in d() do print(d, k, v) end | |
264 :lua d.x = math.pi | |
265 :lua d.self = nil -- remove entry | |
266 :echo d | |
267 < | |
268 | |
269 ============================================================================== | |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
270 5. Blob userdata *lua-blob* |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
271 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
272 Blob userdata represent vim blobs. A blob "b" has the following properties: |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
273 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
274 Properties |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
275 ---------- |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
276 o "#b" is the length of blob "b", equivalent to "len(b)" in Vim. |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
277 o "b[k]" returns the k-th item in "b"; "b" is zero-indexed, as in Vim. |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
278 To modify the k-th item, simply do "b[k] = number"; in particular, |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
279 "b[#b] = number" can append a byte to tail. |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
280 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
281 Methods |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
282 ------- |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
283 o "b:add(bytes)" appends "bytes" to the end of "b". |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
284 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
285 Examples: |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
286 > |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
287 :let b = 0z001122 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
288 :lua b = vim.eval('b') -- same 'b' |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
289 :lua print(b, b[0], #b) |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
290 :lua b[1] = 32 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
291 :lua b[#b] = 0x33 -- append a byte to tail |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
292 :lua b:add("\x80\x81\xfe\xff") |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
293 :echo b |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
294 < |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
295 |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
296 ============================================================================== |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
297 6. Funcref userdata *lua-funcref* |
4911 | 298 |
299 Funcref userdata represent funcref variables in Vim. Funcrefs that were | |
300 defined with a "dict" attribute need to be obtained as a dictionary key | |
301 in order to have "self" properly assigned to the dictionary (see examples | |
302 below.) A funcref "f" has the following properties: | |
303 | |
304 Properties | |
305 ---------- | |
306 o "#f" is the name of the function referenced by "f" | |
307 o "f(...)" calls the function referenced by "f" (with arguments) | |
308 | |
309 Examples: | |
310 > | |
311 :function I(x) | |
312 : return a:x | |
313 : endfunction | |
314 :let R = function('I') | |
315 :lua i1 = vim.funcref('I') | |
316 :lua i2 = vim.eval('R') | |
317 :lua print(#i1, #i2) -- both 'I' | |
318 :lua print(i1, i2, #i2(i1) == #i1(i2)) | |
319 :function Mylen() dict | |
320 : return len(self.data) | |
321 : endfunction | |
322 :let mydict = {'data': [0, 1, 2, 3]} | |
323 :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') | |
324 :echo mydict.len() | |
325 :lua l = d.len -- assign d as 'self' | |
326 :lua print(l()) | |
327 < | |
328 | |
329 ============================================================================== | |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
330 7. Buffer userdata *lua-buffer* |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
331 |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
332 Buffer userdata represent vim buffers. A buffer userdata "b" has the following |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
333 properties and methods: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
334 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
335 Properties |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
336 ---------- |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
337 o "b()" sets "b" as the current buffer. |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
338 o "#b" is the number of lines in buffer "b". |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
339 o "b[k]" represents line number k: "b[k] = newline" replaces line k |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
340 with string "newline" and "b[k] = nil" deletes line k. |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
341 o "b.name" contains the short name of buffer "b" (read-only). |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
342 o "b.fname" contains the full name of buffer "b" (read-only). |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
343 o "b.number" contains the position of buffer "b" in the buffer list |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
344 (read-only). |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
345 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
346 Methods |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
347 ------- |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
348 o "b:insert(newline[, pos])" inserts string "newline" at (optional) |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
349 position "pos" in the buffer. The default value for "pos" is |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
350 "#b + 1". If "pos == 0" then "newline" becomes the first line in |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
351 the buffer. |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
352 o "b:next()" returns the buffer next to "b" in the buffer list. |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
353 o "b:previous()" returns the buffer previous to "b" in the buffer |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
354 list. |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
355 o "b:isvalid()" returns 'true' (boolean) if buffer "b" corresponds to |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
356 a "real" (not freed from memory) Vim buffer. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
357 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
358 Examples: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
359 > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
360 :lua b = vim.buffer() -- current buffer |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
361 :lua print(b.name, b.number) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
362 :lua b[1] = "first line" |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
363 :lua b:insert("FIRST!", 0) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
364 :lua b[1] = nil -- delete top line |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
365 :lua for i=1,3 do b:insert(math.random()) end |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
366 :3,4lua for i=vim.lastline,vim.firstline,-1 do b[i] = nil end |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
367 :lua vim.open"myfile"() -- open buffer and set it as current |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
368 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
369 function! ListBuffers() |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
370 lua << EOF |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
371 local b = vim.buffer(true) -- first buffer in list |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
372 while b ~= nil do |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
373 print(b.number, b.name, #b) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
374 b = b:next() |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
375 end |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
376 vim.beep() |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
377 EOF |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
378 endfunction |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
379 < |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
380 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
381 ============================================================================== |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
382 8. Window userdata *lua-window* |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
383 |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
384 Window objects represent vim windows. A window userdata "w" has the following |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
385 properties and methods: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
386 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
387 Properties |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
388 ---------- |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
389 o "w()" sets "w" as the current window. |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
390 o "w.buffer" contains the buffer of window "w" (read-only). |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
391 o "w.line" represents the cursor line position in window "w". |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
392 o "w.col" represents the cursor column position in window "w". |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
393 o "w.width" represents the width of window "w". |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
394 o "w.height" represents the height of window "w". |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
395 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
396 Methods |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
397 ------- |
2373
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
398 o "w:next()" returns the window next to "w". |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
399 o "w:previous()" returns the window previous to "w". |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
400 o "w:isvalid()" returns 'true' (boolean) if window "w" corresponds to |
f149bb1cf5be
Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2345
diff
changeset
|
401 a "real" (not freed from memory) Vim window. |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
402 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
403 Examples: |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
404 > |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
405 :lua w = vim.window() -- current window |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
406 :lua print(w.buffer.name, w.line, w.col) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
407 :lua w.width = w.width + math.random(10) |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
408 :lua w.height = 2 * math.random() * w.height |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
409 :lua n,w = 0,vim.window(true) while w~=nil do n,w = n + 1,w:next() end |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
410 :lua print("There are " .. n .. " windows") |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
411 < |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
412 |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff
changeset
|
413 ============================================================================== |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
414 9. luaeval() Vim function *lua-luaeval* *lua-eval* |
3450 | 415 |
416 The (dual) equivalent of "vim.eval" for passing Lua values to Vim is | |
417 "luaeval". "luaeval" takes an expression string and an optional argument and | |
418 returns the result of the expression. It is semantically equivalent in Lua to: | |
419 > | |
420 local chunkheader = "local _A = select(1, ...) return " | |
421 function luaeval (expstr, arg) | |
422 local chunk = assert(loadstring(chunkheader .. expstr, "luaeval")) | |
423 return chunk(arg) -- return typval | |
424 end | |
425 < | |
4911 | 426 Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
427 list, dict, blob, and funcref userdata are converted to their Vim respective |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
428 types, while Lua booleans are converted to numbers. An error is thrown if |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
429 conversion of any of the remaining Lua types, including userdata other than |
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
430 lists, dicts, blobs, and funcrefs, is attempted. |
4911 | 431 |
432 Examples: > | |
3450 | 433 |
434 :echo luaeval('math.pi') | |
435 :lua a = vim.list():add('newlist') | |
436 :let a = luaeval('a') | |
437 :echo a[0] " 'newlist' | |
438 :function Rand(x,y) " random uniform between x and y | |
439 : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y}) | |
440 : endfunction | |
441 :echo Rand(1,10) | |
442 | |
443 | |
444 ============================================================================== | |
16076
a2f0e93a5857
patch 8.1.1043: Lua interface does not support Blob
Bram Moolenaar <Bram@vim.org>
parents:
14298
diff
changeset
|
445 10. Dynamic loading *lua-dynamic* |
7196
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
446 |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
447 On MS-Windows and Unix the Lua library can be loaded dynamically. The |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
448 |:version| output then includes |+lua/dyn|. |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
449 |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
450 This means that Vim will search for the Lua DLL or shared library file only |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
451 when needed. When you don't use the Lua interface you don't need it, thus |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
452 you can use Vim without this file. |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
453 |
8673
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
454 |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
455 MS-Windows ~ |
7196
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
456 |
8673
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
457 To use the Lua interface the Lua DLL must be in your search path. In a |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
458 console window type "path" to see what directories are used. The 'luadll' |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
459 option can be also used to specify the Lua DLL. The version of the DLL must |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
460 match the Lua version Vim was compiled with. |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
461 |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
462 |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
463 Unix ~ |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
464 |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
465 The 'luadll' option can be used to specify the Lua shared library file instead |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
466 of DYNAMIC_LUA_DLL file what was specified at compile time. The version of |
ed7251c3e2d3
commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents:
7196
diff
changeset
|
467 the shared library must match the Lua version Vim was compiled with. |
7196
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
468 |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
469 |
42717d048817
commit https://github.com/vim/vim/commit/d94464ee294a351ce7b6ba18e8bd3f24f1bef920
Christian Brabandt <cb@256bit.org>
parents:
5340
diff
changeset
|
470 ============================================================================== |
3450 | 471 vim:tw=78:ts=8:noet:ft=help:norl: |