]> git.donarmstrong.com Git - dactyl.git/blob - common/locale/en-US/repeat.xml
Import 1.0b7.1 supporting Firefox up to 8.*
[dactyl.git] / common / locale / en-US / repeat.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <?xml-stylesheet type="text/xsl" href="dactyl://content/help.xsl"?>
3
4 <!DOCTYPE document SYSTEM "dactyl://content/dtd">
5
6 <document
7     name="repeat"
8     title="&dactyl.appName; Repeating Commands"
9     xmlns="&xmlns.dactyl;"
10     xmlns:html="&xmlns.html;">
11
12 <h1 tag="repeating">Repeating commands</h1>
13 <toc start="2"/>
14
15 <p>
16     &dactyl.appName; can repeat commands in a number of ways, from repeating
17     the last command, to recording and playing macros, to saving its state and
18     executing scripts.
19 </p>
20
21 <h2 tag="single-repeat">Single repeats</h2>
22
23 <item>
24     <tags>&lt;repeat-key> .</tags>
25     <strut/>
26     <spec><oa>count</oa>.</spec>
27     <description>
28         <p>
29             Repeat the last keyboard mapping <oa>count</oa> times. Note that,
30             unlike in Vim, this does not apply solely to editing commands,
31             mainly because &dactyl.appName; doesn't have them.
32         </p>
33     </description>
34 </item>
35
36 <item>
37     <tags>@:</tags>
38     <strut/>
39     <spec><oa>count</oa>@:</spec>
40     <description>
41         <p>Repeat the last Ex command <oa>count</oa> times.</p>
42     </description>
43 </item>
44
45 <h2 tag="macros complex-repeat">Macros</h2>
46
47 <item>
48     <tags>&lt;record-macro> q</tags>
49     <strut/>
50     <spec>q<a>0-9a-zA-Z</a></spec>
51     <description>
52         <p>
53             Record a key sequence as a macro. Available macros are
54             <a>0-9a-zA-Z</a>. If the macro is an uppercase letter, the
55             recorded keys are appended to the lowercase macro of the same
56             name. Typing <k>q</k> again stops the recording.
57         </p>
58     </description>
59 </item>
60
61 <item>
62     <tags>:macros</tags>
63     <spec>:mac<oa>ros</oa> <oa>pat</oa></spec>
64     <description>
65         <p>
66             List recorded macros matching the optional regular expression
67             <oa>pat</oa>. If no regexp is given, list all macros.
68         </p>
69     </description>
70 </item>
71
72 <item>
73     <tags>:delmac :delmacros</tags>
74     <spec>:delmac<oa>ros</oa> <a>pat</a></spec>
75     <spec>:delmac<oa>ros</oa>!</spec>
76     <description>
77         <p>
78             Delete recorded macros matching the regular expression
79             <a>pat</a>. If <em>!</em> is given, all macros are deleted.
80         </p>
81     </description>
82 </item>
83
84 <item>
85     <tags>&lt;play-macro> @</tags>
86     <spec><oa>count</oa>@<a>a-z0-9</a></spec>
87     <description>
88         <p>
89             Plays the contents of macro with name <a>a-z0-9</a> <oa>count</oa>
90             times.
91         </p>
92     </description>
93 </item>
94
95 <item>
96     <tags>@@</tags>
97     <spec><oa>count</oa>@@</spec>
98     <description short="true">
99         <p>Replay the last executed macro <oa>count</oa> times.</p>
100     </description>
101 </item>
102
103 <h2 tag="macro-utilities">Macro utilities</h2>
104
105 <p>
106     The following key bindings facilitate the recording of efficient
107     macros. They have no effect when typed normally, but are
108     recorded and take effect during macro playback.
109 </p>
110
111 <item>
112     <tags><![CDATA[<sleep> <A-m>s]]></tags>
113     <spec><a>count</a><![CDATA[<A-m>s]]></spec>
114     <description short="true">
115         <p>
116             Sleep for <a>count</a> milliseconds before resuming playback.
117         </p>
118     </description>
119 </item>
120
121 <item>
122     <tags><![CDATA[<wait-for-page-load> <A-m>l]]></tags>
123     <strut/>
124     <spec><oa>count</oa><![CDATA[<A-m>l]]></spec>
125     <description>
126         <p>
127             Wait for the current page to finish loading before resuming
128             playback. If <oa>count</oa> is given, wait no more than
129             <oa>count</oa> seconds. Otherwise wait no more than 25 seconds.
130         </p>
131     </description>
132 </item>
133
134
135 <h2 tag="group groups">Groups</h2>
136
137 <p>
138     In order to facilitate script writing, especially scripts which only
139     apply to certain web sites, many types of commands and mappings can
140     be assigned to a named group. In addition to helping identify the
141     source of such mappings in listings, and aiding in the cleanup of
142     scripts, these groups can be configured to apply only to certain web
143     sites.
144 </p>
145
146 <item>
147     <tags>:gr :group</tags>
148     <spec>:gr<oa>oup</oa></spec>
149     <description>
150         <p>List all active <t>groups</t>.</p>
151     </description>
152 </item>
153
154 <item>
155     <spec>:gr<oa>oup</oa><oa>!</oa> <a>group</a> …</spec>
156     <description>
157         <p>
158             Select, create, or modify a <t>group</t>. After invocation,
159             <a>group</a> becomes the default group for all further commands
160             issued in the current script. If <oa>!</oa> is given the group is
161             cleared of all mappings, commands, and any other entries bound to
162             it before making the specified additions (if any).
163         </p>
164
165         <p>The following <a>group</a> names have special meanings:</p>
166
167         <dl>
168             <dt>builtin</dt> <dd>The default group for builtin items. Can not be modified in any way by scripts.</dd>
169             <dt>default</dt> <dd>The default group for this script.</dd>
170             <dt>user</dt> <dd>The default group for the command line and <t>&dactyl.name;rc</t>.</dd>
171         </dl>
172
173         <p>The following arguments are available:</p>
174
175         <dl>
176             <dt>-args=<a>javascript</a></dt> <dd>JavaScript Object which
177                 augments the arguments passed to commands, mappings, and
178                 autocommands, e.g., given <str delim="">{ foo: "bar" }</str>,
179                 <tt>foo</tt> (<tt>&lt;foo></tt> if the Ex syntax is used) will
180                 be replaced by <str delim="">bar</str> inside the definitions
181                 (short name: <em>-a</em>)</dd>
182             <dt>-description</dt> <dd>A description of this group (short names: <em>-desc</em>, <em>-d</em>)</dd>
183             <dt>-locations=<a>filters</a></dt> <dd>The URLs for which this
184                 group should be active. See <t>site-filters</t> (short names:
185                 <em>-locs</em>, <em>-loc</em>, <em>-l</em>)</dd>
186             <dt>-nopersist</dt> <dd>Do not save this group to an auto-generated RC file (short name: <em>-n</em>)</dd>
187         </dl>
188     </description>
189 </item>
190
191 <item>
192     <tags>:delgr :delgroup</tags>
193     <spec>:delgr<oa>oup</oa> <a>group</a></spec>
194     <spec>:delgr<oa>oup</oa>!</spec>
195     <description>
196         <p>
197             Delete the specified <a>group</a>. With <oa>!</oa> delete all
198             user groups.
199         </p>
200     </description>
201 </item>
202
203 <h2 tag="site-filter site-filters">Site Filters</h2>
204
205 <p>
206     Many &dactyl.appName; commands accept filters so that they may be applied
207     only to specific sites. Most of these commands accept filters in any of the
208     following formats:
209 </p>
210
211 <dl>
212     <dt>domain</dt>
213     <dd>
214         Any filter which is a valid domain name will match any site on that
215         domain or any sub-domain thereof. These filters may contain any letter
216         of the Roman alphabet, Arabic numerals, hyphens, and full stops.
217         Non-Latin domain names must be punycode encoded.
218     </dd>
219
220     <dt>URL prefix</dt>
221     <dd>
222         Any URL beginning with a valid protocol name and ending with a
223         <tt>*</tt> is treated as a URL prefix. It will match any URL which
224         begins with the given filter sans the trailing asterisk.
225     </dd>
226
227     <dt>Full URL</dt>
228     <dd>
229         Any URL beginning with a valid protocol name and not ending with an
230         asterisk is treated as a full URL match. It will match any page which
231         has a URL identical to the filter.
232     </dd>
233
234     <dt>Regular expression</dt>
235     <dd>
236         Any filter which does not fall into one of the above categories is
237         treated as a case-sensitive regular expression.
238     </dd>
239 </dl>
240
241 <p>
242     In most cases, any of the above may be prefixed with a <tt>!</tt> character
243     to exclude matching sites.
244 </p>
245
246 <h2 tag="using-scripts">Using scripts</h2>
247
248 <item>
249     <tags>:so :source</tags>
250     <spec>:so<oa>urce</oa><oa>!</oa> <a>file</a></spec>
251     <description>
252         <p>
253             Read Ex commands, JavaScript, or CSS from <a>file</a>. Files are
254             interpreted based on their extensions. Files which end in
255             <em>.js</em> are executed as JavaScript, while those ending in
256             <em>.css</em> are loaded as Cascading Stylesheets, and anything
257             else is interpreted as Ex commands. In normal cases, any errors
258             generated by the execution or non-existence of <a>file</a> are
259             printed to the <t>command-line</t> area.  When <oa>!</oa> is
260             provided, these are suppressed.
261         </p>
262
263         <p>
264             Environment variables in <a>file</a> are expanded to their current
265             value, and the prefix <em>~</em> is replaced with the value of
266             <em>$HOME</em>. See <t>expand-env</t> and <t>initialization</t>
267             for more information.
268         </p>
269
270         <h3 tag=":source-contexts">Script Contexts</h3>
271
272         <p>
273             Each script executes in its own JavaScript context. This means that
274             any global variable or function, including those defined by
275             <ex>:javascript</ex> and the <tt>-javascript</tt> flag of
276             <ex>:map</ex>, <ex>:command</ex>, and <ex>:autocmd</ex>,
277             is directly available only within the current script. Outside of the
278             current script, they can only be accessed as properties of the
279             script's global object, which is stored in the <tt>plugins</tt>
280             global under the script's full path.
281         </p>
282
283         <h3 tag=":source-groups">Script Groups</h3>
284
285         <p>
286             In addition to its own JavaScript context, each script is executed
287             with its own default <link topic="groups">group</link> into which
288             its styles, mappings, commands, and autocommands are placed. This
289             means that commands such as <ex>:delcommand!</ex> can be issued
290             without fear of trampling other user-defined mappings. The command
291             <ex>:group! default</ex> can be issued to clear all such items at
292             once, and should be placed at the head of most scripts to prevent
293             the accumulation of stale items when the script is re-sourced.
294         </p>
295
296         <h3 tag=":source-css">Cascading Stylesheets</h3>
297
298         <p>
299             When a CSS file is sourced, its contents are applied to every web
300             page and every chrome document, including all browser windows and
301             dialogs. If the same file is sourced more than once, its previous
302             rules are cleared before it is applied again. Rules can be
303             restricted to specific documents by enclosing them in
304             <link topic="https://developer.mozilla.org/en/CSS/@-moz-document">@-moz-document</link>
305             blocks.
306         </p>
307
308         <h3 tag=":source-javascript">JavaScript</h3>
309
310         <p>
311             JavaScript files are executed with full chrome privileges in their
312             own global namespaces. These namespaces are stored as objects in
313             the <em>plugins</em> object, in the property named after the full
314             path of the sourced file. This means that any variables or
315             functions created by your script are stored as properties of that
316             object. Additionally, all properties of the global <em>window</em>
317             and <em>modules</em> objects are accessible to your script as
318             global variables.
319         </p>
320
321         <p>
322             Files in <em>~/.&dactyl.name;/plugins</em> may additionally be
323             accessed in <em>plugins.<a>filename</a></em> where <a>filename</a>
324             is the last component of the file's path stripped of any
325             extensions, with all hyphens stripped and any letter following a
326             hyphen capitalized.  So, the file
327             <em>~/.&dactyl.name;/plugins/foo-bar.js</em> may be accessed as
328             <em>plugins.fooBar</em>. See also <t>writing-plugins</t>.
329         </p>
330
331         <h3 tag=":source-ex">Ex commands</h3>
332
333         <p>
334             Ex command files are executed as if each line were entered into
335             the &tag.command-line; individually.
336             Additionally, certain commands support the same ‘here document’
337             syntax supported by most Unix shells and by the &tag.command-line;.
338             So, to execute a JavaScript statement which does not comfortably fit
339             on a single line, you can use:
340         </p>
341
342         <code><ex>:js</ex> &lt;&lt;<em>EOF</em>
343 <kwd><hl key="Object">var</hl></kwd> hello = <kwd>function</kwd> () {
344     alert(<str>Hello world</str>);
345 }
346 <em>EOF</em></code>
347
348         <p>See also <t>ex-scripts</t> below.</p>
349     </description>
350 </item>
351
352
353 <item>
354     <tags>:lpl :loadplugins</tags>
355     <strut/>
356     <spec>:loadplugins <oa>pattern</oa> …</spec>
357     <description>
358         <p>
359             Immediately load all plugins which have yet to be loaded. Because
360             plugins are not automatically loaded until after <tt><t>&dactyl.name;rc</t></tt>
361             is sourced, this command must be placed early in the
362             <tt>&dactyl.name;rc</tt> file if <tt>&dactyl.name;rc</tt> uses commands or options
363             which are defined by plugins. Additionally, this command allows
364             newly installed plugins to be easily loaded without restarting
365             &dactyl.appName;. See also <o>loadplugins</o>.
366         </p>
367         <p>
368             If <oa>pattern</oa>s are provided, the given regular expressions are
369             used as filters rather than those in <o>loadplugins</o>.
370         </p>
371     </description>
372 </item>
373
374 <item>
375     <tags>:runt :runtime</tags>
376     <spec>:runt<oa>ime</oa><oa>!</oa> <a>file</a> …</spec>
377     <description>
378         <p>
379             Source the specified file from the first directory in
380             <o>runtimepath</o> in which it exists. When <oa>!</oa> is given,
381             source the file from all directories in <o>runtimepath</o> in
382             which it exists.
383         </p>
384         <example><ex>:runtime plugins/foobar.js</ex></example>
385     </description>
386 </item>
387
388 <item>
389     <tags>:scrip :scriptnames</tags>
390     <spec>:scrip<oa>tnames</oa></spec>
391     <description>
392         <p>List all sourced script names, in the order they were first sourced.</p>
393     </description>
394 </item>
395
396 <item>
397     <tags>:fini :finish</tags>
398     <strut/>
399     <spec>:fini<oa>sh</oa></spec>
400     <description>
401         <p>
402             Stop sourcing a script file. This can only be called from within a
403             &dactyl.appName; script file.
404         </p>
405     </description>
406 </item>
407
408 <h3 tag="ex-scripts">Ex Command Scripts</h3>
409
410 <p>
411     Ex command scripts are similar to both entering commands on the
412     &tag.command-line; and to Vim
413     scripts, but with some notable differences.
414 </p>
415
416 <p tag="multiline-commands">
417     Commands in Ex command scripts can span multiple lines by
418     prefixing the second and further lines with a <em>\</em>
419     character. For instance, the following all define commands whose
420     definitions span multiple lines.
421 </p>
422
423 <code><ex>:command!</ex> <str delim="">foo</str>
424         \ <em>-description</em> <str>A command that frobs bars</str>
425         \ <ex>:javascript</ex> frob(content.bar)</code>
426
427 <code><ex>:style</ex> <em>-name</em> <str delim="'">foo</str>
428      \ <str delim="'">foobar.com</str>
429      \ p<str delim="">:first-line</str> { <em>font-variant</em>: <str delim="">small-caps</str>; }
430      \ div<em>#side-bar</em> > <str delim="">:first-child</str> { <em>display</em>: <str delim="">none</str>; }</code>
431
432 <code><ex>:command!</ex> <str delim="">do-some-stuff</str>
433         \ <em>-description</em> <str>A command which does some stuff in JavaScript</str>
434         \ <ex>:javascript</ex> &lt;&lt;<em>EOF</em>
435         \     window.do(<str>some</str>);
436         \     window.do(<str>stuff</str>);
437         \<em>EOF</em></code>
438
439 <code><ex>:command!</ex> <str delim="">do-some-stuff</str>
440         \ <em>-description</em> <str>A command which does some stuff in JavaScript</str>
441         \ <ex>:javascript</ex>
442         \\    window.do(<str>some</str>);
443         \\    window.do(<str>stuff</str>);</code>
444
445 <p tag="comments">
446     Lines may be commented out by prefixing them with a <em>"</em>
447     character. Comments and commands cannot both occur in a single command
448     line.
449 </p>
450
451 <code>            <hl style="color: #444">" This is a comment</hl>
452     foo bar " This is a syntax error
453             <str> This is not a comment</str>
454     foo bar <str> This is not a comment</str>
455 </code>
456
457 <h2 tag="profile profiling">Profiling</h2>
458
459 <item>
460     <tags>:time</tags>
461     <spec>:<oa>count</oa>time<oa>!</oa> <a>code|:command</a></spec>
462     <description>
463         <p>
464             Profile a piece of JavaScript code or an Ex command. Run
465             <a>code</a> <oa>count</oa> times and print the elapsed time.
466             If <a>code</a> begins with a <ex>:</ex>, it is executed as an Ex
467             command. Otherwise, it is executed as JavaScript, in which case it
468             is evaluated only once and stored as a function which is executed
469             <oa>count</oa> times.
470         </p>
471
472         <p>
473             When <oa>!</oa> is given, <a>code</a> is executed <oa>count</oa>
474             times, but no statistics are printed.
475         </p>
476     </description>
477 </item>
478
479 </document>
480
481 <!-- vim:se sts=4 sw=4 et: -->