mirror of
https://github.com/joaotavora/yasnippet.git
synced 2026-02-04 14:32:26 +00:00
* proof-reading the documentation
* added link to the new screencast
This commit is contained in:
@@ -66,46 +66,45 @@
|
||||
<li><a class="reference internal" href="#key-snippet-abbrev" id="id7"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">key:</span></tt> snippet abbrev</a></li>
|
||||
<li><a class="reference internal" href="#name-snippet-name" id="id8"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">name:</span></tt> snippet name</a></li>
|
||||
<li><a class="reference internal" href="#condition-snippet-condition" id="id9"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">condition:</span></tt> snippet condition</a></li>
|
||||
<li><a class="reference internal" href="#expand-env-expand-environment" id="id10"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">expand-env:</span></tt> expand environment</a></li>
|
||||
<li><a class="reference internal" href="#binding-direct-keybinding" id="id11"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">binding:</span></tt> direct keybinding</a></li>
|
||||
<li><a class="reference internal" href="#contributor-snippet-author" id="id12"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">contributor:</span></tt> snippet author</a></li>
|
||||
<li><a class="reference internal" href="#group-snippet-menu-grouping" id="id10"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">group:</span></tt> snippet menu grouping</a></li>
|
||||
<li><a class="reference internal" href="#expand-env-expand-environment" id="id11"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">expand-env:</span></tt> expand environment</a></li>
|
||||
<li><a class="reference internal" href="#binding-direct-keybinding" id="id12"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">binding:</span></tt> direct keybinding</a></li>
|
||||
<li><a class="reference internal" href="#contributor-snippet-author" id="id13"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">contributor:</span></tt> snippet author</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#template-syntax" id="id13">Template syntax</a><ul>
|
||||
<li><a class="reference internal" href="#plain-text" id="id14">Plain Text</a></li>
|
||||
<li><a class="reference internal" href="#embedded-emacs-lisp-code" id="id15">Embedded Emacs-lisp code</a></li>
|
||||
<li><a class="reference internal" href="#tab-stop-fields" id="id16">Tab stop fields</a></li>
|
||||
<li><a class="reference internal" href="#placeholder-fields" id="id17">Placeholder fields</a></li>
|
||||
<li><a class="reference internal" href="#id2" id="id18">Mirrors</a></li>
|
||||
<li><a class="reference internal" href="#mirrors-with-transformations" id="id19">Mirrors with transformations</a></li>
|
||||
<li><a class="reference internal" href="#fields-with-transformations" id="id20">Fields with transformations</a></li>
|
||||
<li><a class="reference internal" href="#choosing-fields-value-from-a-list" id="id21">Choosing fields value from a list</a></li>
|
||||
<li><a class="reference internal" href="#nested-placeholder-fields" id="id22">Nested placeholder fields</a></li>
|
||||
<li><a class="reference internal" href="#template-syntax" id="id14">Template syntax</a><ul>
|
||||
<li><a class="reference internal" href="#plain-text" id="id15">Plain Text</a></li>
|
||||
<li><a class="reference internal" href="#embedded-emacs-lisp-code" id="id16">Embedded Emacs-lisp code</a></li>
|
||||
<li><a class="reference internal" href="#tab-stop-fields" id="id17">Tab stop fields</a></li>
|
||||
<li><a class="reference internal" href="#placeholder-fields" id="id18">Placeholder fields</a></li>
|
||||
<li><a class="reference internal" href="#id2" id="id19">Mirrors</a></li>
|
||||
<li><a class="reference internal" href="#mirrors-with-transformations" id="id20">Mirrors with transformations</a></li>
|
||||
<li><a class="reference internal" href="#fields-with-transformations" id="id21">Fields with transformations</a></li>
|
||||
<li><a class="reference internal" href="#choosing-fields-value-from-a-list-and-other-tricks" id="id22">Choosing fields value from a list and other tricks</a></li>
|
||||
<li><a class="reference internal" href="#nested-placeholder-fields" id="id23">Nested placeholder fields</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#customizable-variables" id="id23">Customizable variables</a><ul>
|
||||
<li><a class="reference internal" href="#yas-trigger-key" id="id24"><tt class="docutils literal"><span class="pre">yas/trigger-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-next-field-key" id="id25"><tt class="docutils literal"><span class="pre">yas/next-field-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-prev-field-key" id="id26"><tt class="docutils literal"><span class="pre">yas/prev-field-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-skip-and-clear-key" id="id27"><tt class="docutils literal"><span class="pre">yas/skip-and-clear-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-good-grace" id="id28"><tt class="docutils literal"><span class="pre">yas/good-grace</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-indent-line" id="id29"><tt class="docutils literal"><span class="pre">yas/indent-line</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-wrap-around-region" id="id30"><tt class="docutils literal"><span class="pre">yas/wrap-around-region</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-triggers-in-field" id="id31"><tt class="docutils literal"><span class="pre">yas/triggers-in-field</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-snippet-revival" id="id32"><tt class="docutils literal"><span class="pre">yas/snippet-revival</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-after-exit-snippet-hook-and-yas-before-expand-snippet-hook" id="id33"><tt class="docutils literal"><span class="pre">yas/after-exit-snippet-hook</span></tt> and <tt class="docutils literal"><span class="pre">yas/before-expand-snippet-hook</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#customizable-variables" id="id24">Customizable variables</a><ul>
|
||||
<li><a class="reference internal" href="#yas-trigger-key" id="id25"><tt class="docutils literal"><span class="pre">yas/trigger-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-next-field-key" id="id26"><tt class="docutils literal"><span class="pre">yas/next-field-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-prev-field-key" id="id27"><tt class="docutils literal"><span class="pre">yas/prev-field-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-skip-and-clear-key" id="id28"><tt class="docutils literal"><span class="pre">yas/skip-and-clear-key</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-good-grace" id="id29"><tt class="docutils literal"><span class="pre">yas/good-grace</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-indent-line" id="id30"><tt class="docutils literal"><span class="pre">yas/indent-line</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-wrap-around-region" id="id31"><tt class="docutils literal"><span class="pre">yas/wrap-around-region</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-triggers-in-field" id="id32"><tt class="docutils literal"><span class="pre">yas/triggers-in-field</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-snippet-revival" id="id33"><tt class="docutils literal"><span class="pre">yas/snippet-revival</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-after-exit-snippet-hook-and-yas-before-expand-snippet-hook" id="id34"><tt class="docutils literal"><span class="pre">yas/after-exit-snippet-hook</span></tt> and <tt class="docutils literal"><span class="pre">yas/before-expand-snippet-hook</span></tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#importing-textmate-snippets" id="id34">Importing TextMate snippets</a></li>
|
||||
<li><a class="reference internal" href="#importing-textmate-snippets" id="id35">Importing TextMate snippets</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="snippet-development">
|
||||
<h1><a class="toc-backref" href="#id3">Snippet development</a></h1>
|
||||
<div class="section" id="quickly-finding-snippets">
|
||||
<h2><a class="toc-backref" href="#id4">Quickly finding snippets</a></h2>
|
||||
<p>There are some ways you can quickly find a snippet file. Once you find
|
||||
this file it will be set to <tt class="docutils literal"><span class="pre">snippet-mode</span></tt> (see ahead) and you can
|
||||
start editing your snippet.</p>
|
||||
<p>There are some ways you can quickly find a snippet file:</p>
|
||||
<ul>
|
||||
<li><p class="first"><tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">yas/new-snippet</span></tt></p>
|
||||
<p>Prompts you for a snippet name, then tries to guess a suitable
|
||||
@@ -115,7 +114,8 @@ so you can write your snippet.</p>
|
||||
</li>
|
||||
<li><p class="first"><tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">yas/find-snippets</span></tt></p>
|
||||
<p>Lets you find the snippet file in the directory the snippet was
|
||||
loaded from (if it exists) like <tt class="docutils literal"><span class="pre">find-file-other-window</span></tt>.</p>
|
||||
loaded from (if it exists) like <tt class="docutils literal"><span class="pre">find-file-other-window</span></tt>. The
|
||||
directory searching logic is similar to <tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">yas/new-snippet</span></tt>.</p>
|
||||
</li>
|
||||
<li><p class="first"><tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">yas/visit-snippet-file</span></tt></p>
|
||||
<p>Prompts you for possible snippet expansions like
|
||||
@@ -123,6 +123,8 @@ loaded from (if it exists) like <tt class="docutils literal"><span class="pre">f
|
||||
directly to the snippet definition's file, if it exists.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Once you find this file it will be set to <tt class="docutils literal"><span class="pre">snippet-mode</span></tt> (see ahead)
|
||||
and you can start editing your snippet.</p>
|
||||
</div>
|
||||
<div class="section" id="using-the-snippet-mode-major-mode">
|
||||
<h2><a class="toc-backref" href="#id5">Using the <tt class="docutils literal"><span class="pre">snippet-mode</span></tt> major mode</a></h2>
|
||||
@@ -147,31 +149,26 @@ can see what it looks like. This is bound to <tt class="docutils literal"><span
|
||||
</blockquote>
|
||||
</li>
|
||||
</ul>
|
||||
<p>There are also snippets for making snippets: <tt class="docutils literal"><span class="pre">vars</span></tt>, <tt class="docutils literal"><span class="pre">field</span></tt> and
|
||||
<tt class="docutils literal"><span class="pre">mirror</span></tt>.</p>
|
||||
<p>There are also <em>snippets for writing snippets</em>: <tt class="docutils literal"><span class="pre">vars</span></tt>, <tt class="docutils literal"><span class="pre">$f</span></tt> and
|
||||
<tt class="docutils literal"><span class="pre">$m</span></tt> :-).</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="file-content">
|
||||
<h1><a class="toc-backref" href="#id6">File content</a></h1>
|
||||
<p>A file defining a snippet may just contain the template for the
|
||||
snippet. Optionally it can also contains some meta data for the
|
||||
snippet as well as comments.</p>
|
||||
<p>Generally speaking, if the file contains a line of <tt class="docutils literal"><span class="pre">#</span> <span class="pre">--</span></tt>, then all
|
||||
contents above that line are considered directives (meta data) and
|
||||
comments; below that line lies the snippet template.</p>
|
||||
<p>If no <tt class="docutils literal"><span class="pre">#</span> <span class="pre">--</span></tt> is found, the whole file content is considered as the
|
||||
template.</p>
|
||||
<p>A file defining a snippet generally contains the template to be
|
||||
expanded.</p>
|
||||
<p>Optionally, if the file contains a line of <tt class="docutils literal"><span class="pre">#</span> <span class="pre">--</span></tt>, the lines above
|
||||
it count as comments, some of which can be <em>directives</em> (or meta
|
||||
data). Snippet directives look like <tt class="docutils literal"><span class="pre">#</span> <span class="pre">property:</span> <span class="pre">value</span></tt> and tweak
|
||||
certain snippets properties described below. If no <tt class="docutils literal"><span class="pre">#</span> <span class="pre">--</span></tt> is found,
|
||||
the whole file is considered the snippet template.</p>
|
||||
<p>Here's a typical example:</p>
|
||||
<div class="highlight"><pre>#contributor : pluskid <pluskid@gmail.com>
|
||||
#name : __...__
|
||||
# --
|
||||
__${init}__
|
||||
</pre></div>
|
||||
<p>Meta data are specified in the syntax of</p>
|
||||
<div class="highlight"><pre>#data-name : data value
|
||||
</pre></div>
|
||||
<p>Any other text above <tt class="docutils literal"><span class="pre">#</span> <span class="pre">--</span></tt> is considered as comment and
|
||||
ignored. Here's a list of currently supported directives:</p>
|
||||
<p>Here's a list of currently supported directives:</p>
|
||||
<div class="section" id="key-snippet-abbrev">
|
||||
<h2><a class="toc-backref" href="#id7"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">key:</span></tt> snippet abbrev</a></h2>
|
||||
<p>This is the probably the most important directive, it's the
|
||||
@@ -200,7 +197,9 @@ loaded from.</p>
|
||||
will only be expanded when the condition code evaluate to some non-nil
|
||||
value.</p>
|
||||
<p>See also <tt class="docutils literal"><span class="pre">yas/buffer-local-condition</span></tt> in <a class="reference external" href="snippet-expansion.html">Expanding snippets</a></p>
|
||||
<p><tt class="docutils literal"><span class="pre">#</span> <span class="pre">group</span></tt> snippet menu grouping</p>
|
||||
</div>
|
||||
<div class="section" id="group-snippet-menu-grouping">
|
||||
<h2><a class="toc-backref" href="#id10"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">group:</span></tt> snippet menu grouping</a></h2>
|
||||
<p>When expanding/visiting snippets from the menu-bar menu, snippets for a
|
||||
given mode can be grouped into sub-menus . This is useful if one has
|
||||
too many snippets for a mode which will make the menu too
|
||||
@@ -215,10 +214,11 @@ special file (for this see <a class="reference external" href="snippet-organizat
|
||||
which is under the <tt class="docutils literal"><span class="pre">control</span> <span class="pre">structure</span></tt> group.</p>
|
||||
</div>
|
||||
<div class="section" id="expand-env-expand-environment">
|
||||
<h2><a class="toc-backref" href="#id10"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">expand-env:</span></tt> expand environment</a></h2>
|
||||
<p>This is another piece of Emacs-lisp code in the form of a <tt class="docutils literal"><span class="pre">let</span></tt> <em>varlist</em>
|
||||
form, i.e. a list of lists assigning values to variables. It can be
|
||||
used to override variable values while the snippet is being expanded.</p>
|
||||
<h2><a class="toc-backref" href="#id11"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">expand-env:</span></tt> expand environment</a></h2>
|
||||
<p>This is another piece of Emacs-lisp code in the form of a <tt class="docutils literal"><span class="pre">let</span></tt>
|
||||
<em>varlist form</em>, i.e. a list of lists assigning values to variables. It
|
||||
can be used to override variable values while the snippet is being
|
||||
expanded.</p>
|
||||
<p>Interesting variables to override are <tt class="docutils literal"><span class="pre">yas/wrap-around-region</span></tt> and
|
||||
<tt class="docutils literal"><span class="pre">yas/indent-line</span></tt> (see <a class="reference external" href="snippet-expansion.html">Expanding Snippets</a>).</p>
|
||||
<p>As an example, you might normally have <tt class="docutils literal"><span class="pre">yas/indent-line</span></tt> set to
|
||||
@@ -241,7 +241,7 @@ your hard work. You can then use:</p>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="section" id="binding-direct-keybinding">
|
||||
<h2><a class="toc-backref" href="#id11"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">binding:</span></tt> direct keybinding</a></h2>
|
||||
<h2><a class="toc-backref" href="#id12"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">binding:</span></tt> direct keybinding</a></h2>
|
||||
<p>You can use this directive to expand a snippet directly from a normal
|
||||
Emacs keybinding. The keybinding will be registered in the Emacs
|
||||
keymap named after the major mode the snippet is active
|
||||
@@ -267,38 +267,39 @@ you want to record the keybinding.</p>
|
||||
# --
|
||||
<p>`(when yas/prefix "\n")`$0`(when yas/prefix "\n")`</p>
|
||||
</pre></div>
|
||||
<p><em>Note</em> that this feature is still <strong>experimental</strong>, it might go away,
|
||||
be changed in future release, and should be used with caution: It is
|
||||
easy to override important keybindings for many basic modes and it is
|
||||
hard to undefine them. For the moment, the variable
|
||||
<tt class="docutils literal"><span class="pre">yas/active-keybinding</span></tt> can tell you what snippet keybindings are
|
||||
active and the function <tt class="docutils literal"><span class="pre">yas/kill-snippet-keybindings</span></tt> will attempt to
|
||||
undefine all the keybindings.</p>
|
||||
<p><strong>Note</strong>: this feature is still <strong>experimental</strong>, it might go away, be
|
||||
changed in future release, and should be used with caution: It is easy
|
||||
to override important keybindings for many basic modes and it is hard
|
||||
to undefine them. For the moment, the variable
|
||||
<tt class="docutils literal"><span class="pre">yas/active-keybindings</span></tt> can tell you what snippet keybindings are
|
||||
active and the function <tt class="docutils literal"><span class="pre">yas/kill-snippet-keybindings</span></tt> will attempt
|
||||
to undefine all the keybindings.</p>
|
||||
</div>
|
||||
<div class="section" id="contributor-snippet-author">
|
||||
<h2><a class="toc-backref" href="#id12"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">contributor:</span></tt> snippet author</a></h2>
|
||||
<h2><a class="toc-backref" href="#id13"><tt class="docutils literal"><span class="pre">#</span> <span class="pre">contributor:</span></tt> snippet author</a></h2>
|
||||
<p>This is optional and has no effect whatsoever on snippet
|
||||
functionality, but it looks nice.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="template-syntax">
|
||||
<h1><a class="toc-backref" href="#id13">Template syntax</a></h1>
|
||||
<h1><a class="toc-backref" href="#id14">Template syntax</a></h1>
|
||||
<p>The syntax of the snippet template is simple but powerful, very
|
||||
similar to TextMate's.</p>
|
||||
<div class="section" id="plain-text">
|
||||
<h2><a class="toc-backref" href="#id14">Plain Text</a></h2>
|
||||
<h2><a class="toc-backref" href="#id15">Plain Text</a></h2>
|
||||
<p>Arbitrary text can be included as the content of a template. They are
|
||||
usually interpreted as plain text, except <tt class="docutils literal"><span class="pre">$</span></tt> and <tt class="docutils literal"><span class="pre">`</span></tt>. You need to
|
||||
use <tt class="docutils literal"><span class="pre">\</span></tt> to escape them: <tt class="docutils literal"><span class="pre">\$</span></tt> and <tt class="docutils literal"><span class="pre">\`</span></tt>. The <tt class="docutils literal"><span class="pre">\</span></tt> itself may also
|
||||
needed to be escaped as <tt class="docutils literal"><span class="pre">\\</span></tt> sometimes.</p>
|
||||
</div>
|
||||
<div class="section" id="embedded-emacs-lisp-code">
|
||||
<h2><a class="toc-backref" href="#id15">Embedded Emacs-lisp code</a></h2>
|
||||
<p>Emacs-Lisp code can be embedded inside the template. They are written
|
||||
inside back-quotes (<tt class="docutils literal"><span class="pre">`</span></tt>):</p>
|
||||
<p>They are evaluated when the snippet is being expanded. The evaluation
|
||||
is done in the same buffer as the snippet being expanded. Here's an
|
||||
example for <tt class="docutils literal"><span class="pre">c-mode</span></tt> to calculate the header file guard dynamically:</p>
|
||||
<h2><a class="toc-backref" href="#id16">Embedded Emacs-lisp code</a></h2>
|
||||
<p>Emacs-Lisp code can be embedded inside the template, written inside
|
||||
back-quotes (<tt class="docutils literal"><span class="pre">`</span></tt>). The lisp forms are evaluated when the snippet is
|
||||
being expanded. The evaluation is done in the same buffer as the
|
||||
snippet being expanded.</p>
|
||||
<p>Here's an example for <tt class="docutils literal"><span class="pre">c-mode</span></tt> to calculate the header file guard
|
||||
dynamically:</p>
|
||||
<div class="highlight"><pre>#ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_}
|
||||
#define $1
|
||||
|
||||
@@ -306,7 +307,7 @@ $0
|
||||
|
||||
#endif /* $1 */
|
||||
</pre></div>
|
||||
<p>From version 0.6.0, snippets expansions are run with some special
|
||||
<p>From version 0.6, snippets expansions are run with some special
|
||||
Emacs-lisp variables bound. One of this is <tt class="docutils literal"><span class="pre">yas/selected-text</span></tt>. You
|
||||
can therefore define a snippet like:</p>
|
||||
<div class="highlight"><pre>for ($1;$2;$3) {
|
||||
@@ -318,7 +319,7 @@ snippet. Alternatively, you can also customize the variable
|
||||
<tt class="docutils literal"><span class="pre">yas/wrap-around-region</span></tt> to <tt class="docutils literal"><span class="pre">t</span></tt> which will do this automatically.</p>
|
||||
</div>
|
||||
<div class="section" id="tab-stop-fields">
|
||||
<h2><a class="toc-backref" href="#id16">Tab stop fields</a></h2>
|
||||
<h2><a class="toc-backref" href="#id17">Tab stop fields</a></h2>
|
||||
<p>Tab stops are fields that you can navigate back and forth by <tt class="docutils literal"><span class="pre">TAB</span></tt>
|
||||
and <tt class="docutils literal"><span class="pre">S-TAB</span></tt>. They are written by <tt class="docutils literal"><span class="pre">$</span></tt> followed with a
|
||||
number. <tt class="docutils literal"><span class="pre">$0</span></tt> has the special meaning of the <em>exit point</em> of a
|
||||
@@ -330,7 +331,7 @@ fields. Here's a typical example:</p>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="section" id="placeholder-fields">
|
||||
<h2><a class="toc-backref" href="#id17">Placeholder fields</a></h2>
|
||||
<h2><a class="toc-backref" href="#id18">Placeholder fields</a></h2>
|
||||
<p>Tab stops can have default values -- a.k.a placeholders. The syntax is
|
||||
like this:</p>
|
||||
<div class="highlight"><pre>${N:default value}
|
||||
@@ -341,7 +342,7 @@ typing. The number can be omitted if you don't want to create
|
||||
<a class="reference internal" href="#mirrors">mirrors</a> or <a class="reference internal" href="#transformations">transformations</a> for this field.</p>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<span id="mirrors"></span><h2><a class="toc-backref" href="#id18">Mirrors</a></h2>
|
||||
<span id="mirrors"></span><h2><a class="toc-backref" href="#id19">Mirrors</a></h2>
|
||||
<p>We refer the tab stops with placeholders as a <em>field</em>. A field can have
|
||||
mirrors. Its mirrors will get updated when you change the text of a
|
||||
field. Here's an example:</p>
|
||||
@@ -357,7 +358,7 @@ none of the tab stops has an initial value, the first one is selected
|
||||
as the field and others mirrors.</p>
|
||||
</div>
|
||||
<div class="section" id="mirrors-with-transformations">
|
||||
<span id="transformations"></span><h2><a class="toc-backref" href="#id19">Mirrors with transformations</a></h2>
|
||||
<span id="transformations"></span><h2><a class="toc-backref" href="#id20">Mirrors with transformations</a></h2>
|
||||
<p>If the value of an <tt class="docutils literal"><span class="pre">${n:</span></tt>-construct starts with and contains <tt class="docutils literal"><span class="pre">$(</span></tt>,
|
||||
then it is interpreted as a mirror for field <tt class="docutils literal"><span class="pre">n</span></tt> with a
|
||||
transformation. The mirror's text content is calculated according to
|
||||
@@ -405,7 +406,7 @@ $0
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="section" id="fields-with-transformations">
|
||||
<h2><a class="toc-backref" href="#id20">Fields with transformations</a></h2>
|
||||
<h2><a class="toc-backref" href="#id21">Fields with transformations</a></h2>
|
||||
<p>From version 0.6 on, you can also have lisp transformation inside
|
||||
fields. These work mostly mirror transformations but are evaluated
|
||||
when you first enter the field, after each change you make to the
|
||||
@@ -428,8 +429,8 @@ the value of the field and sets it its internal modification state to
|
||||
<tt class="docutils literal"><span class="pre">true</span></tt>. As a consequence, the auto-deletion behaviour of normal
|
||||
fields does not take place. This is by design.</p>
|
||||
</div>
|
||||
<div class="section" id="choosing-fields-value-from-a-list">
|
||||
<h2><a class="toc-backref" href="#id21">Choosing fields value from a list</a></h2>
|
||||
<div class="section" id="choosing-fields-value-from-a-list-and-other-tricks">
|
||||
<h2><a class="toc-backref" href="#id22">Choosing fields value from a list and other tricks</a></h2>
|
||||
<p>As mentioned, the field transformation is invoked just after you enter
|
||||
the field, and with some useful variables bound, notably
|
||||
<tt class="docutils literal"><span class="pre">yas/field-modified-p</span></tt> and <tt class="docutils literal"><span class="pre">yas/moving-away-p</span></tt>. Because of this
|
||||
@@ -441,11 +442,21 @@ you select default values for it.</p>
|
||||
</div>
|
||||
</pre></div>
|
||||
<p>See the definition of <tt class="docutils literal"><span class="pre">yas/choose-value</span></tt> to see how it was written
|
||||
using the two variables. Also check out <tt class="docutils literal"><span class="pre">yas/verify-value</span></tt> for
|
||||
another neat trick.</p>
|
||||
using the two variables.</p>
|
||||
<p>Here's another use, for LaTeX-mode, which calls reftex-label just as
|
||||
you enter snippet field 2. This one makes use of <tt class="docutils literal"><span class="pre">yas/modified-p</span></tt>
|
||||
directly.</p>
|
||||
<div class="highlight"><pre>\section{${1:"Titel der Tour"}}%
|
||||
\index{$1}%
|
||||
\label{{2:"waiting for reftex-label call..."$(unless yas/modified-p (reftex-label nil 'dont-
|
||||
insert))}}%
|
||||
</pre></div>
|
||||
<p>The function <tt class="docutils literal"><span class="pre">yas/verify-value</span></tt> has another neat trick, and makes
|
||||
use of <tt class="docutils literal"><span class="pre">yas/moving-away-p</span></tt>. Try it and see! Also, check out this
|
||||
<a class="reference external" href="http://groups.google.com/group/smart-snippet/browse_thread/thread/282a90a118e1b662">thread</a></p>
|
||||
</div>
|
||||
<div class="section" id="nested-placeholder-fields">
|
||||
<h2><a class="toc-backref" href="#id22">Nested placeholder fields</a></h2>
|
||||
<h2><a class="toc-backref" href="#id23">Nested placeholder fields</a></h2>
|
||||
<p>From version 0.6 on, you can also have nested placeholders of the type:</p>
|
||||
<div class="highlight"><pre><div${1: id="${2:some_id}"}>$0</div>
|
||||
</pre></div>
|
||||
@@ -460,9 +471,9 @@ performs the normal Emacs <tt class="docutils literal"><span class="pre">delete-
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="customizable-variables">
|
||||
<h1><a class="toc-backref" href="#id23">Customizable variables</a></h1>
|
||||
<h1><a class="toc-backref" href="#id24">Customizable variables</a></h1>
|
||||
<div class="section" id="yas-trigger-key">
|
||||
<h2><a class="toc-backref" href="#id24"><tt class="docutils literal"><span class="pre">yas/trigger-key</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id25"><tt class="docutils literal"><span class="pre">yas/trigger-key</span></tt></a></h2>
|
||||
<p>The key bound to <tt class="docutils literal"><span class="pre">yas/expand</span></tt> when function <tt class="docutils literal"><span class="pre">yas/minor-mode</span></tt> is
|
||||
active.</p>
|
||||
<p>Value is a string that is converted to the internal Emacs key
|
||||
@@ -470,7 +481,7 @@ representation using <tt class="docutils literal"><span class="pre">read-kbd-mac
|
||||
<p>Default value is <tt class="docutils literal"><span class="pre">"TAB"</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-next-field-key">
|
||||
<h2><a class="toc-backref" href="#id25"><tt class="docutils literal"><span class="pre">yas/next-field-key</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id26"><tt class="docutils literal"><span class="pre">yas/next-field-key</span></tt></a></h2>
|
||||
<p>The key to navigate to next field when a snippet is active.</p>
|
||||
<p>Value is a string that is converted to the internal Emacs key
|
||||
representation using <tt class="docutils literal"><span class="pre">read-kbd-macro</span></tt>.</p>
|
||||
@@ -478,7 +489,7 @@ representation using <tt class="docutils literal"><span class="pre">read-kbd-mac
|
||||
<p>Default value is <tt class="docutils literal"><span class="pre">"TAB"</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-prev-field-key">
|
||||
<h2><a class="toc-backref" href="#id26"><tt class="docutils literal"><span class="pre">yas/prev-field-key</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id27"><tt class="docutils literal"><span class="pre">yas/prev-field-key</span></tt></a></h2>
|
||||
<p>The key to navigate to previous field when a snippet is active.</p>
|
||||
<p>Value is a string that is converted to the internal Emacs key
|
||||
representation using <tt class="docutils literal"><span class="pre">read-kbd-macro</span></tt>.</p>
|
||||
@@ -486,7 +497,7 @@ representation using <tt class="docutils literal"><span class="pre">read-kbd-mac
|
||||
<p>Default value is <tt class="docutils literal"><span class="pre">("<backtab>"</span> <span class="pre">"<S-tab>)"</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-skip-and-clear-key">
|
||||
<h2><a class="toc-backref" href="#id27"><tt class="docutils literal"><span class="pre">yas/skip-and-clear-key</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id28"><tt class="docutils literal"><span class="pre">yas/skip-and-clear-key</span></tt></a></h2>
|
||||
<p>The key to clear the currently active field.</p>
|
||||
<p>Value is a string that is converted to the internal Emacs key
|
||||
representation using <tt class="docutils literal"><span class="pre">read-kbd-macro</span></tt>.</p>
|
||||
@@ -494,12 +505,12 @@ representation using <tt class="docutils literal"><span class="pre">read-kbd-mac
|
||||
<p>Default value is <tt class="docutils literal"><span class="pre">"C-d"</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-good-grace">
|
||||
<h2><a class="toc-backref" href="#id28"><tt class="docutils literal"><span class="pre">yas/good-grace</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id29"><tt class="docutils literal"><span class="pre">yas/good-grace</span></tt></a></h2>
|
||||
<p>If non-nil, don't raise errors in inline Emacs-lisp evaluation inside
|
||||
snippet definitions. An error string "[yas] error" is returned instead.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-indent-line">
|
||||
<h2><a class="toc-backref" href="#id29"><tt class="docutils literal"><span class="pre">yas/indent-line</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id30"><tt class="docutils literal"><span class="pre">yas/indent-line</span></tt></a></h2>
|
||||
<p>The variable <tt class="docutils literal"><span class="pre">yas/indent-line</span></tt> controls the indenting. It is bound
|
||||
to <tt class="docutils literal"><span class="pre">'auto</span></tt> by default, which causes your snippet to be indented
|
||||
according to the mode of the buffer it was inserted in.</p>
|
||||
@@ -520,7 +531,7 @@ $0$>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="section" id="yas-wrap-around-region">
|
||||
<h2><a class="toc-backref" href="#id30"><tt class="docutils literal"><span class="pre">yas/wrap-around-region</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id31"><tt class="docutils literal"><span class="pre">yas/wrap-around-region</span></tt></a></h2>
|
||||
<p>If non-nil, YASnippet will try to expand the snippet's exit marker
|
||||
around the currently selected region. When this variable is set to t,
|
||||
this has the same effect has using the <tt class="docutils literal"><span class="pre">`yas/selected-text`</span></tt> inline
|
||||
@@ -534,18 +545,18 @@ the region), then press <tt class="docutils literal"><span class="pre">yas/trigg
|
||||
spring back to life inside your new snippet.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-triggers-in-field">
|
||||
<h2><a class="toc-backref" href="#id31"><tt class="docutils literal"><span class="pre">yas/triggers-in-field</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id32"><tt class="docutils literal"><span class="pre">yas/triggers-in-field</span></tt></a></h2>
|
||||
<p>If non-nil, <tt class="docutils literal"><span class="pre">yas/next-field-key</span></tt> can trigger stacked expansions,
|
||||
that is a snippet expansion inside another snippet
|
||||
expansion. Otherwise, <tt class="docutils literal"><span class="pre">yas/next-field-key</span></tt> just tries to move on to
|
||||
the next field.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-snippet-revival">
|
||||
<h2><a class="toc-backref" href="#id32"><tt class="docutils literal"><span class="pre">yas/snippet-revival</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id33"><tt class="docutils literal"><span class="pre">yas/snippet-revival</span></tt></a></h2>
|
||||
<p>Non-nil means re-activate snippet fields after undo/redo.</p>
|
||||
</div>
|
||||
<div class="section" id="yas-after-exit-snippet-hook-and-yas-before-expand-snippet-hook">
|
||||
<h2><a class="toc-backref" href="#id33"><tt class="docutils literal"><span class="pre">yas/after-exit-snippet-hook</span></tt> and <tt class="docutils literal"><span class="pre">yas/before-expand-snippet-hook</span></tt></a></h2>
|
||||
<h2><a class="toc-backref" href="#id34"><tt class="docutils literal"><span class="pre">yas/after-exit-snippet-hook</span></tt> and <tt class="docutils literal"><span class="pre">yas/before-expand-snippet-hook</span></tt></a></h2>
|
||||
<p>These hooks are called, respectively, before the insertion of a
|
||||
snippet and after exiting the snippet. If you find any strange but
|
||||
functional use for them, that's probably a design flaw in YASnippet,
|
||||
@@ -553,7 +564,7 @@ so let us know.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="importing-textmate-snippets">
|
||||
<h1><a class="toc-backref" href="#id34">Importing TextMate snippets</a></h1>
|
||||
<h1><a class="toc-backref" href="#id35">Importing TextMate snippets</a></h1>
|
||||
<p>There are a couple of tools that take TextMate's ".tmSnippet" xml
|
||||
files and create YASnippet definitions:</p>
|
||||
<blockquote>
|
||||
|
||||
Reference in New Issue
Block a user