From 34f2be0b88ecf31237660c80a0786743fe265c40 Mon Sep 17 00:00:00 2001 From: Zhang Chiyuan Date: Wed, 28 Jan 2009 10:43:48 +0000 Subject: [PATCH] Update doc for grouping --- doc/changelog.html | 286 +++++++++++++++ doc/define_snippet.html | 760 ++++++++++++++++++++++++++++++++++++++++ doc/define_snippet.rst | 25 +- doc/faq.html | 107 ++++++ doc/images/group.png | Bin 0 -> 80647 bytes doc/index.html | 191 ++++++++++ 6 files changed, 1364 insertions(+), 5 deletions(-) create mode 100644 doc/changelog.html create mode 100644 doc/define_snippet.html create mode 100644 doc/faq.html create mode 100644 doc/images/group.png create mode 100644 doc/index.html diff --git a/doc/changelog.html b/doc/changelog.html new file mode 100644 index 0000000..bd2ee87 --- /dev/null +++ b/doc/changelog.html @@ -0,0 +1,286 @@ + + + + + + +ChangeLog + + + + + +
+
+
+
+ +
+
+
+
+
+

0.5.9 / 2009-01-21

+
    +
  • Fixed the bug of disabling the auto-indenting of cc-mode.
  • +
+
+
+

0.5.8 / 2009-01-15

+
    +
  • Added a key property in snippet definition for snippet names +that are not valid path name.
  • +
  • Fixed some bugs of indenting (Issue 44, Issue +46).
  • +
  • Fixed Issue 45 by +providing a proper default value for yas/buffer-local-condition.
  • +
  • Added helper function yas/substr for convenient mirror +transformation.
  • +
  • Make variable yas/registered-snippet properly initialized.
  • +
  • Fixed the overlay error when overlay becomes empty (Issue 49 and +Issue 48). This +bug has occurred and been fixed earlier, and should not have +happened if we have proper regression test.
  • +
  • Added a workaround for c-electric- serial commands (Issue 27).
  • +
+
+
+

0.5.7 / 2008-12-03

+
    +
  • Fixed Issue 28 of +properly clean up snippet (by joaotavora).
  • +
  • Added a new section "Field-level undo functionality" to correct +Issue 33 +(by joaotavora).
  • +
  • Added some snippets from users for sql, erlang, scala, html, xml, latex, etc.
  • +
  • Fixed Issue 16 by adding +$> support. Here's the doc for $> indenting.
  • +
+
+
+

0.5.6 / 2008-08-07

+
    +
  • Added a buffer local variable yas/dont-activate to turn off +yas/minor-mode in some major modes. See Issue 29.
  • +
  • Make the environment of elisp evaluation more friendly to +(current-column).
  • +
  • Fixed the regular expression bug in python-mode snippets.
  • +
  • Use filename or full key extension for snippet name if no name +property is defined.
  • +
+
+
+

0.5.5 / 2008-05-29

+
    +
  • Tweak yas/extra-mode-hooks so that it can be more easily +customized.
  • +
  • Add an entry in FAQ about why TAB key doesn't work in some +modes.
  • +
+
+
+

0.5.4 / 2008-05-15

+
    +
  • Added ox-mode-hook and python-mode-hook to +yas/extra-mode-hooks to fix the problem YASnippet is not enabled +in those modes.
  • +
+
+
+

0.5.3 / 2008-05-07

+
    +
  • Fix indent of python-mode snippets.
  • +
  • Fix a bug of dropdown-list: conflicts with color-theme (Issue 23). Thanks +Mike.
  • +
  • Fix a bug of condition system.
  • +
+
+
+

0.5.2 / 2008-04-20

+
    +
  • Fix a bug for comparing string to symbol using string= (which +will fire an error).
  • +
+
+
+

0.5.1 / 2008-04-14

+
    +
  • Use a beautiful css style in the document.
  • +
+
+
+

0.5.0 / 2008-04-10

+
    +
  • Integrate with hippie-expand. Just add yas/hippie-try-expand to +hippie-expand-try-functions-list.
  • +
  • If you set yas/fall-back-behavior to 'return-nil, YASnippet +will return nil when it can't find a snippet to expand.
  • +
  • Defect fix: the condition of a snippet was evaluated twice in +earlier version.
  • +
  • Deleting snippet (using C-w or C-k) won't cause serious +problem now.
  • +
  • Several complex snippet for python-mode from Yasser included in the +distribution.
  • +
+
+
+

0.4.5 / 2008-04-07

+
    +
  • Merge the latest dropdown-list.el.
  • +
  • Add snippets for f90-mode from Li Zhu.
  • +
  • Bug fix: l-safe-expr-p: Lisp nesting exceeds max-lisp-eval-depth +error when several (more than two) snippets overlaps. Thanks +sunwaybupt@newsmth for reporting this bug.
  • +
+
+
+

0.4.4 / 2008-03-24

+
    +
  • Bug fix: dropdown-list.el doesn't recognize [return] properly.
  • +
+
+
+

0.4.3 / 2008-03-23

+
    +
  • Bug fix: failed to recognize user customized yas/trigger-key.
  • +
+
+
+

0.4.2 / 2008-03-22

+
    +
  • Make a separate document package for release. Also make document +available online.
  • +
+
+
+

0.4.1 / 2008-03-21

+
    +
  • Make sure yas/minor-mode's key bindings always take priority to +other minor modes.
  • +
+
+
+

0.4.0 / 2008-03-20

+
    +
  • Document refinement and released with YASnippet. Most of the Online +wiki document will be deprecated soon.
  • +
  • Powerful condition system added to yasnippet!
  • +
  • Incorporate dropdown-list.el and make it default way for +selecting multiple candidates. Thanks to Jaeyoun Chung.
  • +
  • yas/before-expand-snippet-hook
  • +
+
+
+

0.3.2 / 2008-03-19

+
    +
  • Enhancement: A better way to define minor-mode. Thanks to Kentaro +Kuribayashi. See this thread +for more details.
  • +
+
+
+

0.3.1 / 2008-03-17

+
    +
  • Bug fix: Emacs get confused when a field is deleted. See issue 10.
  • +
+
+
+

0.3.0 / 2008-03-16

+
    +
  • Add a yas/after-exit-snippet-hook so that you can do something like +indent-region or fill-region after finish the snippet.
  • +
  • Use minor-mode instead of global-set-key to bind the trigger +key. Now the trigger key and fall-back behavior can be more +flexible. Not constrained to <tab>. Thanks to Trey Jackson. See +this thread +for more details.
  • +
  • Now user can customize the popup function for selecting multiple +candidate for the same snippet key.
  • +
  • Support dropdown-list.el to be a better way to select multiple +candidate when in text mode.
  • +
+
+
+

0.2.3 / 2008-03-15

+
    +
  • Bug in non-window (-nw) mode when there's multiple candidate to +expand. See issue 7.
  • +
  • Allow expanding another snippet as long as not currently inside a +field.
  • +
+
+
+

0.2.2 / 2008-03-13

+
    +
  • Added customized face for fields and mirrors. Better in dark +background. And users can customize it.
  • +
+
+
+

0.2.1 / 2008-03-10

+
    +
  • Fix the insert-behind problem under both Emacs 22 and Emacs 23.
  • +
+
+
+

0.2.0 / 2008-03-10

+
    +
  • Use big keymap overlay to detect insert-behind event manually to +avoid sometimes missed hook calls. See issue 3 for more +details.
  • +
  • Support parent snippet table. Now you can set (for example) +cc-mode as common mode for c++-mode, c-mode and +java-mode. They'll share snippets defined for cc-mode.
  • +
+
+
+

0.1.1 / 2008-03-08

+
    +
  • Add a rake task to upload to google code.
  • +
  • Use elisp compile-bundle function instead of python scrip
  • +
+
+
+

0.1.0 / 2008-03-07

+
    +
  • Embedded elisp support.
  • +
  • Fields navigation support.
  • +
  • Mirror of fields support.
  • +
  • Menu-bar support.
  • +
  • Multiple snippets with same name support.
  • +
  • Popup menu for multiple snippet with same name support.
  • +
  • Transformation of fields support.
  • +
  • Load directory support.
  • +
  • Compile bundle support.
  • +
+
+
+
+
+
+
+
+
+ + diff --git a/doc/define_snippet.html b/doc/define_snippet.html new file mode 100644 index 0000000..64db46b --- /dev/null +++ b/doc/define_snippet.html @@ -0,0 +1,760 @@ + + + + + + +How to define a snippet ? + + + + + +
+
+
+
+ +
+
+
+
+ +

The most convenient way to define snippets for YASnippet is to put +them in a directory arranged by the mode and use +yas/load-directory to load them.

+

However, this might slow down the Emacs startup speed if you have many +snippets. You can use yas/define-snippets to define a bunch of +snippets for a perticular mode. But this is hard to maintain! So, +there's a better way: define your snippets in directory and use +yas/compile-bundle to compile it into a bundle file when you +modified your snippets.

+

The release bundle of YASnippet is produced by +yas/compile-bundle. The bundle use yas/define-snippets to +define snippets. This avoid the IO and parsing overhead when loading +snippets.

+

Finally, you can use yas/define to define a single snippet at your +convenience. I ofthen use this to do some testing.

+
+

Define snippets in files

+
+

Directory hierarchy

+

Here's the directory hierarchy of the snippets directory comes +with YASnippet:

+
snippets
+`-- text-mode/
+    |-- cc-mode/
+    |   |-- c++-mode/
+    |   |   |-- beginend
+    |   |   |-- class
+    |   |   `-- using
+    |   |-- c-mode/
+    |   |   `-- fopen
+    |   |-- do
+    |   |-- for
+    |   |-- if
+    |   |-- inc
+    |   |-- inc.1
+    |   |-- main
+    |   |-- once
+    |   `-- struct
+    |-- css-mode/
+    |   |-- background
+    |   |-- background.1
+    |   `-- border
+    |-- email
+    |-- html-mode/
+    |   |-- div
+    |   |-- doctype
+    |   |-- doctype.xhml1
+    |   |-- doctype.xhtml1_1
+    |   |-- doctype.xhtml1_strict
+    |   `-- doctype.xhtml1_transitional
+    |-- objc-mode/
+    |   `-- prop
+    |-- perl-mode/
+    |   |-- cperl-mode/
+    |   |-- eval
+    |   |-- for
+    |   |-- fore
+    |   |-- if
+    |   |-- ife
+    |   |-- ifee
+    |   |-- sub
+    |   |-- unless
+    |   |-- while
+    |   |-- xfore
+    |   |-- xif
+    |   |-- xunless
+    |   `-- xwhile
+    |-- python-mode/
+    |   |-- __
+    |   |-- class
+    |   |-- def
+    |   |-- for
+    |   |-- ifmain
+    |   `-- while
+    |-- rst-mode/
+    |   |-- chapter
+    |   |-- section
+    |   `-- title
+    |-- ruby-mode/
+    |   |-- #
+    |   |-- =b
+    |   |-- Comp
+    |   |-- all
+    |   |-- am
+    |   |-- any
+    |   |-- app
+    |   |-- bm
+    |   |-- case
+    |   |-- cla
+    |   |-- classify
+    |   |-- cls
+    |   |-- collect
+    |   |-- dee
+    |   |-- deli
+    |   |-- det
+    |   |-- ea
+    |   |-- eac
+    |   |-- eai
+    |   |-- eav
+    |   |-- eawi
+    |   |-- forin
+    |   |-- if
+    |   |-- ife
+    |   |-- inject
+    |   |-- mm
+    |   |-- r
+    |   |-- rb
+    |   |-- reject
+    |   |-- req
+    |   |-- rreq
+    |   |-- rw
+    |   |-- select
+    |   |-- w
+    |   |-- y
+    |   `-- zip
+    `-- time
+
+

Snippet definitions are put in plain text files. They are arranged by +subdirectories. For example, snippets for c-mode are put in the +c-mode directory.

+

The parent directory acts as the parent mode. This is the way of +YASnippet to share snippet definitions among different modes. As you +can see above, c-mode and c++-mode share the same parents +cc-mode, while all modes are derived from text-mode. This can +be also used to as an alias -- cperl-mode is an empty directory +whose parent is perl-mode.

+

File names act as the snippet trigger key. Note files starting with a +dot (.) are ignored.

+
+
+

File content

+

A file defining a snippet may just contain the template for the +snippet. Optionally it can also contains some meta data for the +snippet as well as comments.

+

Generally speaking, if the file contains a line of # --, then all +contents above that line are considered as meta data and comments; +below are template. Or else the whole file content is considered as +the template.

+

Here's a typical example:

+
#contributor : pluskid <pluskid@gmail.com>
+#name : __...__
+# --
+__${init}__
+
+

Meta data are specified in the syntax of

+
#data-name : data value
+
+

Any other text above # -- is considered as comment and +ignored. Here's a list of currently supported meta data:

+images/group.png +
    +
  • name: The name of the snippet. This is a one-line description of +the snippet. It will be displayed in the menu. So it's a good idea +to select a descriptive name fo a snippet -- especially +distinguishable among similar snippets.
  • +
  • contributor: The contributor of the snippet.
  • +
  • condition: The condition of the snippet. This is a piece of +elisp code. If a snippet has a condition, then it will only be +expanded when the condition code evaluate to some non-nil value.
  • +
  • key: The key to expand the snippet. Sometimes the key of a +snippet is non-ASCII or not valid filename (e.g. contains +/). One can then define the key property which will +overwrite the filename as the key to expand the snippet.
  • +
  • group: The snippets for a mode can be grouped. Grouped snippets +will be grouped in sub-menu. This is useful if one has too many +snippets for a mode which will make the menu too long. group +property only affect menu construction (See The Menu). Refer to +the snippets for ruby-mode for examples. Group can also be +nested, e.g. control structure.loops tells that the snippet is +under the loops group which is under the control structure +group.
  • +
+
+
+

Define snippets using elisp code

+

As I mentioned above, you can define snippets directly by writing +elisp code.

+
+

yas/define-snippets

+

The basic syntax of yas/define-snippets is

+
(yas/define-snippets MODE SNIPPETS &optional PARENT)
+
+

The parameters are self-descriptive. If you specify a PARENT, then +the snippets of the parents may be shared by MODE. Note if you use +this function several times, the later specified PARENT will +overwrite the original one. However, not specifying a PARENT won't +erase the original parent.

+

The SNIPPETS parameter is a list of snippet definitions. Each +element should have the following form:

+
(KEY TEMPLATE NAME CONDITION GROUP)
+
+

The NAME, CONDITION and GROUP can be omitted if you don't +want to provide one. Here's an example:

+
(yas/define-snippets 'c++-mode
+'(
+  ("using" "using namespace ${std};
+$0" "using namespace ... " nil)
+  ("class" "class ${1:Name}
+{
+public:
+    $1($2);
+    virtual ~$1();
+};" "class ... { ... }" nil)
+  ("beginend" "${1:v}.begin(), $1.end" "v.begin(), v.end()" nil)
+  )
+'cc-mode)
+
+

The example above is auto-generated code by yas/compile-bundle.

+
+
+

yas/compile-bundle

+

yas/compile-bundle can be used to parse the snippets from a +directory hierarchy and translate them into the elisp form. The +translated code is faster to load. Further more, the generated bundle +is a stand-alone file not depending on yasnippet.el. The released +bundles of YASnippet are all generated this way.

+

The basic syntax of yas/compile-bundle is

+
(yas/compile-bundle &optional yasnippet yasnippet-bundle snippet-roots code)
+
+

As you can see, all the parameters are optional. The default values +for those parameters are convenient for me to produce the default +release bundle:

+
(yas/compile-bundle "yasnippet.el"
+                    "./yasnippet-bundle.el"
+                    '("snippets")
+                    "(yas/initialize)")
+
+

The snippet-roots can be a list of root directories. This is +useful when you have multiple snippet directories (maybe from other +users). The code parameter can be used to specify your own +customization code instead of the default (yas/initialize). For +example, you can set yas/trigger-key to (kbd "SPC") here if +you like.

+
+
+

yas/define

+

The basic syntax for yas/define is

+
(yas/define mode key template &optional name condition group)
+
+

This is only a syntax sugar for

+
(yas/define-snippets mode
+                     (list (list key template name condition group)))
+
+
+
+
+
+

The strategy to select a snippet

+

When user press the yas/trigger-key, YASnippet try to find a +proper snippet to expand. The strategy to find such a snippet is +explained here.

+
+

Finding the key

+

YASnippet search from current point backward trying to find the +snippet to be expanded. The default searching strategy is quite +powerful. For example, in c-mode, "bar", "foo_bar", +"#foo_bar" can all be recognized as a template key. Further more, +the searching is in that order. In other words, if "bar" is found +to be a key to some valid snippet, then "foo_bar" and +"#foobar" won't be searched.

+

However, this strategy can also be customized easily from the +yas/key-syntaxes variable. It is a list of syntax rules, the +default value is ("w" "w_" "w_." "^ "). Which means search the +following thing until found one:

+
    +
  • a word.
  • +
  • a symbol. In lisp, - and ? can all be part of a symbol.
  • +
  • a sequence of characters of either word, symbol or punctuation.
  • +
  • a sequence of characters of non-whitespace characters.
  • +
+

But you'd better keep the default value unless you understand what +Emacs's syntax rule mean.

+
+
+

The condition system

+

I write forked snippet.el to make the smart-snippet.el. I call it +smart-snippet because a condition can be attached to a snippet. This +is really a good idea. However, writing condition for a snippet +usually needs good elisp and Emacs knowledge, so it is strange to many +user.

+

Later I write YASnippet and persuade people to use it instead of +smart-snippet.el. However, some user still love smart-snippet because +it is smart. So I make YASnippet smart. Even smarter than +smart-snippet.el. :p

+

Consider this scenario: you are an old Emacs hacker. You like the +abbrev-way and set yas/trigger-key to (kbd "SPC"). However, +you don't want if to be expanded as a snippet when you are typing +in a comment block or a string (e.g. in python-mode).

+

It's OK, just specify the condition for if to be (not +(python-in-string/comment)). But how about while, for, +etc. ? Writing the same condition for all the snippets is just +boring. So YASnippet introduce a buffer local variable +yas/buffer-local-condition. You can set this variable to (not +(python-in-string/comment)) in python-mode-hook. There's no way +to do this in smart-snippet.el!

+

Then, what if you really want some snippet even in comment? This is +also possible! But let's stop telling the story and look at the rules:

+
    +
  • If yas/buffer-local-condition evaluate to nil, snippet won't be +expanded.
  • +
  • If it evaluate to the a cons cell where the car is the symbol +require-snippet-condition and the cdr is a symbol (let's +call it requirement):
      +
    • If the snippet has no condition, then it won't be expanded.
    • +
    • If the snippet has a condition but evaluate to nil or error +occured during evaluation, it won't be expanded.
    • +
    • If the snippet has a condition that evaluate to non-nil (let's +call it result):
        +
      • If requirement is t, the snippet is ready to be +expanded.
      • +
      • If requirement is eq to result, the snippet is ready +to be expanded.
      • +
      • Otherwise the snippet won't be expanded.
      • +
      +
    • +
    +
  • +
  • If it evaluate to other non-nil value:
      +
    • If the snippet has no condition, or has a condition that evaluate +to non-nil, it is ready to be expanded.
    • +
    • Otherwise, it won't be expanded.
    • +
    +
  • +
+

So set yas/buffer-local-condition like this

+
(add-hook 'python-mode-hook
+          '(lambda ()
+             (setq yas/buffer-local-condition
+                   '(if (python-in-string/comment)
+                        '(require-snippet-condition . force-in-comment)
+                      t))))
+
+

And specify the condition for a snippet that you're going to expand in +comment to be evaluated to the symbol force-in-comment. Then it +can be expanded as you expected, while other snippets like if +still can't expanded in comment.

+
+
+

Multiple snippet with the same key

+

There can be multiple snippet bind to the same key. If you define a +snippet with a key that is already used, you'll overwrite the original +snippet definition. However, you can add a different postfix to the +key.

+

In general, the extension (consider a file name) is ignored when +defining a snippet. So def, def.1 and def.mine will all be +valid candidates when the key is def.

+

When there are multiple candidates, YASnippet will let you select +one. The UI for selecting multiple candidate can be +customized. There're two variable related:

+
    +
  • yas/window-system-popup-function: the function used when you +have a window system.
  • +
  • yas/text-popup-function: the function used when you don't have a +window system, i.e. when you are working in a terminal.
  • +
+
+Currently there're three solution come with YASnippet.
+images/popup-menu.png + +
+

Just select the first one

+

This one is originally used in terminal mode. It doesn't let you to +choose anything, it just select the first one on behalf of you. So I +bet you never want to use this. :p

+
+
+

Use a dropdown-menu.el

+images/dropdown-menu.png +

Originally, only the above two function is available in +YASnippet. They are difficult to use -- especially in a +terminal. Until later Jaeyoun Chung show me his dropdown-menu.el, +I say wow! It's wonderful!

+
    +
  • It works in both window system and terminal.
  • +
  • It is customizable, you can use C-n, C-p to navigate, q +to quite and even press 6 as a shortcut to select the 6th +candidate.
  • +
+

So I added yas/dropdown-list-popup-for-template to support +dropdown-list.el. And upload dropdown-list.el to YASnippet +hompage for an optional download (since Jaeyoun didn't provide a URL).

+

Then finally, in 0.4.0, I included a copy of the content of +dropdown-list.el [1] in yasnippet.el and made it the default +way for selecting multiple candidates.

+

However, the original functions are still there, you can still use this

+
(setq yas/window-system-popup-function
+      'yas/x-popup-menu-for-template)
+
+

if you prefer a modern UI. :)

+
+
+
+

The Trigger Key

+

YASnippet is implemented as a minor-mode (yas/minor-mode). The +trigger key yas/trigger-key is defined in yas/minor-mode-map +to call yas/expand to try to expand a snippet.

+
+

The Minor Mode

+images/minor-mode-indicator.png +

When yas/minor-mode is enabled, the trigger key will take +effect. The default key is (kbd "TAB"), however, you can freely +set it to some other key. By default, YASnippet add a hook to +after-change-major-mode-hook to enable yas/minor-mode [2] in +every buffer. This works fine for most modes, however, some mode +doesn't follow the Emacs convention and doens't call this hook. You +can either explicitly hook for those mode or just add it to +yas/extra-mode-hooks to let YASnippet do it for you:

+
(require 'yasnippet)
+(add-to-list 'yas/extra-mode-hooks
+             'ruby-mode-hook)
+(yas/initialize)
+
+

Note that should be put after (require 'yasnippet) and before +(yas/initialize). Further more, you may report it to me, I'll add +that to the default value.

+
+
+

The Fallback

+

If yas/expand failed to find any suitable snippet to expand, it +will disable the minor mode temporarily and find if there's any other +command bind the yas/trigger-key. If found, the command will be +called. Usually this works very well -- when there's a snippet, expand +it, otherwise, call whatever command originally bind to the trigger +key.

+

However, you can change this behavior by customizing the +yas/fallback-behavior variable. If you set this variable to +'return-nil, it will return nil instead of trying to call the +original command when no snippet is found. This is useful when you +would like YASnippet to work with other extensions, +e.g. hippie-expand. I'm also glad to tell you that integration +with hippie-expand is already included in YASnippet.

+
+
+

Integration with hippie-expand

+

To integrate with hippie-expand, just put +yas/hippie-try-expand in +hippie-expand-try-functions-list. Personally I would like to put +in front of the list, but it can be put anywhere you prefer.

+
+
+
+

Other way to select a snippet

+

When you use the trigger key (so yas/expand) to expand a snippet, +the key for the snippet is deleted before the template for the snippet +is inserted.

+

However, there're other ways to insert a snippet.

+
+

The Menu

+

YASnippet will setup a menu just after the Buffers Menu in the +menubar. The snippets for all real modes are listed there under the +menu. You can select a snippet from the menu to expand it. Since you +select manually from the menu, you can expand any snippet. For +example, you can expand a snippet defined for python-mode in a +c-mode buffer by selecting it from the menu:

+images/menubar.png +
    +
  • Condition system is ignored since you select to expand it +explicitly.
  • +
  • There will be no muliple candidates since they are listed in the +menu as different items.
  • +
+

This can be convenient sometimes. However, if you don't like the +menubar of Emacs and never use it. You can tell YASnippet don't boring +to build a menu by setting yas/use-menu to nil.

+

Another thing to note is that only real modes are listed under the +menu. As you know, common snippets can be shared by making up a +virtual parent mode. It's too bad if the menu is floored by those +virtual modes. So YASnippet only show menus for those real +modes. But the snippets fo the virtual modes can still be accessed +through the parent submenu of some real mode.

+

YASnippet use a simple way to check whether a mode is real or +virtual: (fboundp mode). For example, the symbol c-mode is +bound to a function while cc-mode is not. But this is not enough, +some modes aren't part of Emacs, and maybe when initializing +YASnippet, those modes haven't been initialized. So YASnippet also +maintain a list of known modes (yas/known-modes). You can add item +to that list if you need.

+
+
+

Expanding From Elisp Code

+

Sometimes you might want to expand a snippet directly by calling a +functin from elisp code. You should call yas/expand-snippet +instead of yas/expand in this case.

+

As with expanding from the menubar, condition system and multiple +candidates won't exists here. In fact, expanding from menubar has the +same effect of evaluating the follow code:

+
(yas/expand-snippet (point) (point) template)
+
+

Where template is the template of a snippet. It is never required +to belong to any snippet -- you can even make up it on the fly. The +1st and 2nd parameter defines the region to be deleted after YASnippet +inserted the template. It is used by yas/expand to indicate the +region of the key. There's usually no need to delete any region when +we are expanding a snippet from elisp code, so passing two (point) +is fine. Note only (point) will be fine because the 1st parameter +also indicate where to insert and expand the template.

+
+
+
+
+

The Syntax of the Template

+

The syntax of the snippet template is simple but powerful, very +similar to TextMate's.

+
+

Plain Text

+

Arbitrary text can be included as the content of a template. They are +usually interpreted as plain text, except $ and `. You need to +use \ to escape them: \$ and \`. The \ itself may also +needed to be escaped as \\ sometimes.

+
+
+

Embedded elisp code

+

Elisp code can be embedded inside the template. They are written +inside back-quotes (`):

+

They are evaluated when the snippet is being expanded. The evaluation +is done in the same buffer as the snippet being expanded. Here's an +example for c-mode to calculate the header file guard dynamically:

+
#ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_}
+#define $1
+
+$0
+
+#endif /* $1 */
+
+
+
+

Tab Stops

+

Tab stops are fields that you can navigate back and forth by TAB +and S-TAB [3]. They are written by $ followed with a +number. $0 has the special meaning of the exit point of a +snippet. That is the last place to go when you've traveled all the +fields. Here's a typical example:

+
<div$1>
+    $0
+</div>
+
+
+
+

Placeholders

+

Tab stops can have default values -- a.k.a placeholders. The syntax is +like this:

+
${N:default value}
+
+

They acts as the default value for a tab stop. But when you firstly +type at a tab stop, the default value will be replaced by your +typing. The number can be omitted if you don't want to create +mirrors or transformations for this field.

+
+
+

Mirrors

+

We refer the tab stops with placeholders as a field. A field can have +mirrors. Its mirrors will get updated when you change the text of a +field. Here's an example:

+
\begin{${1:enumerate}}
+    $0
+\end{$1}
+
+

When you type "document" at ${1:enumerate}, the word +"document" will also be inserted at \end{$1}. The best +explanation is to see the screencast(YouTube or avi video).

+

The tab stops with the same number to the field act as its mirrors. If +none of the tab stops has an initial value, the first one is selected +as the field and others mirrors.

+
+
+

Transformations

+

If the default value of a field starts with $, then it is interpreted +as the transformation code instead of default value. A transformation +is some arbitrary elisp code that will get evaluated in an environment +when the variable text is bind to the inputted text of the +field. Here's an example for Objective-C:

+
- (${1:id})${2:foo}
+{
+    return $2;
+}
+
+- (void)set${2:$(capitalize text)}:($1)aValue
+{
+    [$2 autorelease];
+    $2 = [aValue retain];
+}
+$0
+
+

Look at ${2:$(capitalize text)}, it is a transformation instead of +a placeholder. The actual placeholder is at the first line: +${2:foo}. When you type text in ${2:foo}, the transformation +will be evaluated and the result will be placed there as the +transformated text. So in this example, if you type baz in the field, +the transformed text will be Baz. This example is also available in +the screencast.

+

Another example is for rst-mode. In reStructuredText, the document +title can be some text surrounded by "===" below and above. The "===" +should be at least as long as the text. So

+
=====
+Title
+=====
+
+

is a valid title but

+
===
+Title
+===
+
+

is not. Here's an snippet for rst title:

+
${1:$(make-string (string-width text) ?\=)}
+${1:Title}
+${1:$(make-string (string-width text) ?\=)}
+
+$0
+
+ + + + + +
[1]With some minor change, mainly for fixing some trivial bugs.
+ + + + + +
[2]This is done when you call yas/initialize.
+ + + + + +
[3]Of course, this can be customized.
+
+
+

Indenting

+

Many people miss the indenting feature of smart-snippet: when you +place a $> in your snippet, an (indent-according-to-mode) will +be executed there to indent the line. So you'll not need to hard-code +the indenting in the snippet template, and it will be very convenient +when you need to work with several different project where coding +styles are different.

+

The reason why this feature wasn't added to YASnippet until after +0.5.6 is that it doesn't work well for all modes. In some cases +(e.g. python-mode), calling indent-according-to-mode will break +the overlays created by YASnippet.

+

However, since many people asked for this feature, I finally added +this to YASnippet. Here's an example of the usage:

+
for (${int i = 0}; ${i < 10}; ${++i})
+{$>
+$0$>
+}$>
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/doc/define_snippet.rst b/doc/define_snippet.rst index d81a58f..dbd9baa 100644 --- a/doc/define_snippet.rst +++ b/doc/define_snippet.rst @@ -178,6 +178,9 @@ Meta data are specified in the syntax of Any other text above ``# --`` is considered as comment and ignored. Here's a list of currently supported meta data: +.. image:: images/group.png + :align: right + * ``name``: The name of the snippet. This is a one-line description of the snippet. It will be displayed in the menu. So it's a good idea to select a descriptive name fo a snippet -- especially @@ -186,6 +189,18 @@ ignored. Here's a list of currently supported meta data: * ``condition``: The condition of the snippet. This is a piece of elisp code. If a snippet has a condition, then it will only be expanded when the condition code evaluate to some non-nil value. +* ``key``: The key to expand the snippet. Sometimes the key of a + snippet is non-ASCII or not valid filename (e.g. contains + ``/``). One can then define the ``key`` property which will + overwrite the filename as the key to expand the snippet. +* ``group``: The snippets for a mode can be grouped. Grouped snippets + will be grouped in sub-menu. This is useful if one has too many + snippets for a mode which will make the menu too long. ``group`` + property only affect menu construction (See `The Menu`_). Refer to + the snippets for ``ruby-mode`` for examples. Group can also be + nested, e.g. ``control structure.loops`` tells that the snippet is + under the ``loops`` group which is under the ``control structure`` + group. @@ -215,10 +230,10 @@ element should have the following form: .. sourcecode:: common-lisp - (KEY TEMPLATE NAME CONDITION) + (KEY TEMPLATE NAME CONDITION GROUP) -The ``NAME`` and ``CONDITION`` can be omitted if you don't want to -provide one. Here's an example: +The ``NAME``, ``CONDITION`` and ``GROUP`` can be omitted if you don't +want to provide one. Here's an example: .. sourcecode:: common-lisp @@ -278,14 +293,14 @@ The basic syntax for ``yas/define`` is .. sourcecode:: common-lisp - (yas/define mode key template &optional name condition) + (yas/define mode key template &optional name condition group) This is only a syntax sugar for .. sourcecode:: common-lisp (yas/define-snippets mode - (list (list key template name condition))) + (list (list key template name condition group))) The strategy to select a snippet ================================ diff --git a/doc/faq.html b/doc/faq.html new file mode 100644 index 0000000..f9a40e0 --- /dev/null +++ b/doc/faq.html @@ -0,0 +1,107 @@ + + + + + + +How to define a snippet ? + + + + + +
+
+
+
+ +
+
+
+
+
+

Why there's an extra newline?

+

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.

+

Note some editors will automatically add a newline for you. In Emacs, +if you set require-final-newline to t, it will add the final +newline for you automatically.

+
+
+

Why TAB key doesn't expand a snippet?

+

First check the mode line to see if there's yas. If no, then try +M-x yas/minor-mode-on to manually turn on yas/minor-mode and +try to expand the snippet again. If it works, then, you can add the +following code to your .emacs before loading YASnippet:

+
(setq yas/extra-mode-hooks '(the-major-mode))
+
+

where the-major-mode is the major mode in which yas/minor-mode +isn't enabled by default.

+

If yas/minor-mode is on but the snippet still not expanded. Then +try to see what command is bound to the TAB key: press C-h k +and then press TAB. Emacs will show you the result.

+

You'll see a buffer prompted by Emacs saying that TAB runs the +command .... Alternatively, you might see <tab> runs the command +..., note the difference between TAB and <tab> where the +latter has priority. If you see <tab> bound to a command other +than yas/expand, (e.g. in org-mode) you can try the following +code to work around:

+
(add-hook 'org-mode-hook
+          '(lambda ()
+             (make-variable-buffer-local 'yas/trigger-key)
+             (setq yas/trigger-key [tab])))
+
+

replace org-mode-hook with the major mode hook you are dealing +with (C-h m to see what major mode you are in).

+

If it says TAB but YASnippet still doesn't work, check your +configuration and you may also ask for help on the discussion group. Don't forget to +attach the information on what command is bound to TAB as well as the +mode information (Can be obtained by C-h m).

+
+
+

How to define snippets with named by characters not supported by the filesystem?

+

For example, you want to define a snippet by the key < which is not a +valid character for filename on Windows. In this case, you may use +yas/define to define the snippet. If you want to enjoy defining +snippets in a file, you can use the key property to specify the key of +the defined snippet explicitly.

+

Just name your snippet with an arbitrary valid filename, lt for +example. and specify < for the key property:

+
#key: <
+#name: <...></...>
+# --
+<${1:div}>$0</$1>
+
+
+
+
+
+
+
+
+
+ + diff --git a/doc/images/group.png b/doc/images/group.png new file mode 100644 index 0000000000000000000000000000000000000000..fd096989f58449419c9fa82cc171c251775e73a9 GIT binary patch literal 80647 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 Rq*+6K4r2li-a`}9{{=8B;t&7; literal 0 HcmV?d00001 diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..4991a72 --- /dev/null +++ b/doc/index.html @@ -0,0 +1,191 @@ + + + + + + +Yet Another Snippet extension + + + + + +
+
+
+
+ +
+
+
+
+ +

YASnippet is a re-design and re-write of my original extension +smart-snippet. It is much cleaner and more powerful than +smart-snippet.

+
+

Getting Started

+ +
+

For lazy poeple or beginners

+
    +
  1. Download the latest bundle release [1] from the downloads page.

    +
  2. +
  3. Create a directory ~/emacs/plugins.

    +
  4. +
  5. Unpack the downloaded bundle to that directory.

    +
  6. +
  7. Add the following code to your ~/.emacs file:

    +
    (add-to-list 'load-path
    +              "~/emacs/plugins")
    +(require 'yasnippet-bundle)
    +
    +
  8. +
+
+
+

For you

+
    +
  1. Download the latest YASnippet release package [2] from the +downloads page.

    +
  2. +
  3. Unpack it to a directory and add that directory to your +load-path.

    +
  4. +
  5. Add the following code to your ~/.emacs file:

    +
    (require 'yasnippet) ;; not yasnippet-bundle
    +(yas/initialize)
    +(yas/load-directory "/path/to/the/snippets/directory/")
    +
    +
  6. +
  7. You can inspect into the snippets directory for adding your own +snippets.

    +
  8. +
  9. Detailed document can be found at the doc directory.

    +
  10. +
+
+
+

For geeks

+

If you want to always follow the latest code. You can check out it +from the svn repository:

+
svn checkout http://yasnippet.googlecode.com/svn/trunk/ yasnippet
+
+

However, I try to release a new version as soon as I made some changes +that will affect the normal use or added some new features. So there's +usually no need to follow the svn repository. Except that you might +find svn up is more convenient than downloading and unpacking the +release package. :D

+
+
+
+

How to contribute ?

+

If you like YASnippet, you can recommendate it to your friends.

+
+

Issues

+

If you find a bug you can create a new issue at the issue list. Please describe +the problem as clear as possible.

+
+
+

Suggestion, Feature Request

+

There's a discussion group for both smart-snippet and yasnippet. If +you have any suggesion, you can post to there and discuss with other +members.

+

Especially, there's a wish list wiki page. I'll collect ideas from +the discussion group to the wish list. So you might want to look +at the wish list before you post something.

+
+
+

Snippets

+

YASnippet comes with some default snippet definitions. However, they +are far from complete. So I'm calling users to share their +snippets. If you have some good snippet definitions, you can post them +to the discussion group. You can specify the contributor +property of the snippet like:

+
#contributor : pluskid <pluskid@gmail.com>
+#name : __...__
+# --
+__${init}__
+
+

I'll incorporate (some of) them in the release if suitable. However, +if you have many snippets (especially when they need to be +maintained and updated constantly), it is not suitable to put them in +the YASnippet release package. A better way is to make your snippets +publicly available and tell me the URL. I'll try to keep a list of +them on the wiki page.

+
+
+
+

Detailed Documentation

+ + + + + + +
[1]They usually named like yasnippet-bundle-x.y.z.el.tgz where +x.y.z is the version number.
+ + + + + +
[2]They usually named like yasnippet.x.y.z.tar.bz2.
+
+
+
+
+
+
+
+
+ +