mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 21:13:04 +00:00
incorporate old rst docs into org
This commit is contained in:
parent
695211b761
commit
b194ea56b3
@ -1,78 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
|
||||
<title>Moved</title>
|
||||
<meta content="3; URL=index.html" http-equiv="Refresh" />
|
||||
<link rel="stylesheet" href="styles.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="moved">
|
||||
<div id="header-region" class="clear-block"></div>
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clear-block">
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<h1 class="title">Moved</h1>
|
||||
</div>
|
||||
<ul class="primary-links">
|
||||
<li>
|
||||
<a title="" href="index.html">Intro and tutorial</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-organization.html">Howto: organize</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-expansion.html">Howto: expand</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-development.html">Howto: write </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-menu.html">Howto: menu </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="faq.html">FAQ</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="changelog.html">ChangeLog</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="http://code.google.com/p/yasnippet/downloads/list">Download</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="center">
|
||||
<div id="squeeze">
|
||||
<div class="right-corner">
|
||||
<div class="left-corner">
|
||||
<p>
|
||||
<b>Important:</b> This documentation applies to
|
||||
the <b>SVN trunk</b> of YASnippet, which you
|
||||
get <a href="http://code.google.com/p/yasnippet/source/checkout">here</a>. Documentation
|
||||
for other versions can be found <a title=""
|
||||
href="http://code.google.com/p/yasnippet/downloads/list">here</a>.
|
||||
</p>
|
||||
<p>This page has been moved. Click <a class="reference external" href="index.html">here</a> if your browser
|
||||
does not automatically redirect you</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("UA-10536822-1");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
499
faq.html
499
faq.html
@ -1,189 +1,358 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
|
||||
<title>Frequently Asked Questions</title>
|
||||
<link rel="stylesheet" href="styles.css" type="text/css" />
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
|
||||
<meta name="title" content="Frequently Asked Questions"/>
|
||||
<meta name="generator" content="Org-mode"/>
|
||||
<meta name="generated" content="2013-11-26T21:02-0500"/>
|
||||
<meta name="author" content=""/>
|
||||
<meta name="description" content=""/>
|
||||
<meta name="keywords" content=""/>
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
html { font-family: Times, serif; font-size: 12pt; }
|
||||
.title { text-align: center; }
|
||||
.todo { color: red; }
|
||||
.done { color: green; }
|
||||
.tag { background-color: #add8e6; font-weight:normal }
|
||||
.target { }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.right {margin-left:auto; margin-right:0px; text-align:right;}
|
||||
.left {margin-left:0px; margin-right:auto; text-align:left;}
|
||||
.center {margin-left:auto; margin-right:auto; text-align:center;}
|
||||
p.verse { margin-left: 3% }
|
||||
pre {
|
||||
border: 1pt solid #AEBDCC;
|
||||
background-color: #F3F5F7;
|
||||
padding: 5pt;
|
||||
font-family: courier, monospace;
|
||||
font-size: 90%;
|
||||
overflow:auto;
|
||||
}
|
||||
table { border-collapse: collapse; }
|
||||
td, th { vertical-align: top; }
|
||||
th.right { text-align:center; }
|
||||
th.left { text-align:center; }
|
||||
th.center { text-align:center; }
|
||||
td.right { text-align:right; }
|
||||
td.left { text-align:left; }
|
||||
td.center { text-align:center; }
|
||||
dt { font-weight: bold; }
|
||||
div.figure { padding: 0.5em; }
|
||||
div.figure p { text-align: center; }
|
||||
div.inlinetask {
|
||||
padding:10px;
|
||||
border:2px solid gray;
|
||||
margin:10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size:smaller }
|
||||
.code-highlighted {background-color:#ffff00;}
|
||||
.org-info-js_info-navigation { border-style:none; }
|
||||
#org-info-js_console-label { font-size:10px; font-weight:bold;
|
||||
white-space:nowrap; }
|
||||
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
|
||||
font-weight:bold; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="frequently-asked-questions">
|
||||
<div id="header-region" class="clear-block"></div>
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clear-block">
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<h1 class="title">Frequently Asked Questions</h1>
|
||||
</div>
|
||||
<ul class="primary-links">
|
||||
<li>
|
||||
<a title="" href="index.html">Intro and tutorial</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-organization.html">Howto: organize</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-expansion.html">Howto: expand</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-development.html">Howto: write </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-menu.html">Howto: menu </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="faq.html">FAQ</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="changelog.html">ChangeLog</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="http://code.google.com/p/yasnippet/downloads/list">Download</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="center">
|
||||
<div id="squeeze">
|
||||
<div class="right-corner">
|
||||
<div class="left-corner">
|
||||
<p>
|
||||
<b>Important:</b> This documentation applies to
|
||||
the <b>SVN trunk</b> of YASnippet, which you
|
||||
get <a href="http://code.google.com/p/yasnippet/source/checkout">here</a>. Documentation
|
||||
for other versions can be found <a title=""
|
||||
href="http://code.google.com/p/yasnippet/downloads/list">here</a>.
|
||||
</p>
|
||||
<div class="section" id="why-is-there-an-extra-newline">
|
||||
<h1>Why is there an extra newline?</h1>
|
||||
<p>If you have a newline at the end of the snippet definition file, then
|
||||
YASnippet will add a newline when you expanding a snippet. Please
|
||||
don't add a newline at the end if you don't want it when you saving
|
||||
the snippet file.</p>
|
||||
<p>Note some editors will automatically add a newline for you. In Emacs,
|
||||
if you set <tt class="docutils literal"><span class="pre">require-final-newline</span></tt> to <tt class="docutils literal">t</tt>, it will add the final
|
||||
newline for you automatically.</p>
|
||||
<div id="org-div-home-and-up" style="text-align:right;font-size:70%;white-space:nowrap;">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
</div>
|
||||
<div class="section" id="why-doesn-t-tab-expand-a-snippet">
|
||||
<h1>Why doesn't TAB expand a snippet?</h1>
|
||||
<p>First check the mode line to see if there's <tt class="docutils literal">yas</tt>. If not, then try
|
||||
<tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">yas/minor-mode</span></tt> to manually turn on the minor mode and try to
|
||||
|
||||
<div id="preamble">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<h1 class="title">Frequently Asked Questions</h1>
|
||||
|
||||
|
||||
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#sec-1">Why is there an extra newline?</a></li>
|
||||
<li><a href="#sec-2">Why doesn't TAB expand a snippet?</a></li>
|
||||
<li><a href="#sec-3">Why doesn't TAB navigation work with flyspell</a></li>
|
||||
<li><a href="#sec-4">How do I turn off the minor mode where in some buffers</a></li>
|
||||
<li><a href="#sec-5">How do I define an abbrev key containing characters not supported by</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1" class="outline-2">
|
||||
<h2 id="sec-1">Why is there an extra newline?</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
|
||||
|
||||
<p>
|
||||
If you have a newline at the end of the snippet definition file, then
|
||||
YASnippet will add a newline when you expanding a snippet. Please don't
|
||||
add a newline at the end if you don't want it when you saving the
|
||||
snippet file.
|
||||
</p>
|
||||
<p>
|
||||
Note some editors will automatically add a newline for you. In Emacs, if
|
||||
you set <code>require-final-newline</code> to <code>t</code>, it will add the final newline
|
||||
for you automatically.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-2" class="outline-2">
|
||||
<h2 id="sec-2">Why doesn't TAB expand a snippet?</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
|
||||
|
||||
<p>
|
||||
First check the mode line to see if there's <code>yas</code>. If not, then try
|
||||
<code>M-x yas-minor-mode</code> to manually turn on the minor mode and try to
|
||||
expand the snippet again. If it works, then, you can add the following
|
||||
code to your <tt class="docutils literal">.emacs</tt> <em>before</em> loading YASnippet:</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(add-hook 'the-major-mode-hook 'yas/minor-mode-on)
|
||||
</pre></div>
|
||||
<p>where <tt class="docutils literal"><span class="pre">the-major-mode</span></tt> is the major mode in which <tt class="docutils literal"><span class="pre">yas/minor-mode</span></tt>
|
||||
isn't enabled by default.</p>
|
||||
<p>From YASnippet 0.6 you can also use the command <tt class="docutils literal"><span class="pre">M-x</span>
|
||||
<span class="pre">yas/global-mode</span></tt> to turn on YASnippet automatically for <em>all</em> major
|
||||
modes.</p>
|
||||
<p>If <tt class="docutils literal"><span class="pre">yas/minor-mode</span></tt> is on but the snippet still not expanded. Then
|
||||
try to see what command is bound to the <tt class="docutils literal">TAB</tt> key: press <tt class="docutils literal"><span class="pre">C-h</span> k</tt>
|
||||
and then press <tt class="docutils literal">TAB</tt>. Emacs will show you the result.</p>
|
||||
<p>You'll see a buffer prompted by Emacs saying that <tt class="docutils literal">TAB runs the
|
||||
command ...</tt>. Alternatively, you might see <tt class="docutils literal"><tab> runs the command
|
||||
...</tt>, note the difference between <tt class="docutils literal">TAB</tt> and <tt class="docutils literal"><tab></tt> where the
|
||||
latter has priority. If you see <tt class="docutils literal"><tab></tt> bound to a command other
|
||||
than <tt class="docutils literal">yas/expand</tt>, (e.g. in <tt class="docutils literal"><span class="pre">org-mode</span></tt>) you can try the following
|
||||
code to work around:</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(add-hook 'org-mode-hook
|
||||
code to your <code>.emacs</code> <i>before</i> loading YASnippet:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(add-hook 'the-major-mode-hook 'yas-minor-mode-on)
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
where <code>the-major-mode</code> is the major mode in which <a href="snippet-reference.html#yas-minor-mode"><code>yas-minor-mode</code></a> isn't
|
||||
enabled by default.
|
||||
</p>
|
||||
<p>
|
||||
From YASnippet 0.6 you can also use the command <code>M-x yas-global-mode</code> to
|
||||
turn on YASnippet automatically for <i>all</i> major modes.
|
||||
</p>
|
||||
<p>
|
||||
If <a href="snippet-reference.html#yas-minor-mode"><code>yas-minor-mode</code></a> is on but the snippet still not expanded. Then try
|
||||
to see what command is bound to the <code>TAB</code> key: press <code>C-h k</code> and then
|
||||
press <code>TAB</code>. Emacs will show you the result.
|
||||
</p>
|
||||
<p>
|
||||
You'll see a buffer prompted by Emacs saying that
|
||||
<code>TAB runs the command ...</code>. Alternatively, you might see
|
||||
<code><tab> runs the command ...</code>, note the difference between <code>TAB</code> and
|
||||
<code><tab></code> where the latter has priority. If you see <code><tab></code> bound to a
|
||||
command other than <a href="snippet-reference.html#yas-expand"><code>yas-expand</code></a>, (e.g. in <code>org-mode</code>) you can try the
|
||||
following code to work around:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(add-hook 'org-mode-hook
|
||||
(let ((original-command (lookup-key org-mode-map [tab])))
|
||||
`(lambda ()
|
||||
(setq yas/fallback-behavior
|
||||
'(apply ,original-command))
|
||||
(local-set-key [tab] 'yas/expand))))
|
||||
</pre></div>
|
||||
<p>replace <tt class="docutils literal"><span class="pre">org-mode-hook</span></tt> and <tt class="docutils literal"><span class="pre">org-mode-map</span></tt> with the major mode
|
||||
hook you are dealing with (Use <tt class="docutils literal"><span class="pre">C-h</span> m</tt> to see what major mode you
|
||||
are in).</p>
|
||||
<p>As an alternative, you can also try</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(defun yas/advise-indent-function (function-symbol)
|
||||
(eval `(defadvice ,function-symbol (around yas/try-expand-first activate)
|
||||
(setq yas-fallback-behavior
|
||||
'(apply ,original-command))
|
||||
(local-set-key [tab] 'yas-expand))))
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
replace <code>org-mode-hook</code> and <code>org-mode-map</code> with the major mode hook you
|
||||
are dealing with (Use <code>C-h m</code> to see what major mode you are in).
|
||||
</p>
|
||||
<p>
|
||||
As an alternative, you can also try
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(defun yas-advise-indent-function (function-symbol)
|
||||
(eval `(defadvice ,function-symbol (around yas-try-expand-first activate)
|
||||
,(format
|
||||
"Try to expand a snippet before point, then call `%s' as usual"
|
||||
"Try to expand a snippet before point, then call `%s' as usual"
|
||||
function-symbol)
|
||||
(let ((yas/fallback-behavior nil))
|
||||
(let ((yas-fallback-behavior nil))
|
||||
(unless (and (interactive-p)
|
||||
(yas/expand))
|
||||
(yas-expand))
|
||||
ad-do-it)))))
|
||||
|
||||
(yas/advise-indent-function 'ruby-indent-line)
|
||||
</pre></div>
|
||||
<p>To <em>advise</em> the modes indentation function bound to TAB, (in this case
|
||||
<tt class="docutils literal"><span class="pre">ruby-indent-line</span></tt>) to first try to run <tt class="docutils literal">yas/expand</tt>.</p>
|
||||
<p>If the output of <tt class="docutils literal"><span class="pre">C-h</span> k RET <tab></tt> tells you that <tt class="docutils literal"><tab></tt> is
|
||||
indeed bound to <tt class="docutils literal">yas/expand</tt> but YASnippet still doesn't work, check
|
||||
your configuration and you may also ask for help on the <a class="reference external" href="http://groups.google.com/group/smart-snippet">discussion
|
||||
group</a>. See this
|
||||
particular <a class="reference external" href="http://code.google.com/p/yasnippet/issues/detail?id=93&can=1">thread</a> for
|
||||
quite some solutions and alternatives.</p>
|
||||
<p>Don't forget to attach the information on what command is bound to TAB
|
||||
as well as the mode information (Can be obtained by <tt class="docutils literal"><span class="pre">C-h</span> m</tt>).</p>
|
||||
(yas-advise-indent-function 'ruby-indent-line)
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
To <i>advise</i> the modes indentation function bound to TAB, (in this case
|
||||
<code>ruby-indent-line</code>) to first try to run <a href="snippet-reference.html#yas-expand"><code>yas-expand</code></a>.
|
||||
</p>
|
||||
<p>
|
||||
If the output of <code>C-h k RET <tab></code> tells you that <code><tab></code> is indeed
|
||||
bound to <a href="snippet-reference.html#yas-expand"><code>yas-expand</code></a> but YASnippet still doesn't work, check your
|
||||
configuration and you may also ask for help on the <a href="http://groups.google.com/group/smart-snippet">discussion group</a>.
|
||||
See this particular <a href="http://code.google.com/p/yasnippet/issues/detail?id=93&can=1">thread</a> for quite some solutions and alternatives.
|
||||
</p>
|
||||
<p>
|
||||
Don't forget to attach the information on what command is bound to TAB
|
||||
as well as the mode information (Can be obtained by <code>C-h m</code>).
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" id="why-doesn-t-tab-navigation-work-with-flyspell">
|
||||
<h1>Why doesn't TAB navigation work with flyspell</h1>
|
||||
<p>A workaround is to inhibit flyspell overlays while the snippet is active:</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(add-hook 'flyspell-incorrect-hook
|
||||
#'(lambda (dummy1 dummy2 dymmy3)
|
||||
(and yas/active-field-overlay
|
||||
(overlay-buffer yas/active-field-overlay))))
|
||||
</pre></div>
|
||||
<p>This is apparently related to overlay priorities. For some reason, the
|
||||
<tt class="docutils literal">keymap</tt> property of flyspell's overlays always takes priority over
|
||||
the same property in yasnippet's overlays, even if one sets the
|
||||
latter's <tt class="docutils literal">priority</tt> property to something big. If you know
|
||||
emacs-lisp and can solve this problem, drop a line in the <a class="reference external" href="http://groups.google.com/group/smart-snippet">discussion
|
||||
group</a>.</p>
|
||||
|
||||
</div>
|
||||
<div class="section" id="how-do-i-turn-off-the-minor-mode-where-in-some-buffers">
|
||||
<h1>How do I turn off the minor mode where in some buffers</h1>
|
||||
<p>The best way, since version 0.6.1c, is to set the default value of the
|
||||
variable <tt class="docutils literal"><span class="pre">yas/dont-activate</span></tt> to a lambda function like so:</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(set-default 'yas/dont-activate
|
||||
#'(lambda ()
|
||||
(and yas/root-directory
|
||||
(null (yas/get-snippet-tables)))))
|
||||
</pre></div>
|
||||
<p>This is also the default value starting for that version. It skips the
|
||||
|
||||
<div id="outline-container-3" class="outline-2">
|
||||
<h2 id="sec-3">Why doesn't TAB navigation work with flyspell</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
|
||||
|
||||
<p>
|
||||
A workaround is to inhibit flyspell overlays while the snippet is
|
||||
active:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(add-hook 'flyspell-incorrect-hook
|
||||
#'(lambda (dummy1 dummy2 dymmy3)
|
||||
(and yas-active-field-overlay
|
||||
(overlay-buffer yas-active-field-overlay))))
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
This is apparently related to overlay priorities. For some reason, the
|
||||
<code>keymap</code> property of flyspell's overlays always takes priority over the
|
||||
same property in yasnippet's overlays, even if one sets the latter's
|
||||
<code>priority</code> property to something big. If you know emacs-lisp and can
|
||||
solve this problem, drop a line in the
|
||||
<a href="http://groups.google.com/group/smart-snippet">discussion group</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-4" class="outline-2">
|
||||
<h2 id="sec-4">How do I turn off the minor mode where in some buffers</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
|
||||
|
||||
<p>
|
||||
The best way, since version 0.6.1c, is to set the default value of the
|
||||
variable <a href="snippet-reference.html#yas-dont-activate"><code>yas-dont-activate</code></a> to a lambda function like so:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(set-default 'yas-dont-activate
|
||||
#'(lambda ()
|
||||
(and yas-root-directory
|
||||
(null (yas-get-snippet-tables)))))
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
This is also the default value starting for that version. It skips the
|
||||
minor mode in buffers where it is not applicable (no snippet tables),
|
||||
but only once you have setup your yas/root-directory.</p>
|
||||
but only once you have setup your yas-root-directory.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" id="how-do-i-define-an-abbrev-key-containing-characters-not-supported-by-the-filesystem">
|
||||
<h1>How do I define an abbrev key containing characters not supported by the filesystem?</h1>
|
||||
<dl class="docutils">
|
||||
<dt><strong>Note</strong>: This question applies if you're still defining snippets</dt>
|
||||
<dd>whose key <em>is</em> the filename. This is behavior stil provided by
|
||||
version 0.6 for backward compatibilty, but is somewhat deprecated...</dd>
|
||||
</dl>
|
||||
<p>For example, you want to define a snippet by the key <tt class="docutils literal"><</tt> which is
|
||||
not a valid character for filename on Windows. This means you can't
|
||||
use the filename as a trigger key in this case.</p>
|
||||
<p>You should rather use the <tt class="docutils literal"># key:</tt> directive to specify the key of
|
||||
the defined snippet explicitly and name your snippet with an arbitrary
|
||||
valid filename, <tt class="docutils literal">lt.yasnippet</tt> for example, using <tt class="docutils literal"><</tt> for the
|
||||
<tt class="docutils literal"># key:</tt> directive:</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">#key: <
|
||||
#name: <...></...>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-5" class="outline-2">
|
||||
<h2 id="sec-5">How do I define an abbrev key containing characters not supported by</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
|
||||
<p>the filesystem?
|
||||
</p>
|
||||
<ul>
|
||||
<li><b>Note</b>: This question applies if you're still defining snippets
|
||||
whose key <i>is</i> the filename. This is behavior still provided by
|
||||
version 0.6 for backward compatibilty, but is somewhat
|
||||
deprecated…
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
For example, you want to define a snippet by the key <code><</code> which is not a
|
||||
valid character for filename on Windows. This means you can't use the
|
||||
filename as a trigger key in this case.
|
||||
</p>
|
||||
<p>
|
||||
You should rather use the <code># key:</code> directive to specify the key of the
|
||||
defined snippet explicitly and name your snippet with an arbitrary valid
|
||||
filename, <code>lt.yasnippet</code> for example, using <code><</code> for the <code># key:</code>
|
||||
directive:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example"># key: <
|
||||
# name: <...></...>
|
||||
# --
|
||||
<${1:div}>$0</$1>
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("UA-10536822-1");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div id="postamble">
|
||||
<p class="date">Date: 2013-11-26T21:02-0500</p>
|
||||
<p class="creator"><a href="http://orgmode.org">Org</a> version 7.9.3f with <a href="http://www.gnu.org/software/emacs/">Emacs</a> version 24</p>
|
||||
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
512
index.html
512
index.html
@ -1,201 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
|
||||
<title>Yet Another Snippet extension</title>
|
||||
<link rel="stylesheet" href="styles.css" type="text/css" />
|
||||
<title>Yet another snippet extension</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<meta name="title" content="Yet another snippet extension"/>
|
||||
<meta name="generator" content="Org-mode"/>
|
||||
<meta name="generated" content="2013-11-26T21:02-0500"/>
|
||||
<meta name="author" content=""/>
|
||||
<meta name="description" content=""/>
|
||||
<meta name="keywords" content=""/>
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
html { font-family: Times, serif; font-size: 12pt; }
|
||||
.title { text-align: center; }
|
||||
.todo { color: red; }
|
||||
.done { color: green; }
|
||||
.tag { background-color: #add8e6; font-weight:normal }
|
||||
.target { }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.right {margin-left:auto; margin-right:0px; text-align:right;}
|
||||
.left {margin-left:0px; margin-right:auto; text-align:left;}
|
||||
.center {margin-left:auto; margin-right:auto; text-align:center;}
|
||||
p.verse { margin-left: 3% }
|
||||
pre {
|
||||
border: 1pt solid #AEBDCC;
|
||||
background-color: #F3F5F7;
|
||||
padding: 5pt;
|
||||
font-family: courier, monospace;
|
||||
font-size: 90%;
|
||||
overflow:auto;
|
||||
}
|
||||
table { border-collapse: collapse; }
|
||||
td, th { vertical-align: top; }
|
||||
th.right { text-align:center; }
|
||||
th.left { text-align:center; }
|
||||
th.center { text-align:center; }
|
||||
td.right { text-align:right; }
|
||||
td.left { text-align:left; }
|
||||
td.center { text-align:center; }
|
||||
dt { font-weight: bold; }
|
||||
div.figure { padding: 0.5em; }
|
||||
div.figure p { text-align: center; }
|
||||
div.inlinetask {
|
||||
padding:10px;
|
||||
border:2px solid gray;
|
||||
margin:10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size:smaller }
|
||||
.code-highlighted {background-color:#ffff00;}
|
||||
.org-info-js_info-navigation { border-style:none; }
|
||||
#org-info-js_console-label { font-size:10px; font-weight:bold;
|
||||
white-space:nowrap; }
|
||||
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
|
||||
font-weight:bold; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="yet-another-snippet-extension">
|
||||
<div id="header-region" class="clear-block"></div>
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clear-block">
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<h1 class="title">Yet Another Snippet extension</h1>
|
||||
</div>
|
||||
<ul class="primary-links">
|
||||
<li>
|
||||
<a title="" href="index.html">Intro and tutorial</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-organization.html">Howto: organize</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-expansion.html">Howto: expand</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-development.html">Howto: write </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-menu.html">Howto: menu </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="faq.html">FAQ</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="changelog.html">ChangeLog</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="http://code.google.com/p/yasnippet/downloads/list">Download</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="center">
|
||||
<div id="squeeze">
|
||||
<div class="right-corner">
|
||||
<div class="left-corner">
|
||||
<p>
|
||||
<b>Important:</b> This documentation applies to
|
||||
the <b>SVN trunk</b> of YASnippet, which you
|
||||
get <a href="http://code.google.com/p/yasnippet/source/checkout">here</a>. Documentation
|
||||
for other versions can be found <a title=""
|
||||
href="http://code.google.com/p/yasnippet/downloads/list">here</a>.
|
||||
</p>
|
||||
<div class="contents topic" id="contents">
|
||||
<p class="topic-title first">Contents</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#video-demo" id="id1">Video Demo</a></li>
|
||||
<li><a class="reference internal" href="#installation" id="id2">Installation</a><ul>
|
||||
<li><a class="reference internal" href="#install-with-yasnippet-bundle-el" id="id3">Install with <tt class="docutils literal"><span class="pre">yasnippet-bundle.el</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#normal-install" id="id4">Normal Install</a></li>
|
||||
<div id="org-div-home-and-up" style="text-align:right;font-size:70%;white-space:nowrap;">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
</div>
|
||||
|
||||
<div id="preamble">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<h1 class="title">Yet another snippet extension</h1>
|
||||
|
||||
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#sec-1">Quick start</a>
|
||||
<ul>
|
||||
<li><a href="#sec-1-1">Watch a demo</a></li>
|
||||
<li><a href="#sec-1-2">Installation</a></li>
|
||||
<li><a href="#import-textmate">Import textmate snippets (rails example)</a></li>
|
||||
<li><a href="#sec-1-4">Contributing snippets</a></li>
|
||||
<li><a href="#sec-1-5">Documentation</a></li>
|
||||
<li><a href="#sec-1-6">Bugs, discussion, contributions, etc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#how-to-use-yasnippet" id="id5">How to use YASnippet</a></li>
|
||||
<li><a class="reference internal" href="#bugs-contribution-and-support" id="id6">Bugs, Contribution and Support</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<p><strong>YASnippet</strong> is a template system for Emacs. It allows you to type an
|
||||
abbreviation and automatically expand it into function
|
||||
templates. Bundled language templates includes: C, C++, C#, Perl,
|
||||
Python, Ruby, SQL, LaTeX, HTML, CSS and more.</p>
|
||||
<p>The snippet syntax is inspired from TextMate's syntax, you can even
|
||||
<a class="reference external" href="snippet-development.html#importing-textmate-snippets">import</a>
|
||||
import most TextMate templates. YASnippet is a re-write of the
|
||||
extension <a class="reference external" href="http://code.google.com/p/smart-snippet/">smart-snippet</a>. Both are original creations of <a class="reference external" href="http://pluskid.lifegoo.org">pluskid</a>.</p>
|
||||
<div class="section" id="video-demo">
|
||||
<h1><a class="toc-backref" href="#id1">Video Demo</a></h1>
|
||||
<object type="application/x-shockwave-flash"
|
||||
width="425"
|
||||
height="344"
|
||||
align="right"
|
||||
class="youtube-embed"
|
||||
data="http://www.youtube.com/v/76Ygeg9miao">
|
||||
<param name="movie" value="http://www.youtube.com/v/76Ygeg9miao"></param>
|
||||
<param name="wmode" value="transparent"></param>
|
||||
</object>
|
||||
<p>Watch the <a class="reference external" href="http://www.youtube.com/watch?v=76Ygeg9miao">demo at YouTube</a> (download a higher
|
||||
resolution version: <a class="reference external" href="http://yasnippet.googlecode.com/files/yasnippet.avi">yasnippet.avi</a>).</p>
|
||||
</div>
|
||||
<div class="section" id="installation">
|
||||
<h1><a class="toc-backref" href="#id2">Installation</a></h1>
|
||||
<p>There are two archives you can download. To quickly tryout YASnippet,
|
||||
download the simpler "bundle" version. If you plan to modify the
|
||||
bundled templates and/or build your own, download the "normal"
|
||||
package.</p>
|
||||
<div class="section" id="install-with-yasnippet-bundle-el">
|
||||
<h2><a class="toc-backref" href="#id3">Install with <tt class="docutils literal"><span class="pre">yasnippet-bundle.el</span></tt></a></h2>
|
||||
<ol class="arabic simple">
|
||||
<li>Download the latest <tt class="docutils literal"><span class="pre">yasnippet-bundle-x.y.z.el.tgz</span></tt> and unpack it.</li>
|
||||
<li>You'll get a file named <tt class="docutils literal"><span class="pre">yasnippet-bundle.el</span></tt>, put it under
|
||||
<tt class="docutils literal"><span class="pre">~/.emacs.d/plugins/</span></tt> (create the directory if not exists).</li>
|
||||
<li>Open the file in Emacs, and type <tt class="docutils literal">Alt+x <span class="pre">eval-buffer</span></tt>.</li>
|
||||
|
||||
<div id="outline-container-1" class="outline-2">
|
||||
<h2 id="sec-1">Quick start</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
|
||||
|
||||
<p>
|
||||
<b>YASnippet</b> is a template system for Emacs. It allows you to type an
|
||||
abbreviation and automatically expand it into function templates. Bundled
|
||||
language templates includes: C, C++, C#, Perl, Python, Ruby, SQL, LaTeX, HTML,
|
||||
CSS and more. The snippet syntax is inspired from TextMate's syntax, you can
|
||||
even <a href="#import-textmate">import most TextMate snippets</a>
|
||||
</p>
|
||||
<p>
|
||||
YASnippet is an original creation of <a href="http://pluskid.lifegoo.org">pluskid</a> who also wrote its predecessor
|
||||
<a href="http://code.google.com/p/smart-snippet">smart-snippet</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1-1" class="outline-3">
|
||||
<h3 id="sec-1-1">Watch a demo</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
|
||||
|
||||
<p>
|
||||
On <a href="http://www.youtube.com/watch?v=ZCGmZK4V7Sg">youtube</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1-2" class="outline-3">
|
||||
<h3 id="sec-1-2">Installation</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
|
||||
|
||||
<p>
|
||||
Clone this repository somewhere
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">$ cd ~/.emacs.d/plugins
|
||||
$ git clone https://github.com/capitaomorte/yasnippet
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Add the following in your <code>.emacs</code> file:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(add-to-list 'load-path
|
||||
"~/.emacs.d/plugins/yasnippet")
|
||||
(require 'yasnippet)
|
||||
(yas-global-mode 1)
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Add your own snippets to <code>~/.emacs.d/snippets</code> by placing files there or
|
||||
invoking <a href="snippet-reference.html#yas-new-snippet"><code>yas-new-snippet</code></a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-import-textmate" class="outline-3">
|
||||
<h3 id="import-textmate"><a name="sec-1-3" id="sec-1-3"></a>Import textmate snippets (rails example)</h3>
|
||||
<div class="outline-text-3" id="text-import-textmate">
|
||||
|
||||
|
||||
<p>
|
||||
YASnippet lets you use TextMate bundles directly:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">$ cd ~/.emacs.d/plugins
|
||||
$ git clone https://github.com/capitaomorte/yasnippet
|
||||
$ cd yasnippet
|
||||
$ git submodule init
|
||||
$ git submodule update
|
||||
$ gem install plist trollop
|
||||
$ rake convert_bundles # will convert ruby, rails and html bundles from drnic
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Then, in your <code>.emacs</code> file
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">(add-to-list 'load-path
|
||||
"~/.emacs.d/plugins/yasnippet")
|
||||
(require 'yasnippet)
|
||||
(setq yas-snippet-dirs '("~/.emacs.d/snippets" "~/.emacs.d/extras/imported"))
|
||||
(yas-global-mode 1)
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Open some rails file (model, app, etc) and start using the textmate
|
||||
snippets. Consider that this is a work-in-progress and many snippets/commands
|
||||
might not work. Patches welcome!
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1-4" class="outline-3">
|
||||
<h3 id="sec-1-4">Contributing snippets</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
|
||||
|
||||
<p>
|
||||
Please <b>do not ask me</b> to add snippets to the default collection under
|
||||
<code>/snippets</code>. This collection is considered frozen. By customizing
|
||||
<a href="snippet-reference.html#yas-snippet-dirs"><code>yas-snippet-dirs</code></a> you can point yasnippet to good
|
||||
snippet collections out there.
|
||||
</p>
|
||||
<p>
|
||||
The <code>extras/textmate-import.rb</code> tool can import many actual Textmate
|
||||
snippets. I'm focusing on developing it and the accompanying <code>yas-setup.el</code>
|
||||
files that guide it with more difficult importations. The idea is to deprecate
|
||||
<code>/snippets</code> and replace it with <code>extras/imported</code>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1-5" class="outline-3">
|
||||
<h3 id="sec-1-5">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
|
||||
|
||||
<p>
|
||||
The documentation has been split into separate parts:
|
||||
</p>
|
||||
<ol>
|
||||
<li><a href="snippet-organization.html">Organizing Snippets</a>
|
||||
Describes ways to organize your snippets in the hard disk.
|
||||
|
||||
</li>
|
||||
<li><a href="snippet-expansion.html">Expanding Snippets</a>
|
||||
Describes how YASnippet chooses snippets for expansion at point.
|
||||
|
||||
<p>
|
||||
Maybe, you'll want some snippets to be expanded in a particular mode,
|
||||
or only under certain conditions, or be prompted using <code>ido</code>, etc…
|
||||
</p>
|
||||
</li>
|
||||
<li><a href="snippet-development.html">Writing Snippets</a>
|
||||
Describes the YASnippet definition syntax, which is very close (but
|
||||
not equivalent) to Textmate's. Includes a section about converting
|
||||
TextMate snippets.
|
||||
|
||||
</li>
|
||||
<li><a href="snippet-menu.html">The YASnippet menu</a>
|
||||
Explains how to use the YASnippet menu to explore, learn and modify
|
||||
snippets.
|
||||
|
||||
</li>
|
||||
<li><a href="snippet-reference.html">YASnippet Symbol Reference</a>
|
||||
An automatically generated listing of all YASnippet commands,
|
||||
(customization) variables, and functions.
|
||||
</li>
|
||||
</ol>
|
||||
<p>That's it. Now open any one of your language file, you'll see a menu
|
||||
YASnippet. you can pull the menu to insert a template. Or, you can
|
||||
type the a <em>trigger key</em> then press <tt class="docutils literal">TAB</tt> to expand it.</p>
|
||||
<p>To have Emacs load YASnippet automatically when it starts, put the
|
||||
following in your <tt class="docutils literal"><span class="pre">~/.emacs</span></tt> file:</p>
|
||||
<blockquote>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(<span style="color: #19177C">add-to-list</span> <span style="color: #19177C">'load-path</span>
|
||||
<span style="color: #BA2121">"~/.emacs.d/plugins"</span>)
|
||||
(<span style="color: #008000">require</span> <span style="color: #19177C">'yasnippet-bundle</span>)
|
||||
</pre></div>
|
||||
</blockquote>
|
||||
<p>The <a class="reference external" href="http://www.youtube.com/watch?v=76Ygeg9miao">youtube video</a>
|
||||
demonstrates this quick installation.</p>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="section" id="normal-install">
|
||||
<h2><a class="toc-backref" href="#id4">Normal Install</a></h2>
|
||||
<p>To install YASnippet as a normal emacs package, download and unpack
|
||||
the latest <tt class="docutils literal"><span class="pre">yasnippet-x.y.z.tar.bz2</span></tt>. You'll get a directory named
|
||||
<tt class="docutils literal"><span class="pre">yasnippet-x.y.z</span></tt>, which you can put it in your
|
||||
<tt class="docutils literal"><span class="pre">~/.emacs.d/plugins</span></tt> and add the following in your <tt class="docutils literal">.emacs</tt> file:</p>
|
||||
<blockquote>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">(<span style="color: #19177C">add-to-list</span> <span style="color: #19177C">'load-path</span>
|
||||
<span style="color: #BA2121">"~/.emacs.d/plugins/yasnippet-x.y.z"</span>)
|
||||
(<span style="color: #008000">require</span> <span style="color: #19177C">'yasnippet</span>) <span style="color: #408080; font-style: italic">;; not yasnippet-bundle</span>
|
||||
(<span style="color: #19177C">yas/initialize</span>)
|
||||
(<span style="color: #19177C">yas/load-directory</span> <span style="color: #BA2121">"~/.emacs.d/plugins/yasnippet-x.y.z/snippets"</span>)
|
||||
</pre></div>
|
||||
</blockquote>
|
||||
<p>Please refer to the documentation for full customization, or use the
|
||||
customization group.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1-6" class="outline-3">
|
||||
<h3 id="sec-1-6">Bugs, discussion, contributions, etc</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
|
||||
|
||||
<p>
|
||||
If you think you've found a bug, please report it on <a href="https://github.com/capitaomorte/yasnippet/issues">the GitHub issue tracker</a>
|
||||
(please **do not** submit new issues to the old <a href="http://code.google.com/p/yasnippet/issues/list">googlecode tracker</a>).
|
||||
</p>
|
||||
<p>
|
||||
If you run into problems using YASnippet, or have snippets to contribute,
|
||||
post to the <a href="http://groups.google.com/group/smart-snippet">yasnippet forum</a>. Thank you very much for using YASnippet!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="how-to-use-yasnippet">
|
||||
<h1><a class="toc-backref" href="#id5">How to use YASnippet</a></h1>
|
||||
<p>Since version 0.6, YASnippet contains more functionality. You don't
|
||||
need to know all of it to use it successfully, but you it can improve
|
||||
your snippeting experience.</p>
|
||||
<p>Hence this section has been split into separate documents:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><a class="reference external" href="snippet-organization.html">Organizing Snippets</a></li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
Describes ways to organize your snippets in the hard disk (or not
|
||||
organize them at all and just use <tt class="docutils literal"><span class="pre">yasnippet-bundle.el</span></tt>.</blockquote>
|
||||
<ol class="arabic simple" start="2">
|
||||
<li><a class="reference external" href="snippet-expansion.html">Expanding Snippets</a></li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
<p>Describes how YASnippet chooses snippets for expansion at point.</p>
|
||||
<p>Maybe, you'll want some snippets to be expanded in a particular
|
||||
mode, or only under certain conditions, or be prompted using
|
||||
<tt class="docutils literal">ido</tt>, etc...</p>
|
||||
</blockquote>
|
||||
<ol class="arabic simple" start="3">
|
||||
<li><a class="reference external" href="snippet-development.html">Writing Snippets</a></li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
Describes the YASnippet definition syntax, which is very close (but
|
||||
not equivalent) to Textmate's. Includes a section about converting
|
||||
TextMate snippets.</blockquote>
|
||||
<ol class="arabic simple" start="4">
|
||||
<li><a class="reference external" href="snippet-menu.html">The YASnippet menu</a></li>
|
||||
</ol>
|
||||
<blockquote>
|
||||
Explains how to use the YASnippet menu to explore, learn and modify
|
||||
snippets.</blockquote>
|
||||
</div>
|
||||
<div class="section" id="bugs-contribution-and-support">
|
||||
<h1><a class="toc-backref" href="#id6">Bugs, Contribution and Support</a></h1>
|
||||
<ul class="simple">
|
||||
<li>If you find a bug, please report it at <a class="reference external" href="http://code.google.com/p/yasnippet/issues/list">Issue List</a>.</li>
|
||||
<li>If you have problem using YASnippet, or have some new ideas,
|
||||
including snippets, please post to the <a class="reference external" href="http://groups.google.com/group/smart-snippet">discussion group</a>.</li>
|
||||
</ul>
|
||||
<p>Thank you very much for using YASnippet!</p>
|
||||
<!-- LocalWords: YASnippet SQL LaTeX CSS yasnippet el eval html ido RET wiki -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("UA-10536822-1");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}
|
||||
</script>
|
||||
|
||||
<div id="postamble">
|
||||
<p class="date">Date: 2013-11-26T21:02-0500</p>
|
||||
<p class="creator"><a href="http://orgmode.org">Org</a> version 7.9.3f with <a href="http://www.gnu.org/software/emacs/">Emacs</a> version 24</p>
|
||||
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
1705
manual.html
1705
manual.html
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,141 +1,266 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
|
||||
<title>YASnippet menu</title>
|
||||
<link rel="stylesheet" href="styles.css" type="text/css" />
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
|
||||
<meta name="title" content="YASnippet menu"/>
|
||||
<meta name="generator" content="Org-mode"/>
|
||||
<meta name="generated" content="2013-11-26T21:02-0500"/>
|
||||
<meta name="author" content=""/>
|
||||
<meta name="description" content=""/>
|
||||
<meta name="keywords" content=""/>
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
html { font-family: Times, serif; font-size: 12pt; }
|
||||
.title { text-align: center; }
|
||||
.todo { color: red; }
|
||||
.done { color: green; }
|
||||
.tag { background-color: #add8e6; font-weight:normal }
|
||||
.target { }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.right {margin-left:auto; margin-right:0px; text-align:right;}
|
||||
.left {margin-left:0px; margin-right:auto; text-align:left;}
|
||||
.center {margin-left:auto; margin-right:auto; text-align:center;}
|
||||
p.verse { margin-left: 3% }
|
||||
pre {
|
||||
border: 1pt solid #AEBDCC;
|
||||
background-color: #F3F5F7;
|
||||
padding: 5pt;
|
||||
font-family: courier, monospace;
|
||||
font-size: 90%;
|
||||
overflow:auto;
|
||||
}
|
||||
table { border-collapse: collapse; }
|
||||
td, th { vertical-align: top; }
|
||||
th.right { text-align:center; }
|
||||
th.left { text-align:center; }
|
||||
th.center { text-align:center; }
|
||||
td.right { text-align:right; }
|
||||
td.left { text-align:left; }
|
||||
td.center { text-align:center; }
|
||||
dt { font-weight: bold; }
|
||||
div.figure { padding: 0.5em; }
|
||||
div.figure p { text-align: center; }
|
||||
div.inlinetask {
|
||||
padding:10px;
|
||||
border:2px solid gray;
|
||||
margin:10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size:smaller }
|
||||
.code-highlighted {background-color:#ffff00;}
|
||||
.org-info-js_info-navigation { border-style:none; }
|
||||
#org-info-js_console-label { font-size:10px; font-weight:bold;
|
||||
white-space:nowrap; }
|
||||
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
|
||||
font-weight:bold; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="yasnippet-menu">
|
||||
<div id="header-region" class="clear-block"></div>
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clear-block">
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<h1 class="title">YASnippet menu</h1>
|
||||
</div>
|
||||
<ul class="primary-links">
|
||||
<li>
|
||||
<a title="" href="index.html">Intro and tutorial</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-organization.html">Howto: organize</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-expansion.html">Howto: expand</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-development.html">Howto: write </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-menu.html">Howto: menu </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="faq.html">FAQ</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="changelog.html">ChangeLog</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="http://code.google.com/p/yasnippet/downloads/list">Download</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="center">
|
||||
<div id="squeeze">
|
||||
<div class="right-corner">
|
||||
<div class="left-corner">
|
||||
<p>
|
||||
<b>Important:</b> This documentation applies to
|
||||
the <b>SVN trunk</b> of YASnippet, which you
|
||||
get <a href="http://code.google.com/p/yasnippet/source/checkout">here</a>. Documentation
|
||||
for other versions can be found <a title=""
|
||||
href="http://code.google.com/p/yasnippet/downloads/list">here</a>.
|
||||
</p>
|
||||
<div class="contents topic" id="contents">
|
||||
<p class="topic-title first">Contents</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#loading-snippets-from-menu" id="id1">Loading snippets from menu</a></li>
|
||||
<li><a class="reference internal" href="#snippet-menu-behavior" id="id2">Snippet menu behavior</a></li>
|
||||
<li><a class="reference internal" href="#controlling-indenting" id="id3">Controlling indenting</a></li>
|
||||
<li><a class="reference internal" href="#prompting-method" id="id4">Prompting method</a></li>
|
||||
<li><a class="reference internal" href="#misc" id="id5">Misc</a></li>
|
||||
</ul>
|
||||
<div id="org-div-home-and-up" style="text-align:right;font-size:70%;white-space:nowrap;">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
</div>
|
||||
<p>When <tt class="docutils literal"><span class="pre">yas/minor-mode</span></tt> is active, YASnippet will setup a menu just
|
||||
after the "Buffers" menu in the menubar.</p>
|
||||
<p>In this menu, you can find</p>
|
||||
<ul class="simple">
|
||||
|
||||
<div id="preamble">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<h1 class="title">YASnippet menu</h1>
|
||||
|
||||
|
||||
<p>
|
||||
When <a href="snippet-reference.html#yas-minor-mode"><code>yas-minor-mode</code></a> is active, YASnippet will setup a menu just after
|
||||
the "Buffers" menu in the menubar.
|
||||
</p>
|
||||
<p>
|
||||
In this menu, you can find
|
||||
</p>
|
||||
<ul>
|
||||
<li>The currently loaded snippet definitions, organized by major mode,
|
||||
and optional grouping.</li>
|
||||
and optional grouping.
|
||||
|
||||
</li>
|
||||
<li>A rundown of the most common commands, (followed by their
|
||||
keybindings) including commands to load directories and reload all
|
||||
snippet definitions.</li>
|
||||
keybindings) including commands to load directories and reload all
|
||||
snippet definitions.
|
||||
|
||||
</li>
|
||||
<li>A series of submenus for customizing and exploring YASnippet
|
||||
behavior.</li>
|
||||
behavior.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
<img src="./images/menu-1.png" alt="./images/menu-1.png" />
|
||||
</p>
|
||||
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#sec-1">Loading snippets from menu</a></li>
|
||||
<li><a href="#sec-2">Snippet menu behavior</a></li>
|
||||
<li><a href="#sec-3">Controlling indenting</a></li>
|
||||
<li><a href="#sec-4">Prompting method</a></li>
|
||||
<li><a href="#sec-5">Misc</a></li>
|
||||
</ul>
|
||||
<img alt="images/menu-1.png" class="align-right" src="images/menu-1.png" />
|
||||
<div class="section" id="loading-snippets-from-menu">
|
||||
<h1><a class="toc-backref" href="#id1">Loading snippets from menu</a></h1>
|
||||
<p>Invoking "Load snippets..." from the menu invokes
|
||||
<tt class="docutils literal"><span class="pre">yas/load-directory</span></tt> and prompts you for a snippet directory
|
||||
hierarchy to load.</p>
|
||||
<p>Also useful is the "Reload all" options which uncondionally reloads
|
||||
all the snippets directories defined in <tt class="docutils literal"><span class="pre">yas/root-directory</span></tt> and
|
||||
rebuilds the menus.</p>
|
||||
</div>
|
||||
<div class="section" id="snippet-menu-behavior">
|
||||
<h1><a class="toc-backref" href="#id2">Snippet menu behavior</a></h1>
|
||||
<p>YASnippet will list in this section all the loaded snippet definitions
|
||||
organized by snippet table name.</p>
|
||||
<p>You can use this section to explore currently loaded snippets. If you
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1" class="outline-2">
|
||||
<h2 id="sec-1">Loading snippets from menu</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
|
||||
|
||||
<p>
|
||||
Invoking "Load snippets…" from the menu invokes <a href="snippet-reference.html#yas-load-directory"><code>yas-load-directory</code></a>
|
||||
and prompts you for a snippet directory hierarchy to load.
|
||||
</p>
|
||||
<p>
|
||||
Also useful is the "Reload everything" item to invoke <a href="#yas-reload-all"><code>yas-reload-all</code></a>
|
||||
which uncondionally reloads all the snippets directories defined in
|
||||
<a href="snippet-reference.html#yas-snippet-dirs"><code>yas-snippet-dirs</code></a> and rebuilds the menus.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-2" class="outline-2">
|
||||
<h2 id="sec-2">Snippet menu behavior</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
|
||||
|
||||
<p>
|
||||
YASnippet will list in this section all the loaded snippet definitions
|
||||
organized by snippet table name.
|
||||
</p>
|
||||
<p>
|
||||
You can use this section to explore currently loaded snippets. If you
|
||||
click on one of them, the default behavior is to expand it,
|
||||
unconditionally, inside the current buffer.</p>
|
||||
<p>You can however, customize variable <tt class="docutils literal"><span class="pre">yas/visit-from-menu</span></tt> to be
|
||||
<tt class="docutils literal">t</tt> which will take you to the snippet definition file when you
|
||||
select it from the menu.</p>
|
||||
<p>If you want the menu show only snippet tables whose name corresponds
|
||||
to a "real" major mode. You do this by setting <tt class="docutils literal"><span class="pre">yas/use-menu</span></tt> to
|
||||
<tt class="docutils literal"><span class="pre">'real-modes</span></tt>.</p>
|
||||
<p>Finally, to have the menu show only the tables for the currently
|
||||
active mode, set <tt class="docutils literal"><span class="pre">yas/use-menu</span></tt> to <tt class="docutils literal">abbreviate</tt>.</p>
|
||||
<p>These customizations can also be found in the menu itself, under the
|
||||
"Snippet menu behavior" submenu.</p>
|
||||
unconditionally, inside the current buffer.
|
||||
</p>
|
||||
<p>
|
||||
You can however, customize variable <a href="snippet-reference.html#yas-visit-from-menu"><code>yas-visit-from-menu</code></a> to be <code>t</code>
|
||||
which will take you to the snippet definition file when you select it
|
||||
from the menu.
|
||||
</p>
|
||||
<p>
|
||||
If you want the menu show only snippet tables whose name corresponds to
|
||||
a "real" major mode. You do this by setting <a href="snippet-reference.html#yas-use-menu"><code>yas-use-menu</code></a> to
|
||||
'<code>real-modes</code>.
|
||||
</p>
|
||||
<p>
|
||||
Finally, to have the menu show only the tables for the currently active
|
||||
mode, set <a href="snippet-reference.html#yas-use-menu"><code>yas-use-menu</code></a> to <code>abbreviate</code>.
|
||||
</p>
|
||||
<p>
|
||||
These customizations can also be found in the menu itself, under the
|
||||
"Snippet menu behavior" submenu.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" id="controlling-indenting">
|
||||
<h1><a class="toc-backref" href="#id3">Controlling indenting</a></h1>
|
||||
<p>The "Indenting" submenu contains options to control the values of
|
||||
<tt class="docutils literal"><span class="pre">yas/indent-line</span></tt> and <tt class="docutils literal"><span class="pre">yas/also-auto-indent-first-line</span></tt>. See
|
||||
<a class="reference external" href="snippet-development.html">Writing snippets</a> .</p>
|
||||
|
||||
</div>
|
||||
<div class="section" id="prompting-method">
|
||||
<h1><a class="toc-backref" href="#id4">Prompting method</a></h1>
|
||||
<p>The "Prompting method" submenu contains options to control the value
|
||||
of <tt class="docutils literal"><span class="pre">yas/prompt-functions</span></tt>. See <a class="reference external" href="snippet-expansion.html">Expanding snippets</a> .</p>
|
||||
|
||||
<div id="outline-container-3" class="outline-2">
|
||||
<h2 id="sec-3">Controlling indenting</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
|
||||
|
||||
<p>
|
||||
The "Indenting" submenu contains options to control the values of
|
||||
<a href="snippet-reference.html#yas-indent-line"><code>yas-indent-line</code></a> and <a href="snippet-reference.html#yas-also-auto-indent-first-line"><code>yas-also-auto-indent-first-line</code></a>. See
|
||||
<a href="./snippet-development.html">Writing snippets</a> .
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" id="misc">
|
||||
<h1><a class="toc-backref" href="#id5">Misc</a></h1>
|
||||
<p>The "Misc" submenu contains options to control the values of more
|
||||
variables.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-4" class="outline-2">
|
||||
<h2 id="sec-4">Prompting method</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
|
||||
|
||||
<p>
|
||||
The "Prompting method" submenu contains options to control the value of
|
||||
<a href="snippet-reference.html#yas-prompt-functions"><code>yas-prompt-functions</code></a>. See <a href="./snippet-expansion.html">Expanding snippets</a> .
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("UA-10536822-1");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-5" class="outline-2">
|
||||
<h2 id="sec-5">Misc</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
|
||||
|
||||
<p>
|
||||
The "Misc" submenu contains options to control the values of more
|
||||
variables.
|
||||
</p></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="postamble">
|
||||
<p class="date">Date: 2013-11-26T21:02-0500</p>
|
||||
<p class="creator"><a href="http://orgmode.org">Org</a> version 7.9.3f with <a href="http://www.gnu.org/software/emacs/">Emacs</a> version 24</p>
|
||||
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,171 +1,295 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
|
||||
<title>Organizing snippets</title>
|
||||
<link rel="stylesheet" href="styles.css" type="text/css" />
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
|
||||
<meta name="title" content="Organizing snippets"/>
|
||||
<meta name="generator" content="Org-mode"/>
|
||||
<meta name="generated" content="2013-11-26T21:02-0500"/>
|
||||
<meta name="author" content=""/>
|
||||
<meta name="description" content=""/>
|
||||
<meta name="keywords" content=""/>
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
html { font-family: Times, serif; font-size: 12pt; }
|
||||
.title { text-align: center; }
|
||||
.todo { color: red; }
|
||||
.done { color: green; }
|
||||
.tag { background-color: #add8e6; font-weight:normal }
|
||||
.target { }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.right {margin-left:auto; margin-right:0px; text-align:right;}
|
||||
.left {margin-left:0px; margin-right:auto; text-align:left;}
|
||||
.center {margin-left:auto; margin-right:auto; text-align:center;}
|
||||
p.verse { margin-left: 3% }
|
||||
pre {
|
||||
border: 1pt solid #AEBDCC;
|
||||
background-color: #F3F5F7;
|
||||
padding: 5pt;
|
||||
font-family: courier, monospace;
|
||||
font-size: 90%;
|
||||
overflow:auto;
|
||||
}
|
||||
table { border-collapse: collapse; }
|
||||
td, th { vertical-align: top; }
|
||||
th.right { text-align:center; }
|
||||
th.left { text-align:center; }
|
||||
th.center { text-align:center; }
|
||||
td.right { text-align:right; }
|
||||
td.left { text-align:left; }
|
||||
td.center { text-align:center; }
|
||||
dt { font-weight: bold; }
|
||||
div.figure { padding: 0.5em; }
|
||||
div.figure p { text-align: center; }
|
||||
div.inlinetask {
|
||||
padding:10px;
|
||||
border:2px solid gray;
|
||||
margin:10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size:smaller }
|
||||
.code-highlighted {background-color:#ffff00;}
|
||||
.org-info-js_info-navigation { border-style:none; }
|
||||
#org-info-js_console-label { font-size:10px; font-weight:bold;
|
||||
white-space:nowrap; }
|
||||
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
|
||||
font-weight:bold; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="organizing-snippets">
|
||||
<div id="header-region" class="clear-block"></div>
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clear-block">
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<h1 class="title">Organizing snippets</h1>
|
||||
</div>
|
||||
<ul class="primary-links">
|
||||
<li>
|
||||
<a title="" href="index.html">Intro and tutorial</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-organization.html">Howto: organize</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-expansion.html">Howto: expand</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-development.html">Howto: write </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="snippet-menu.html">Howto: menu </a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="faq.html">FAQ</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="changelog.html">ChangeLog</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="" href="http://code.google.com/p/yasnippet/downloads/list">Download</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="center">
|
||||
<div id="squeeze">
|
||||
<div class="right-corner">
|
||||
<div class="left-corner">
|
||||
<p>
|
||||
<b>Important:</b> This documentation applies to
|
||||
the <b>SVN trunk</b> of YASnippet, which you
|
||||
get <a href="http://code.google.com/p/yasnippet/source/checkout">here</a>. Documentation
|
||||
for other versions can be found <a title=""
|
||||
href="http://code.google.com/p/yasnippet/downloads/list">here</a>.
|
||||
</p>
|
||||
<div class="contents topic" id="contents">
|
||||
<p class="topic-title first">Contents</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#loading-snippets" id="id3">Loading snippets</a></li>
|
||||
<li><a class="reference internal" href="#id2" id="id4">Organizing snippets</a><ul>
|
||||
<li><a class="reference internal" href="#the-yas-parents-file" id="id5">The <tt class="docutils literal">.yas.parents</tt> file</a></li>
|
||||
<li><a class="reference internal" href="#the-yas-make-groups-file" id="id6">The <tt class="docutils literal"><span class="pre">.yas-make-groups</span></tt> file</a></li>
|
||||
<div id="org-div-home-and-up" style="text-align:right;font-size:70%;white-space:nowrap;">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
</div>
|
||||
|
||||
<div id="preamble">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<h1 class="title">Organizing snippets</h1>
|
||||
|
||||
|
||||
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#sec-1">Basic structure</a></li>
|
||||
<li><a href="#sec-2">Setting up <code>yas-snippet-dirs</code></a></li>
|
||||
<li><a href="#sec-3">The <code>.yas-parents</code> file</a></li>
|
||||
<li><a href="#sec-4">The <code>.yas-make-groups</code> file</a></li>
|
||||
<li><a href="#sec-5">The <code>.yas-setup.el</code> file</a>
|
||||
<ul>
|
||||
<li><a href="#sec-5-1"></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#yasnippet-bundle" id="id7">YASnippet bundle</a></li>
|
||||
<li><a class="reference internal" href="#customizable-variables" id="id8">Customizable variables</a><ul>
|
||||
<li><a class="reference internal" href="#yas-snippet-dirs" id="id9"><tt class="docutils literal"><span class="pre">yas-snippet-dirs</span></tt></a></li>
|
||||
<li><a class="reference internal" href="#yas-ignore-filenames-as-triggers" id="id10"><tt class="docutils literal"><span class="pre">yas/ignore-filenames-as-triggers</span></tt></a></li>
|
||||
<li><a href="#sec-6">The <code>.yas-compiled-snippet.el</code> file</a>
|
||||
<ul>
|
||||
<li><a href="#sec-6-1"></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#sec-7">The <code>.yas-skip</code> file</a>
|
||||
<ul>
|
||||
<li><a href="#sec-7-1"></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="loading-snippets">
|
||||
<h1><a class="toc-backref" href="#id3">Loading snippets</a></h1>
|
||||
<p>Snippet definitions are stored in files in the filesystem. Unless you
|
||||
use the simpler <a class="reference external" href="mailto:index.html@installation">bundle version</a>), these
|
||||
are arranged so that YASnippet can load them into <em>snippet
|
||||
tables</em>. The triggering mechanisms (see <a class="reference external" href="snippet-expansion.html">Expanding snippets</a>) will
|
||||
look up these snippet tables and (hopefully) expand the snippet you
|
||||
intended.</p>
|
||||
<p>The non-bundle version of YASnippet, once unpacked, comes with a full
|
||||
directory of snippets, which you can copy somewhere and use. You can
|
||||
also create or download more directories.</p>
|
||||
|
||||
<p>
|
||||
Once these directories are in place reference them in the variable
|
||||
<tt class="docutils literal">
|
||||
<span class="pre">yas-snippet-dirs</span>
|
||||
</tt>
|
||||
and then load YASnippet as usual:
|
||||
</p>
|
||||
|
||||
<div class="highlight" style="background: #f8f8f8">
|
||||
<pre style="line-height: 125%"><span style="color: #408080; font-style: italic">;; Develop and keep personal snippets under ~/emacs.d/mysnippets</span>
|
||||
(<span style="color: #008000; font-weight: bold">setq</span> <span style="color: #19177C">yas-snippet-dirs</span> <span style="color: #666666">'</span>(<span style="color: #BA2121">"~/emacs.d/mysnippets"</span>))
|
||||
|
||||
<span style="color: #408080; font-style: italic">;; Load yasnippet</span>
|
||||
(<span style="color: #19177C">yas-global-mode</span> <span style="color: #19177C">1</span>)
|
||||
</pre></div>
|
||||
|
||||
<p>
|
||||
The point in using
|
||||
<tt class="docutils literal">
|
||||
<span class="pre">yas-snippet-dirs</span>
|
||||
</tt>
|
||||
is considering "~/emacs.d/mysnippets" for snippet development, so
|
||||
you can use commands like
|
||||
<tt class="docutils literal">
|
||||
<span class="pre">yas/new-snippet</span>
|
||||
</tt>
|
||||
and others described in section
|
||||
<a class="reference external" href="snippet-development.html">Writing Snippets</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-1" class="outline-2">
|
||||
<h2 id="sec-1">Basic structure</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
|
||||
|
||||
<p>
|
||||
<strong>Note:</strong> In the past,
|
||||
<tt class="docutils literal">
|
||||
<span class="pre">yas/root-directory</span>
|
||||
</tt>
|
||||
is the variable that stores the list of snippet directories. This method is
|
||||
deprecated and only exists for backward-compatibility reason.
|
||||
Snippet collections can be stored in plain text files. They are arranged by
|
||||
sub-directories naming <b>snippet tables</b>. These mostly name Emacs major names.
|
||||
</p>
|
||||
|
||||
<div class="section" id="id2">
|
||||
<h1><a class="toc-backref" href="#id4">Organizing snippets</a></h1>
|
||||
<p>Once you've setup <tt class="docutils literal"><span class="pre">yas-snippet-dirs</span></tt> , you can store snippets
|
||||
inside sub-directories of these directories.</p>
|
||||
<p>Snippet definitions are put in plain text files. They are arranged
|
||||
by sub-directories, and the snippet tables are named after these
|
||||
directories.</p>
|
||||
<p>The name corresponds to the Emacs mode where you want expansion to
|
||||
take place. For example, snippets for <tt class="docutils literal"><span class="pre">c-mode</span></tt> are put in the
|
||||
<tt class="docutils literal"><span class="pre">c-mode</span></tt> sub-directory.</p>
|
||||
<div class="section" id="the-yas-parents-file">
|
||||
<h2><a class="toc-backref" href="#id5">The <tt class="docutils literal">.yas.parents</tt> file</a></h2>
|
||||
<p>It's very useful to have certain modes share snippets between
|
||||
themselves. To do this, choose a mode subdirectory and place a
|
||||
<tt class="docutils literal"><span class="pre">.yas-parents</span></tt> containing a whitespace-separated list of other
|
||||
mode names. When you reload those modes become parents of the
|
||||
original mode.</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">$ tree
|
||||
.
|
||||
|
||||
|
||||
<pre class="example">.
|
||||
|-- c-mode
|
||||
| |-- .yas-parents # contains "cc-mode text-mode"
|
||||
| `-- printf
|
||||
|-- java-mode
|
||||
| `-- println
|
||||
`-- text-mode
|
||||
|-- email
|
||||
`-- time
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
The collections are loaded into <b>snippet tables</b> which the
|
||||
triggering mechanism (see <a href="snippet-expansion.html">Expanding Snippets</a>) looks up and
|
||||
(hopefully) causes the right snippet to be expanded for you.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-2" class="outline-2">
|
||||
<h2 id="sec-2">Setting up <code>yas-snippet-dirs</code></h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
|
||||
|
||||
<p>
|
||||
The emacs variable <a href="snippet-reference.html#yas-snippet-dirs"><code>yas-snippet-dirs</code></a> tells YASnippet
|
||||
which collections to consider. It's used when you activate
|
||||
<a href="snippet-reference.html#yas-global-mode"><code>yas-global-mode</code></a> or call
|
||||
<a href="snippet-reference.html#yas-reload-all"><code>yas-reload-all</code></a> interactively.
|
||||
</p>
|
||||
<p>
|
||||
The default considers:
|
||||
</p>
|
||||
<ul>
|
||||
<li>a personal collection that lives in <code>~/.emacs.d/snippets</code>
|
||||
</li>
|
||||
<li>the bundled collection, taken as a relative path to <code>yasnippet.el</code> localtion
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
When you come across other snippet collections, do the following to try them
|
||||
out:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">;; Develop in ~/emacs.d/mysnippets, but also
|
||||
;; try out snippets in ~/Downloads/interesting-snippets
|
||||
(setq yas-snippet-dirs '("~/emacs.d/mysnippets"
|
||||
"~/Downloads/interesting-snippets"))
|
||||
|
||||
;; OR, keeping yasnippet's defaults try out ~/Downloads/interesting-snippets
|
||||
(setq yas-snippet-dirs (append yas-snippet-dirs
|
||||
'("~/Downloads/interesting-snippets")))
|
||||
</pre>
|
||||
|
||||
|
||||
<p>
|
||||
Collections appearing earlier in the list shadow snippets with same names
|
||||
appearing in collections later in the list. <a href="snippet-reference.html#yas-new-snippet"><code>yas-new-snippet</code></a> always stores
|
||||
snippets in the first collection.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-3" class="outline-2">
|
||||
<h2 id="sec-3">The <code>.yas-parents</code> file</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
|
||||
|
||||
<p>
|
||||
It's very useful to have certain modes share snippets between
|
||||
themselves. To do this, choose a mode subdirectory and place a
|
||||
<code>.yas-parents</code> containing a whitespace-separated list of other mode
|
||||
names. When you reload those modes become parents of the original
|
||||
mode.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">.
|
||||
|-- c-mode
|
||||
| |-- .yas-parents # contains "cc-mode text-mode"
|
||||
| `-- printf
|
||||
|-- cc-mode
|
||||
| |-- for
|
||||
| `-- while
|
||||
|-- java-mode
|
||||
| |-- .yas-parents # contains "cc-mode text-mode"
|
||||
| |-- .yas-parents # contains "cc-mode text-mode"
|
||||
| `-- println
|
||||
`-- text-mode
|
||||
|-- email
|
||||
`-- time
|
||||
</pre></div>
|
||||
</pre>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="section" id="the-yas-make-groups-file">
|
||||
<h2><a class="toc-backref" href="#id6">The <tt class="docutils literal"><span class="pre">.yas-make-groups</span></tt> file</a></h2>
|
||||
<img alt="images/menu-groups.png" class="align-right" src="images/menu-groups.png" />
|
||||
<p>If you place an empty plain text file <tt class="docutils literal"><span class="pre">.yas-make-groups</span></tt> inside one
|
||||
of the mode directories, the names of these sub-directories are
|
||||
considered groups of snippets and <a class="reference external" href="snippet-menu.html">The YASnippet Menu</a> is organized
|
||||
much more cleanly, as you can see in the image.</p>
|
||||
<p>Another alternative way to achieve this is to place a <tt class="docutils literal"># group:</tt>
|
||||
directive inside the snippet definition. See <a class="reference external" href="snippet-development.html">Writing Snippets</a>.</p>
|
||||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%">$ tree ruby-mode/
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-4" class="outline-2">
|
||||
<h2 id="sec-4"><span class="todo TODO">TODO</span> The <code>.yas-make-groups</code> file</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
|
||||
|
||||
<p>
|
||||
If you place an empty plain text file <code>.yas-make-groups</code> inside one
|
||||
of the mode directories, the names of these sub-directories are
|
||||
considered groups of snippets and <a href="#snippet-menu.org">the menu</a> is organized much more
|
||||
cleanly:
|
||||
</p>
|
||||
<p>
|
||||
<img src="./images/menu-groups.png" alt="./images/menu-groups.png" />
|
||||
</p>
|
||||
<p>
|
||||
Another way to achieve this is to place a <code># group:</code> directive
|
||||
inside the snippet definition. See <a href="./snippet-development.html">Writing Snippets</a>.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<pre class="example">$ tree ruby-mode/
|
||||
ruby-mode/
|
||||
|-- .yas-make-groups
|
||||
|-- collections
|
||||
@ -177,83 +301,76 @@ ruby-mode/
|
||||
|-- definitions
|
||||
| `-- ...
|
||||
`-- general
|
||||
`-- ...
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="yasnippet-bundle">
|
||||
<h1><a class="toc-backref" href="#id7">YASnippet bundle</a></h1>
|
||||
<p>The most convenient way to define snippets for YASnippet is to put
|
||||
them in a directory arranged by the mode and use
|
||||
<tt class="docutils literal"><span class="pre">yas/load-directory</span></tt> to load them.</p>
|
||||
<p>However, this might slow down the Emacs start-up speed if you have many
|
||||
snippets. You can use <tt class="docutils literal"><span class="pre">yas/define-snippets</span></tt> to define a bunch of
|
||||
snippets for a particular mode in an Emacs-lisp file.</p>
|
||||
<p>Since this is hard to maintain, there's a better way: define your
|
||||
snippets in directory and then call <tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">yas/compile-bundle</span></tt> to
|
||||
compile it into a bundle file when you modified your snippets.</p>
|
||||
<p>The release bundle of YASnippet is produced by
|
||||
<tt class="docutils literal"><span class="pre">yas/compile-bundle</span></tt>. The bundle uses <tt class="docutils literal"><span class="pre">yas/define-snippets</span></tt> to
|
||||
define snippets. This avoids the IO and parsing overhead when loading
|
||||
snippets.</p>
|
||||
<p>Further more, the generated bundle is a stand-alone file not depending
|
||||
on <tt class="docutils literal">yasnippet.el</tt>. The released bundles of YASnippet are all
|
||||
generated this way.</p>
|
||||
<p>See the internal documentation for these functions</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">describe-function</span> RET <span class="pre">yas/define-snippets</span> RET</tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">describe-function</span> RET <span class="pre">yas/compile-bundle</span> RET</tt>.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="customizable-variables">
|
||||
<h1><a class="toc-backref" href="#id8">Customizable variables</a></h1>
|
||||
<div class="section" id="yas-snippet-dirs">
|
||||
`-- ...
|
||||
</pre>
|
||||
|
||||
<h2>
|
||||
<a class="toc-backref" href="#id9"><tt class="docutils literal"><span class="pre">yas-snippet-dirs</span></tt></a>
|
||||
</h2>
|
||||
|
||||
<p>
|
||||
List of directories that store the snippets for each major mode.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The first element of the list is always the user-created snippets
|
||||
directory. Other directories are used for bulk reloading of all snippets
|
||||
using
|
||||
<tt class="docutils literal">
|
||||
<span class="pre">yas/reload-all</span>
|
||||
</tt>.
|
||||
Yet another way to create a nice snippet menu is to write into
|
||||
<code>.yas-make-groups</code> a menu definition. TODO
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section" id="yas-ignore-filenames-as-triggers">
|
||||
<h2><a class="toc-backref" href="#id10"><tt class="docutils literal"><span class="pre">yas/ignore-filenames-as-triggers</span></tt></a></h2>
|
||||
<p>If non-nil, don't derive tab triggers from filenames.</p>
|
||||
<p>This means a snippet without a <tt class="docutils literal"># key:</tt> directive wont have a tab
|
||||
trigger.</p>
|
||||
<!-- LocalWords: html YASnippet filesystem yas sourcecode setq mapc printf perl -->
|
||||
<!-- LocalWords: println cperl forin filenames filename ERb's yasnippet Avar el -->
|
||||
<!-- LocalWords: rjs RET -->
|
||||
<div id="outline-container-5" class="outline-2">
|
||||
<h2 id="sec-5"><span class="todo TODO">TODO</span> The <code>.yas-setup.el</code> file</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-5-1" class="outline-3">
|
||||
<h3 id="sec-5-1"><span class="todo TODO">TODO</span></h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
||||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
try {
|
||||
var pageTracker = _gat._getTracker("UA-10536822-1");
|
||||
pageTracker._trackPageview();
|
||||
} catch(err) {}
|
||||
</script>
|
||||
|
||||
<div id="outline-container-6" class="outline-2">
|
||||
<h2 id="sec-6"><span class="todo TODO">TODO</span> The <code>.yas-compiled-snippet.el</code> file</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-6-1" class="outline-3">
|
||||
<h3 id="sec-6-1"><span class="todo TODO">TODO</span></h3>
|
||||
<div class="outline-text-3" id="text-6-1">
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-7" class="outline-2">
|
||||
<h2 id="sec-7"><span class="todo TODO">TODO</span> The <code>.yas-skip</code> file</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-7-1" class="outline-3">
|
||||
<h3 id="sec-7-1"><span class="todo TODO">TODO</span></h3>
|
||||
<div class="outline-text-3" id="text-7-1">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="postamble">
|
||||
<p class="date">Date: 2013-11-26T21:02-0500</p>
|
||||
<p class="creator"><a href="http://orgmode.org">Org</a> version 7.9.3f with <a href="http://www.gnu.org/software/emacs/">Emacs</a> version 24</p>
|
||||
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
3056
snippet-reference.html
Normal file
3056
snippet-reference.html
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user