yasnippet/new-style/faq.html
2018-02-18 08:45:02 -05:00

396 lines
16 KiB
HTML

<?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="viewport" content="width=device-width, initial-scale=1" />
<title>Frequently Asked Questions</title>
<meta name="generator" content="Org mode" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
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; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<link rel="stylesheet" type="text/css" href="stylesheets/manual.css" />
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2017 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 id="preamble" class="status">
<nav>
<ul class="center">
<li> <a href="index.html">Overview</a>
<li> <a href="https://github.com/joaotavora/yasnippet/blob/master/README.mdown">
Intro and Tutorial</a>
<li class="center border">Snippet
<ul id="snippet-submenu">
<li> <a href="snippet-organization.html">Organization</a>
<li> <a href="snippet-expansion.html">Expansion</a>
<li> <a href="snippet-development.html">Development</a>
<li> <a href="snippet-menu.html">Menu</a>
</ul>
<li> <span class='current'>FAQ</span>
<li> <a href="snippet-reference.html">Reference</a>
</ul>
</nav>
</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="#org64f1b8c">Why is there an extra newline?</a></li>
<li><a href="#org3e0ab30">Why doesn't TAB navigation work with flyspell</a></li>
<li><a href="#org5f4a84d">How do I use alternative keys, i.e. not TAB?</a></li>
<li><a href="#orgf731e45">How do I turn off the minor mode where in some buffers?</a></li>
<li><a href="#org096bf1a">How do I define an abbrev key containing characters not supported by the filesystem?</a></li>
</ul>
</div>
</div>
<div id="outline-container-org64f1b8c" class="outline-2">
<h2 id="org64f1b8c">Why is there an extra newline?</h2>
<div class="outline-text-2" id="text-org64f1b8c">
<p>
If there is a newline at the end of a snippet definition file,
YASnippet will add a newline when expanding that snippet. When editing
or saving a snippet file, please be careful not to accidentally add a
terminal newline.
</p>
<p>
Note that 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 automatically.
</p>
</div>
</div>
<div id="outline-container-org3e0ab30" class="outline-2">
<h2 id="org3e0ab30">Why doesn't TAB navigation work with flyspell</h2>
<div class="outline-text-2" id="text-org3e0ab30">
<p>
A workaround is to inhibit flyspell overlays while the snippet is
active:
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(add-hook 'flyspell-incorrect-hook
#'(lambda (dummy1 dummy2 dymmy3)
(<span class="org-keyword">and</span> yas-active-field-overlay
(overlay-buffer yas-active-field-overlay))))
</pre>
</div>
<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-org5f4a84d" class="outline-2">
<h2 id="org5f4a84d">How do I use alternative keys, i.e. not TAB?</h2>
<div class="outline-text-2" id="text-org5f4a84d">
<p>
Edit the keymaps <a href="snippet-reference.html#yas-minor-mode-map"><code>yas-minor-mode-map</code></a> and
<a href="snippet-reference.html#yas-keymap"><code>yas-keymap</code></a> as you would any other keymap:
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(define-key yas-minor-mode-map (kbd <span class="org-string">"&lt;tab&gt;"</span>) nil)
(define-key yas-minor-mode-map (kbd <span class="org-string">"TAB"</span>) nil)
(define-key yas-minor-mode-map (kbd <span class="org-string">"&lt;the new key&gt;"</span>) yas-maybe-expand)
<span class="org-comment-delimiter">;;</span><span class="org-comment">keys for navigation</span>
(define-key yas-keymap [(tab)] nil)
(define-key yas-keymap (kbd <span class="org-string">"TAB"</span>) nil)
(define-key yas-keymap [(shift tab)] nil)
(define-key yas-keymap [backtab] nil)
(define-key yas-keymap (kbd <span class="org-string">"&lt;new-next-field-key&gt;"</span>) 'yas-next-field-or-maybe-expand)
(define-key yas-keymap (kbd <span class="org-string">"&lt;new-prev-field-key&gt;"</span>) 'yas-prev)
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf731e45" class="outline-2">
<h2 id="orgf731e45">How do I turn off the minor mode where in some buffers?</h2>
<div class="outline-text-2" id="text-orgf731e45">
<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>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(set-default 'yas-dont-activate
#'(lambda ()
(<span class="org-keyword">and</span> yas-root-directory
(null (yas-get-snippet-tables)))))
</pre>
</div>
<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>
</div>
</div>
<div id="outline-container-org096bf1a" class="outline-2">
<h2 id="org096bf1a">How do I define an abbrev key containing characters not supported by the filesystem?</h2>
<div class="outline-text-2" id="text-org096bf1a">
<ul class="org-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&#x2026;</li>
</ul>
<p>
For example, you want to define a snippet by the key <code>&lt;</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>&lt;</code> for the <code># key:</code>
directive:
</p>
<div class="org-src-container">
<pre class="src src-snippet"><span class="org-comment"># key: &lt;</span>
<span class="org-comment"># name: &lt;...&gt;&lt;/...&gt;</span>
<span class="org-comment"># --</span>
&lt;<span class="org-keyword">${</span><span class="org-warning">1</span><span class="org-keyword">:</span>div<span class="org-keyword">}</span>&gt;<span class="org-keyword">$</span><span class="org-string">0</span>&lt;/<span class="org-keyword">$</span><span class="org-string">1</span>&gt;
</pre>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<hr><p class='creator'>Generated by <a href="https://www.gnu.org/software/emacs/">Emacs</a> 26.0.90 (<a href="http://orgmode.org">Org</a> mode 9.1.2) from 0.12.2-37-gdc6d7d2 (2018-02-18 12:46:06)</p>
<p class='xhtml-validation'><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>