mirror of
https://github.com/joaotavora/yasnippet.git
synced 2026-02-04 06:32:24 +00:00
@@ -4,7 +4,7 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<title>Writing snippets</title>
|
||||
<!-- 2015-09-24 Thu 21:15 -->
|
||||
<!-- 2016-04-30 Sat 22:37 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="generator" content="Org-mode" />
|
||||
<style type="text/css">
|
||||
@@ -179,14 +179,14 @@ for the JavaScript code in this tag.
|
||||
<li><a href="#sec-2-9"><code># contributor:</code> snippet author</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#sec-3"></a>
|
||||
<li><a href="#sec-3">Template Syntax</a>
|
||||
<ul>
|
||||
<li><a href="#sec-3-1">Plain Text</a></li>
|
||||
<li><a href="#sec-3-2">Embedded Emacs-lisp code</a></li>
|
||||
<li><a href="#sec-3-3">Tab stop fields</a></li>
|
||||
<li><a href="#sec-3-4">Placeholder fields</a></li>
|
||||
<li><a href="#sec-3-5"></a></li>
|
||||
<li><a href="#sec-3-6">Mirrors with </a></li>
|
||||
<li><a href="#sec-3-5">Mirrors </a></li>
|
||||
<li><a href="#sec-3-6">Mirrors with transformations </a></li>
|
||||
<li><a href="#sec-3-7">Fields with transformations</a></li>
|
||||
<li><a href="#sec-3-8">Choosing fields value from a list and other tricks</a></li>
|
||||
<li><a href="#sec-3-9">Nested placeholder fields</a></li>
|
||||
@@ -311,10 +311,10 @@ Here's a typical example:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet"># contributor: pluskid <pluskid@gmail.com>
|
||||
# name: __...__
|
||||
# --
|
||||
__${init}__
|
||||
<pre class="src src-snippet"><span class="org-comment"># contributor: pluskid <a href="mailto:pluskid%40gmail.com"><pluskid@gmail.com></a></span>
|
||||
<span class="org-comment"># name: __...__</span>
|
||||
<span class="org-comment"># --</span>
|
||||
__${init<span class="org-keyword">}</span>__
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -416,19 +416,19 @@ You can then use:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet"># name: ASCII home
|
||||
# expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))
|
||||
# --
|
||||
welcome to my
|
||||
X humble
|
||||
/ \ home,
|
||||
/ \ $0
|
||||
/ \
|
||||
/-------\
|
||||
| |
|
||||
| +-+ |
|
||||
| | | |
|
||||
+--+-+--+
|
||||
<pre class="src src-snippet"><span class="org-comment"># name: ASCII home</span>
|
||||
<span class="org-comment"># expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))</span>
|
||||
<span class="org-comment"># --</span>
|
||||
welcome to my
|
||||
X humble
|
||||
/ \ home,
|
||||
/ \ <span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
/ \
|
||||
/-------\
|
||||
| |
|
||||
| +-+ |
|
||||
| | | |
|
||||
+--+-+--+
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -451,10 +451,10 @@ same snippet, for example in this "html-mode" snippet.
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet"># name: <p>...</p>
|
||||
# binding: C-c C-c C-m
|
||||
# --
|
||||
<p>`(when yas-prefix "\n")`$0`(when yas-prefix "\n")`</p>
|
||||
<pre class="src src-snippet"><span class="org-comment"># name: <p>...</p></span>
|
||||
<span class="org-comment"># binding: C-c C-c C-m</span>
|
||||
<span class="org-comment"># --</span>
|
||||
<p>`(<span class="org-keyword">when</span> yas-prefix "\n")`<span class="org-keyword">$</span><span class="org-string">0</span>`(<span class="org-keyword">when</span> yas-prefix "\n")`</p>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -477,7 +477,7 @@ triggered.
|
||||
|
||||
<p>
|
||||
If it's <code>snippet</code> (the default when there is no <code>type</code> directive), the
|
||||
snippet body will be parsed according to the <i>Template Syntax</i>,
|
||||
snippet body will be parsed according to the <a href="#sec-3">Template Syntax</a>,
|
||||
described below.
|
||||
</p>
|
||||
</div>
|
||||
@@ -506,7 +506,7 @@ but it looks nice.
|
||||
</div>
|
||||
|
||||
<div id="outline-container-sec-3" class="outline-2">
|
||||
<h2 id="sec-3"><a id="Template-syntax" name="Template-syntax"></a></h2>
|
||||
<h2 id="sec-3">Template Syntax</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The syntax of the snippet template is simple but powerful, very similar
|
||||
@@ -543,12 +543,12 @@ dynamically:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">#ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_}
|
||||
#define $1
|
||||
<pre class="src src-snippet"><span class="org-comment">#ifndef ${</span><span class="org-warning">1</span><span class="org-comment">:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_}</span>
|
||||
<span class="org-comment">#define $</span><span class="org-string">1</span>
|
||||
|
||||
$0
|
||||
<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
|
||||
#endif /* $1 */
|
||||
<span class="org-comment">#endif /* $</span><span class="org-string">1</span><span class="org-comment"> */</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -560,9 +560,9 @@ therefore define a snippet like:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">for ($1;$2;$3) {
|
||||
`yas-selected-text`$0
|
||||
}
|
||||
<pre class="src src-snippet">for (<span class="org-keyword">$</span><span class="org-string">1</span>;<span class="org-keyword">$</span><span class="org-string">2</span>;<span class="org-keyword">$</span><span class="org-string">3</span>) {
|
||||
`yas-selected-text`<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
<span class="org-keyword">}</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -586,8 +586,8 @@ to go when you've traveled all the fields. Here's a typical example:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet"><div$1>
|
||||
$0
|
||||
<pre class="src src-snippet"><div<span class="org-keyword">$</span><span class="org-string">1</span>>
|
||||
<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
</div>
|
||||
</pre>
|
||||
</div>
|
||||
@@ -603,21 +603,21 @@ like this:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">${N:default value}
|
||||
<pre class="src src-snippet">${N:default value<span class="org-keyword">}</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
They acts as the default value for a tab stop. But when you firstly
|
||||
type at a tab stop, the default value will be replaced by your typing.
|
||||
The number can be omitted if you don't want to create <i>mirrors</i> or
|
||||
<a href="#transformations">3.6</a> for this field.
|
||||
The number can be omitted if you don't want to create <a href="#mirrors-fields">mirrors</a> or
|
||||
<a href="#mirror-transformations">transformations</a> for this field.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-sec-3-5" class="outline-3">
|
||||
<h3 id="sec-3-5"><a id="Mirrors" name="Mirrors"></a></h3>
|
||||
<h3 id="sec-3-5">Mirrors <a id="mirrors-fields" name="mirrors-fields"></a></h3>
|
||||
<div class="outline-text-3" id="text-3-5">
|
||||
<p>
|
||||
We refer the tab stops with placeholders as a <i>field</i>. A field can have
|
||||
@@ -627,9 +627,9 @@ field. Here's an example:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">\begin{${1:enumerate}}
|
||||
$0
|
||||
\end{$1}
|
||||
<pre class="src src-snippet">\begin{<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span>enumerate<span class="org-keyword">}}</span>
|
||||
<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
\end{<span class="org-keyword">$</span><span class="org-string">1</span><span class="org-keyword">}</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -648,7 +648,7 @@ the field and others mirrors.
|
||||
</div>
|
||||
|
||||
<div id="outline-container-sec-3-6" class="outline-3">
|
||||
<h3 id="sec-3-6">Mirrors with <a id="transformations" name="transformations"></a></h3>
|
||||
<h3 id="sec-3-6">Mirrors with transformations <a id="mirror-transformations" name="mirror-transformations"></a></h3>
|
||||
<div class="outline-text-3" id="text-3-6">
|
||||
<p>
|
||||
If the value of an <code>${n:</code>-construct starts with and contains <code>$(</code>,
|
||||
@@ -662,17 +662,17 @@ Objective-C:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">- (${1:id})${2:foo}
|
||||
<pre class="src src-snippet">- (<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span>id<span class="org-keyword">}</span>)<span class="org-keyword">${</span><span class="org-warning">2</span><span class="org-keyword">:</span>foo<span class="org-keyword">}</span>
|
||||
{
|
||||
return $2;
|
||||
}
|
||||
return <span class="org-keyword">$</span><span class="org-string">2</span>;
|
||||
<span class="org-keyword">}</span>
|
||||
|
||||
- (void)set${2:$(capitalize yas-text)}:($1)aValue
|
||||
- (void)set<span class="org-keyword">${</span><span class="org-warning">2</span><span class="org-keyword">:</span><span class="org-preprocessor">$(</span>capitalize yas-text)<span class="org-keyword">}</span>:(<span class="org-keyword">$</span><span class="org-string">1</span>)aValue
|
||||
{
|
||||
[$2 autorelease];
|
||||
$2 = [aValue retain];
|
||||
}
|
||||
$0
|
||||
[<span class="org-keyword">$</span><span class="org-string">2</span> autorelease];
|
||||
<span class="org-keyword">$</span><span class="org-string">2</span> = [aValue retain];
|
||||
<span class="org-keyword">}</span>
|
||||
<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -694,9 +694,9 @@ should be at least as long as the text. So
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-rst">=====
|
||||
Title
|
||||
=====
|
||||
<pre class="src src-rst"><span class="org-rst-adornment">=====</span>
|
||||
<span class="org-rst-level-1">Title</span>
|
||||
<span class="org-rst-adornment">=====</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -706,9 +706,9 @@ is a valid title but
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-rst">===
|
||||
Title
|
||||
===
|
||||
<pre class="src src-rst"><span class="org-rst-adornment">===</span>
|
||||
<span class="org-rst-level-1">Title</span>
|
||||
<span class="org-rst-adornment">===</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -718,11 +718,11 @@ is not. Here's an snippet for rst title:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">${1:$(make-string (string-width yas-text) ?\=)}
|
||||
${1:Title}
|
||||
${1:$(make-string (string-width yas-text) ?\=)}
|
||||
<pre class="src src-snippet"><span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span><span class="org-preprocessor">$(</span>make-string (string-width yas-text) ?\=)<span class="org-keyword">}</span>
|
||||
<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span>Title<span class="org-keyword">}</span>
|
||||
<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span><span class="org-preprocessor">$(</span>make-string (string-width yas-text) ?\=)<span class="org-keyword">}</span>
|
||||
|
||||
$0
|
||||
<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -790,8 +790,8 @@ The <a href="snippet-reference.html#yas-choose-value"><code>yas-choose-value</co
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet"><div align="${2:$$(yas-choose-value '("right" "center" "left"))}">
|
||||
$0
|
||||
<pre class="src src-snippet"><div align="<span class="org-keyword">${</span><span class="org-warning">2</span><span class="org-keyword">:</span>$<span class="org-preprocessor">$(</span>yas-choose-value '("right" "center" "left"))<span class="org-keyword">}</span>">
|
||||
<span class="org-keyword">$</span><span class="org-string">0</span>
|
||||
</div>
|
||||
</pre>
|
||||
</div>
|
||||
@@ -808,10 +808,10 @@ enter snippet field 2. This one makes use of <a href="snippet-reference.html#yas
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet">\section{${1:"Titel der Tour"}}%
|
||||
\index{$1}%
|
||||
\label{{2:"waiting for reftex-label call..."$(unless yas-modified-p (reftex-label nil 'dont-
|
||||
insert))}}%
|
||||
<pre class="src src-snippet">\section{<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span>"Titel der Tour"<span class="org-keyword">}}</span>%
|
||||
\index{<span class="org-keyword">$</span><span class="org-string">1</span><span class="org-keyword">}</span>%
|
||||
\label{{2:"waiting for reftex-label call..."<span class="org-preprocessor">$(</span><span class="org-keyword">unless</span> yas-modified-p (reftex-label nil 'dont-
|
||||
insert))<span class="org-keyword">}}</span>%
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -831,7 +831,7 @@ From version 0.6 on, you can also have nested placeholders of the type:
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-snippet"><div${1: id="${2:some_id}"}>$0</div>
|
||||
<pre class="src src-snippet"><div<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span> id="<span class="org-keyword">${</span><span class="org-warning">2</span><span class="org-keyword">:</span>some_id<span class="org-keyword">}</span>"<span class="org-keyword">}</span>><span class="org-keyword">$</span><span class="org-string">0</span></div>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -853,7 +853,7 @@ performs the normal Emacs <code>delete-char</code> command.
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<hr><p class='creator'>Generated by <a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.4.91.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10) on from 7703a55ac416a131dec45fa6a1e0ec1e31adf760
|
||||
<hr><p class='creator'>Generated by <a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.5.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10) on from df229b9ab8db87fe5a1133365fdc299a65f9be86
|
||||
</p>
|
||||
<p class='xhtml-validation'><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user