annotate runtime/doc/if_lua.txt @ 3682:11d40fc82f11

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Thu, 12 Jul 2012 22:01:11 +0200
parents 161d01cbb165
children 78c318784090
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3682
11d40fc82f11 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3465
diff changeset
1 *if_lua.txt* For Vim version 7.3. Last change: 2012 Jun 29
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
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
11 3. List userdata |lua-list|
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
12 4. Dict userdata |lua-dict|
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
13 5. Buffer userdata |lua-buffer|
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
14 6. Window userdata |lua-window|
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
15 7. The luaeval function |lua-luaeval|
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
16
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
17 {Vi does not have any of these commands}
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
18
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
19 The Lua interface is available only when Vim was compiled with the
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
20 |+lua| feature.
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}
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
27 Execute Lua chunk {chunk}. {not in Vi}
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
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
35 :[range]lua << {endmarker}
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}
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
38 Execute Lua script {script}. {not in Vi}
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
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
43 {endmarker} must NOT be preceded by any white space. If {endmarker} is
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
44 omitted from after the "<<", a dot '.' must be used after {script}, like
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
45 for the |:append| and |:insert| commands.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
46 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
47 in Vim scripts.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
48
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
49 Example:
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 function! CurrentLineInfo()
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
52 lua << EOF
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
53 local linenr = vim.window().line
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
54 local curline = vim.buffer()[linenr]
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
55 print(string.format("Current line [%d] has %d chars",
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
56 linenr, #curline))
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
57 EOF
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
58 endfunction
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
59 <
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
60
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
61 *:luado*
3465
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
62 :[range]luado {body} Execute Lua function "function (line, linenr) {body}
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
63 end" for each line in the [range], with the function
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
64 argument being set to the text of each line in turn,
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
65 without a trailing <EOL>, and the current line number.
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
66 If the value returned by the function is a string it
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
67 becomes the text of the line in the current turn. The
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
68 default for [range] is the whole file: "1,$".
161d01cbb165 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3450
diff changeset
69 {not in Vi}
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
70
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
71 Examples:
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
72 >
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
73 :luado return string.format("%s\t%d", line:reverse(), #line)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
74
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
75 :lua require"lpeg"
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
76 :lua -- balanced parenthesis grammar:
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
77 :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
78 :luado if bp:match(line) then return "-->\t" .. line end
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
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
81 *:luafile*
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
82 :[range]luafile {file}
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
83 Execute Lua script in {file}. {not in Vi}
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
84 The whole argument is used as a single file name.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
85
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
86 Examples:
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 script.lua
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
89 :luafile %
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
90 <
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
91
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
92 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
93 :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
94 interpreter, each chunk has its own scope and so only global variables are
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
95 shared between command calls. All Lua default libraries are available. In
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
96 addition, Lua "print" function has its output redirected to the Vim message
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
97 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
98
2337
a0f87fc19d1d Better conceal in help. (partly by Dominique Pelle)
Bram Moolenaar <bram@vim.org>
parents: 2320
diff changeset
99 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
100 and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
101 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
102 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
103
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
104
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
105 ==============================================================================
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
106 2. The vim module *lua-vim*
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
107
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
108 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
109 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
110 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
111 Vim evaluation and command execution, and others.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
112
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
113 vim.list() Returns an empty list (see |List|).
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
114
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
115 vim.dict() Returns an empty dictionary (see |Dictionary|).
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
116
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
117 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
118 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
119 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
120 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
121 (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
122 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
123 '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
124 list or else the current buffer.
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
125
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
126 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
127 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
128 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
129 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
130 current window.
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
131
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
132 vim.type({arg}) Returns the type of {arg}. It is equivalent to
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
133 Lua's "type" function, but returns "list",
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
134 "dict", "buffer", or "window" if {arg} is a
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
135 list, dictionary, buffer, or window,
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
136 respectively. Examples: >
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
137 :lua l = vim.list()
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
138 :lua print(type(l), vim.type(l))
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
139 :" userdata list
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
140 <
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
141 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
142 Examples: >
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
143 :lua vim.command"set tw=60"
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
144 :lua vim.command"normal ddp"
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
145 <
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
146 vim.eval({expr}) Evaluates expression {expr} (see |expression|),
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
147 converts the result to Lua, and returns it.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
148 Vim strings and numbers are directly converted
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
149 to Lua strings and numbers respectively. Vim
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
150 lists and dictionaries are converted to Lua
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
151 userdata (see |lua-list| and |lua-dict|).
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
152 Examples: >
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
153 :lua tw = vim.eval"&tw"
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
154 :lua print(vim.eval"{'a': 'one'}".a)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
155 <
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
156 vim.line() Returns the current line (without the trailing
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
157 <EOL>), a Lua string.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
158
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
159 vim.beep() Beeps.
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
160
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
161 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
162 returns it. Note that the buffer is not set as
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
163 current.
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
164
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
165
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
166 ==============================================================================
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
167 3. List userdata *lua-list*
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
168
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
169 List userdata represent vim lists, and the interface tries to follow closely
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
170 Vim's syntax for lists. Since lists are objects, changes in list references in
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
171 Lua are reflected in Vim and vice-versa. A list "l" has the following
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
172 properties and methods:
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
173
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
174 Properties
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
175 ----------
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
176 o "#l" is the number of items in list "l", equivalent to "len(l)"
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
177 in Vim.
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
178 o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim.
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
179 To modify the k-th item, simply do "l[k] = newitem"; in
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
180 particular, "l[k] = nil" removes the k-th item from "l".
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
181 o "l()" returns an iterator for "l".
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
182
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
183 Methods
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
184 -------
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
185 o "l:add(item)" appends "item" to the end of "l".
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
186 o "l:insert(item[, pos])" inserts "item" at (optional)
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
187 position "pos" in the list. The default value for "pos" is 0.
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
188
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
189 Examples:
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
190 >
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
191 :let l = [1, 'item']
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
192 :lua l = vim.eval('l') -- same 'l'
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
193 :lua l:add(vim.list())
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
194 :lua l[0] = math.pi
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
195 :echo l[0] " 3.141593
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
196 :lua l[0] = nil -- remove first item
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
197 :lua l:insert(true, 1)
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
198 :lua print(l, #l, l[0], l[1], l[-1])
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
199 :lua for item in l() do print(item) end
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
200 <
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
201
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
202 ==============================================================================
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
203 4. Dict userdata *lua-dict*
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
204
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
205 Similarly to list userdata, dict userdata represent vim dictionaries; since
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
206 dictionaries are also objects, references are kept between Lua and Vim. A dict
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
207 "d" has the following properties:
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
208
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
209 Properties
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
210 ----------
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
211 o "#d" is the number of items in dict "d", equivalent to "len(d)"
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
212 in Vim.
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
213 o "d.key" or "d['key']" returns the value at entry "key" in "d".
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
214 To modify the entry at this key, simply do "d.key = newvalue"; in
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
215 particular, "d.key = nil" removes the entry from "d".
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
216 o "d()" returns an iterator for "d" and is equivalent to "items(d)" in
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
217 Vim.
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
218
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
219 Examples:
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
220 >
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
221 :let d = {'n':10}
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
222 :lua d = vim.eval('d') -- same 'd'
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
223 :lua print(d, d.n, #d)
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
224 :let d.self = d
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
225 :lua for k, v in d() do print(d, k, v) end
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
226 :lua d.x = math.pi
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
227 :lua d.self = nil -- remove entry
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
228 :echo d
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
229 <
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
230
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
231 ==============================================================================
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
232 5. Buffer userdata *lua-buffer*
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
233
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
234 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
235 properties and methods:
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
236
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
237 Properties
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
238 ----------
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
239 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
240 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
241 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
242 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
243 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
244 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
245 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
246 (read-only).
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
247
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
248 Methods
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
249 -------
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
250 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
251 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
252 "#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
253 the buffer.
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
254 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
255 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
256 list.
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
257 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
258 a "real" (not freed from memory) Vim buffer.
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
259
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
260 Examples:
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
261 >
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
262 :lua b = vim.buffer() -- current buffer
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
263 :lua print(b.name, b.number)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
264 :lua b[1] = "first line"
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
265 :lua b:insert("FIRST!", 0)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
266 :lua b[1] = nil -- delete top line
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
267 :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
268 :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
269 :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
270
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
271 function! ListBuffers()
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
272 lua << EOF
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
273 local b = vim.buffer(true) -- first buffer in list
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
274 while b ~= nil do
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
275 print(b.number, b.name, #b)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
276 b = b:next()
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
277 end
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
278 vim.beep()
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
279 EOF
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
280 endfunction
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
281 <
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
282
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
283 ==============================================================================
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
284 6. Window userdata *lua-window*
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
285
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
286 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
287 properties and methods:
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
288
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
289 Properties
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
290 ----------
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
291 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
292 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
293 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
294 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
295 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
296 o "w.height" represents the height of window "w".
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
297
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
298 Methods
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
299 -------
2373
f149bb1cf5be Make it possible to load Lua dynamically on Unix. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
300 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
301 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
302 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
303 a "real" (not freed from memory) Vim window.
2320
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
304
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
305 Examples:
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
306 >
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
307 :lua w = vim.window() -- current window
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
308 :lua print(w.buffer.name, w.line, w.col)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
309 :lua w.width = w.width + math.random(10)
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
310 :lua w.height = 2 * math.random() * w.height
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
311 :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
312 :lua print("There are " .. n .. " windows")
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
313 <
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
314
966a5609669e Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
315 ==============================================================================
3682
11d40fc82f11 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3465
diff changeset
316 7. The luaeval function *lua-luaeval* *lua-eval*
3450
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
317
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
318 The (dual) equivalent of "vim.eval" for passing Lua values to Vim is
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
319 "luaeval". "luaeval" takes an expression string and an optional argument and
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
320 returns the result of the expression. It is semantically equivalent in Lua to:
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
321 >
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
322 local chunkheader = "local _A = select(1, ...) return "
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
323 function luaeval (expstr, arg)
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
324 local chunk = assert(loadstring(chunkheader .. expstr, "luaeval"))
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
325 return chunk(arg) -- return typval
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
326 end
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
327 <
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
328 Note that "_A" receives the argument to "luaeval". Examples: >
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
329
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
330 :echo luaeval('math.pi')
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
331 :lua a = vim.list():add('newlist')
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
332 :let a = luaeval('a')
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
333 :echo a[0] " 'newlist'
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
334 :function Rand(x,y) " random uniform between x and y
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
335 : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y})
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
336 : endfunction
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
337 :echo Rand(1,10)
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
338
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
339
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
340 ==============================================================================
b067b8b81be9 updated for version 7.3.490
Bram Moolenaar <bram@vim.org>
parents: 2572
diff changeset
341 vim:tw=78:ts=8:noet:ft=help:norl: