From 5a6d9ba778ef248578d76a28687f025fe5237e85 Mon Sep 17 00:00:00 2001 From: Raghunandan Ramakrishna Rao Date: Thu, 21 Aug 2014 19:36:43 +0530 Subject: [PATCH 1/2] Upgraded to latest yasnippet --- .gitmodules | 3 + epy-editing.el | 14 +- extensions/yasnippet | 1 + extensions/yasnippet/README | 8 - extensions/yasnippet/Rakefile | 79 - extensions/yasnippet/doc/changelog.html | 381 -- extensions/yasnippet/doc/changelog.rst | 319 -- extensions/yasnippet/doc/compile-doc.py | 110 - extensions/yasnippet/doc/define_snippet.html | 78 - extensions/yasnippet/doc/define_snippet.rst | 9 - extensions/yasnippet/doc/faq.html | 189 - extensions/yasnippet/doc/faq.rst | 150 - extensions/yasnippet/doc/html4css1.css | 279 -- .../yasnippet/doc/images/bg-content-left.png | Bin 3275 -> 0 bytes .../yasnippet/doc/images/bg-content-right.png | Bin 3169 -> 0 bytes .../yasnippet/doc/images/bg-content.png | Bin 485 -> 0 bytes .../doc/images/bg-navigation-item-hover.png | Bin 441 -> 0 bytes .../doc/images/bg-navigation-item.png | Bin 502 -> 0 bytes .../yasnippet/doc/images/bg-navigation.png | Bin 104 -> 0 bytes extensions/yasnippet/doc/images/body.png | Bin 712 -> 0 bytes .../doc/images/customization-group.png | Bin 60007 -> 0 bytes .../yasnippet/doc/images/dropdown-menu.png | Bin 31811 -> 0 bytes extensions/yasnippet/doc/images/external.png | Bin 165 -> 0 bytes extensions/yasnippet/doc/images/ido-menu.png | Bin 58102 -> 0 bytes extensions/yasnippet/doc/images/menu-1.png | Bin 68953 -> 0 bytes extensions/yasnippet/doc/images/menu-2.png | Bin 60421 -> 0 bytes .../yasnippet/doc/images/menu-groups.png | Bin 84358 -> 0 bytes .../yasnippet/doc/images/menu-parent.png | Bin 73275 -> 0 bytes .../doc/images/minor-mode-indicator.png | Bin 5940 -> 0 bytes extensions/yasnippet/doc/images/x-menu.png | Bin 34263 -> 0 bytes extensions/yasnippet/doc/index.html | 201 - extensions/yasnippet/doc/index.rst | 133 - .../yasnippet/doc/snippet-development.html | 623 --- .../yasnippet/doc/snippet-development.rst | 660 --- .../yasnippet/doc/snippet-expansion.html | 432 -- .../yasnippet/doc/snippet-expansion.rst | 406 -- extensions/yasnippet/doc/snippet-menu.html | 141 - extensions/yasnippet/doc/snippet-menu.rst | 85 - .../yasnippet/doc/snippet-organization.html | 292 -- .../yasnippet/doc/snippet-organization.rst | 253 - extensions/yasnippet/doc/styles.css | 142 - extensions/yasnippet/doc/template.txt | 67 - extensions/yasnippet/dropdown-list.el | 251 - .../extras/imported/html-mode/.yas-setup.el | 680 --- .../extras/imported/rails-mode/.yas-setup.el | 1174 ----- .../extras/imported/ruby-mode/.yas-setup.el | 1019 ---- .../yasnippet/extras/textmate_import.rb | 516 -- .../yasnippet/snippets/c++-mode/.yas-parents | 1 - .../yasnippet/snippets/c++-mode/beginend | 3 - extensions/yasnippet/snippets/c++-mode/class | 8 - extensions/yasnippet/snippets/c++-mode/ns | 3 - .../yasnippet/snippets/c++-mode/template | 3 - extensions/yasnippet/snippets/c++-mode/using | 4 - .../yasnippet/snippets/c-mode/.yas-parents | 1 - extensions/yasnippet/snippets/c-mode/fopen | 3 - extensions/yasnippet/snippets/c-mode/printf | 6 - .../yasnippet/snippets/cc-mode/.yas-parents | 1 - extensions/yasnippet/snippets/cc-mode/do | 6 - extensions/yasnippet/snippets/cc-mode/for | 6 - extensions/yasnippet/snippets/cc-mode/if | 6 - extensions/yasnippet/snippets/cc-mode/inc | 3 - extensions/yasnippet/snippets/cc-mode/inc.1 | 3 - extensions/yasnippet/snippets/cc-mode/main | 7 - extensions/yasnippet/snippets/cc-mode/once | 8 - extensions/yasnippet/snippets/cc-mode/struct | 6 - .../snippets/cperl-mode/.yas-parents | 1 - .../snippets/csharp-mode/.yas-parents | 1 - .../yasnippet/snippets/csharp-mode/attrib | 7 - .../yasnippet/snippets/csharp-mode/attrib.1 | 21 - .../yasnippet/snippets/csharp-mode/attrib.2 | 21 - .../yasnippet/snippets/csharp-mode/class | 21 - .../yasnippet/snippets/csharp-mode/comment | 6 - .../yasnippet/snippets/csharp-mode/comment.1 | 4 - .../yasnippet/snippets/csharp-mode/comment.2 | 4 - .../yasnippet/snippets/csharp-mode/comment.3 | 4 - .../yasnippet/snippets/csharp-mode/method | 10 - .../yasnippet/snippets/csharp-mode/namespace | 7 - .../yasnippet/snippets/csharp-mode/prop | 16 - .../yasnippet/snippets/csharp-mode/region | 6 - .../yasnippet/snippets/csharp-mode/using | 4 - .../yasnippet/snippets/csharp-mode/using.1 | 4 - .../yasnippet/snippets/csharp-mode/using.2 | 4 - .../yasnippet/snippets/css-mode/.yas-parents | 1 - extensions/yasnippet/snippets/css-mode/bg | 3 - extensions/yasnippet/snippets/css-mode/bg.1 | 3 - extensions/yasnippet/snippets/css-mode/bor | 3 - extensions/yasnippet/snippets/css-mode/cl | 4 - .../yasnippet/snippets/css-mode/disp.block | 4 - .../yasnippet/snippets/css-mode/disp.inline | 4 - .../yasnippet/snippets/css-mode/disp.none | 4 - extensions/yasnippet/snippets/css-mode/ff | 4 - extensions/yasnippet/snippets/css-mode/fs | 4 - .../yasnippet/snippets/css-mode/mar.bottom | 4 - .../yasnippet/snippets/css-mode/mar.left | 4 - .../yasnippet/snippets/css-mode/mar.mar | 4 - .../yasnippet/snippets/css-mode/mar.margin | 4 - .../yasnippet/snippets/css-mode/mar.right | 4 - .../yasnippet/snippets/css-mode/mar.top | 4 - .../yasnippet/snippets/css-mode/pad.bottom | 4 - .../yasnippet/snippets/css-mode/pad.left | 4 - .../yasnippet/snippets/css-mode/pad.pad | 4 - .../yasnippet/snippets/css-mode/pad.padding | 4 - .../yasnippet/snippets/css-mode/pad.right | 4 - .../yasnippet/snippets/css-mode/pad.top | 4 - .../snippets/emacs-lisp-mode/.read_me | 11 - .../snippets/emacs-lisp-mode/.yas-parents | 1 - .../yasnippet/snippets/emacs-lisp-mode/defun | 11 - .../emacs-lisp-mode/dired.process_marked | 16 - .../snippets/emacs-lisp-mode/file.process | 17 - .../snippets/emacs-lisp-mode/file.read-lines | 17 - .../snippets/emacs-lisp-mode/find-replace | 17 - .../snippets/emacs-lisp-mode/grabstring | 4 - .../snippets/emacs-lisp-mode/grabthing | 4 - .../snippets/emacs-lisp-mode/traverse_dir | 6 - .../snippets/emacs-lisp-mode/word-or-region | 27 - .../snippets/erlang-mode/.yas-parents | 1 - .../yasnippet/snippets/erlang-mode/after | 4 - .../yasnippet/snippets/erlang-mode/begin | 5 - extensions/yasnippet/snippets/erlang-mode/beh | 4 - .../yasnippet/snippets/erlang-mode/case | 5 - .../yasnippet/snippets/erlang-mode/compile | 4 - extensions/yasnippet/snippets/erlang-mode/def | 4 - extensions/yasnippet/snippets/erlang-mode/exp | 5 - extensions/yasnippet/snippets/erlang-mode/fun | 3 - extensions/yasnippet/snippets/erlang-mode/if | 6 - .../yasnippet/snippets/erlang-mode/ifdef | 5 - .../yasnippet/snippets/erlang-mode/ifndef | 5 - extensions/yasnippet/snippets/erlang-mode/imp | 5 - extensions/yasnippet/snippets/erlang-mode/inc | 4 - .../yasnippet/snippets/erlang-mode/inc.lib | 4 - .../yasnippet/snippets/erlang-mode/loop | 8 - extensions/yasnippet/snippets/erlang-mode/mod | 6 - extensions/yasnippet/snippets/erlang-mode/rcv | 5 - .../yasnippet/snippets/erlang-mode/rcv.after | 6 - extensions/yasnippet/snippets/erlang-mode/rec | 4 - extensions/yasnippet/snippets/erlang-mode/try | 7 - .../yasnippet/snippets/erlang-mode/undef | 4 - .../yasnippet/snippets/f90-mode/.yas-parents | 1 - extensions/yasnippet/snippets/f90-mode/au | 4 - extensions/yasnippet/snippets/f90-mode/bd | 4 - extensions/yasnippet/snippets/f90-mode/c | 4 - extensions/yasnippet/snippets/f90-mode/ch | 4 - extensions/yasnippet/snippets/f90-mode/cx | 4 - extensions/yasnippet/snippets/f90-mode/dc | 4 - extensions/yasnippet/snippets/f90-mode/do | 6 - extensions/yasnippet/snippets/f90-mode/dp | 4 - extensions/yasnippet/snippets/f90-mode/eq | 4 - extensions/yasnippet/snippets/f90-mode/ib | 4 - extensions/yasnippet/snippets/f90-mode/ic | 4 - extensions/yasnippet/snippets/f90-mode/ich | 4 - extensions/yasnippet/snippets/f90-mode/if | 6 - extensions/yasnippet/snippets/f90-mode/ii | 4 - extensions/yasnippet/snippets/f90-mode/il | 4 - extensions/yasnippet/snippets/f90-mode/in | 4 - extensions/yasnippet/snippets/f90-mode/inc | 4 - extensions/yasnippet/snippets/f90-mode/intr | 4 - extensions/yasnippet/snippets/f90-mode/ir | 4 - extensions/yasnippet/snippets/f90-mode/l | 4 - extensions/yasnippet/snippets/f90-mode/pa | 4 - extensions/yasnippet/snippets/f90-mode/pr | 6 - extensions/yasnippet/snippets/f90-mode/re | 4 - extensions/yasnippet/snippets/f90-mode/st | 4 - extensions/yasnippet/snippets/f90-mode/su | 4 - extensions/yasnippet/snippets/f90-mode/wr | 4 - .../snippets/html-mode/.yas-make-groups | 0 .../yasnippet/snippets/html-mode/.yas-parents | 1 - extensions/yasnippet/snippets/html-mode/body | 6 - extensions/yasnippet/snippets/html-mode/br | 4 - extensions/yasnippet/snippets/html-mode/code | 6 - .../yasnippet/snippets/html-mode/code.class | 6 - extensions/yasnippet/snippets/html-mode/div | 3 - .../yasnippet/snippets/html-mode/div.class | 6 - .../yasnippet/snippets/html-mode/div.id | 6 - .../yasnippet/snippets/html-mode/div.id-class | 6 - extensions/yasnippet/snippets/html-mode/dov | 11 - extensions/yasnippet/snippets/html-mode/form | 6 - extensions/yasnippet/snippets/html-mode/head | 6 - .../yasnippet/snippets/html-mode/header/h1 | 4 - .../yasnippet/snippets/html-mode/header/h2 | 4 - .../yasnippet/snippets/html-mode/header/h3 | 4 - .../yasnippet/snippets/html-mode/header/h4 | 4 - .../yasnippet/snippets/html-mode/header/h5 | 4 - .../yasnippet/snippets/html-mode/header/h6 | 4 - extensions/yasnippet/snippets/html-mode/hr | 4 - extensions/yasnippet/snippets/html-mode/href | 4 - extensions/yasnippet/snippets/html-mode/html | 6 - .../yasnippet/snippets/html-mode/html.xmlns | 6 - extensions/yasnippet/snippets/html-mode/img | 4 - extensions/yasnippet/snippets/html-mode/input | 4 - .../snippets/html-mode/link.stylesheet | 4 - .../snippets/html-mode/link.stylesheet-ie | 6 - .../yasnippet/snippets/html-mode/list/dd | 4 - .../yasnippet/snippets/html-mode/list/dl | 6 - .../yasnippet/snippets/html-mode/list/dl.id | 6 - .../yasnippet/snippets/html-mode/list/dt | 4 - .../yasnippet/snippets/html-mode/list/li | 4 - .../snippets/html-mode/list/li.class | 4 - .../yasnippet/snippets/html-mode/list/ol | 6 - .../snippets/html-mode/list/ol.class | 6 - .../yasnippet/snippets/html-mode/list/ol.id | 6 - .../yasnippet/snippets/html-mode/list/ul | 6 - .../snippets/html-mode/list/ul.class | 6 - .../yasnippet/snippets/html-mode/list/ul.id | 6 - .../yasnippet/snippets/html-mode/mailto | 4 - .../yasnippet/snippets/html-mode/meta/doctype | 3 - .../snippets/html-mode/meta/doctype.xhml1 | 3 - .../snippets/html-mode/meta/doctype.xhtml1_1 | 3 - .../html-mode/meta/doctype.xhtml1_strict | 3 - .../meta/doctype.xhtml1_transitional | 3 - .../yasnippet/snippets/html-mode/meta/meta | 4 - .../snippets/html-mode/meta/meta.http-equiv | 4 - extensions/yasnippet/snippets/html-mode/p | 4 - extensions/yasnippet/snippets/html-mode/pre | 6 - extensions/yasnippet/snippets/html-mode/quote | 6 - .../snippets/html-mode/script.javascript | 6 - .../snippets/html-mode/script.javascript-src | 4 - extensions/yasnippet/snippets/html-mode/span | 4 - .../yasnippet/snippets/html-mode/span.class | 4 - .../yasnippet/snippets/html-mode/span.id | 4 - extensions/yasnippet/snippets/html-mode/style | 6 - .../yasnippet/snippets/html-mode/table/table | 6 - .../yasnippet/snippets/html-mode/table/td | 4 - .../yasnippet/snippets/html-mode/table/th | 4 - .../yasnippet/snippets/html-mode/table/tr | 6 - .../yasnippet/snippets/html-mode/textarea | 4 - extensions/yasnippet/snippets/html-mode/title | 4 - .../snippets/latex-mode/.yas-parents | 1 - .../yasnippet/snippets/latex-mode/begin | 7 - extensions/yasnippet/snippets/markdown-mode/+ | 5 - extensions/yasnippet/snippets/markdown-mode/- | 5 - .../snippets/markdown-mode/.yas-parents | 1 - extensions/yasnippet/snippets/markdown-mode/_ | 4 - .../yasnippet/snippets/markdown-mode/__ | 4 - extensions/yasnippet/snippets/markdown-mode/` | 4 - .../yasnippet/snippets/markdown-mode/h1.1 | 6 - .../yasnippet/snippets/markdown-mode/h1.2 | 7 - .../yasnippet/snippets/markdown-mode/h2.1 | 6 - .../yasnippet/snippets/markdown-mode/h2.2 | 7 - .../yasnippet/snippets/markdown-mode/h3 | 6 - .../yasnippet/snippets/markdown-mode/h4 | 6 - .../yasnippet/snippets/markdown-mode/h5 | 6 - .../yasnippet/snippets/markdown-mode/h6 | 6 - .../yasnippet/snippets/markdown-mode/hr.1 | 7 - .../yasnippet/snippets/markdown-mode/hr.2 | 7 - .../yasnippet/snippets/markdown-mode/img | 4 - .../yasnippet/snippets/markdown-mode/link | 4 - .../yasnippet/snippets/markdown-mode/ol | 5 - .../yasnippet/snippets/markdown-mode/rimg | 4 - .../yasnippet/snippets/markdown-mode/rlb | 5 - .../yasnippet/snippets/markdown-mode/rlink | 4 - .../snippets/nxml-mode/.yas-make-groups | 0 .../yasnippet/snippets/nxml-mode/.yas-parents | 1 - extensions/yasnippet/snippets/nxml-mode/body | 6 - extensions/yasnippet/snippets/nxml-mode/br | 4 - extensions/yasnippet/snippets/nxml-mode/code | 6 - extensions/yasnippet/snippets/nxml-mode/div | 4 - extensions/yasnippet/snippets/nxml-mode/form | 6 - extensions/yasnippet/snippets/nxml-mode/head | 6 - .../yasnippet/snippets/nxml-mode/header/h1 | 4 - .../yasnippet/snippets/nxml-mode/header/h2 | 4 - .../yasnippet/snippets/nxml-mode/header/h3 | 4 - .../yasnippet/snippets/nxml-mode/header/h4 | 4 - .../yasnippet/snippets/nxml-mode/header/h5 | 4 - .../yasnippet/snippets/nxml-mode/header/h6 | 4 - extensions/yasnippet/snippets/nxml-mode/hr | 4 - extensions/yasnippet/snippets/nxml-mode/href | 4 - extensions/yasnippet/snippets/nxml-mode/html | 6 - extensions/yasnippet/snippets/nxml-mode/img | 4 - extensions/yasnippet/snippets/nxml-mode/input | 4 - extensions/yasnippet/snippets/nxml-mode/li | 4 - extensions/yasnippet/snippets/nxml-mode/link | 4 - .../yasnippet/snippets/nxml-mode/meta/doctype | 4 - .../nxml-mode/meta/doctype.xhtml1_strict | 4 - .../meta/doctype.xhtml1_transitional | 4 - .../yasnippet/snippets/nxml-mode/meta/meta | 4 - extensions/yasnippet/snippets/nxml-mode/name | 4 - extensions/yasnippet/snippets/nxml-mode/ol | 6 - extensions/yasnippet/snippets/nxml-mode/p | 4 - extensions/yasnippet/snippets/nxml-mode/pre | 6 - extensions/yasnippet/snippets/nxml-mode/quote | 6 - extensions/yasnippet/snippets/nxml-mode/span | 4 - extensions/yasnippet/snippets/nxml-mode/style | 6 - extensions/yasnippet/snippets/nxml-mode/table | 6 - .../yasnippet/snippets/nxml-mode/tag.1l | 4 - .../yasnippet/snippets/nxml-mode/tag.2l | 6 - extensions/yasnippet/snippets/nxml-mode/td | 4 - extensions/yasnippet/snippets/nxml-mode/th | 4 - extensions/yasnippet/snippets/nxml-mode/title | 4 - extensions/yasnippet/snippets/nxml-mode/tr | 6 - extensions/yasnippet/snippets/nxml-mode/ul | 6 - .../yasnippet/snippets/objc-mode/.yas-parents | 1 - extensions/yasnippet/snippets/objc-mode/prop | 13 - .../yasnippet/snippets/perl-mode/.yas-parents | 1 - extensions/yasnippet/snippets/perl-mode/eval | 8 - extensions/yasnippet/snippets/perl-mode/for | 5 - extensions/yasnippet/snippets/perl-mode/fore | 5 - extensions/yasnippet/snippets/perl-mode/if | 5 - extensions/yasnippet/snippets/perl-mode/ife | 7 - extensions/yasnippet/snippets/perl-mode/ifee | 9 - extensions/yasnippet/snippets/perl-mode/sub | 5 - .../yasnippet/snippets/perl-mode/unless | 5 - extensions/yasnippet/snippets/perl-mode/while | 5 - extensions/yasnippet/snippets/perl-mode/xfore | 3 - extensions/yasnippet/snippets/perl-mode/xif | 3 - .../yasnippet/snippets/perl-mode/xunless | 3 - .../yasnippet/snippets/perl-mode/xwhile | 3 - .../snippets/python-mode/.yas-parents | 1 - extensions/yasnippet/snippets/python-mode/__ | 3 - .../yasnippet/snippets/python-mode/class | 8 - extensions/yasnippet/snippets/python-mode/def | 7 - extensions/yasnippet/snippets/python-mode/doc | 7 - extensions/yasnippet/snippets/python-mode/for | 4 - .../yasnippet/snippets/python-mode/from | 4 - .../yasnippet/snippets/python-mode/ifmain | 4 - .../yasnippet/snippets/python-mode/init | 6 - .../yasnippet/snippets/python-mode/ipdb | 3 - .../yasnippet/snippets/python-mode/param | 6 - extensions/yasnippet/snippets/python-mode/pdb | 4 - .../yasnippet/snippets/python-mode/prop | 11 - .../yasnippet/snippets/python-mode/prop.fun | 17 - .../yasnippet/snippets/python-mode/super | 6 - .../yasnippet/snippets/python-mode/testcase | 6 - .../yasnippet/snippets/python-mode/try.except | 6 - .../snippets/python-mode/try.exceptelse | 8 - .../python-mode/try.exceptelsefinally | 10 - .../snippets/python-mode/try.exceptfinally | 8 - .../yasnippet/snippets/python-mode/utf8 | 3 - .../yasnippet/snippets/python-mode/while | 4 - .../yasnippet/snippets/rst-mode/.yas-parents | 1 - extensions/yasnippet/snippets/rst-mode/chap | 6 - extensions/yasnippet/snippets/rst-mode/sec | 6 - extensions/yasnippet/snippets/rst-mode/tit | 7 - .../snippets/ruby-mode/.yas-make-groups | 0 .../yasnippet/snippets/ruby-mode/.yas-parents | 1 - .../snippets/ruby-mode/collections/all | 3 - .../snippets/ruby-mode/collections/any | 3 - .../snippets/ruby-mode/collections/classify | 3 - .../snippets/ruby-mode/collections/collect | 3 - .../snippets/ruby-mode/collections/deli | 3 - .../snippets/ruby-mode/collections/det | 3 - .../snippets/ruby-mode/collections/ea | 3 - .../snippets/ruby-mode/collections/eac | 3 - .../snippets/ruby-mode/collections/eai | 3 - .../snippets/ruby-mode/collections/eav | 3 - .../snippets/ruby-mode/collections/eawi | 3 - .../snippets/ruby-mode/collections/inject | 3 - .../snippets/ruby-mode/collections/reject | 3 - .../snippets/ruby-mode/collections/select | 3 - .../snippets/ruby-mode/collections/zip | 3 - .../ruby-mode/control structure/forin | 5 - .../snippets/ruby-mode/control structure/if | 5 - .../snippets/ruby-mode/control structure/ife | 7 - .../snippets/ruby-mode/control structure/tim | 3 - .../ruby-mode/control structure/until | 5 - .../snippets/ruby-mode/control structure/upt | 5 - .../snippets/ruby-mode/control structure/when | 5 - .../ruby-mode/control structure/while | 5 - .../snippets/ruby-mode/definitions/Comp | 7 - .../snippets/ruby-mode/definitions/am | 3 - .../snippets/ruby-mode/definitions/cla | 5 - .../snippets/ruby-mode/definitions/cls | 12 - .../snippets/ruby-mode/definitions/mm | 5 - .../snippets/ruby-mode/definitions/r | 3 - .../snippets/ruby-mode/definitions/rw | 3 - .../snippets/ruby-mode/definitions/w | 3 - .../yasnippet/snippets/ruby-mode/general/# | 3 - .../yasnippet/snippets/ruby-mode/general/=b | 5 - .../yasnippet/snippets/ruby-mode/general/app | 5 - .../yasnippet/snippets/ruby-mode/general/bm | 5 - .../yasnippet/snippets/ruby-mode/general/case | 6 - .../yasnippet/snippets/ruby-mode/general/dee | 3 - .../yasnippet/snippets/ruby-mode/general/rb | 3 - .../yasnippet/snippets/ruby-mode/general/req | 3 - .../yasnippet/snippets/ruby-mode/general/rreq | 3 - .../yasnippet/snippets/ruby-mode/general/y | 3 - .../snippets/scala-mode/.yas-parents | 1 - extensions/yasnippet/snippets/scala-mode/act | 10 - .../yasnippet/snippets/scala-mode/act.arg | 10 - .../yasnippet/snippets/scala-mode/actor | 10 - extensions/yasnippet/snippets/scala-mode/ano | 4 - extensions/yasnippet/snippets/scala-mode/app | 6 - .../yasnippet/snippets/scala-mode/arr.new | 4 - .../yasnippet/snippets/scala-mode/arr.val-new | 4 - extensions/yasnippet/snippets/scala-mode/asof | 4 - extensions/yasnippet/snippets/scala-mode/ass | 4 - .../yasnippet/snippets/scala-mode/ass.true | 4 - .../yasnippet/snippets/scala-mode/at.author | 4 - .../yasnippet/snippets/scala-mode/at.param | 4 - .../yasnippet/snippets/scala-mode/at.return | 4 - .../yasnippet/snippets/scala-mode/at.version | 4 - extensions/yasnippet/snippets/scala-mode/bang | 4 - extensions/yasnippet/snippets/scala-mode/case | 4 - .../snippets/scala-mode/case.match-all | 4 - extensions/yasnippet/snippets/scala-mode/cast | 4 - extensions/yasnippet/snippets/scala-mode/cc | 4 - extensions/yasnippet/snippets/scala-mode/cl | 6 - .../yasnippet/snippets/scala-mode/cl.abs | 6 - .../yasnippet/snippets/scala-mode/cl.abs-arg | 6 - .../yasnippet/snippets/scala-mode/cl.arg | 6 - extensions/yasnippet/snippets/scala-mode/clof | 4 - extensions/yasnippet/snippets/scala-mode/co | 4 - extensions/yasnippet/snippets/scala-mode/cons | 4 - .../yasnippet/snippets/scala-mode/cons.nil | 4 - .../yasnippet/snippets/scala-mode/def.arg | 4 - .../snippets/scala-mode/def.arg-body | 6 - .../yasnippet/snippets/scala-mode/def.arg-ret | 4 - .../snippets/scala-mode/def.arg-ret-body | 6 - .../yasnippet/snippets/scala-mode/def.body | 6 - .../yasnippet/snippets/scala-mode/def.ret | 4 - .../snippets/scala-mode/def.ret-body | 6 - .../yasnippet/snippets/scala-mode/def.simple | 4 - .../yasnippet/snippets/scala-mode/doc.class | 8 - .../yasnippet/snippets/scala-mode/doc.def | 6 - .../yasnippet/snippets/scala-mode/doc.file | 9 - .../snippets/scala-mode/doc.file-scala | 16 - .../snippets/scala-mode/doc.file-scala-api | 16 - .../snippets/scala-mode/doc.scaladoc | 7 - .../yasnippet/snippets/scala-mode/expect | 6 - extensions/yasnippet/snippets/scala-mode/ext | 4 - .../yasnippet/snippets/scala-mode/for.extract | 4 - .../yasnippet/snippets/scala-mode/for.if | 6 - .../yasnippet/snippets/scala-mode/for.loop | 6 - .../yasnippet/snippets/scala-mode/for.multi | 9 - .../yasnippet/snippets/scala-mode/foreach | 4 - .../yasnippet/snippets/scala-mode/hmap.new | 4 - .../snippets/scala-mode/hmap.val-new | 4 - .../yasnippet/snippets/scala-mode/hset.new | 4 - .../snippets/scala-mode/hset.val-new | 4 - extensions/yasnippet/snippets/scala-mode/if | 6 - .../yasnippet/snippets/scala-mode/if.else | 8 - extensions/yasnippet/snippets/scala-mode/imp | 4 - .../yasnippet/snippets/scala-mode/intercept | 6 - extensions/yasnippet/snippets/scala-mode/isof | 4 - .../yasnippet/snippets/scala-mode/ls.new | 4 - .../yasnippet/snippets/scala-mode/ls.val-new | 4 - extensions/yasnippet/snippets/scala-mode/main | 6 - extensions/yasnippet/snippets/scala-mode/map | 4 - .../yasnippet/snippets/scala-mode/map.new | 4 - .../yasnippet/snippets/scala-mode/match | 6 - .../yasnippet/snippets/scala-mode/match.can | 11 - .../snippets/scala-mode/match.option | 8 - extensions/yasnippet/snippets/scala-mode/mix | 6 - extensions/yasnippet/snippets/scala-mode/ob | 4 - extensions/yasnippet/snippets/scala-mode/pac | 4 - .../yasnippet/snippets/scala-mode/pr.newline | 4 - .../yasnippet/snippets/scala-mode/pr.simple | 4 - .../yasnippet/snippets/scala-mode/pr.string | 4 - .../yasnippet/snippets/scala-mode/pr.trace | 4 - extensions/yasnippet/snippets/scala-mode/pri | 4 - .../yasnippet/snippets/scala-mode/pri.param | 4 - extensions/yasnippet/snippets/scala-mode/pro | 4 - .../yasnippet/snippets/scala-mode/pro.param | 4 - .../yasnippet/snippets/scala-mode/suite | 8 - extensions/yasnippet/snippets/scala-mode/test | 7 - .../yasnippet/snippets/scala-mode/throw | 4 - extensions/yasnippet/snippets/scala-mode/tr | 6 - .../yasnippet/snippets/scala-mode/tr.ext | 6 - .../yasnippet/snippets/scala-mode/tr.ext-with | 6 - .../yasnippet/snippets/scala-mode/tr.with | 6 - extensions/yasnippet/snippets/scala-mode/try | 9 - .../snippets/scala-mode/try.catch-finally | 11 - .../yasnippet/snippets/scala-mode/try.finally | 8 - .../yasnippet/snippets/scala-mode/tup.arrow | 4 - .../yasnippet/snippets/scala-mode/tup.paren | 4 - extensions/yasnippet/snippets/scala-mode/val | 4 - .../yasnippet/snippets/scala-mode/val.new | 4 - .../yasnippet/snippets/scala-mode/val.ret | 4 - extensions/yasnippet/snippets/scala-mode/var | 4 - .../yasnippet/snippets/scala-mode/var.new | 4 - .../yasnippet/snippets/scala-mode/var.ret | 4 - extensions/yasnippet/snippets/scala-mode/whi | 6 - extensions/yasnippet/snippets/scala-mode/with | 4 - .../snippets/snippet-mode/.yas-parents | 1 - .../yasnippet/snippets/snippet-mode/field | 5 - .../yasnippet/snippets/snippet-mode/mirror | 5 - .../yasnippet/snippets/snippet-mode/vars | 11 - .../yasnippet/snippets/sql-mode/.yas-parents | 1 - extensions/yasnippet/snippets/sql-mode/column | 4 - .../yasnippet/snippets/sql-mode/constraint | 4 - .../yasnippet/snippets/sql-mode/constraint.1 | 4 - extensions/yasnippet/snippets/sql-mode/create | 10 - .../yasnippet/snippets/sql-mode/create.1 | 12 - .../yasnippet/snippets/sql-mode/references | 4 - extensions/yasnippet/snippets/text-mode/email | 3 - extensions/yasnippet/snippets/text-mode/time | 3 - extensions/yasnippet/yasnippet-debug.el | 128 - extensions/yasnippet/yasnippet.el | 4320 ----------------- 487 files changed, 10 insertions(+), 15370 deletions(-) create mode 100644 .gitmodules create mode 160000 extensions/yasnippet delete mode 100644 extensions/yasnippet/README delete mode 100644 extensions/yasnippet/Rakefile delete mode 100644 extensions/yasnippet/doc/changelog.html delete mode 100644 extensions/yasnippet/doc/changelog.rst delete mode 100755 extensions/yasnippet/doc/compile-doc.py delete mode 100644 extensions/yasnippet/doc/define_snippet.html delete mode 100644 extensions/yasnippet/doc/define_snippet.rst delete mode 100644 extensions/yasnippet/doc/faq.html delete mode 100644 extensions/yasnippet/doc/faq.rst delete mode 100644 extensions/yasnippet/doc/html4css1.css delete mode 100644 extensions/yasnippet/doc/images/bg-content-left.png delete mode 100644 extensions/yasnippet/doc/images/bg-content-right.png delete mode 100644 extensions/yasnippet/doc/images/bg-content.png delete mode 100644 extensions/yasnippet/doc/images/bg-navigation-item-hover.png delete mode 100644 extensions/yasnippet/doc/images/bg-navigation-item.png delete mode 100644 extensions/yasnippet/doc/images/bg-navigation.png delete mode 100644 extensions/yasnippet/doc/images/body.png delete mode 100644 extensions/yasnippet/doc/images/customization-group.png delete mode 100644 extensions/yasnippet/doc/images/dropdown-menu.png delete mode 100644 extensions/yasnippet/doc/images/external.png delete mode 100644 extensions/yasnippet/doc/images/ido-menu.png delete mode 100644 extensions/yasnippet/doc/images/menu-1.png delete mode 100644 extensions/yasnippet/doc/images/menu-2.png delete mode 100644 extensions/yasnippet/doc/images/menu-groups.png delete mode 100644 extensions/yasnippet/doc/images/menu-parent.png delete mode 100644 extensions/yasnippet/doc/images/minor-mode-indicator.png delete mode 100644 extensions/yasnippet/doc/images/x-menu.png delete mode 100644 extensions/yasnippet/doc/index.html delete mode 100644 extensions/yasnippet/doc/index.rst delete mode 100644 extensions/yasnippet/doc/snippet-development.html delete mode 100644 extensions/yasnippet/doc/snippet-development.rst delete mode 100644 extensions/yasnippet/doc/snippet-expansion.html delete mode 100644 extensions/yasnippet/doc/snippet-expansion.rst delete mode 100644 extensions/yasnippet/doc/snippet-menu.html delete mode 100644 extensions/yasnippet/doc/snippet-menu.rst delete mode 100644 extensions/yasnippet/doc/snippet-organization.html delete mode 100644 extensions/yasnippet/doc/snippet-organization.rst delete mode 100644 extensions/yasnippet/doc/styles.css delete mode 100644 extensions/yasnippet/doc/template.txt delete mode 100644 extensions/yasnippet/dropdown-list.el delete mode 100644 extensions/yasnippet/extras/imported/html-mode/.yas-setup.el delete mode 100644 extensions/yasnippet/extras/imported/rails-mode/.yas-setup.el delete mode 100644 extensions/yasnippet/extras/imported/ruby-mode/.yas-setup.el delete mode 100755 extensions/yasnippet/extras/textmate_import.rb delete mode 100644 extensions/yasnippet/snippets/c++-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/c++-mode/beginend delete mode 100644 extensions/yasnippet/snippets/c++-mode/class delete mode 100644 extensions/yasnippet/snippets/c++-mode/ns delete mode 100644 extensions/yasnippet/snippets/c++-mode/template delete mode 100644 extensions/yasnippet/snippets/c++-mode/using delete mode 100644 extensions/yasnippet/snippets/c-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/c-mode/fopen delete mode 100644 extensions/yasnippet/snippets/c-mode/printf delete mode 100644 extensions/yasnippet/snippets/cc-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/cc-mode/do delete mode 100644 extensions/yasnippet/snippets/cc-mode/for delete mode 100644 extensions/yasnippet/snippets/cc-mode/if delete mode 100644 extensions/yasnippet/snippets/cc-mode/inc delete mode 100644 extensions/yasnippet/snippets/cc-mode/inc.1 delete mode 100644 extensions/yasnippet/snippets/cc-mode/main delete mode 100644 extensions/yasnippet/snippets/cc-mode/once delete mode 100644 extensions/yasnippet/snippets/cc-mode/struct delete mode 100644 extensions/yasnippet/snippets/cperl-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/csharp-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/csharp-mode/attrib delete mode 100644 extensions/yasnippet/snippets/csharp-mode/attrib.1 delete mode 100644 extensions/yasnippet/snippets/csharp-mode/attrib.2 delete mode 100644 extensions/yasnippet/snippets/csharp-mode/class delete mode 100644 extensions/yasnippet/snippets/csharp-mode/comment delete mode 100644 extensions/yasnippet/snippets/csharp-mode/comment.1 delete mode 100644 extensions/yasnippet/snippets/csharp-mode/comment.2 delete mode 100644 extensions/yasnippet/snippets/csharp-mode/comment.3 delete mode 100644 extensions/yasnippet/snippets/csharp-mode/method delete mode 100644 extensions/yasnippet/snippets/csharp-mode/namespace delete mode 100644 extensions/yasnippet/snippets/csharp-mode/prop delete mode 100644 extensions/yasnippet/snippets/csharp-mode/region delete mode 100644 extensions/yasnippet/snippets/csharp-mode/using delete mode 100644 extensions/yasnippet/snippets/csharp-mode/using.1 delete mode 100644 extensions/yasnippet/snippets/csharp-mode/using.2 delete mode 100644 extensions/yasnippet/snippets/css-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/css-mode/bg delete mode 100644 extensions/yasnippet/snippets/css-mode/bg.1 delete mode 100644 extensions/yasnippet/snippets/css-mode/bor delete mode 100644 extensions/yasnippet/snippets/css-mode/cl delete mode 100644 extensions/yasnippet/snippets/css-mode/disp.block delete mode 100644 extensions/yasnippet/snippets/css-mode/disp.inline delete mode 100644 extensions/yasnippet/snippets/css-mode/disp.none delete mode 100644 extensions/yasnippet/snippets/css-mode/ff delete mode 100644 extensions/yasnippet/snippets/css-mode/fs delete mode 100644 extensions/yasnippet/snippets/css-mode/mar.bottom delete mode 100644 extensions/yasnippet/snippets/css-mode/mar.left delete mode 100644 extensions/yasnippet/snippets/css-mode/mar.mar delete mode 100644 extensions/yasnippet/snippets/css-mode/mar.margin delete mode 100644 extensions/yasnippet/snippets/css-mode/mar.right delete mode 100644 extensions/yasnippet/snippets/css-mode/mar.top delete mode 100644 extensions/yasnippet/snippets/css-mode/pad.bottom delete mode 100644 extensions/yasnippet/snippets/css-mode/pad.left delete mode 100644 extensions/yasnippet/snippets/css-mode/pad.pad delete mode 100644 extensions/yasnippet/snippets/css-mode/pad.padding delete mode 100644 extensions/yasnippet/snippets/css-mode/pad.right delete mode 100644 extensions/yasnippet/snippets/css-mode/pad.top delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/.read_me delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/defun delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/dired.process_marked delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/file.process delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/file.read-lines delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/find-replace delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/grabstring delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/grabthing delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/traverse_dir delete mode 100644 extensions/yasnippet/snippets/emacs-lisp-mode/word-or-region delete mode 100644 extensions/yasnippet/snippets/erlang-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/erlang-mode/after delete mode 100644 extensions/yasnippet/snippets/erlang-mode/begin delete mode 100644 extensions/yasnippet/snippets/erlang-mode/beh delete mode 100644 extensions/yasnippet/snippets/erlang-mode/case delete mode 100644 extensions/yasnippet/snippets/erlang-mode/compile delete mode 100644 extensions/yasnippet/snippets/erlang-mode/def delete mode 100644 extensions/yasnippet/snippets/erlang-mode/exp delete mode 100644 extensions/yasnippet/snippets/erlang-mode/fun delete mode 100644 extensions/yasnippet/snippets/erlang-mode/if delete mode 100644 extensions/yasnippet/snippets/erlang-mode/ifdef delete mode 100644 extensions/yasnippet/snippets/erlang-mode/ifndef delete mode 100644 extensions/yasnippet/snippets/erlang-mode/imp delete mode 100644 extensions/yasnippet/snippets/erlang-mode/inc delete mode 100644 extensions/yasnippet/snippets/erlang-mode/inc.lib delete mode 100644 extensions/yasnippet/snippets/erlang-mode/loop delete mode 100644 extensions/yasnippet/snippets/erlang-mode/mod delete mode 100644 extensions/yasnippet/snippets/erlang-mode/rcv delete mode 100644 extensions/yasnippet/snippets/erlang-mode/rcv.after delete mode 100644 extensions/yasnippet/snippets/erlang-mode/rec delete mode 100644 extensions/yasnippet/snippets/erlang-mode/try delete mode 100644 extensions/yasnippet/snippets/erlang-mode/undef delete mode 100644 extensions/yasnippet/snippets/f90-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/f90-mode/au delete mode 100644 extensions/yasnippet/snippets/f90-mode/bd delete mode 100644 extensions/yasnippet/snippets/f90-mode/c delete mode 100644 extensions/yasnippet/snippets/f90-mode/ch delete mode 100644 extensions/yasnippet/snippets/f90-mode/cx delete mode 100644 extensions/yasnippet/snippets/f90-mode/dc delete mode 100644 extensions/yasnippet/snippets/f90-mode/do delete mode 100644 extensions/yasnippet/snippets/f90-mode/dp delete mode 100644 extensions/yasnippet/snippets/f90-mode/eq delete mode 100644 extensions/yasnippet/snippets/f90-mode/ib delete mode 100644 extensions/yasnippet/snippets/f90-mode/ic delete mode 100644 extensions/yasnippet/snippets/f90-mode/ich delete mode 100644 extensions/yasnippet/snippets/f90-mode/if delete mode 100644 extensions/yasnippet/snippets/f90-mode/ii delete mode 100644 extensions/yasnippet/snippets/f90-mode/il delete mode 100644 extensions/yasnippet/snippets/f90-mode/in delete mode 100644 extensions/yasnippet/snippets/f90-mode/inc delete mode 100644 extensions/yasnippet/snippets/f90-mode/intr delete mode 100644 extensions/yasnippet/snippets/f90-mode/ir delete mode 100644 extensions/yasnippet/snippets/f90-mode/l delete mode 100644 extensions/yasnippet/snippets/f90-mode/pa delete mode 100644 extensions/yasnippet/snippets/f90-mode/pr delete mode 100644 extensions/yasnippet/snippets/f90-mode/re delete mode 100644 extensions/yasnippet/snippets/f90-mode/st delete mode 100644 extensions/yasnippet/snippets/f90-mode/su delete mode 100644 extensions/yasnippet/snippets/f90-mode/wr delete mode 100644 extensions/yasnippet/snippets/html-mode/.yas-make-groups delete mode 100644 extensions/yasnippet/snippets/html-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/html-mode/body delete mode 100644 extensions/yasnippet/snippets/html-mode/br delete mode 100644 extensions/yasnippet/snippets/html-mode/code delete mode 100644 extensions/yasnippet/snippets/html-mode/code.class delete mode 100644 extensions/yasnippet/snippets/html-mode/div delete mode 100644 extensions/yasnippet/snippets/html-mode/div.class delete mode 100644 extensions/yasnippet/snippets/html-mode/div.id delete mode 100644 extensions/yasnippet/snippets/html-mode/div.id-class delete mode 100644 extensions/yasnippet/snippets/html-mode/dov delete mode 100644 extensions/yasnippet/snippets/html-mode/form delete mode 100644 extensions/yasnippet/snippets/html-mode/head delete mode 100644 extensions/yasnippet/snippets/html-mode/header/h1 delete mode 100644 extensions/yasnippet/snippets/html-mode/header/h2 delete mode 100644 extensions/yasnippet/snippets/html-mode/header/h3 delete mode 100644 extensions/yasnippet/snippets/html-mode/header/h4 delete mode 100644 extensions/yasnippet/snippets/html-mode/header/h5 delete mode 100644 extensions/yasnippet/snippets/html-mode/header/h6 delete mode 100644 extensions/yasnippet/snippets/html-mode/hr delete mode 100644 extensions/yasnippet/snippets/html-mode/href delete mode 100644 extensions/yasnippet/snippets/html-mode/html delete mode 100644 extensions/yasnippet/snippets/html-mode/html.xmlns delete mode 100644 extensions/yasnippet/snippets/html-mode/img delete mode 100644 extensions/yasnippet/snippets/html-mode/input delete mode 100644 extensions/yasnippet/snippets/html-mode/link.stylesheet delete mode 100644 extensions/yasnippet/snippets/html-mode/link.stylesheet-ie delete mode 100644 extensions/yasnippet/snippets/html-mode/list/dd delete mode 100644 extensions/yasnippet/snippets/html-mode/list/dl delete mode 100644 extensions/yasnippet/snippets/html-mode/list/dl.id delete mode 100644 extensions/yasnippet/snippets/html-mode/list/dt delete mode 100644 extensions/yasnippet/snippets/html-mode/list/li delete mode 100644 extensions/yasnippet/snippets/html-mode/list/li.class delete mode 100644 extensions/yasnippet/snippets/html-mode/list/ol delete mode 100644 extensions/yasnippet/snippets/html-mode/list/ol.class delete mode 100644 extensions/yasnippet/snippets/html-mode/list/ol.id delete mode 100644 extensions/yasnippet/snippets/html-mode/list/ul delete mode 100644 extensions/yasnippet/snippets/html-mode/list/ul.class delete mode 100644 extensions/yasnippet/snippets/html-mode/list/ul.id delete mode 100644 extensions/yasnippet/snippets/html-mode/mailto delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/doctype delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/doctype.xhml1 delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1 delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/meta delete mode 100644 extensions/yasnippet/snippets/html-mode/meta/meta.http-equiv delete mode 100644 extensions/yasnippet/snippets/html-mode/p delete mode 100644 extensions/yasnippet/snippets/html-mode/pre delete mode 100644 extensions/yasnippet/snippets/html-mode/quote delete mode 100644 extensions/yasnippet/snippets/html-mode/script.javascript delete mode 100644 extensions/yasnippet/snippets/html-mode/script.javascript-src delete mode 100644 extensions/yasnippet/snippets/html-mode/span delete mode 100644 extensions/yasnippet/snippets/html-mode/span.class delete mode 100644 extensions/yasnippet/snippets/html-mode/span.id delete mode 100644 extensions/yasnippet/snippets/html-mode/style delete mode 100644 extensions/yasnippet/snippets/html-mode/table/table delete mode 100644 extensions/yasnippet/snippets/html-mode/table/td delete mode 100644 extensions/yasnippet/snippets/html-mode/table/th delete mode 100644 extensions/yasnippet/snippets/html-mode/table/tr delete mode 100644 extensions/yasnippet/snippets/html-mode/textarea delete mode 100644 extensions/yasnippet/snippets/html-mode/title delete mode 100644 extensions/yasnippet/snippets/latex-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/latex-mode/begin delete mode 100644 extensions/yasnippet/snippets/markdown-mode/+ delete mode 100644 extensions/yasnippet/snippets/markdown-mode/- delete mode 100644 extensions/yasnippet/snippets/markdown-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/markdown-mode/_ delete mode 100644 extensions/yasnippet/snippets/markdown-mode/__ delete mode 100644 extensions/yasnippet/snippets/markdown-mode/` delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h1.1 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h1.2 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h2.1 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h2.2 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h3 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h4 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h5 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/h6 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/hr.1 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/hr.2 delete mode 100644 extensions/yasnippet/snippets/markdown-mode/img delete mode 100644 extensions/yasnippet/snippets/markdown-mode/link delete mode 100644 extensions/yasnippet/snippets/markdown-mode/ol delete mode 100644 extensions/yasnippet/snippets/markdown-mode/rimg delete mode 100644 extensions/yasnippet/snippets/markdown-mode/rlb delete mode 100644 extensions/yasnippet/snippets/markdown-mode/rlink delete mode 100644 extensions/yasnippet/snippets/nxml-mode/.yas-make-groups delete mode 100644 extensions/yasnippet/snippets/nxml-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/nxml-mode/body delete mode 100644 extensions/yasnippet/snippets/nxml-mode/br delete mode 100644 extensions/yasnippet/snippets/nxml-mode/code delete mode 100644 extensions/yasnippet/snippets/nxml-mode/div delete mode 100644 extensions/yasnippet/snippets/nxml-mode/form delete mode 100644 extensions/yasnippet/snippets/nxml-mode/head delete mode 100644 extensions/yasnippet/snippets/nxml-mode/header/h1 delete mode 100644 extensions/yasnippet/snippets/nxml-mode/header/h2 delete mode 100644 extensions/yasnippet/snippets/nxml-mode/header/h3 delete mode 100644 extensions/yasnippet/snippets/nxml-mode/header/h4 delete mode 100644 extensions/yasnippet/snippets/nxml-mode/header/h5 delete mode 100644 extensions/yasnippet/snippets/nxml-mode/header/h6 delete mode 100644 extensions/yasnippet/snippets/nxml-mode/hr delete mode 100644 extensions/yasnippet/snippets/nxml-mode/href delete mode 100644 extensions/yasnippet/snippets/nxml-mode/html delete mode 100644 extensions/yasnippet/snippets/nxml-mode/img delete mode 100644 extensions/yasnippet/snippets/nxml-mode/input delete mode 100644 extensions/yasnippet/snippets/nxml-mode/li delete mode 100644 extensions/yasnippet/snippets/nxml-mode/link delete mode 100644 extensions/yasnippet/snippets/nxml-mode/meta/doctype delete mode 100644 extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict delete mode 100644 extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional delete mode 100644 extensions/yasnippet/snippets/nxml-mode/meta/meta delete mode 100644 extensions/yasnippet/snippets/nxml-mode/name delete mode 100644 extensions/yasnippet/snippets/nxml-mode/ol delete mode 100644 extensions/yasnippet/snippets/nxml-mode/p delete mode 100644 extensions/yasnippet/snippets/nxml-mode/pre delete mode 100644 extensions/yasnippet/snippets/nxml-mode/quote delete mode 100644 extensions/yasnippet/snippets/nxml-mode/span delete mode 100644 extensions/yasnippet/snippets/nxml-mode/style delete mode 100644 extensions/yasnippet/snippets/nxml-mode/table delete mode 100644 extensions/yasnippet/snippets/nxml-mode/tag.1l delete mode 100644 extensions/yasnippet/snippets/nxml-mode/tag.2l delete mode 100644 extensions/yasnippet/snippets/nxml-mode/td delete mode 100644 extensions/yasnippet/snippets/nxml-mode/th delete mode 100644 extensions/yasnippet/snippets/nxml-mode/title delete mode 100644 extensions/yasnippet/snippets/nxml-mode/tr delete mode 100644 extensions/yasnippet/snippets/nxml-mode/ul delete mode 100644 extensions/yasnippet/snippets/objc-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/objc-mode/prop delete mode 100644 extensions/yasnippet/snippets/perl-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/perl-mode/eval delete mode 100644 extensions/yasnippet/snippets/perl-mode/for delete mode 100644 extensions/yasnippet/snippets/perl-mode/fore delete mode 100644 extensions/yasnippet/snippets/perl-mode/if delete mode 100644 extensions/yasnippet/snippets/perl-mode/ife delete mode 100644 extensions/yasnippet/snippets/perl-mode/ifee delete mode 100644 extensions/yasnippet/snippets/perl-mode/sub delete mode 100644 extensions/yasnippet/snippets/perl-mode/unless delete mode 100644 extensions/yasnippet/snippets/perl-mode/while delete mode 100644 extensions/yasnippet/snippets/perl-mode/xfore delete mode 100644 extensions/yasnippet/snippets/perl-mode/xif delete mode 100644 extensions/yasnippet/snippets/perl-mode/xunless delete mode 100644 extensions/yasnippet/snippets/perl-mode/xwhile delete mode 100644 extensions/yasnippet/snippets/python-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/python-mode/__ delete mode 100644 extensions/yasnippet/snippets/python-mode/class delete mode 100644 extensions/yasnippet/snippets/python-mode/def delete mode 100644 extensions/yasnippet/snippets/python-mode/doc delete mode 100644 extensions/yasnippet/snippets/python-mode/for delete mode 100644 extensions/yasnippet/snippets/python-mode/from delete mode 100644 extensions/yasnippet/snippets/python-mode/ifmain delete mode 100644 extensions/yasnippet/snippets/python-mode/init delete mode 100644 extensions/yasnippet/snippets/python-mode/ipdb delete mode 100644 extensions/yasnippet/snippets/python-mode/param delete mode 100644 extensions/yasnippet/snippets/python-mode/pdb delete mode 100644 extensions/yasnippet/snippets/python-mode/prop delete mode 100644 extensions/yasnippet/snippets/python-mode/prop.fun delete mode 100644 extensions/yasnippet/snippets/python-mode/super delete mode 100644 extensions/yasnippet/snippets/python-mode/testcase delete mode 100644 extensions/yasnippet/snippets/python-mode/try.except delete mode 100644 extensions/yasnippet/snippets/python-mode/try.exceptelse delete mode 100644 extensions/yasnippet/snippets/python-mode/try.exceptelsefinally delete mode 100644 extensions/yasnippet/snippets/python-mode/try.exceptfinally delete mode 100644 extensions/yasnippet/snippets/python-mode/utf8 delete mode 100644 extensions/yasnippet/snippets/python-mode/while delete mode 100644 extensions/yasnippet/snippets/rst-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/rst-mode/chap delete mode 100644 extensions/yasnippet/snippets/rst-mode/sec delete mode 100644 extensions/yasnippet/snippets/rst-mode/tit delete mode 100644 extensions/yasnippet/snippets/ruby-mode/.yas-make-groups delete mode 100644 extensions/yasnippet/snippets/ruby-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/all delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/any delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/classify delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/collect delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/deli delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/det delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/ea delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/eac delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/eai delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/eav delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/eawi delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/inject delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/reject delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/select delete mode 100644 extensions/yasnippet/snippets/ruby-mode/collections/zip delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/forin delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/if delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/ife delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/tim delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/until delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/upt delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/when delete mode 100644 extensions/yasnippet/snippets/ruby-mode/control structure/while delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/Comp delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/am delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/cla delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/cls delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/mm delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/r delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/rw delete mode 100644 extensions/yasnippet/snippets/ruby-mode/definitions/w delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/# delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/=b delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/app delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/bm delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/case delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/dee delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/rb delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/req delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/rreq delete mode 100644 extensions/yasnippet/snippets/ruby-mode/general/y delete mode 100644 extensions/yasnippet/snippets/scala-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/scala-mode/act delete mode 100644 extensions/yasnippet/snippets/scala-mode/act.arg delete mode 100644 extensions/yasnippet/snippets/scala-mode/actor delete mode 100644 extensions/yasnippet/snippets/scala-mode/ano delete mode 100644 extensions/yasnippet/snippets/scala-mode/app delete mode 100644 extensions/yasnippet/snippets/scala-mode/arr.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/arr.val-new delete mode 100644 extensions/yasnippet/snippets/scala-mode/asof delete mode 100644 extensions/yasnippet/snippets/scala-mode/ass delete mode 100644 extensions/yasnippet/snippets/scala-mode/ass.true delete mode 100644 extensions/yasnippet/snippets/scala-mode/at.author delete mode 100644 extensions/yasnippet/snippets/scala-mode/at.param delete mode 100644 extensions/yasnippet/snippets/scala-mode/at.return delete mode 100644 extensions/yasnippet/snippets/scala-mode/at.version delete mode 100644 extensions/yasnippet/snippets/scala-mode/bang delete mode 100644 extensions/yasnippet/snippets/scala-mode/case delete mode 100644 extensions/yasnippet/snippets/scala-mode/case.match-all delete mode 100644 extensions/yasnippet/snippets/scala-mode/cast delete mode 100644 extensions/yasnippet/snippets/scala-mode/cc delete mode 100644 extensions/yasnippet/snippets/scala-mode/cl delete mode 100644 extensions/yasnippet/snippets/scala-mode/cl.abs delete mode 100644 extensions/yasnippet/snippets/scala-mode/cl.abs-arg delete mode 100644 extensions/yasnippet/snippets/scala-mode/cl.arg delete mode 100644 extensions/yasnippet/snippets/scala-mode/clof delete mode 100644 extensions/yasnippet/snippets/scala-mode/co delete mode 100644 extensions/yasnippet/snippets/scala-mode/cons delete mode 100644 extensions/yasnippet/snippets/scala-mode/cons.nil delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.arg delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.arg-body delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.arg-ret delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.arg-ret-body delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.body delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.ret delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.ret-body delete mode 100644 extensions/yasnippet/snippets/scala-mode/def.simple delete mode 100644 extensions/yasnippet/snippets/scala-mode/doc.class delete mode 100644 extensions/yasnippet/snippets/scala-mode/doc.def delete mode 100644 extensions/yasnippet/snippets/scala-mode/doc.file delete mode 100644 extensions/yasnippet/snippets/scala-mode/doc.file-scala delete mode 100644 extensions/yasnippet/snippets/scala-mode/doc.file-scala-api delete mode 100644 extensions/yasnippet/snippets/scala-mode/doc.scaladoc delete mode 100644 extensions/yasnippet/snippets/scala-mode/expect delete mode 100644 extensions/yasnippet/snippets/scala-mode/ext delete mode 100644 extensions/yasnippet/snippets/scala-mode/for.extract delete mode 100644 extensions/yasnippet/snippets/scala-mode/for.if delete mode 100644 extensions/yasnippet/snippets/scala-mode/for.loop delete mode 100644 extensions/yasnippet/snippets/scala-mode/for.multi delete mode 100644 extensions/yasnippet/snippets/scala-mode/foreach delete mode 100644 extensions/yasnippet/snippets/scala-mode/hmap.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/hmap.val-new delete mode 100644 extensions/yasnippet/snippets/scala-mode/hset.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/hset.val-new delete mode 100644 extensions/yasnippet/snippets/scala-mode/if delete mode 100644 extensions/yasnippet/snippets/scala-mode/if.else delete mode 100644 extensions/yasnippet/snippets/scala-mode/imp delete mode 100644 extensions/yasnippet/snippets/scala-mode/intercept delete mode 100644 extensions/yasnippet/snippets/scala-mode/isof delete mode 100644 extensions/yasnippet/snippets/scala-mode/ls.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/ls.val-new delete mode 100644 extensions/yasnippet/snippets/scala-mode/main delete mode 100644 extensions/yasnippet/snippets/scala-mode/map delete mode 100644 extensions/yasnippet/snippets/scala-mode/map.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/match delete mode 100644 extensions/yasnippet/snippets/scala-mode/match.can delete mode 100644 extensions/yasnippet/snippets/scala-mode/match.option delete mode 100644 extensions/yasnippet/snippets/scala-mode/mix delete mode 100644 extensions/yasnippet/snippets/scala-mode/ob delete mode 100644 extensions/yasnippet/snippets/scala-mode/pac delete mode 100644 extensions/yasnippet/snippets/scala-mode/pr.newline delete mode 100644 extensions/yasnippet/snippets/scala-mode/pr.simple delete mode 100644 extensions/yasnippet/snippets/scala-mode/pr.string delete mode 100644 extensions/yasnippet/snippets/scala-mode/pr.trace delete mode 100644 extensions/yasnippet/snippets/scala-mode/pri delete mode 100644 extensions/yasnippet/snippets/scala-mode/pri.param delete mode 100644 extensions/yasnippet/snippets/scala-mode/pro delete mode 100644 extensions/yasnippet/snippets/scala-mode/pro.param delete mode 100644 extensions/yasnippet/snippets/scala-mode/suite delete mode 100644 extensions/yasnippet/snippets/scala-mode/test delete mode 100644 extensions/yasnippet/snippets/scala-mode/throw delete mode 100644 extensions/yasnippet/snippets/scala-mode/tr delete mode 100644 extensions/yasnippet/snippets/scala-mode/tr.ext delete mode 100644 extensions/yasnippet/snippets/scala-mode/tr.ext-with delete mode 100644 extensions/yasnippet/snippets/scala-mode/tr.with delete mode 100644 extensions/yasnippet/snippets/scala-mode/try delete mode 100644 extensions/yasnippet/snippets/scala-mode/try.catch-finally delete mode 100644 extensions/yasnippet/snippets/scala-mode/try.finally delete mode 100644 extensions/yasnippet/snippets/scala-mode/tup.arrow delete mode 100644 extensions/yasnippet/snippets/scala-mode/tup.paren delete mode 100644 extensions/yasnippet/snippets/scala-mode/val delete mode 100644 extensions/yasnippet/snippets/scala-mode/val.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/val.ret delete mode 100644 extensions/yasnippet/snippets/scala-mode/var delete mode 100644 extensions/yasnippet/snippets/scala-mode/var.new delete mode 100644 extensions/yasnippet/snippets/scala-mode/var.ret delete mode 100644 extensions/yasnippet/snippets/scala-mode/whi delete mode 100644 extensions/yasnippet/snippets/scala-mode/with delete mode 100644 extensions/yasnippet/snippets/snippet-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/snippet-mode/field delete mode 100644 extensions/yasnippet/snippets/snippet-mode/mirror delete mode 100644 extensions/yasnippet/snippets/snippet-mode/vars delete mode 100644 extensions/yasnippet/snippets/sql-mode/.yas-parents delete mode 100644 extensions/yasnippet/snippets/sql-mode/column delete mode 100644 extensions/yasnippet/snippets/sql-mode/constraint delete mode 100644 extensions/yasnippet/snippets/sql-mode/constraint.1 delete mode 100644 extensions/yasnippet/snippets/sql-mode/create delete mode 100644 extensions/yasnippet/snippets/sql-mode/create.1 delete mode 100644 extensions/yasnippet/snippets/sql-mode/references delete mode 100644 extensions/yasnippet/snippets/text-mode/email delete mode 100644 extensions/yasnippet/snippets/text-mode/time delete mode 100644 extensions/yasnippet/yasnippet-debug.el delete mode 100644 extensions/yasnippet/yasnippet.el diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0ea2107 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "extensions/yasnippet"] + path = extensions/yasnippet + url = https://github.com/capitaomorte/yasnippet.git diff --git a/epy-editing.el b/epy-editing.el index fe70bd6..b8a2b09 100644 --- a/epy-editing.el +++ b/epy-editing.el @@ -1,4 +1,4 @@ -;; ibuffer by default +0;95;c;; ibuffer by default (global-set-key (kbd "C-x C-b") 'ibuffer) ;; Ido mode with fuzzy matching @@ -25,14 +25,12 @@ (defun epy-django-snippets () "Load django snippets" (interactive) - (yas/load-directory (concat epy-install-dir "snippets/django")) - ) + (add-to-list 'yas-snippet-dirs (concat epy-install-dir "snippets/django"))) - -(yas/initialize) -(yas/load-directory (concat epy-install-dir "extensions/yasnippet/snippets")) -(setq yas/prompt-functions '(yas/dropdown-prompt yas/ido-prompt yas/x-prompt)) -(setq yas/wrap-around-region 'cua) +(yas-global-mode 1) +(add-to-list 'yas-snippet-dirs (concat epy-install-dir "extensions/yasnippet/snippets")) +(setq yas-prompt-functions '(yas-dropdown-prompt yas-ido-prompt yas-x-prompt)) +(setq yas-wrap-around-region 'cua) ;; Eproject project management with emacs ;; (require 'eproject) diff --git a/extensions/yasnippet b/extensions/yasnippet new file mode 160000 index 0000000..be2f815 --- /dev/null +++ b/extensions/yasnippet @@ -0,0 +1 @@ +Subproject commit be2f815c43deb74e0f809ed47debc4aa2e67ea1e diff --git a/extensions/yasnippet/README b/extensions/yasnippet/README deleted file mode 100644 index e716140..0000000 --- a/extensions/yasnippet/README +++ /dev/null @@ -1,8 +0,0 @@ -YASnippet re-design and re-writing of my original extension -smart-snippet. The goal is ease of use and full features. - -For detailed document, you can either download the document -release of YASnippet or view it directly online: - -http://pluskid.lifegoo.com/upload/project/yasnippet/doc/index.html - diff --git a/extensions/yasnippet/Rakefile b/extensions/yasnippet/Rakefile deleted file mode 100644 index 7625d13..0000000 --- a/extensions/yasnippet/Rakefile +++ /dev/null @@ -1,79 +0,0 @@ -# -*- Ruby -*- - -require 'fileutils' - -def find_version - File.read("yasnippet.el") =~ /;; Package-version: *([0-9.]+[a-z]?) *$/ - $version = $1 -end -find_version -FileUtils.mkdir_p('pkg') - -desc "generate bundle file for classic snippets." -task :bundle do - sh 'emacs --batch -l yasnippet.el --eval "(yas/compile-bundle)"' - sh "tar czf pkg/yasnippet-bundle-#{$version}.el.tgz yasnippet-bundle.el" -end - -desc "generate bundle file for textmate snippets." -task :textmate_bundle do - sh 'emacs --batch -l yasnippet.el --eval "(yas/compile-textmate-bundle)"' - sh "tar czf pkg/yasnippet-textmate-bundle-#{$version}.el.tgz yasnippet-textmate-bundle.el" -end - -desc "convert some textmate bundles to yasnippets" -task :convert_bundles do - sh 'for bundle in html ruby rails; do ./extras/textmate_import.rb -d extras/bundles/$bundle-bundle -o extras/imported/$bundle-mode -q ; done' -end - -desc "create a release package" -task :package do - release_dir = "pkg/yasnippet-#{$version}" - FileUtils.mkdir_p(release_dir) - files = ['extras', 'snippets', 'yasnippet.el', 'dropdown-list.el'] - FileUtils.cp_r files, release_dir - FileUtils.rm_r Dir[release_dir + "/**/.svn"] - FileUtils.cd 'pkg' - sh "tar cjf yasnippet-#{$version}.tar.bz2 yasnippet-#{$version}" - FileUtils.cd ".." -end - -desc "create a release package and upload it to google code" -task :release => [:bundle, :package, 'doc:archive'] do - sh "googlecode_upload.py -s \"YASnippet Release #{$version}\"" + - " -p yasnippet -l \"Featured,Type-Package,OpSys-All\"" + - " pkg/yasnippet-#{$version}.tar.bz2" - sh "googlecode_upload.py -s \"YASnippet Bundle #{$version}\"" + - " -p yasnippet -l \"Featured,Type-Package,OpSys-All\"" + - " pkg/yasnippet-bundle-#{$version}.el.tgz" - sh "googlecode_upload.py -s \"YASnippet Document #{$version}\"" + - " -p yasnippet -l \"Featured,Type-Docs,OpSys-All\"" + - " pkg/yasnippet-doc-#{$version}.tar.bz2" - FileUtils.cp "yasnippet-bundle.el", "pkg/yasnippet-bundle-#{$version}.el" - sh "echo for ELPA | mutt -a pkg/yasnippet-bundle-#{$version}.el -s " + - "'YASnippet bundle v#{$version}' elpa@tromey.com" -end - -rule '.html' => '.rst' do |t| - sh "doc/compile-doc.py #{t.source} > #{t.name}" -end -desc "Generate document" -task :doc => FileList['doc/*.rst'].ext('html') - -namespace :doc do - task :archive do - release_dir = "pkg/yasnippet-#{$version}" - FileUtils.mkdir_p(release_dir) - sh "tar cjf pkg/yasnippet-doc-#{$version}.tar.bz2 " + - "--exclude=doc/.svn --exclude=doc/images/.svn doc/*.html doc/images" - end -end - -desc "Compile yasnippet.el into yasnippet.elc" - -rule '.elc' => '.el' do |t| - sh "emacs --batch -L . --eval \"(byte-compile-file \\\"#{t.source}\\\")\"" -end -task :compile => FileList["yasnippet.el", "dropdown-list.el"].ext('elc') - -task :default => :doc diff --git a/extensions/yasnippet/doc/changelog.html b/extensions/yasnippet/doc/changelog.html deleted file mode 100644 index 7a0f2c3..0000000 --- a/extensions/yasnippet/doc/changelog.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - - - -ChangeLog - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

-
-

0.6.1c / 2009-08-13

-
    -
  • Fixed issues 99, 98, 93, -90, 91, 88, 87. Thanks everybody.
  • -
  • More compliant customization group Issue94, (thanks -wyuenho).
  • -
  • Added workaround for issue 97 in the FAQ
  • -
  • Small updates to documentation.
  • -
-
-
-

0.6.1b / 2009-08-29

-
    -
  • Much more powerful menu. See The YASnippet menu.
  • -
  • New ways to organize snippets. See Organizing snippets.
  • -
  • Added yas/also-auto-indent-first-line customization variable.
  • -
  • Renamed directive # env: to # expand-env:
  • -
  • Rewrote much of the documentation.
  • -
  • Added TextMate import tool textmate-import.rb to to svn -repository (see "extras/")
  • -
  • Added experimental bundle of textmate snippets -yasnippet-textmate-bundle.el
  • -
  • Fixed Issue 74 (thanks -rmartin.k...@gmail.com)
  • -
  • Fixed Issues 80 through 84 (thanks -Moritz Bunkus)
  • -
  • Fixed many more issues...
  • -
-
-
-

0.6.0c / 2009-07-27

-
    -
  • Now byte compiles correctly with no warnings.
  • -
  • Fixed Issue 68 with -mouse-clicking alternatives in ido-mode.
  • -
  • Added yas/also-auto-indent-first-line customization variable.
  • -
-
-
-

0.6.0b / 2009-07-25

-
    -
  • Nested placeholders of the type <div${1: id="${2:someid}"}> $0.
  • -
  • More robust undo/redo support.
  • -
  • Stacked snippet expansion (snippet in snippet).
  • -
  • Transformation on a primary field with syntax ${1:default$(transform)}
  • -
  • Validations on field exit through the yas/verify-value -primary field transformation.
  • -
  • Wrapping the region in the exit marker $0 of the snippet. Use -yas/wrap-around-region.
  • -
  • Auto-indentation. Use yas/indent-line set to 'auto
  • -
  • Easier definition of snippets. Use yas/find-snippets or -yas/visit-snippet-file. In the new snippet-mode use -yas/load-snippet-buffer and yas/tryout-snippet.
  • -
  • Customization group yasnippet.
  • -
  • Overriding customization variables in snippets. Use the env: -let-form template keyword.
  • -
  • Fixed Issue 60
  • -
  • Fixed Issue 65
  • -
  • Fixed Issue 56
  • -
-
-
-

0.5.10 / 2009-02-11

-
    -
  • Added grouping support so that the snippets in the menu can be -groupped together.
  • -
  • Make the bundle ELPA -compatible.
  • -
-
-
-

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/extensions/yasnippet/doc/changelog.rst b/extensions/yasnippet/doc/changelog.rst deleted file mode 100644 index 3896fce..0000000 --- a/extensions/yasnippet/doc/changelog.rst +++ /dev/null @@ -1,319 +0,0 @@ -========= -ChangeLog -========= - -.. _Organizing Snippets: snippet-organization.html -.. _Expanding Snippets: snippet-expansion.html -.. _Writing Snippets: snippet-development.html -.. _The YASnippet Menu: snippet-menu.html - -0.6.1c / 2009-08-13 -=================== - -* Fixed `issues `_ 99, 98, 93, - 90, 91, 88, 87. Thanks everybody. -* More compliant customization group `Issue94 - `_, (thanks - wyuenho). -* Added workaround for issue 97 in the FAQ -* Small updates to documentation. - -0.6.1b / 2009-08-29 -=================== - -* Much more powerful menu. See `The YASnippet menu`_. -* New ways to organize snippets. See `Organizing snippets`_. -* Added ``yas/also-auto-indent-first-line`` customization variable. -* Renamed directive ``# env:`` to ``# expand-env:`` -* Rewrote much of the documentation. -* Added TextMate import tool ``textmate-import.rb`` to to svn - repository (see "extras/") -* Added *experimental* bundle of textmate snippets - ``yasnippet-textmate-bundle.el`` -* Fixed `Issue 74 - `_ (thanks - rmartin.k...@gmail.com) -* Fixed `Issues 80 through 84 - `_ (thanks - Moritz Bunkus) -* Fixed many more issues... - - -0.6.0c / 2009-07-27 -=================== - -* Now byte compiles correctly with no warnings. -* Fixed `Issue 68 - `_ with - mouse-clicking alternatives in ``ido-mode``. -* Added ``yas/also-auto-indent-first-line`` customization variable. - - -0.6.0b / 2009-07-25 -=================== - -* Nested placeholders of the type `` $0``. - -* More robust undo/redo support. - -* Stacked snippet expansion (*snippet in snippet*). - -* Transformation on a primary field with syntax ``${1:default$(transform)}`` - -* Validations on field exit through the ``yas/verify-value`` - primary field transformation. - -* Wrapping the region in the exit marker ``$0`` of the snippet. Use - ``yas/wrap-around-region``. - -* Auto-indentation. Use ``yas/indent-line`` set to ``'auto`` - -* Easier definition of snippets. Use ``yas/find-snippets`` or - ``yas/visit-snippet-file``. In the new ``snippet-mode`` use - ``yas/load-snippet-buffer`` and ``yas/tryout-snippet``. - -* Customization group ``yasnippet``. - -* Overriding customization variables in snippets. Use the ``env: - let-form`` template keyword. - -* Fixed `Issue 60 - `_ -* Fixed `Issue 65 - `_ -* Fixed `Issue 56 - `_ - -0.5.10 / 2009-02-11 -=================== - -* Added *grouping* support so that the snippets in the menu can be - groupped together. -* Make the bundle `ELPA `_ - compatible. - -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 ````. 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/extensions/yasnippet/doc/compile-doc.py b/extensions/yasnippet/doc/compile-doc.py deleted file mode 100755 index 2d325e7..0000000 --- a/extensions/yasnippet/doc/compile-doc.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/python -# Compile document to HTML use docutils. - -# ======================================== -# Pygments syntax highlighting -# ======================================== -from pygments.formatters import HtmlFormatter - -# Set to True if you want inline CSS styles instead of classes -INLINESTYLES = True - -from pygments.formatters import HtmlFormatter - -# The default formatter -DEFAULT = HtmlFormatter(noclasses=INLINESTYLES) - -# Add name -> formatter pairs for every variant you want to use -VARIANTS = { - # 'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True), -} - -from docutils import nodes -from docutils.parsers.rst import directives - -from pygments import highlight -from pygments.lexers import get_lexer_by_name, TextLexer - -def pygments_directive(name, arguments, options, content, lineno, - content_offset, block_text, state, state_machine): - try: - lexer = get_lexer_by_name(arguments[0]) - except ValueError: - # no lexer found - use the text one instead of an exception - lexer = TextLexer() - # take an arbitrary option if more than one is given - formatter = options and VARIANTS[options.keys()[0]] or DEFAULT - parsed = highlight(u'\n'.join(content), lexer, formatter) - return [nodes.raw('', parsed, format='html')] - -pygments_directive.arguments = (1, 0, 1) -pygments_directive.content = 1 -pygments_directive.options = dict([(key, directives.flag) for key in VARIANTS]) - -directives.register_directive('sourcecode', pygments_directive) - -# ================= -# Youtube embedding -# ================= - -from docutils import nodes -from docutils.parsers.rst import directives - -CODE = """\ - - - %(extra)s - -""" - -PARAM = """\n """ - -def youtube(name, args, options, content, lineno, - contentOffset, blockText, state, stateMachine): - """ Restructured text extension for inserting youtube embedded videos """ - if len(content) == 0: - return - string_vars = { - 'yid': content[0], - 'width': 425, - 'height': 344, - 'align': "right", - 'extra': '' - } - extra_args = content[1:] # Because content[0] is ID - extra_args = [ea.strip().split("=") for ea in extra_args] # key=value - extra_args = [ea for ea in extra_args if len(ea) == 2] # drop bad lines - extra_args = dict(extra_args) - if 'width' in extra_args: - string_vars['width'] = extra_args.pop('width') - if 'align' in extra_args: - string_vars['align'] = extra_args.pop('align') - if 'height' in extra_args: - string_vars['height'] = extra_args.pop('height') - if extra_args: - params = [PARAM % (key, extra_args[key]) for key in extra_args] - string_vars['extra'] = "".join(params) - return [nodes.raw('', CODE % (string_vars), format='html')] -youtube.content = True -directives.register_directive('youtube', youtube) - - -# ======================================== -# Command line processing -# ======================================== -from docutils.core import publish_cmdline, default_description - -description = ('Generates (X)HTML documents from standalone reStructuredText ' - 'sources. ' + default_description) -overrides = {'stylesheet_path' : 'styles.css', - 'embed_stylesheet' : False, - 'template' : 'doc/template.txt'} - -publish_cmdline(writer_name='html', - description=description, - settings_overrides=overrides) diff --git a/extensions/yasnippet/doc/define_snippet.html b/extensions/yasnippet/doc/define_snippet.html deleted file mode 100644 index 984d3db..0000000 --- a/extensions/yasnippet/doc/define_snippet.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - -Moved - - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

-

This page has been moved. Click here if your browser -does not automatically redirect you

-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/define_snippet.rst b/extensions/yasnippet/doc/define_snippet.rst deleted file mode 100644 index 9e312c3..0000000 --- a/extensions/yasnippet/doc/define_snippet.rst +++ /dev/null @@ -1,9 +0,0 @@ -===== -Moved -===== - -.. meta:: - :http-equiv=Refresh: 3; URL=index.html - -This page has been moved. Click `here `_ if your browser -does not automatically redirect you diff --git a/extensions/yasnippet/doc/faq.html b/extensions/yasnippet/doc/faq.html deleted file mode 100644 index b3ef304..0000000 --- a/extensions/yasnippet/doc/faq.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - -Frequently Asked Questions - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

-
-

Why is there 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 doesn't TAB expand a snippet?

-

First check the mode line to see if there's yas. If not, then try -M-x yas/minor-mode 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 .emacs before loading YASnippet:

-
(add-hook 'the-major-mode-hook 'yas/minor-mode-on)
-
-

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

-

From YASnippet 0.6 you can also use the command M-x -yas/global-mode to turn on YASnippet automatically for all major -modes.

-

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
-          (let ((original-command (lookup-key org-mode-map [tab])))
-            `(lambda ()
-               (setq yas/fallback-behavior
-                     '(apply ,original-command))
-               (local-set-key [tab] 'yas/expand))))
-
-

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

-

As an alternative, you can also try

-
(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"
-             function-symbol)
-           (let ((yas/fallback-behavior nil))
-             (unless (and (interactive-p)
-                          (yas/expand))
-               ad-do-it)))))
-
-(yas/advise-indent-function 'ruby-indent-line)
-
-

To advise the modes indentation function bound to TAB, (in this case -ruby-indent-line) to first try to run yas/expand.

-

If the output of C-h k RET <tab> tells you that <tab> is -indeed bound to yas/expand but YASnippet still doesn't work, check -your configuration and you may also ask for help on the discussion -group. See this -particular thread for -quite some solutions and alternatives.

-

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).

-
-
-

Why doesn't TAB navigation work with flyspell

-

A workaround is to inhibit flyspell overlays while the snippet is active:

-
(add-hook 'flyspell-incorrect-hook
-        #'(lambda (dummy1 dummy2 dymmy3)
-            (and yas/active-field-overlay
-                 (overlay-buffer yas/active-field-overlay))))
-
-

This is apparently related to overlay priorities. For some reason, the -keymap property of flyspell's overlays always takes priority over -the same property in yasnippet's overlays, even if one sets the -latter's priority property to something big. If you know -emacs-lisp and can solve this problem, drop a line in the discussion -group.

-
-
-

How do I turn off the minor mode where in some buffers

-

The best way, since version 0.6.1c, is to set the default value of the -variable yas/dont-activate to a lambda function like so:

-
(set-default 'yas/dont-activate
-           #'(lambda ()
-               (and yas/root-directory
-                    (null (yas/get-snippet-tables)))))
-
-

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.

-
-
-

How do I define an abbrev key containing characters not supported by the filesystem?

-
-
Note: This question applies if you're still defining snippets
-
whose key is the filename. This is behavior stil provided by -version 0.6 for backward compatibilty, but is somewhat deprecated...
-
-

For example, you want to define a snippet by the key < 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.

-

You should rather use the # key: directive to specify the key of -the defined snippet explicitly and name your snippet with an arbitrary -valid filename, lt.yasnippet for example, using < for the -# key: directive:

-
#key: <
-#name: <...></...>
-# --
-<${1:div}>$0</$1>
-
-
-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/faq.rst b/extensions/yasnippet/doc/faq.rst deleted file mode 100644 index ad1fa72..0000000 --- a/extensions/yasnippet/doc/faq.rst +++ /dev/null @@ -1,150 +0,0 @@ -============================ - Frequently Asked Questions -============================ - -Why is there 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 doesn't TAB expand a snippet? -================================= - -First check the mode line to see if there's ``yas``. If not, then try -``M-x yas/minor-mode`` 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 ``.emacs`` *before* loading YASnippet: - -.. sourcecode:: lisp - - (add-hook 'the-major-mode-hook 'yas/minor-mode-on) - -where ``the-major-mode`` is the major mode in which ``yas/minor-mode`` -isn't enabled by default. - -From YASnippet 0.6 you can also use the command ``M-x -yas/global-mode`` to turn on YASnippet automatically for *all* major -modes. - -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 `` runs the command -...``, note the difference between ``TAB`` and ```` where the -latter has priority. If you see ```` bound to a command other -than ``yas/expand``, (e.g. in ``org-mode``) you can try the following -code to work around: - -.. sourcecode:: lisp - - (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)))) - -replace ``org-mode-hook`` and ``org-mode-map`` with the major mode -hook you are dealing with (Use ``C-h m`` to see what major mode you -are in). - -As an alternative, you can also try - -.. sourcecode:: lisp - - (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" - function-symbol) - (let ((yas/fallback-behavior nil)) - (unless (and (interactive-p) - (yas/expand)) - ad-do-it))))) - - (yas/advise-indent-function 'ruby-indent-line) - -To *advise* the modes indentation function bound to TAB, (in this case -``ruby-indent-line``) to first try to run ``yas/expand``. - -If the output of ``C-h k RET `` tells you that ```` is -indeed bound to ``yas/expand`` but YASnippet still doesn't work, check -your configuration and you may also ask for help on the `discussion -group `_. See this -particular `thread -`_ for -quite some solutions and alternatives. - -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``). - -Why doesn't TAB navigation work with flyspell -============================================= - -A workaround is to inhibit flyspell overlays while the snippet is active: - -.. sourcecode:: lisp - - (add-hook 'flyspell-incorrect-hook - #'(lambda (dummy1 dummy2 dymmy3) - (and yas/active-field-overlay - (overlay-buffer yas/active-field-overlay)))) - -This is apparently related to overlay priorities. For some reason, the -``keymap`` property of flyspell's overlays always takes priority over -the same property in yasnippet's overlays, even if one sets the -latter's ``priority`` property to something big. If you know -emacs-lisp and can solve this problem, drop a line in the `discussion -group`_. - -How do I turn off the minor mode where in some buffers -====================================================== - -The best way, since version 0.6.1c, is to set the default value of the -variable ``yas/dont-activate`` to a lambda function like so: - -.. sourcecode:: lisp - - (set-default 'yas/dont-activate - #'(lambda () - (and yas/root-directory - (null (yas/get-snippet-tables))))) - -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. - - -How do I define an abbrev key containing characters not supported by the filesystem? -==================================================================================== - -**Note**: This question applies if you're still defining snippets - whose key *is* the filename. This is behavior stil provided by - version 0.6 for backward compatibilty, but is somewhat deprecated... - -For example, you want to define a snippet by the key ``<`` 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. - -You should rather use the ``# key:`` directive to specify the key of -the defined snippet explicitly and name your snippet with an arbitrary -valid filename, ``lt.yasnippet`` for example, using ``<`` for the -``# key:`` directive: - -.. sourcecode:: text - - #key: < - #name: <...> - # -- - <${1:div}>$0 - -.. _discussion group: http://groups.google.com/group/smart-snippet diff --git a/extensions/yasnippet/doc/html4css1.css b/extensions/yasnippet/doc/html4css1.css deleted file mode 100644 index bf10767..0000000 --- a/extensions/yasnippet/doc/html4css1.css +++ /dev/null @@ -1,279 +0,0 @@ -/* -:Author: David Goodger -:Contact: goodger@users.sourceforge.net -:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $ -:Revision: $Revision: 4224 $ -:Copyright: This stylesheet has been placed in the public domain. - -Default cascading style sheet for the HTML output of Docutils. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. -*/ - -/* used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0 } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 ! important } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 ! important } - -.last, .with-subtitle { - margin-bottom: 0 ! important } - -.hidden { - display: none } - -a.toc-backref { - text-decoration: none ; - color: black } - -blockquote.epigraph { - margin: 2em 5em ; } - -dl.docutils dd { - margin-bottom: 0.5em } - -/* Uncomment (and remove this text!) to get bold-faced definition list terms -dl.docutils dt { - font-weight: bold } -*/ - -div.abstract { - margin: 2em 5em } - -div.abstract p.topic-title { - font-weight: bold ; - text-align: center } - -div.admonition, div.attention, div.caution, div.danger, div.error, -div.hint, div.important, div.note, div.tip, div.warning { - margin: 2em ; - border: medium outset ; - padding: 1em } - -div.admonition p.admonition-title, div.hint p.admonition-title, -div.important p.admonition-title, div.note p.admonition-title, -div.tip p.admonition-title { - font-weight: bold ; - font-family: sans-serif } - -div.attention p.admonition-title, div.caution p.admonition-title, -div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title { - color: red ; - font-weight: bold ; - font-family: sans-serif } - -/* Uncomment (and remove this text!) to get reduced vertical space in - compound paragraphs. -div.compound .compound-first, div.compound .compound-middle { - margin-bottom: 0.5em } - -div.compound .compound-last, div.compound .compound-middle { - margin-top: 0.5em } -*/ - -div.dedication { - margin: 2em 5em ; - text-align: center ; - font-style: italic } - -div.dedication p.topic-title { - font-weight: bold ; - font-style: normal } - -div.figure { - margin-left: 2em ; - margin-right: 2em } - -div.footer, div.header { - clear: both; - font-size: smaller } - -div.line-block { - display: block ; - margin-top: 1em ; - margin-bottom: 1em } - -div.line-block div.line-block { - margin-top: 0 ; - margin-bottom: 0 ; - margin-left: 1.5em } - -div.sidebar { - margin-left: 1em ; - border: medium outset ; - padding: 1em ; - background-color: #ffffee ; - width: 40% ; - float: right ; - clear: right } - -div.sidebar p.rubric { - font-family: sans-serif ; - font-size: medium } - -div.system-messages { - margin: 5em } - -div.system-messages h1 { - color: red } - -div.system-message { - border: medium outset ; - padding: 1em } - -div.system-message p.system-message-title { - color: red ; - font-weight: bold } - -div.topic { - margin: 2em } - -h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, -h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { - margin-top: 0.4em } - -h1.title { - text-align: center } - -h2.subtitle { - text-align: center } - -hr.docutils { - width: 75% } - -img.align-left { - clear: left } - -img.align-right { - clear: right } - -ol.simple, ul.simple { - margin-bottom: 1em } - -ol.arabic { - list-style: decimal } - -ol.loweralpha { - list-style: lower-alpha } - -ol.upperalpha { - list-style: upper-alpha } - -ol.lowerroman { - list-style: lower-roman } - -ol.upperroman { - list-style: upper-roman } - -p.attribution { - text-align: right ; - margin-left: 50% } - -p.caption { - font-style: italic } - -p.credits { - font-style: italic ; - font-size: smaller } - -p.label { - white-space: nowrap } - -p.rubric { - font-weight: bold ; - font-size: larger ; - color: maroon ; - text-align: center } - -p.sidebar-title { - font-family: sans-serif ; - font-weight: bold ; - font-size: larger } - -p.sidebar-subtitle { - font-family: sans-serif ; - font-weight: bold } - -p.topic-title { - font-weight: bold } - -pre.address { - margin-bottom: 0 ; - margin-top: 0 ; - font-family: serif ; - font-size: 100% } - -pre.literal-block, pre.doctest-block { - margin-left: 2em ; - margin-right: 2em ; - background-color: #eeeeee } - -span.classifier { - font-family: sans-serif ; - font-style: oblique } - -span.classifier-delimiter { - font-family: sans-serif ; - font-weight: bold } - -span.interpreted { - font-family: sans-serif } - -span.option { - white-space: nowrap } - -span.pre { - white-space: pre } - -span.problematic { - color: red } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80% } - -table.citation { - border-left: solid 1px gray; - margin-left: 1px } - -table.docinfo { - margin: 2em 4em } - -table.docutils { - margin-top: 0.5em ; - margin-bottom: 0.5em } - -table.footnote { - border-left: solid 1px black; - margin-left: 1px } - -table.docutils td, table.docutils th, -table.docinfo td, table.docinfo th { - padding-left: 0.5em ; - padding-right: 0.5em ; - vertical-align: top } - -table.docutils th.field-name, table.docinfo th.docinfo-name { - font-weight: bold ; - text-align: left ; - white-space: nowrap ; - padding-left: 0 } - -h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, -h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { - font-size: 100% } - -tt.docutils { - background-color: #eeeeee } - -ul.auto-toc { - list-style-type: none } diff --git a/extensions/yasnippet/doc/images/bg-content-left.png b/extensions/yasnippet/doc/images/bg-content-left.png deleted file mode 100644 index a64b346e650cecd1fec5ccb082fbf14c757670ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3275 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 JPDHLkV1lz2WQG6$ diff --git a/extensions/yasnippet/doc/images/bg-content-right.png b/extensions/yasnippet/doc/images/bg-content-right.png deleted file mode 100644 index f07ebb5cdef30d8c8d942d07981d23c7edf6aef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3169 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 diff --git a/extensions/yasnippet/doc/images/bg-navigation-item.png b/extensions/yasnippet/doc/images/bg-navigation-item.png deleted file mode 100644 index d2452ac4f22e3e954c9a15b899a4cc75b0d73ce7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 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 diff --git a/extensions/yasnippet/doc/images/dropdown-menu.png b/extensions/yasnippet/doc/images/dropdown-menu.png deleted file mode 100644 index 57d482e5eefe37bc395efc5e8eec876aecd8fb33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31811 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

%qgCQ=hU!@RBw=Kn*nA$$q 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 diff --git a/extensions/yasnippet/doc/images/external.png b/extensions/yasnippet/doc/images/external.png deleted file mode 100644 index 419c06fb960b0b665791c90044a78621616a4cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2VGmzZ%#=aj&i3a$DxTeiKV?6WB%rpNP(#|lX z{f7XTR~%D;3fN16{DL7O3{u|AZa^UmPZ!4!iE!1^jzSC$EX7 z>#2$@InOtpuqyg8<+R}9g-+|v&13&5`dCp`{|95_8^+nQkC>(b&0z3!^>bP0l+XkK DO07OF diff --git a/extensions/yasnippet/doc/images/ido-menu.png b/extensions/yasnippet/doc/images/ido-menu.png deleted file mode 100644 index df392c5ce789c7dc93b017251876eeb8b7e416c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58102 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 diff --git a/extensions/yasnippet/doc/images/menu-2.png b/extensions/yasnippet/doc/images/menu-2.png deleted file mode 100644 index abb8a72f3080e174d2c957688686bbef9732aad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60421 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 diff --git a/extensions/yasnippet/doc/images/menu-parent.png b/extensions/yasnippet/doc/images/menu-parent.png deleted file mode 100644 index f0fa10c7da24d0772d8d841e57a28c3934b342f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73275 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⪻^ZG!} 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 P_+@Y7V12}DcKH7SP?Mql diff --git a/extensions/yasnippet/doc/images/minor-mode-indicator.png b/extensions/yasnippet/doc/images/minor-mode-indicator.png deleted file mode 100644 index 3743455982a397cd2f62ede024960abb8223d8eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5940 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 Y70J$jsDPptIM=4o(=ya7QMY^ge?1?&!vFvP diff --git a/extensions/yasnippet/doc/images/x-menu.png b/extensions/yasnippet/doc/images/x-menu.png deleted file mode 100644 index 3bc9a155fbb4ce668f733a80486c66828e512c5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34263 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 aTe7$LwIfFTK9pqmP`+?gAx-|)!~X|By=Ytj diff --git a/extensions/yasnippet/doc/index.html b/extensions/yasnippet/doc/index.html deleted file mode 100644 index 4f02a7e..0000000 --- a/extensions/yasnippet/doc/index.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - -Yet Another Snippet extension - - - -

-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

- -

YASnippet 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 -import -import most TextMate templates. YASnippet is a re-write of the -extension smart-snippet. Both are original creations of pluskid.

-
-

Video Demo

- - - - -

Watch the demo at YouTube (download a higher -resolution version: yasnippet.avi).

-
-
-

Installation

-

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.

-
-

Install with yasnippet-bundle.el

-
    -
  1. Download the latest yasnippet-bundle-x.y.z.el.tgz and unpack it.
  2. -
  3. You'll get a file named yasnippet-bundle.el, put it under -~/.emacs.d/plugins/ (create the directory if not exists).
  4. -
  5. Open the file in Emacs, and type Alt+x eval-buffer.
  6. -
-

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 trigger key then press TAB to expand it.

-

To have Emacs load YASnippet automatically when it starts, put the -following in your ~/.emacs file:

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

The youtube video -demonstrates this quick installation.

-
-
-

Normal Install

-

To install YASnippet as a normal emacs package, download and unpack -the latest yasnippet-x.y.z.tar.bz2. You'll get a directory named -yasnippet-x.y.z, which you can put it in your -~/.emacs.d/plugins and add the following in your .emacs file:

-
-
(add-to-list 'load-path
-              "~/.emacs.d/plugins/yasnippet-x.y.z")
-(require 'yasnippet) ;; not yasnippet-bundle
-(yas/initialize)
-(yas/load-directory "~/.emacs.d/plugins/yasnippet-x.y.z/snippets")
-
-
-

Please refer to the documentation for full customization, or use the -customization group.

-
-
-
-

How to use YASnippet

-

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.

-

Hence this section has been split into separate documents:

-
    -
  1. Organizing Snippets
  2. -
-
-Describes ways to organize your snippets in the hard disk (or not -organize them at all and just use yasnippet-bundle.el.
-
    -
  1. Expanding Snippets
  2. -
-
-

Describes how YASnippet chooses snippets for expansion at point.

-

Maybe, you'll want some snippets to be expanded in a particular -mode, or only under certain conditions, or be prompted using -ido, etc...

-
-
    -
  1. Writing Snippets
  2. -
-
-Describes the YASnippet definition syntax, which is very close (but -not equivalent) to Textmate's. Includes a section about converting -TextMate snippets.
-
    -
  1. The YASnippet menu
  2. -
-
-Explains how to use the YASnippet menu to explore, learn and modify -snippets.
-
-
-

Bugs, Contribution and Support

-
    -
  • If you find a bug, please report it at Issue List.
  • -
  • If you have problem using YASnippet, or have some new ideas, -including snippets, please post to the discussion group.
  • -
-

Thank you very much for using YASnippet!

- -
-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/index.rst b/extensions/yasnippet/doc/index.rst deleted file mode 100644 index 7415186..0000000 --- a/extensions/yasnippet/doc/index.rst +++ /dev/null @@ -1,133 +0,0 @@ -============================= -Yet Another Snippet extension -============================= - -.. _Organizing Snippets: snippet-organization.html -.. _Expanding Snippets: snippet-expansion.html -.. _Writing Snippets: snippet-development.html -.. _The YASnippet Menu: snippet-menu.html - -.. contents:: - -**YASnippet** 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 -`import `_ -import most TextMate templates. YASnippet is a re-write of the -extension `smart-snippet`_. Both are original creations of `pluskid -`_. - -.. _smart-snippet: http://code.google.com/p/smart-snippet/ - -Video Demo -========== - -.. youtube:: 76Ygeg9miao - :align: right - -Watch the `demo at YouTube -`_ (download a higher -resolution version: `yasnippet.avi -`_). - -Installation -============ - -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. - -Install with ``yasnippet-bundle.el`` ------------------------------------- - -1. Download the latest ``yasnippet-bundle-x.y.z.el.tgz`` and unpack it. -2. You'll get a file named ``yasnippet-bundle.el``, put it under - ``~/.emacs.d/plugins/`` (create the directory if not exists). -3. Open the file in Emacs, and type ``Alt+x eval-buffer``. - -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 *trigger key* then press ``TAB`` to expand it. - -To have Emacs load YASnippet automatically when it starts, put the -following in your ``~/.emacs`` file: - - .. sourcecode:: common-lisp - - (add-to-list 'load-path - "~/.emacs.d/plugins") - (require 'yasnippet-bundle) - -The `youtube video `_ -demonstrates this quick installation. - -Normal Install --------------- - -To install YASnippet as a normal emacs package, download and unpack -the latest ``yasnippet-x.y.z.tar.bz2``. You'll get a directory named -``yasnippet-x.y.z``, which you can put it in your -``~/.emacs.d/plugins`` and add the following in your ``.emacs`` file: - - .. sourcecode:: common-lisp - - (add-to-list 'load-path - "~/.emacs.d/plugins/yasnippet-x.y.z") - (require 'yasnippet) ;; not yasnippet-bundle - (yas/initialize) - (yas/load-directory "~/.emacs.d/plugins/yasnippet-x.y.z/snippets") - -Please refer to the documentation for full customization, or use the -customization group. - -How to use YASnippet -==================== - -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. - -Hence this section has been split into separate documents: - -1. `Organizing Snippets`_ - - Describes ways to organize your snippets in the hard disk (or not - organize them at all and just use ``yasnippet-bundle.el``. - -2. `Expanding Snippets`_ - - Describes how YASnippet chooses snippets for expansion at point. - - Maybe, you'll want some snippets to be expanded in a particular - mode, or only under certain conditions, or be prompted using - ``ido``, etc... - -3. `Writing Snippets`_ - - Describes the YASnippet definition syntax, which is very close (but - not equivalent) to Textmate's. Includes a section about converting - TextMate snippets. - -4. `The YASnippet menu`_ - - Explains how to use the YASnippet menu to explore, learn and modify - snippets. - -Bugs, Contribution and Support -============================== - -* If you find a bug, please report it at `Issue List - `_. -* If you have problem using YASnippet, or have some new ideas, - including snippets, please post to the `discussion group`_. - -.. _discussion group: http://groups.google.com/group/smart-snippet -.. _wish list: http://code.google.com/p/yasnippet/wiki/WishList - -Thank you very much for using YASnippet! - -.. LocalWords: YASnippet SQL LaTeX CSS yasnippet el eval html ido RET wiki diff --git a/extensions/yasnippet/doc/snippet-development.html b/extensions/yasnippet/doc/snippet-development.html deleted file mode 100644 index 6b55b4c..0000000 --- a/extensions/yasnippet/doc/snippet-development.html +++ /dev/null @@ -1,623 +0,0 @@ - - - - - - -Writing snippets - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

- -
-

Snippet development

-
-

Quickly finding snippets

-

There are some ways you can quickly find a snippet file:

-
    -
  • M-x yas/new-snippet

    -

    Prompts you for a snippet name, then tries to guess a suitable -directory to store it, prompting you for creation if it does not -exist. Finally, places you in a new buffer set to snippet-mode -so you can write your snippet.

    -
  • -
  • M-x yas/find-snippets

    -

    Lets you find the snippet file in the directory the snippet was -loaded from (if it exists) like find-file-other-window. The -directory searching logic is similar to M-x yas/new-snippet.

    -
  • -
  • M-x yas/visit-snippet-file

    -

    Prompts you for possible snippet expansions like -yas/insert-snippet, but instead of expanding it, takes you -directly to the snippet definition's file, if it exists.

    -
  • -
-

Once you find this file it will be set to snippet-mode (see ahead) -and you can start editing your snippet.

-
-
-

Using the snippet-mode major mode

-

There is a major mode snippet-mode to edit snippets. You can set -the buffer to this mode with M-x snippet-mode. It provides -reasonably useful syntax highlighting.

-

Two commands are defined in this mode:

-
    -
  • M-x yas/load-snippet-buffer

    -
    -

    When editing a snippet, this loads the snippet into the correct -mode and menu. Bound to C-c C-c by default while in -snippet-mode.

    -
    -
  • -
  • M-x yas/tryout-snippet

    -
    -

    When editing a snippet, this opens a new empty buffer, sets it to -the appropriate major mode and inserts the snippet there, so you -can see what it looks like. This is bound to C-c C-t while in -snippet-mode.

    -
    -
  • -
-

There are also snippets for writing snippets: vars, $f and -$m :-).

-
-
-
-

File content

-

A file defining a snippet generally contains the template to be -expanded.

-

Optionally, if the file contains a line of # --, the lines above -it count as comments, some of which can be directives (or meta -data). Snippet directives look like # property: value and tweak -certain snippets properties described below. If no # -- is found, -the whole file is considered the snippet template.

-

Here's a typical example:

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

Here's a list of currently supported directives:

-
-

# key: snippet abbrev

-

This is the probably the most important directive, it's the -abbreviation you type to expand a snippet just before hitting -yas/trigger-key.

-

If you don't specify this it will default to the name of the file the -snippet is being loaded from, unless YASnippet is ignoring file names -as triggers (see yas/ignore-filenames-as-triggers in Organizing -snippets), in which case this snippet -will not be expandable through the key mechanism.

-

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.

-
-
-

# name: snippet name

-

This is a one-line description of the snippet. It will be displayed in -the menu. It's a good idea to select a descriptive name for a -snippet -- especially distinguishable among similar snippets.

-

If you omit this name it will default to the file name the snippet was -loaded from.

-
-
-

# condition: snippet condition

-

This is a piece of Emacs-lisp code. If a snippet has a condition, then it -will only be expanded when the condition code evaluate to some non-nil -value.

-

See also yas/buffer-local-condition in Expanding snippets

-
-
-

# group: snippet menu grouping

-

When expanding/visiting snippets from the menu-bar menu, snippets for a -given mode can be grouped into sub-menus . This is useful if one has -too many snippets for a mode which will make the menu too -long.

-

The # group: property only affect menu construction (See the -YASnippet menu) and the same effect can be achieved by grouping -snippets into sub-directories and using the .yas-make-groups -special file (for this see Organizing Snippets

-

Refer to the bundled snippets for ruby-mode for examples on the -# group: directive. 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.

-
-
-

# expand-env: expand environment

-

This is another piece of Emacs-lisp code in the form of a let -varlist form, i.e. a list of lists assigning values to variables. It -can be used to override variable values while the snippet is being -expanded.

-

Interesting variables to override are yas/wrap-around-region and -yas/indent-line (see Expanding Snippets).

-

As an example, you might normally have yas/indent-line set to -'auto and yas/wrap-around-region set to t, but for this -particularly brilliant piece of ASCII art these values would mess up -your hard work. You can then use:

-
# name : ASCII home
-# expand-env: ((yas/indent-line 'fixed) (yas/wrap-around-region 'nil))
-# --
-                welcome to my
-            X      humble
-           / \      home,
-          /   \      $0
-         /     \
-        /-------\
-        |       |
-        |  +-+  |
-        |  | |  |
-        +--+-+--+
-
-
-
-

# binding: direct keybinding

-

You can use this directive to expand a snippet directly from a normal -Emacs keybinding. The keybinding will be registered in the Emacs -keymap named after the major mode the snippet is active -for.

-

Additionally a variable yas/prefix is set to to the prefix -argument you normally use for a command. This allows for small -variations on the same snippet, for example in this "html-mode" -snippet.

-
#name : <p>...</p>
-#binding: "C-c C-c C-m"
-# --
-<p>`(when yas/prefix "\n")`$0`(when yas/prefix "\n")`</p>
-
-

This binding will be recorded in the keymap html-mode-map. To -expand a paragraph tag newlines, just press "C-u C-c C-c -C-m". Omitting the "C-u" will expand the paragraph tag without -newlines.

-

To override the keymap choice based on the major mode name. Use a cons -cell where the first element specifies the name of the keymap where -you want to record the keybinding.

-
#name : <p>...</p>
-#binding: (rinari-minor-mode-map . "C-c C-c C-m")
-# --
-<p>`(when yas/prefix "\n")`$0`(when yas/prefix "\n")`</p>
-
-

Note: this feature is still experimental, it might go away, be -changed in future release, and should be used with caution: It is easy -to override important keybindings for many basic modes and it is hard -to undefine them. For the moment, the variable -yas/active-keybindings can tell you what snippet keybindings are -active and the function yas/kill-snippet-keybindings will attempt -to undefine all the keybindings.

-
-
-

# contributor: snippet author

-

This is optional and has no effect whatsoever on snippet -functionality, but it looks nice.

-
-
-
-

Template syntax

-

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 Emacs-lisp code

-

Emacs-Lisp code can be embedded inside the template, written inside -back-quotes (`). The lisp forms 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 */
-
-

From version 0.6, snippets expansions are run with some special -Emacs-lisp variables bound. One of this is yas/selected-text. You -can therefore define a snippet like:

-
for ($1;$2;$3) {
-  `yas/selected-text`$0
-}
-
-

to "wrap" the selected region inside your recently inserted -snippet. Alternatively, you can also customize the variable -yas/wrap-around-region to t which will do this automatically.

-
-
-

Tab stop fields

-

Tab stops are fields that you can navigate back and forth by TAB -and S-TAB. 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>
-
-
-
-

Placeholder fields

-

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.

-
-
-

Mirrors with transformations

-

If the value of an ${n:-construct starts with and contains $(, -then it is interpreted as a mirror for field n with a -transformation. The mirror's text content is calculated according to -this transformation, which is Emacs-lisp code that gets evaluated in -an environment where the variable text (or yas/text) is bound -to the text content (string) contained in the field n.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 mirror with -transformation instead of a field. The actual field 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 transformed 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
-
-
-
-

Fields with transformations

-

From version 0.6 on, you can also have lisp transformation inside -fields. These work mostly mirror transformations but are evaluated -when you first enter the field, after each change you make to the -field and also just before you exit the field.

-

The syntax is also a tiny bit different, so that the parser can -distinguish between fields and mirrors. In the following example

-
#define "${1:mydefine$(upcase yas/text)}"
-
-

mydefine gets automatically upcased to MYDEFINE once you enter -the field. As you type text, it gets filtered through the -transformation every time.

-

Note that to tell this kind of expression from a mirror with a -transformation, YASnippet needs extra text between the : and the -transformation's $. If you don't want this extra-text, you can use -two $'s instead.

-
#define "${1:$$(upcase yas/text)}"
-
-

Please note that as soon as a transformation takes place, it changes -the value of the field and sets it its internal modification state to -true. As a consequence, the auto-deletion behaviour of normal -fields does not take place. This is by design.

-
-
-

Choosing fields value from a list and other tricks

-

As mentioned, the field transformation is invoked just after you enter -the field, and with some useful variables bound, notably -yas/field-modified-p and yas/moving-away-p. Because of this -feature you can place a transformation in the primary field that lets -you select default values for it.

-

The yas/choose-value does this work for you. For example:

-
<div align="${2:$$(yas/choose-value '("right" "center" "left"))}">
-  $0
-</div>
-
-

See the definition of yas/choose-value to see how it was written -using the two variables.

-

Here's another use, for LaTeX-mode, which calls reftex-label just as -you enter snippet field 2. This one makes use of yas/modified-p -directly.

-
\section{${1:"Titel der Tour"}}%
-\index{$1}%
-\label{{2:"waiting for reftex-label call..."$(unless yas/modified-p (reftex-label nil 'dont-
-insert))}}%
-
-

The function yas/verify-value has another neat trick, and makes -use of yas/moving-away-p. Try it and see! Also, check out this -thread

-
-
-

Nested placeholder fields

-

From version 0.6 on, you can also have nested placeholders of the type:

-
<div${1: id="${2:some_id}"}>$0</div>
-
-

This allows you to choose if you want to give this div an id -attribute. If you tab forward after expanding it will let you change -"some_id" to whatever you like. Alternatively, you can just press -C-d (which executes yas/skip-and-clear-or-delete-char) and go -straight to the exit marker.

-

By the way, C-d will only clear the field if you cursor is at the -beginning of the field and it hasn't been changed yet. Otherwise, it -performs the normal Emacs delete-char command.

-
-
-
-

Customizable variables

-
-

yas/trigger-key

-

The key bound to yas/expand when function yas/minor-mode is -active.

-

Value is a string that is converted to the internal Emacs key -representation using read-kbd-macro.

-

Default value is "TAB".

-
-
-

yas/next-field-key

-

The key to navigate to next field when a snippet is active.

-

Value is a string that is converted to the internal Emacs key -representation using read-kbd-macro.

-

Can also be a list of keys.

-

Default value is "TAB".

-
-
-

yas/prev-field-key

-

The key to navigate to previous field when a snippet is active.

-

Value is a string that is converted to the internal Emacs key -representation using read-kbd-macro.

-

Can also be a list of keys.

-

Default value is ("<backtab>" "<S-tab>)".

-
-
-

yas/skip-and-clear-key

-

The key to clear the currently active field.

-

Value is a string that is converted to the internal Emacs key -representation using read-kbd-macro.

-

Can also be a list of keys.

-

Default value is "C-d".

-
-
-

yas/good-grace

-

If non-nil, don't raise errors in inline Emacs-lisp evaluation inside -snippet definitions. An error string "[yas] error" is returned instead.

-
-
-

yas/indent-line

-

The variable yas/indent-line controls the indenting. It is bound -to 'auto by default, which causes your snippet to be indented -according to the mode of the buffer it was inserted in.

-

Another variable yas/also-auto-indent-first-line, when non-nil -does exactly that :-).

-

To use the hard-coded indentation in your snippet template, set this -variable to fixed.

-

To control indentation on a per-snippet basis, see also the directive -# expand-env: in Writing Snippets.

-

For backward compatibility with earlier versions of YASnippet, you can -also place a $> in your snippet, an (indent-according-to-mode) -will be executed there to indent the line. This only takes effect when -yas/indent-line is set to something other than 'auto.

-
for (${int i = 0}; ${i < 10}; ${++i})
-{$>
-$0$>
-}$>
-
-
-
-

yas/wrap-around-region

-

If non-nil, YASnippet will try to expand the snippet's exit marker -around the currently selected region. When this variable is set to t, -this has the same effect has using the `yas/selected-text` inline -evaluation.

-

Because on most systems starting to type deletes the currently region, -this works mostly with the yas/insert-snippet command.

-

However, when the value is of this variable is cua YASnippet will -additionally look-up any recently selected that you deleted by starting -typing. This allows you select a region, type a snippet key (deleting -the region), then press yas/trigger-key to see the deleted region -spring back to life inside your new snippet.

-
-
-

yas/triggers-in-field

-

If non-nil, yas/next-field-key can trigger stacked expansions, -that is a snippet expansion inside another snippet -expansion. Otherwise, yas/next-field-key just tries to move on to -the next field.

-
-
-

yas/snippet-revival

-

Non-nil means re-activate snippet fields after undo/redo.

-
-
-

yas/after-exit-snippet-hook and yas/before-expand-snippet-hook

-

These hooks are called, respectively, before the insertion of a -snippet and after exiting the snippet. If you find any strange but -functional use for them, that's probably a design flaw in YASnippet, -so let us know.

-
-
-
-

Importing TextMate snippets

-

There are a couple of tools that take TextMate's ".tmSnippet" xml -files and create YASnippet definitions:

-
- -
-

In this section, i'll shortly cover the second option.

-

Download the textmate_import.rb tool and the TextMate -bundle you're interested in.

-
$ curl -O http://yasnippet.googlecode.com/svn/trunk/extras/textmate_import.rb
-$ svn export http://svn.textmate.org/trunk/Bundles/HTML.tmbundle/
-
-

Then invoke textmate_import.rb like this:

-
$ ./textmate_import.rb -d HTML.tmbundle/Snippets/ -o html-mode -g HTML.tmbundle/info.plist
-
-

You should end up with a html-mode subdir containing snippets -exported from textmate.

-
$ tree html-mode # to view dir contents, if you have 'tree' installed
-
-

The -g is optional but helps the tool figure out the grouping. -According to Organizing Snippets, don't forget to touch -.yas-make-groups and .yas-ignore-filename-triggers inside the -html-mode dir.

-

Also try textmate_import.rb --help for a list of options.

-

Please note that snippet importation is not yet perfect. You'll -probably have some adjustments to some/many snippets. Please -contribute these adjustments to the google group or, better yet, patch -the textmate_import.rb to automatically perform them and submit -that.

- - - -
-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/snippet-development.rst b/extensions/yasnippet/doc/snippet-development.rst deleted file mode 100644 index cf14e11..0000000 --- a/extensions/yasnippet/doc/snippet-development.rst +++ /dev/null @@ -1,660 +0,0 @@ -================ -Writing snippets -================ - -.. _Organizing Snippets: snippet-organization.html -.. _Expanding Snippets: snippet-expansion.html -.. _Writing Snippets: snippet-development.html -.. _The YASnippet Menu: snippet-menu.html - -.. contents:: - -Snippet development -=================== - -Quickly finding snippets ------------------------- - -There are some ways you can quickly find a snippet file: - -* ``M-x yas/new-snippet`` - - Prompts you for a snippet name, then tries to guess a suitable - directory to store it, prompting you for creation if it does not - exist. Finally, places you in a new buffer set to ``snippet-mode`` - so you can write your snippet. - -* ``M-x yas/find-snippets`` - - Lets you find the snippet file in the directory the snippet was - loaded from (if it exists) like ``find-file-other-window``. The - directory searching logic is similar to ``M-x yas/new-snippet``. - -* ``M-x yas/visit-snippet-file`` - - Prompts you for possible snippet expansions like - ``yas/insert-snippet``, but instead of expanding it, takes you - directly to the snippet definition's file, if it exists. - -Once you find this file it will be set to ``snippet-mode`` (see ahead) -and you can start editing your snippet. - - -Using the ``snippet-mode`` major mode -------------------------------------- - -There is a major mode ``snippet-mode`` to edit snippets. You can set -the buffer to this mode with ``M-x snippet-mode``. It provides -reasonably useful syntax highlighting. - -Two commands are defined in this mode: - -* ``M-x yas/load-snippet-buffer`` - - When editing a snippet, this loads the snippet into the correct - mode and menu. Bound to ``C-c C-c`` by default while in - ``snippet-mode``. - -* ``M-x yas/tryout-snippet`` - - When editing a snippet, this opens a new empty buffer, sets it to - the appropriate major mode and inserts the snippet there, so you - can see what it looks like. This is bound to ``C-c C-t`` while in - ``snippet-mode``. - -There are also *snippets for writing snippets*: ``vars``, ``$f`` and -``$m`` :-). - -File content -============ - -A file defining a snippet generally contains the template to be -expanded. - -Optionally, if the file contains a line of ``# --``, the lines above -it count as comments, some of which can be *directives* (or meta -data). Snippet directives look like ``# property: value`` and tweak -certain snippets properties described below. If no ``# --`` is found, -the whole file is considered the snippet template. - -Here's a typical example: - -.. sourcecode:: text - - #contributor : pluskid - #name : __...__ - # -- - __${init}__ - -Here's a list of currently supported directives: - -``# key:`` snippet abbrev --------------------------- - -This is the probably the most important directive, it's the -abbreviation you type to expand a snippet just before hitting -``yas/trigger-key``. - -If you don't specify this it will default to the name of the file the -snippet is being loaded from, unless YASnippet is ignoring file names -as triggers (see ``yas/ignore-filenames-as-triggers`` in `Organizing -snippets`_), in which case this snippet -will not be expandable through the key mechanism. - -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. - -``# name:`` snippet name ------------------------- - -This is a one-line description of the snippet. It will be displayed in -the menu. It's a good idea to select a descriptive name for a -snippet -- especially distinguishable among similar snippets. - -If you omit this name it will default to the file name the snippet was -loaded from. - -``# condition:`` snippet condition ----------------------------------- -This is a piece of Emacs-lisp code. If a snippet has a condition, then it -will only be expanded when the condition code evaluate to some non-nil -value. - -See also ``yas/buffer-local-condition`` in `Expanding snippets`_ - - -``# group:`` snippet menu grouping ----------------------------------- - -When expanding/visiting snippets from the menu-bar menu, snippets for a -given mode can be grouped into sub-menus . This is useful if one has -too many snippets for a mode which will make the menu too -long. - -The ``# group:`` property only affect menu construction (See `the -YASnippet menu`_) and the same effect can be achieved by grouping -snippets into sub-directories and using the ``.yas-make-groups`` -special file (for this see `Organizing Snippets`_ - - -Refer to the bundled snippets for ``ruby-mode`` for examples on the -``# group:`` directive. 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. - -``# expand-env:`` expand environment ------------------------------------- - -This is another piece of Emacs-lisp code in the form of a ``let`` -*varlist form*, i.e. a list of lists assigning values to variables. It -can be used to override variable values while the snippet is being -expanded. - -Interesting variables to override are ``yas/wrap-around-region`` and -``yas/indent-line`` (see `Expanding Snippets`_). - -As an example, you might normally have ``yas/indent-line`` set to -``'auto`` and ``yas/wrap-around-region`` set to ``t``, but for this -particularly brilliant piece of ASCII art these values would mess up -your hard work. You can then use: - -.. sourcecode:: text - - # name : ASCII home - # expand-env: ((yas/indent-line 'fixed) (yas/wrap-around-region 'nil)) - # -- - welcome to my - X humble - / \ home, - / \ $0 - / \ - /-------\ - | | - | +-+ | - | | | | - +--+-+--+ - -``# binding:`` direct keybinding ---------------------------------- - -You can use this directive to expand a snippet directly from a normal -Emacs keybinding. The keybinding will be registered in the Emacs -keymap named after the major mode the snippet is active -for. - -Additionally a variable ``yas/prefix`` is set to to the prefix -argument you normally use for a command. This allows for small -variations on the same snippet, for example in this "html-mode" -snippet. - -.. sourcecode:: text - - #name :

...

- #binding: "C-c C-c C-m" - # -- -

`(when yas/prefix "\n")`$0`(when yas/prefix "\n")`

- -This binding will be recorded in the keymap ``html-mode-map``. To -expand a paragraph tag newlines, just press "C-u C-c C-c -C-m". Omitting the "C-u" will expand the paragraph tag without -newlines. - -To override the keymap choice based on the major mode name. Use a cons -cell where the first element specifies the name of the keymap where -you want to record the keybinding. - -.. sourcecode:: text - - #name :

...

- #binding: (rinari-minor-mode-map . "C-c C-c C-m") - # -- -

`(when yas/prefix "\n")`$0`(when yas/prefix "\n")`

- -**Note**: this feature is still **experimental**, it might go away, be -changed in future release, and should be used with caution: It is easy -to override important keybindings for many basic modes and it is hard -to undefine them. For the moment, the variable -``yas/active-keybindings`` can tell you what snippet keybindings are -active and the function ``yas/kill-snippet-keybindings`` will attempt -to undefine all the keybindings. - -``# contributor:`` snippet author ---------------------------------------------------- - -This is optional and has no effect whatsoever on snippet -functionality, but it looks nice. - - -Template syntax -=============== - -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 Emacs-lisp code ------------------------- - -Emacs-Lisp code can be embedded inside the template, written inside -back-quotes (`````). The lisp forms 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: - -.. sourcecode:: text - - #ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_} - #define $1 - - $0 - - #endif /* $1 */ - -From version 0.6, snippets expansions are run with some special -Emacs-lisp variables bound. One of this is ``yas/selected-text``. You -can therefore define a snippet like: - -.. sourcecode:: text - - for ($1;$2;$3) { - `yas/selected-text`$0 - } - -to "wrap" the selected region inside your recently inserted -snippet. Alternatively, you can also customize the variable -``yas/wrap-around-region`` to ``t`` which will do this automatically. - -Tab stop fields ---------------- - -Tab stops are fields that you can navigate back and forth by ``TAB`` -and ``S-TAB``. 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: - -.. sourcecode:: text - - - $0 - - -Placeholder fields ------------------- - -Tab stops can have default values -- a.k.a placeholders. The syntax is -like this: - -.. sourcecode:: text - - ${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: - -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: - -.. sourcecode:: text - - \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: - -Mirrors with transformations ----------------------------- - -If the value of an ``${n:``-construct starts with and contains ``$(``, -then it is interpreted as a mirror for field ``n`` with a -transformation. The mirror's text content is calculated according to -this transformation, which is Emacs-lisp code that gets evaluated in -an environment where the variable ``text`` (or ``yas/text``) is bound -to the text content (string) contained in the field ``n``.Here's an -example for Objective-C: - -.. sourcecode:: text - - - (${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 mirror with -transformation instead of a field. The actual field 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 transformed 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 - -.. sourcecode:: text - - ===== - Title - ===== - -is a valid title but - -.. sourcecode:: text - - === - Title - === - -is not. Here's an snippet for rst title: - -.. sourcecode:: text - - ${1:$(make-string (string-width text) ?\=)} - ${1:Title} - ${1:$(make-string (string-width text) ?\=)} - - $0 - -Fields with transformations ---------------------------- - -From version 0.6 on, you can also have lisp transformation inside -fields. These work mostly mirror transformations but are evaluated -when you first enter the field, after each change you make to the -field and also just before you exit the field. - -The syntax is also a tiny bit different, so that the parser can -distinguish between fields and mirrors. In the following example - -.. sourcecode:: text - - #define "${1:mydefine$(upcase yas/text)}" - -``mydefine`` gets automatically upcased to ``MYDEFINE`` once you enter -the field. As you type text, it gets filtered through the -transformation every time. - -Note that to tell this kind of expression from a mirror with a -transformation, YASnippet needs extra text between the ``:`` and the -transformation's ``$``. If you don't want this extra-text, you can use -two ``$``'s instead. - -.. sourcecode:: text - - #define "${1:$$(upcase yas/text)}" - -Please note that as soon as a transformation takes place, it changes -the value of the field and sets it its internal modification state to -``true``. As a consequence, the auto-deletion behaviour of normal -fields does not take place. This is by design. - -Choosing fields value from a list and other tricks --------------------------------------------------- - -As mentioned, the field transformation is invoked just after you enter -the field, and with some useful variables bound, notably -``yas/field-modified-p`` and ``yas/moving-away-p``. Because of this -feature you can place a transformation in the primary field that lets -you select default values for it. - -The ``yas/choose-value`` does this work for you. For example: - -.. sourcecode:: text - -
- $0 -
- -See the definition of ``yas/choose-value`` to see how it was written -using the two variables. - -Here's another use, for LaTeX-mode, which calls reftex-label just as -you enter snippet field 2. This one makes use of ``yas/modified-p`` -directly. - -.. sourcecode:: text - - \section{${1:"Titel der Tour"}}% - \index{$1}% - \label{{2:"waiting for reftex-label call..."$(unless yas/modified-p (reftex-label nil 'dont- - insert))}}% - -The function ``yas/verify-value`` has another neat trick, and makes -use of ``yas/moving-away-p``. Try it and see! Also, check out this -`thread -`_ - -Nested placeholder fields -------------------------- - -From version 0.6 on, you can also have nested placeholders of the type: - -.. sourcecode:: text - - $0 - -This allows you to choose if you want to give this ``div`` an ``id`` -attribute. If you tab forward after expanding it will let you change -"some_id" to whatever you like. Alternatively, you can just press -``C-d`` (which executes ``yas/skip-and-clear-or-delete-char``) and go -straight to the exit marker. - -By the way, ``C-d`` will only clear the field if you cursor is at the -beginning of the field *and* it hasn't been changed yet. Otherwise, it -performs the normal Emacs ``delete-char`` command. - -Customizable variables -====================== - -``yas/trigger-key`` -------------------- - -The key bound to ``yas/expand`` when function ``yas/minor-mode`` is -active. - -Value is a string that is converted to the internal Emacs key -representation using ``read-kbd-macro``. - -Default value is ``"TAB"``. - -``yas/next-field-key`` ----------------------- - -The key to navigate to next field when a snippet is active. - -Value is a string that is converted to the internal Emacs key -representation using ``read-kbd-macro``. - -Can also be a list of keys. - -Default value is ``"TAB"``. - -``yas/prev-field-key`` ----------------------- - -The key to navigate to previous field when a snippet is active. - -Value is a string that is converted to the internal Emacs key -representation using ``read-kbd-macro``. - -Can also be a list of keys. - -Default value is ``("" ")"``. - -``yas/skip-and-clear-key`` --------------------------- - -The key to clear the currently active field. - -Value is a string that is converted to the internal Emacs key -representation using ``read-kbd-macro``. - -Can also be a list of keys. - -Default value is ``"C-d"``. - -``yas/good-grace`` ------------------- - -If non-nil, don't raise errors in inline Emacs-lisp evaluation inside -snippet definitions. An error string "[yas] error" is returned instead. - -``yas/indent-line`` -------------------- - -The variable ``yas/indent-line`` controls the indenting. It is bound -to ``'auto`` by default, which causes your snippet to be indented -according to the mode of the buffer it was inserted in. - -Another variable ``yas/also-auto-indent-first-line``, when non-nil -does exactly that :-). - -To use the hard-coded indentation in your snippet template, set this -variable to ``fixed``. - -To control indentation on a per-snippet basis, see also the directive -``# expand-env:`` in `Writing Snippets`_. - -For backward compatibility with earlier versions of YASnippet, you can -also place a ``$>`` in your snippet, an ``(indent-according-to-mode)`` -will be executed there to indent the line. This only takes effect when -``yas/indent-line`` is set to something other than ``'auto``. - -.. sourcecode:: text - - for (${int i = 0}; ${i < 10}; ${++i}) - {$> - $0$> - }$> - -``yas/wrap-around-region`` --------------------------- - -If non-nil, YASnippet will try to expand the snippet's exit marker -around the currently selected region. When this variable is set to t, -this has the same effect has using the ```yas/selected-text``` inline -evaluation. - -Because on most systems starting to type deletes the currently -selected region, this works mostly for snippets with direct -keybindings or with the ``yas/insert-snippet`` command. - -However, when the value is of this variable is ``cua`` YASnippet will -additionally look-up any recently selected that you deleted by starting -typing. This allows you select a region, type a snippet key (deleting -the region), then press ``yas/trigger-key`` to see the deleted region -spring back to life inside your new snippet. - -``yas/triggers-in-field`` --------------------------- - -If non-nil, ``yas/next-field-key`` can trigger stacked expansions, -that is a snippet expansion inside another snippet -expansion. Otherwise, ``yas/next-field-key`` just tries to move on to -the next field. - -``yas/snippet-revival`` ------------------------ - -Non-nil means re-activate snippet fields after undo/redo. - -``yas/after-exit-snippet-hook`` and ``yas/before-expand-snippet-hook`` ----------------------------------------------------------------------- - -These hooks are called, respectively, before the insertion of a -snippet and after exiting the snippet. If you find any strange but -functional use for them, that's probably a design flaw in YASnippet, -so let us know. - -Importing TextMate snippets -=========================== - -There are a couple of tools that take TextMate's ".tmSnippet" xml -files and create YASnippet definitions: - - * `a python script by Jeff Wheeler - `_ - - * a `ruby tool - `_ - , ``textmate_import.rb`` adapted from `Rob Christie's - `_, - which I have uploaded to the repository. - -In this section, i'll shortly cover the **second** option. - -Download the ``textmate_import.rb`` tool and the TextMate -bundle you're interested in. - -.. sourcecode:: text - - $ curl -O http://yasnippet.googlecode.com/svn/trunk/extras/textmate_import.rb - $ svn export http://svn.textmate.org/trunk/Bundles/HTML.tmbundle/ - - -Then invoke ``textmate_import.rb`` like this: - -.. sourcecode:: text - - $ ./textmate_import.rb -d HTML.tmbundle/Snippets/ -o html-mode -g HTML.tmbundle/info.plist - -You should end up with a ``html-mode`` subdir containing snippets -exported from textmate. - -.. sourcecode:: text - - $ tree html-mode # to view dir contents, if you have 'tree' installed - -The ``-g`` is optional but helps the tool figure out the grouping. -According to `Organizing Snippets`_, don't forget to touch -``.yas-make-groups`` and ``.yas-ignore-filename-triggers`` inside the -``html-mode`` dir. - -Also try ``textmate_import.rb --help`` for a list of options. - -Please note that snippet importation is not yet perfect. You'll -probably have some adjustments to some/many snippets. Please -contribute these adjustments to the google group or, better yet, patch -the ``textmate_import.rb`` to automatically perform them and submit -that. - -.. LocalWords: html YASnippet yas sourcecode pluskid init filenames filename -.. LocalWords: env varlist keybinding keymap rinari ifndef upcase endif -.. LocalWords: nondirectory autorelease aValue inline diff --git a/extensions/yasnippet/doc/snippet-expansion.html b/extensions/yasnippet/doc/snippet-expansion.html deleted file mode 100644 index 2f0256c..0000000 --- a/extensions/yasnippet/doc/snippet-expansion.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - -Expanding snippets - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

- -
-

Triggering expansion

-

You can use YASnippet to expand snippets in different ways:

-
    -
  • By typing an abbrev, the snippet trigger key, and then pressing -the key defined in yas/trigger-key (which defaults to -"TAB"). This works in buffers where the minor mode -yas/minor-mode is active;
  • -
  • By invoking the command yas/insert-snippet (either by typing -M-x yas/insert-snippet or its keybinding). This does not -require yas/minor-mode to be active.
  • -
  • By using the keybinding associated with an active snippet. This also -requires yas/minor-mode to be active;
  • -
  • By expanding directly from the "YASnippet" menu in the menu-bar
  • -
  • By using hippie-expand
  • -
  • Expanding from emacs-lisp code
  • -
-
-

Trigger key

-

When yas/minor-mode is enabled, the keybinding taken from -yas/trigger-key will take effect.

-

yas/trigger-key invokes yas/expand, which tries to expand a -snippet abbrev (also known as snippet key) before point.

-

The default key is "TAB", however, you can freely set it to some -other key.

-images/minor-mode-indicator.png -

To enable the YASnippet minor mode in all buffers globally use the -command yas/global-mode.

-

When you use yas/global-mode you can also selectively disable -YASnippet in some buffers by setting the buffer-local variable -yas/dont-active in the buffer's mode hook.

-

Trouble when using or understanding the yas/trigger-key is easily -the most controversial issue in YASsnippet. See the FAQ.

-
-

Fallback bahaviour

-

yas/fallback-behaviour is a customization variable bound to -'call-other-command by default. 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 bound 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.

-
-
-
-

Insert at point

-

The command M-x yas/insert-snippet lets you insert snippets at -point for you current major mode. It prompts you for the snippet -key first, and then for a snippet template if more than one template -exists for the same key.

-

The list presented contains the snippets that can be inserted at -point, according to the condition system. If you want to see all -applicable snippets for the major mode, prefix this command with -C-u.

-

The prompting methods used are again controlled by -yas/prompt-functions.

-
-
-

Snippet keybinding

-

See the section of the # binding: directive in Writing -Snippets.

-
- -
-

Expanding with hippie-expand

-

To integrate with hippie-expand, just put -yas/hippie-try-expand in -hippie-expand-try-functions-list. This probably makes more sense -when placed at the top of the list, but it can be put anywhere you -prefer.

-
-
-

Expanding from emacs-lisp code

-

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

-

As with expanding from the menubar, the condition system and multiple -candidates doesn't affect expansion. In fact, expanding from the -YASnippet menu has the same effect of evaluating the follow code:

-
(yas/expand-snippet template)
-
-

See the internal documentation on yas/expand-snippet for more -information.

-
-
-
-

Controlling expansion

-
-

Eligible snippets

-

YASnippet does quite a bit of filtering to find out which snippets are -eligible for expanding at the current cursor position.

-

In particular, the following things matter:

-
    -
  • Currently loaded snippets tables

    -

    These are loaded from a directory hierarchy in your file system. See -Organizing Snippets. They are named after major modes like -html-mode, ruby-mode, etc...

    -
  • -
  • Major mode of the current buffer

    -

    If the currrent major mode matches one of the loaded snippet tables, -then all that table's snippets are considered for expansion. Use -M-x describe-variable RET major-mode RET to find out which major -mode you are in currently.

    -
  • -
  • Parent tables

    -

    Snippet tables defined as the parent of some other eligible table -are also considered. This works recursively, i.e. parents of parents -of eligible tables are also considered.

    -
  • -
  • Buffer-local yas/mode-symbol variable

    -

    This can be used to consider snippet tables whose name does not -correspond to a major mode. If you set this variable to a name , -like rinari-minor-mode, you can have some snippets expand only -in that minor mode. Naturally, you want to set this conditionally, -i.e. only when entering that minor mode, so using a hook is a good -idea.

    -
  • -
-
;; When entering rinari-minor-mode, consider also the snippets in the
-;; snippet table "rails-mode"
-(add-hook 'rinari-minor-mode-hook
-          #'(lambda ()
-              (setq yas/mode-symbol 'rails-mode)))
-
-
    -
  • Buffer-local yas/buffer-local-condition variable

    -

    This variable provides finer grained control over what snippets can -be expanded in the current buffer. The default value won't let you -expand snippets inside comments or string literals for example. See -The condition system for more info.

    -
  • -
-
-
-

The condition system

-

Consider this scenario: you are an old Emacs hacker. You like the -abbrev-way and set yas/trigger-key to "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).

-

If you use the # condition : directive (see Writing Snippets) -you could 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 has a buffer local variable -yas/buffer-local-condition. You can set this variable to (not -(python-in-string/comment)) in python-mode-hook.

-

Then, what if you really want some particular snippet to expand even -inside a 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, no snippets will -be considered for expansion.
  • -
  • If it evaluates 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), then:
      -
    • Snippets having no # condition: directive won't be considered;
    • -
    • Snippets with conditions that evaluate to nil (or produce an -error) won't be considered;
    • -
    • If the snippet has a condition that evaluates 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 considered.
      • -
      -
    • -
    -
  • -
  • If it evaluates to the symbol always, all snippets are -considered for expansion, regardless of any conditions.
  • -
  • If it evaluate to t or some 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 considered.
    • -
    -
  • -
-

In the mentioned scenario, 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.

-
-
-

Multiples snippet with the same key

-

The rules outlined above can return more than -one snippet to be expanded at point.

-

When there are multiple candidates, YASnippet will let you select -one. The UI for selecting multiple candidate can be customized through -yas/prompt-functions , which defines your preferred methods of -being prompted for snippets.

-

You can customize it with M-x customize-variable RET -yas/prompt-functions RET. Alternatively you can put in your -emacs-file:

-
(setq yas/prompt-functions '(yas/x-prompt yas/dropdown-prompt))
-
-

Currently there are some alternatives solution with YASnippet.

-images/x-menu.png -
-

Use the X window system

-

The function yas/x-prompt can be used to show a popup menu for you -to select. This menu will be part of you native window system widget, -which means:

-
    -
  • It usually looks beautiful. E.g. when you compile Emacs with gtk -support, this menu will be rendered with your gtk theme.
  • -
  • Emacs have little control over it. E.g. you can't use C-n, -C-p to navigate.
  • -
  • This function can't be used when in a terminal.
  • -
-images/ido-menu.png -
-
-

Minibuffer prompting

-

You can use functions yas/completing-prompt for the classic emacs -completion method or yas/ido-prompt for a much nicer looking -method. The best way is to try it. This works in a terminal.

-images/dropdown-menu.png -
-
-

Use dropdown-menu.el

-

The function yas/dropdown-prompt can also be placed in the -yas/prompt-functions list.

-

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

-
-
-

Roll your own

-

See below for the documentation on variable yas/prompt-functions

-
-
-
-
-

Customizable Variables

-
-

yas/prompt-functions

-

You can write a function and add it to the yas/prompt-functions -list. These functions are called with the following arguments:

-
    -
  • PROMPT: A string to prompt the user;
  • -
  • CHOICES: A list of strings or objects;
  • -
  • optional DISPLAY-FN : A function. When applied to each of the -objects in CHOICES it will return a string;
  • -
-

The return value of any function you put here should be one of -the objects in CHOICES, properly formatted with DISPLAY-FN (if -that is passed).

-
    -
  • To signal that your particular style of prompting is unavailable at -the moment, you can also have the function return nil.
  • -
  • To signal that the user quit the prompting process, you can signal -quit with (signal 'quit "user quit!")
  • -
-
-
-

yas/fallback-behavior

-

How to act when yas/expand does not expand a snippet.

-
-
call-other-command means try to temporarily disable YASnippet and
-
call the next command bound to yas/trigger-key.
-
-

return-nil means return nil. (i.e. do nothing)

-

An entry (apply COMMAND . ARGS) means interactively call COMMAND, if -ARGS is non-nil, call COMMAND non-interactively with ARGS as -arguments.

-
-
-

yas/choose-keys-first

-

If non-nil, prompt for snippet key first, then for template.

-

Otherwise prompts for all possible snippet names.

-

This affects yas/insert-snippet and yas/visit-snippet-file.

-
-
-

yas/choose-tables-first

-

If non-nil, and multiple eligible snippet tables, prompts user for -tables first.

-

Otherwise, user chooses between the merging together of all -eligible tables.

-

This affects yas/insert-snippet, yas/visit-snippet-file

-
-
-

yas/key-syntaxes

-

The default searching strategy is quite powerful. For example, in -c-mode, bar, foo_bar, "#foo_bar" can all be recognized -as a snippet key. Furthermore, the searching is in that order. In -other words, if bar is found to be a key to some valid snippet, -then that snippet is expanded and replaces the bar. Snippets -pointed to by foo_bar and "#foobar won't be considered.

-

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 want to understand -how Emacs's syntax rules work...

-
-
-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/snippet-expansion.rst b/extensions/yasnippet/doc/snippet-expansion.rst deleted file mode 100644 index c251173..0000000 --- a/extensions/yasnippet/doc/snippet-expansion.rst +++ /dev/null @@ -1,406 +0,0 @@ -================== -Expanding snippets -================== - -.. _Organizing Snippets: snippet-organization.html -.. _Expanding Snippets: snippet-expansion.html -.. _Writing Snippets: snippet-development.html -.. _The YASnippet Menu: snippet-menu.html - -.. contents:: - - -Triggering expansion -==================== - -You can use YASnippet to expand snippets in different ways: - -* By typing an abbrev, the snippet *trigger key*, and then pressing - the key defined in ``yas/trigger-key`` (which defaults to - "TAB"). This works in buffers where the minor mode - ``yas/minor-mode`` is active; - -* By invoking the command ``yas/insert-snippet`` (either by typing - ``M-x yas/insert-snippet`` or its keybinding). This does *not* - require ``yas/minor-mode`` to be active. - -* By using the keybinding associated with an active snippet. This also - requires ``yas/minor-mode`` to be active; - -* By expanding directly from the "YASnippet" menu in the menu-bar - -* By using hippie-expand - -* Expanding from emacs-lisp code - -Trigger key ------------ - -When ``yas/minor-mode`` is enabled, the keybinding taken from -``yas/trigger-key`` will take effect. - -``yas/trigger-key`` invokes ``yas/expand``, which tries to expand a -*snippet abbrev* (also known as *snippet key*) before point. - -The default key is ``"TAB"``, however, you can freely set it to some -other key. - -.. image:: images/minor-mode-indicator.png - :align: left - -To enable the YASnippet minor mode in all buffers globally use the -command ``yas/global-mode``. - -When you use ``yas/global-mode`` you can also selectively disable -YASnippet in some buffers by setting the buffer-local variable -``yas/dont-active`` in the buffer's mode hook. - -Trouble when using or understanding the ``yas/trigger-key`` is easily -the most controversial issue in YASsnippet. See the `FAQ `_. - -Fallback bahaviour -~~~~~~~~~~~~~~~~~~ - -``yas/fallback-behaviour`` is a customization variable bound to -``'call-other-command`` by default. 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 bound 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. - -Insert at point ---------------- - -The command ``M-x yas/insert-snippet`` lets you insert snippets at -point *for you current major mode*. It prompts you for the snippet -key first, and then for a snippet template if more than one template -exists for the same key. - -The list presented contains the snippets that can be inserted at -point, according to the condition system. If you want to see all -applicable snippets for the major mode, prefix this command with -``C-u``. - -The prompting methods used are again controlled by -``yas/prompt-functions``. - -Snippet keybinding ------------------- - -See the section of the ``# binding:`` directive in `Writing -Snippets`_. - - -Expanding from the menu ------------------------ - -See `the YASnippet Menu`_. - -Expanding with ``hippie-expand`` ----------------------------------- - -To integrate with ``hippie-expand``, just put -``yas/hippie-try-expand`` in -``hippie-expand-try-functions-list``. This probably makes more sense -when placed at the top of the list, but it can be put anywhere you -prefer. - -Expanding from emacs-lisp code ------------------------------- - -Sometimes you might want to expand a snippet directly from you own -elisp code. You should call ``yas/expand-snippet`` instead of -``yas/expand`` in this case. - -As with expanding from the menubar, the condition system and multiple -candidates doesn't affect expansion. In fact, expanding from the -YASnippet menu has the same effect of evaluating the follow code: - -.. sourcecode:: common-lisp - - (yas/expand-snippet template) - -See the internal documentation on ``yas/expand-snippet`` for more -information. - -Controlling expansion -===================== - -Eligible snippets ------------------ - -YASnippet does quite a bit of filtering to find out which snippets are -eligible for expanding at the current cursor position. - -In particular, the following things matter: - -* Currently loaded snippets tables - - These are loaded from a directory hierarchy in your file system. See - `Organizing Snippets`_. They are named after major modes like - ``html-mode``, ``ruby-mode``, etc... - -* Major mode of the current buffer - - If the currrent major mode matches one of the loaded snippet tables, - then all that table's snippets are considered for expansion. Use - ``M-x describe-variable RET major-mode RET`` to find out which major - mode you are in currently. - -* Parent tables - - Snippet tables defined as the parent of some other eligible table - are also considered. This works recursively, i.e. parents of parents - of eligible tables are also considered. - -* Buffer-local ``yas/mode-symbol`` variable - - This can be used to consider snippet tables whose name does not - correspond to a major mode. If you set this variable to a name , - like ``rinari-minor-mode``, you can have some snippets expand only - in that minor mode. Naturally, you want to set this conditionally, - i.e. only when entering that minor mode, so using a hook is a good - idea. - -.. sourcecode:: common-lisp - - ;; When entering rinari-minor-mode, consider also the snippets in the - ;; snippet table "rails-mode" - (add-hook 'rinari-minor-mode-hook - #'(lambda () - (setq yas/mode-symbol 'rails-mode))) - -* Buffer-local ``yas/buffer-local-condition`` variable - - This variable provides finer grained control over what snippets can - be expanded in the current buffer. The default value won't let you - expand snippets inside comments or string literals for example. See - `The condition system`_ for more info. - -The condition system --------------------- - -Consider this scenario: you are an old Emacs hacker. You like the -abbrev-way and set ``yas/trigger-key`` to ``"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``). - -If you use the ``# condition :`` directive (see `Writing Snippets`_) -you could 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 has a buffer local variable -``yas/buffer-local-condition``. You can set this variable to ``(not -(python-in-string/comment))`` in ``python-mode-hook``. - -Then, what if you really want some particular snippet to expand even -inside a 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, no snippets will - be considered for expansion. - -* If it evaluates 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``), then: - - * Snippets having no ``# condition:`` directive won't be considered; - - * Snippets with conditions that evaluate to nil (or produce an - error) won't be considered; - - * If the snippet has a condition that evaluates 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 considered. - -* If it evaluates to the symbol ``always``, all snippets are - considered for expansion, regardless of any conditions. - -* If it evaluate to ``t`` or some 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 considered. - -In the mentioned scenario, set ``yas/buffer-local-condition`` like -this - -.. sourcecode:: common-lisp - - (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. - -Multiples snippet with the same key ------------------------------------ - -The rules outlined `above `_ can return more than -one snippet to be expanded at point. - -When there are multiple candidates, YASnippet will let you select -one. The UI for selecting multiple candidate can be customized through -``yas/prompt-functions`` , which defines your preferred methods of -being prompted for snippets. - -You can customize it with ``M-x customize-variable RET -yas/prompt-functions RET``. Alternatively you can put in your -emacs-file: - -.. sourcecode:: common-lisp - - (setq yas/prompt-functions '(yas/x-prompt yas/dropdown-prompt)) - -Currently there are some alternatives solution with YASnippet. - -.. image:: images/x-menu.png - :align: right - -Use the X window system -~~~~~~~~~~~~~~~~~~~~~~~ - -The function ``yas/x-prompt`` can be used to show a popup menu for you -to select. This menu will be part of you native window system widget, -which means: - -* It usually looks beautiful. E.g. when you compile Emacs with gtk - support, this menu will be rendered with your gtk theme. -* Emacs have little control over it. E.g. you can't use ``C-n``, - ``C-p`` to navigate. -* This function can't be used when in a terminal. - -.. image:: images/ido-menu.png - :align: right - -Minibuffer prompting -~~~~~~~~~~~~~~~~~~~~ - -You can use functions ``yas/completing-prompt`` for the classic emacs -completion method or ``yas/ido-prompt`` for a much nicer looking -method. The best way is to try it. This works in a terminal. - -.. image:: images/dropdown-menu.png - :align: right - -Use ``dropdown-menu.el`` -~~~~~~~~~~~~~~~~~~~~~~~~ - -The function ``yas/dropdown-prompt`` can also be placed in the -``yas/prompt-functions`` list. - -This works in both window system and terminal and is customizable, you -can use ``C-n``, ``C-p`` to navigate, ``q`` to quit and even press -``6`` as a shortcut to select the 6th candidate. - -Roll your own -~~~~~~~~~~~~~ - -See below for the documentation on variable ``yas/prompt-functions`` - -Customizable Variables -====================== - -``yas/prompt-functions`` ------------------------- - -You can write a function and add it to the ``yas/prompt-functions`` -list. These functions are called with the following arguments: - -* PROMPT: A string to prompt the user; - -* CHOICES: A list of strings or objects; - -* optional DISPLAY-FN : A function. When applied to each of the - objects in CHOICES it will return a string; - -The return value of any function you put here should be one of -the objects in CHOICES, properly formatted with DISPLAY-FN (if -that is passed). - -* To signal that your particular style of prompting is unavailable at - the moment, you can also have the function return nil. - -* To signal that the user quit the prompting process, you can signal - ``quit`` with ``(signal 'quit "user quit!")`` - -``yas/fallback-behavior`` -------------------------- - -How to act when ``yas/expand`` does *not* expand a snippet. - -``call-other-command`` means try to temporarily disable YASnippet and - call the next command bound to ``yas/trigger-key``. - -``return-nil`` means return nil. (i.e. do nothing) - -An entry (apply COMMAND . ARGS) means interactively call COMMAND, if -ARGS is non-nil, call COMMAND non-interactively with ARGS as -arguments. - -``yas/choose-keys-first`` -------------------------- - -If non-nil, prompt for snippet key first, then for template. - -Otherwise prompts for all possible snippet names. - -This affects ``yas/insert-snippet`` and ``yas/visit-snippet-file``. - -``yas/choose-tables-first`` ---------------------------- - -If non-nil, and multiple eligible snippet tables, prompts user for -tables first. - -Otherwise, user chooses between the merging together of all -eligible tables. - -This affects ``yas/insert-snippet``, ``yas/visit-snippet-file`` - -``yas/key-syntaxes`` --------------------- - -The default searching strategy is quite powerful. For example, in -``c-mode``, ``bar``, ``foo_bar``, ``"#foo_bar"`` can all be recognized -as a snippet key. Furthermore, the searching is in that order. In -other words, if ``bar`` is found to be a key to some *valid* snippet, -then that snippet is expanded and replaces the ``bar``. Snippets -pointed to by ``foo_bar`` and ``"#foobar`` won't be considered. - -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 want to understand -how Emacs's syntax rules work... - - diff --git a/extensions/yasnippet/doc/snippet-menu.html b/extensions/yasnippet/doc/snippet-menu.html deleted file mode 100644 index ad9811b..0000000 --- a/extensions/yasnippet/doc/snippet-menu.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - -YASnippet menu - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

- -

When yas/minor-mode is active, YASnippet will setup a menu just -after the "Buffers" menu in the menubar.

-

In this menu, you can find

-
    -
  • The currently loaded snippet definitions, organized by major mode, -and optional grouping.
  • -
  • A rundown of the most common commands, (followed by their -keybindings) including commands to load directories and reload all -snippet definitions.
  • -
  • A series of submenus for customizing and exploring YASnippet -behavior.
  • -
-images/menu-1.png -
-

Loading snippets from menu

-

Invoking "Load snippets..." from the menu invokes -yas/load-directory and prompts you for a snippet directory -hierarchy to load.

-

Also useful is the "Reload all" options which uncondionally reloads -all the snippets directories defined in yas/root-directory and -rebuilds the menus.

-
-
-

Snippet menu behavior

-

YASnippet will list in this section all the loaded snippet definitions -organized by snippet table name.

-

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.

-

You can however, customize variable yas/visit-from-menu to be -t which will take you to the snippet definition file when you -select it from the menu.

-

If you want the menu show only snippet tables whose name corresponds -to a "real" major mode. You do this by setting yas/use-menu to -'real-modes.

-

Finally, to have the menu show only the tables for the currently -active mode, set yas/use-menu to abbreviate.

-

These customizations can also be found in the menu itself, under the -"Snippet menu behavior" submenu.

-
-
-

Controlling indenting

-

The "Indenting" submenu contains options to control the values of -yas/indent-line and yas/also-auto-indent-first-line. See -Writing snippets .

-
-
-

Prompting method

-

The "Prompting method" submenu contains options to control the value -of yas/prompt-functions. See Expanding snippets .

-
-
-

Misc

-

The "Misc" submenu contains options to control the values of more -variables.

-
-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/snippet-menu.rst b/extensions/yasnippet/doc/snippet-menu.rst deleted file mode 100644 index a40c5a8..0000000 --- a/extensions/yasnippet/doc/snippet-menu.rst +++ /dev/null @@ -1,85 +0,0 @@ -============== -YASnippet menu -============== - -.. contents:: - -When ``yas/minor-mode`` is active, YASnippet will setup a menu just -after the "Buffers" menu in the menubar. - -In this menu, you can find - -* The currently loaded snippet definitions, organized by major mode, - and optional grouping. - -* A rundown of the most common commands, (followed by their - keybindings) including commands to load directories and reload all - snippet definitions. - -* A series of submenus for customizing and exploring YASnippet - behavior. - -.. image:: images/menu-1.png - :align: right - -Loading snippets from menu --------------------------- - -Invoking "Load snippets..." from the menu invokes -``yas/load-directory`` and prompts you for a snippet directory -hierarchy to load. - -Also useful is the "Reload all" options which uncondionally reloads -all the snippets directories defined in ``yas/root-directory`` and -rebuilds the menus. - -Snippet menu behavior ---------------------- - -YASnippet will list in this section all the loaded snippet definitions -organized by snippet table name. - -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. - -You can however, customize variable ``yas/visit-from-menu`` to be -``t`` which will take you to the snippet definition file when you -select it from the menu. - -If you want the menu show only snippet tables whose name corresponds -to a "real" major mode. You do this by setting ``yas/use-menu`` to -``'real-modes``. - -Finally, to have the menu show only the tables for the currently -active mode, set ``yas/use-menu`` to ``abbreviate``. - -These customizations can also be found in the menu itself, under the -"Snippet menu behavior" submenu. - - -Controlling indenting ---------------------- - -The "Indenting" submenu contains options to control the values of -``yas/indent-line`` and ``yas/also-auto-indent-first-line``. See -`Writing snippets `_ . - -Prompting method ----------------- - -The "Prompting method" submenu contains options to control the value -of ``yas/prompt-functions``. See `Expanding snippets `_ . - -Misc ----- - -The "Misc" submenu contains options to control the values of more -variables. - - - - - - - diff --git a/extensions/yasnippet/doc/snippet-organization.html b/extensions/yasnippet/doc/snippet-organization.html deleted file mode 100644 index efb3a2e..0000000 --- a/extensions/yasnippet/doc/snippet-organization.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Organizing snippets - - - -
-
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

- -
-

Loading snippets

-

Snippet definitions are stored in files in the filesystem. Unless you -use the simpler bundle version), these -are arranged so that YASnippet can load them into snippet -tables. The triggering mechanisms (see Expanding snippets) will -look up these snippet tables and (hopefully) expand the snippet you -intended.

-

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.

-

Once these directories are in place reference them in the variable -yas/root-directory and load them with yas/load-directory:

-
;; Develop and keep personal snippets under ~/emacs.d/mysnippets
-(setq yas/root-directory "~/emacs.d/mysnippets")
-
-;; Load the snippets
-(yas/load-directory yas/root-directory)
-
-

The point in using yas/root-directory (as opposed to calling -yas/load-directory directly) is considering "~/emacs.d/mysnippets" -for snippet development, so you can use commands like -yas/new-snippet and others described in section Writing -Snippets.

-

You can make this variable a list and store more items into it:

-
;; Develop in ~/emacs.d/mysnippets, but also
-;; try out snippets in ~/Downloads/interesting-snippets
-(setq yas/root-directory '("~/emacs.d/mysnippets"
-                           "~/Downloads/interesting-snippets"))
-
-;; Map `yas/load-directory' to every element
-(mapc 'yas/load-directory yas/root-directory)
-
-

In this last example, the all the directories are loaded and their -snippets considered for expansion. However development still happens -in the first element, "~/emacs.d/mysnippets".

-
-
-

Organizing snippets

-

Once you've setup yas/root-directory , you can store snippets -inside sub-directories of these directories.

-

Snippet definitions are put in plain text files. They are arranged by -sub-directories, and the snippet tables are named after these directories.

-

The name corresponds to the Emacs mode where you want expansion to -take place. For example, snippets for c-mode are put in the -c-mode sub-directory. You can also skip snippet storage altogether -and use the bundle (see YASnippet bundle).

-
-

Nested organization

-

Here is an excerpt of a directory hierarchy containing snippets -for some modes:

-
$ tree
-.
-`-- text-mode
-    |-- cc-mode
-    |   |-- c-mode
-    |   |   `-- printf
-    |   |-- for
-    |   |-- java-mode
-    |   |   `-- println
-    |   `-- while
-    |-- email
-    |-- perl-mode
-    |   |-- cperl-mode
-    |   `-- for
-    `-- time
-
-

A parent directory acts as a parent table of any of its -sub-directories. This is one of the ways different Emacs major modes -can share snippet definitions. As you can see above, c-mode and -java-mode share the same parent cc-mode and its while -snipepts, while all modes are share the time snippet from -text-mode.

-

This can be also used to as an alias -- cperl-mode is an empty -directory whose parent is perl-mode.

-images/menu-parent.png -
-
-

The .yas-parents file

-

An alternate (and preferred) way of setting up parent tables consists -of placing a plain text file .yas-parents inside one of the -sub-directories. By doing this, you avoid complex directory -nesting. In the .yas-parents file you just write -whitespace-separated names of modes. This allows more flexibility and -readability of your snippet hierarchy.

-
$ tree
-.
-|-- c-mode
-|   |-- .yas-parents    # contains "cc-mode text-mode"
-|   `-- printf
-|-- cc-mode
-|   |-- for
-|   `-- while
-|-- java-mode
-|   |-- .yas-parents    # contains "cc-mode text-mode"
-|   `-- println
-`-- text-mode
-    |-- email
-    `-- time
-
-
-
-

The .yas-make-groups file

-images/menu-groups.png -

If you place an empty plain text file .yas-make-groups inside one -of the mode directories, the names of these sub-directories are -considered groups of snippets and The YASnippet Menu is organized -much more cleanly, as you can see in the image.

-

Another alternative way to achieve this is to place a # group: -directive inside the snippet definition. See Writing Snippets.

-
$ tree ruby-mode/
-ruby-mode/
-|-- .yas-make-groups
-|-- collections
-|   |-- each
-|   `-- ...
-|-- control structure
-|   |-- forin
-|   `-- ...
-|-- definitions
-|   `-- ...
-`-- general
-    `-- ...
-
-
-
-

Using plain file names

-

Normally, file names act as the snippet expansion abbreviation (also -known as the snippet key or snippet trigger, see Expanding -Snippets).

-

However, if you customize the variable -yas/ignore-filenames-as-triggers to be true or place an empty -file .yas-ignore-filename-triggers you can use much more -descriptive file names. This is useful if many snippets within a mode -share the same trigger key.

-
$ tree rails-mode/
-rails-mode/
-|-- .yas-make-groups
-|-- .yas-ignore-filename-triggers
-|-- Insert ERb's <% __ %> or <%= __ %>.yasnippet
-|-- asserts
-|   |-- assert(var = assigns(%3Avar)).yasnippet
-|   |-- assert_difference.yasnippet
-|   |-- assert_no_difference.yasnippet
-|   |-- assert_redirected_to (nested path plural).yasnippet
-|   |-- assert_redirected_to (nested path).yasnippet
-|   |-- assert_redirected_to (path plural).yasnippet
-|   |-- assert_redirected_to (path).yasnippet
-|   |-- assert_rjs.yasnippet
-|   `-- assert_select.yasnippet
-
-
-
-
-

YASnippet bundle

-

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 start-up speed if you have many -snippets. You can use yas/define-snippets to define a bunch of -snippets for a particular mode in an Emacs-lisp file.

-

Since this is hard to maintain, there's a better way: define your -snippets in directory and then call M-x 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 uses yas/define-snippets to -define snippets. This avoids the IO and parsing overhead when loading -snippets.

-

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.

-

See the internal documentation for these functions

-
    -
  • M-x describe-function RET yas/define-snippets RET
  • -
  • M-x describe-function RET yas/compile-bundle RET.
  • -
-
-
-

Customizable variables

-
-

yas/root-directory

-

Root directory that stores the snippets for each major mode.

-

If you set this from your .emacs, can also be a list of strings, -for multiple root directories. If you make this a list, the first -element is always the user-created snippets directory. Other -directories are used for bulk reloading of all snippets using -yas/reload-all

-
-
-

yas/ignore-filenames-as-triggers

-

If non-nil, don't derive tab triggers from filenames.

-

This means a snippet without a # key: directive wont have a tab -trigger.

- - - -
-
-
-
-
-
-
-
- - -
- - diff --git a/extensions/yasnippet/doc/snippet-organization.rst b/extensions/yasnippet/doc/snippet-organization.rst deleted file mode 100644 index dc7018c..0000000 --- a/extensions/yasnippet/doc/snippet-organization.rst +++ /dev/null @@ -1,253 +0,0 @@ -=================== -Organizing snippets -=================== - -.. _Organizing Snippets: snippet-organization.html -.. _Expanding Snippets: snippet-expansion.html -.. _Writing Snippets: snippet-development.html -.. _The YASnippet Menu: snippet-menu.html - -.. contents:: - -Loading snippets -================ - -Snippet definitions are stored in files in the filesystem. Unless you -use the simpler `bundle version `_), these -are arranged so that YASnippet can load them into *snippet -tables*. The triggering mechanisms (see `Expanding snippets`_) will -look up these snippet tables and (hopefully) expand the snippet you -intended. - -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. - -Once these directories are in place reference them in the variable -``yas/root-directory`` and load them with ``yas/load-directory``: - -.. sourcecode:: common-lisp - - ;; Develop and keep personal snippets under ~/emacs.d/mysnippets - (setq yas/root-directory "~/emacs.d/mysnippets") - - ;; Load the snippets - (yas/load-directory yas/root-directory) - -The point in using ``yas/root-directory`` (as opposed to calling -``yas/load-directory`` directly) is considering "~/emacs.d/mysnippets" -for snippet development, so you can use commands like -``yas/new-snippet`` and others described in section `Writing -Snippets`_. - -You can make this variable a list and store more items into it: - -.. sourcecode:: common-lisp - - ;; Develop in ~/emacs.d/mysnippets, but also - ;; try out snippets in ~/Downloads/interesting-snippets - (setq yas/root-directory '("~/emacs.d/mysnippets" - "~/Downloads/interesting-snippets")) - - ;; Map `yas/load-directory' to every element - (mapc 'yas/load-directory yas/root-directory) - -In this last example, the all the directories are loaded and their -snippets considered for expansion. However development still happens -in the first element, "~/emacs.d/mysnippets". - -Organizing snippets -=================== - -Once you've setup ``yas/root-directory`` , you can store snippets -inside sub-directories of these directories. - -Snippet definitions are put in plain text files. They are arranged by -sub-directories, and the snippet tables are named after these directories. - -The name corresponds to the Emacs mode where you want expansion to -take place. For example, snippets for ``c-mode`` are put in the -``c-mode`` sub-directory. You can also skip snippet storage altogether -and use the bundle (see `YASnippet bundle`_). - -Nested organization -------------------- - -Here is an excerpt of a directory hierarchy containing snippets -for some modes: - -.. sourcecode:: text - - $ tree - . - `-- text-mode - |-- cc-mode - | |-- c-mode - | | `-- printf - | |-- for - | |-- java-mode - | | `-- println - | `-- while - |-- email - |-- perl-mode - | |-- cperl-mode - | `-- for - `-- time - -A parent directory acts as a *parent table* of any of its -sub-directories. This is one of the ways different Emacs major modes -can share snippet definitions. As you can see above, ``c-mode`` and -``java-mode`` share the same parent ``cc-mode`` and its ``while`` -snipepts, while all modes are share the ``time`` snippet from -``text-mode``. - -This can be also used to as an *alias* -- ``cperl-mode`` is an empty -directory whose parent is ``perl-mode``. - -.. image:: images/menu-parent.png - :align: right - -The ``.yas-parents`` file ------------------------------- - -An alternate (and preferred) way of setting up parent tables consists -of placing a plain text file ``.yas-parents`` inside one of the -sub-directories. By doing this, you avoid complex directory -nesting. In the ``.yas-parents`` file you just write -whitespace-separated names of modes. This allows more flexibility and -readability of your snippet hierarchy. - -.. sourcecode:: text - - $ tree - . - |-- c-mode - | |-- .yas-parents # contains "cc-mode text-mode" - | `-- printf - |-- cc-mode - | |-- for - | `-- while - |-- java-mode - | |-- .yas-parents # contains "cc-mode text-mode" - | `-- println - `-- text-mode - |-- email - `-- time - -The ``.yas-make-groups`` file ------------------------------ - -.. image:: images/menu-groups.png - :align: right - -If you place an empty plain text file ``.yas-make-groups`` inside one -of the mode directories, the names of these sub-directories are -considered groups of snippets and `The YASnippet Menu`_ is organized -much more cleanly, as you can see in the image. - -Another alternative way to achieve this is to place a ``# group:`` -directive inside the snippet definition. See `Writing Snippets`_. - -.. sourcecode:: text - - $ tree ruby-mode/ - ruby-mode/ - |-- .yas-make-groups - |-- collections - | |-- each - | `-- ... - |-- control structure - | |-- forin - | `-- ... - |-- definitions - | `-- ... - `-- general - `-- ... - - -Using plain file names ----------------------- - -Normally, file names act as the snippet expansion *abbreviation* (also -known as the *snippet key* or *snippet trigger*, see `Expanding -Snippets`_). - -However, if you customize the variable -``yas/ignore-filenames-as-triggers`` to be true *or* place an empty -file ``.yas-ignore-filename-triggers`` you can use much more -descriptive file names. This is useful if many snippets within a mode -share the same trigger key. - -.. sourcecode:: text - - $ tree rails-mode/ - rails-mode/ - |-- .yas-make-groups - |-- .yas-ignore-filename-triggers - |-- Insert ERb's <% __ %> or <%= __ %>.yasnippet - |-- asserts - | |-- assert(var = assigns(%3Avar)).yasnippet - | |-- assert_difference.yasnippet - | |-- assert_no_difference.yasnippet - | |-- assert_redirected_to (nested path plural).yasnippet - | |-- assert_redirected_to (nested path).yasnippet - | |-- assert_redirected_to (path plural).yasnippet - | |-- assert_redirected_to (path).yasnippet - | |-- assert_rjs.yasnippet - | `-- assert_select.yasnippet - - -YASnippet bundle -================ - -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 start-up speed if you have many -snippets. You can use ``yas/define-snippets`` to define a bunch of -snippets for a particular mode in an Emacs-lisp file. - -Since this is hard to maintain, there's a better way: define your -snippets in directory and then call ``M-x 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 uses ``yas/define-snippets`` to -define snippets. This avoids the IO and parsing overhead when loading -snippets. - -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. - -See the internal documentation for these functions - -* ``M-x describe-function RET yas/define-snippets RET`` -* ``M-x describe-function RET yas/compile-bundle RET``. - -Customizable variables -====================== - -``yas/root-directory`` ----------------------- - -Root directory that stores the snippets for each major mode. - -If you set this from your .emacs, can also be a list of strings, -for multiple root directories. If you make this a list, the first -element is always the user-created snippets directory. Other -directories are used for bulk reloading of all snippets using -``yas/reload-all`` - -``yas/ignore-filenames-as-triggers`` ------------------------------------- - -If non-nil, don't derive tab triggers from filenames. - -This means a snippet without a ``# key:`` directive wont have a tab -trigger. - -.. LocalWords: html YASnippet filesystem yas sourcecode setq mapc printf perl -.. LocalWords: println cperl forin filenames filename ERb's yasnippet Avar el -.. LocalWords: rjs RET diff --git a/extensions/yasnippet/doc/styles.css b/extensions/yasnippet/doc/styles.css deleted file mode 100644 index e0afa09..0000000 --- a/extensions/yasnippet/doc/styles.css +++ /dev/null @@ -1,142 +0,0 @@ -/* Base stylesheet from Docutils distribution */ -@import url(html4css1.css); - -/* Theme stylesheet */ -body { - background: #EDF5FA; - margin: 0; - padding: 0; -} -.clear-block { - display: block; -} -#header-region { - background: #D2E6F3 url(images/bg-navigation.png) repeat-x scroll 50% 100%;; - min-height: 1em; -} -#wrapper { - background: #EDF5FA url(images/body.png) repeat-x scroll 50% 0pt; -} -#container { - margin: 0pt auto; - padding: 0pt 20px; -} -#header { - height: 80px; -} -#sidebar-left { - float: left; - margin: 60px 0pt 5em; - position: relative; - width: 210px; - z-index: 2; -} -#center #squeeze { - background: #FFFFFF url(images/bg-content.png) repeat-x scroll 50% 0pt; - position: relative; -} -#center .right-corner { - background: transparent url(images/bg-content-right.png) no-repeat scroll 100% 0pt; - left: 10px; - position: relative; -} -#center .left-corner { - background: transparent url(images/bg-content-left.png) no-repeat scroll 0pt 0pt; - left: -10px; - margin-left: -10px; - min-height: 400px; - padding: 60px 25px 5em 35px; - position: relative; -} -ul.primary-links { - float: right; - margin: 0px; - padding: 0px; - position: relative; - z-index: 4; -} -ul.primary-links li { - list-style-type: none; - float: left; - margin: 0px; - font-size: 0.8em; - padding: 0px; -} -ul.primary-links li a { - background: transparent url(images/bg-navigation-item.png) no-repeat scroll 50% 0pt; - color: #FFFFFF; - display: block; - margin: 0pt 1em; - padding: 0.75em 0pt 0pt; -} -ul.primary-links li a:hover { - background: transparent url(images/bg-navigation-item-hover.png) no-repeat scroll 50% 0pt; -} -#logo-floater { - position: absolute; - color: #FFFFFF; - height: 80px; - font-weight: normal; - text-shadow: #1659AC 0px 1px 3px; -} -#logo-floater h1 { - margin-top: 25px; - margin-left: 10px; - font-family: Georgia, Serif; -} - -/* Contents stylesheet */ -body { - font-family: Georgia, Serif; -} -#contents { - margin-right: 0; - width: 340px; - overflow: hidden; - float: right; -} -#contents p.topic-title { - margin: 0 0 0 18px; -} -#contents ul.simple { - margin: 5px 0 5px 5px; - padding: 2px 0 8px 30px; - border-left: 1px solid #E0E5FB; -} -a { - color: #027AC6; - text-decoration: none; -} -a:hover { - color: #0062A0; - text-decoration: underline; -} -a.toc-backref:hover { - color: #000000; -} -a.external { - padding-right: 13px; - background: transparent url(images/external.png) no-repeat scroll right center; -} - -tt.docutils { - background-color: #EAFFEA; - font-family: Monaco, Consolas, Courier New, Monospace; -} - -div.highlight { - margin: 5px 40px 5px 15px; - overflow: auto; - padding: 0; - background: #F7F7F7; - border: 1px solid #E0E5FB; -} -div.highlight pre { - margin: 8px 15px 8px 15px; - font-family: Monaco, Consolas, Courier New, Monospace; - font-size: 0.9em; - line-height: 1.2em; -} -img { - margin: 8px; -} \ No newline at end of file diff --git a/extensions/yasnippet/doc/template.txt b/extensions/yasnippet/doc/template.txt deleted file mode 100644 index e01d73d..0000000 --- a/extensions/yasnippet/doc/template.txt +++ /dev/null @@ -1,67 +0,0 @@ -%(head_prefix)s -%(head)s -%(stylesheet)s -%(body_prefix)s -
-
-
- -
-
-
-
-

- Important: This documentation applies to - the SVN trunk of YASnippet, which you - get here. Documentation - for other versions can be found here. -

- %(body)s -
-
-
-
-
-
- - -%(body_suffix)s diff --git a/extensions/yasnippet/dropdown-list.el b/extensions/yasnippet/dropdown-list.el deleted file mode 100644 index 7b451d5..0000000 --- a/extensions/yasnippet/dropdown-list.el +++ /dev/null @@ -1,251 +0,0 @@ -;;; dropdown-list.el --- Drop-down menu interface -;; -;; Filename: dropdown-list.el -;; Description: Drop-down menu interface -;; Author: Jaeyoun Chung [jay.chung@gmail.com] -;; Maintainer: -;; Copyright (C) 2008 Jaeyoun Chung -;; Created: Sun Mar 16 11:20:45 2008 (Pacific Daylight Time) -;; Version: -;; Last-Updated: Sun Mar 16 12:19:49 2008 (Pacific Daylight Time) -;; By: dradams -;; Update #: 43 -;; URL: http://www.emacswiki.org/cgi-bin/wiki/dropdown-list.el -;; Keywords: convenience menu -;; Compatibility: GNU Emacs 21.x, GNU Emacs 22.x -;; -;; Features that might be required by this library: -;; -;; `cl'. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; According to Jaeyoun Chung, "overlay code stolen from company-mode.el." -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Change log: -;; -;; 2008/03/16 dadams -;; Clean-up - e.g. use char-to-string for control chars removed by email posting. -;; Moved example usage code (define-key*, command-selector) inside the library. -;; Require cl.el at byte-compile time. -;; Added GPL statement. -;; 2008/01/06 Jaeyoun Chung -;; Posted to gnu-emacs-sources@gnu.org at 9:10 p.m. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 3, or -;; (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth -;; Floor, Boston, MA 02110-1301, USA. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Code: - -(eval-when-compile (require 'cl)) ;; decf, fourth, incf, loop, mapcar* - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defface dropdown-list-face - '((t :inherit default :background "lightyellow" :foreground "black")) - "*Bla." :group 'dropdown-list) - -(defface dropdown-list-selection-face - '((t :inherit dropdown-list-face :background "purple")) - "*Bla." :group 'dropdown-list) - -(defvar dropdown-list-overlays nil) - -(defun dropdown-list-hide () - (while dropdown-list-overlays - (delete-overlay (pop dropdown-list-overlays)))) - -(defun dropdown-list-put-overlay (beg end &optional prop value prop2 value2) - (let ((ov (make-overlay beg end))) - (overlay-put ov 'window t) - (when prop - (overlay-put ov prop value) - (when prop2 (overlay-put ov prop2 value2))) - ov)) - -(defun dropdown-list-line (start replacement &optional no-insert) - ;; start might be in the middle of a tab, which means we need to hide the - ;; tab and add spaces - (let ((end (+ start (length replacement))) - beg-point end-point - before-string after-string) - (goto-char (point-at-eol)) - (if (< (current-column) start) - (progn (setq before-string (make-string (- start (current-column)) ? )) - (setq beg-point (point))) - (goto-char (point-at-bol)) ;; Emacs bug, move-to-column is wrong otherwise - (move-to-column start) - (setq beg-point (point)) - (when (> (current-column) start) - (goto-char (1- (point))) - (setq beg-point (point)) - (setq before-string (make-string (- start (current-column)) ? )))) - (move-to-column end) - (setq end-point (point)) - (let ((end-offset (- (current-column) end))) - (when (> end-offset 0) (setq after-string (make-string end-offset ?b)))) - (when no-insert - ;; prevent inheriting of faces - (setq before-string (when before-string (propertize before-string 'face 'default))) - (setq after-string (when after-string (propertize after-string 'face 'default)))) - (let ((string (concat before-string replacement after-string))) - (if no-insert - string - (push (dropdown-list-put-overlay beg-point end-point 'invisible t - 'after-string string) - dropdown-list-overlays))))) - -(defun dropdown-list-start-column (display-width) - (let ((column (mod (current-column) (window-width))) - (width (window-width))) - (cond ((<= (+ column display-width) width) column) - ((> column display-width) (- column display-width)) - ((>= width display-width) (- width display-width)) - (t nil)))) - -(defun dropdown-list-move-to-start-line (candidate-count) - (decf candidate-count) - (let ((above-line-count (save-excursion (- (vertical-motion (- candidate-count))))) - (below-line-count (save-excursion (vertical-motion candidate-count)))) - (cond ((= below-line-count candidate-count) - t) - ((= above-line-count candidate-count) - (vertical-motion (- candidate-count)) - t) - ((>= (+ below-line-count above-line-count) candidate-count) - (vertical-motion (- (- candidate-count below-line-count))) - t) - (t nil)))) - -(defun dropdown-list-at-point (candidates &optional selidx) - (dropdown-list-hide) - (let* ((lengths (mapcar #'length candidates)) - (max-length (apply #'max lengths)) - (start (dropdown-list-start-column (+ max-length 3))) - (i -1) - (candidates (mapcar* (lambda (candidate length) - (let ((diff (- max-length length))) - (propertize - (concat (if (> diff 0) - (concat candidate (make-string diff ? )) - (substring candidate 0 max-length)) - (format "%3d" (+ 2 i))) - 'face (if (eql (incf i) selidx) - 'dropdown-list-selection-face - 'dropdown-list-face)))) - candidates - lengths))) - (save-excursion - (and start - (dropdown-list-move-to-start-line (length candidates)) - (loop initially (vertical-motion 0) - for candidate in candidates - do (dropdown-list-line (+ (current-column) start) candidate) - while (/= (vertical-motion 1) 0) - finally return t))))) - -(defun dropdown-list (candidates) - (let ((selection) - (temp-buffer)) - (save-window-excursion - (unwind-protect - (let ((candidate-count (length candidates)) - done key (selidx 0)) - (while (not done) - (unless (dropdown-list-at-point candidates selidx) - (switch-to-buffer (setq temp-buffer (get-buffer-create "*selection*")) - 'norecord) - (delete-other-windows) - (delete-region (point-min) (point-max)) - (insert (make-string (length candidates) ?\n)) - (goto-char (point-min)) - (dropdown-list-at-point candidates selidx)) - (setq key (read-key-sequence "")) - (cond ((and (stringp key) - (>= (aref key 0) ?1) - (<= (aref key 0) (+ ?0 (min 9 candidate-count)))) - (setq selection (- (aref key 0) ?1) - done t)) - ((member key `(,(char-to-string ?\C-p) [up] "p")) - (setq selidx (mod (+ candidate-count (1- (or selidx 0))) - candidate-count))) - ((member key `(,(char-to-string ?\C-n) [down] "n")) - (setq selidx (mod (1+ (or selidx -1)) candidate-count))) - ((member key `(,(char-to-string ?\f)))) - ((member key `(,(char-to-string ?\r) [return])) - (setq selection selidx - done t)) - (t (setq done t))))) - (dropdown-list-hide) - (and temp-buffer (kill-buffer temp-buffer))) - ;; (when selection - ;; (message "your selection => %d: %s" selection (nth selection candidates)) - ;; (sit-for 1)) - selection))) - -(defun define-key* (keymap key command) - "Add COMMAND to the multiple-command binding of KEY in KEYMAP. -Use multiple times to bind different COMMANDs to the same KEY." - (define-key keymap key (combine-command command (lookup-key keymap key)))) - -(defun combine-command (command defs) - "$$$$$ FIXME - no doc string" - (cond ((null defs) command) - ((and (listp defs) - (eq 'lambda (car defs)) - (= (length defs) 4) - (listp (fourth defs)) - (eq 'command-selector (car (fourth defs)))) - (unless (member `',command (cdr (fourth defs))) - (setcdr (fourth defs) (nconc (cdr (fourth defs)) `(',command)))) - defs) - (t - `(lambda () (interactive) (command-selector ',defs ',command))))) - -(defvar command-selector-last-command nil "$$$$$ FIXME - no doc string") - -(defun command-selector (&rest candidates) - "$$$$$ FIXME - no doc string" - (if (and (eq last-command this-command) command-selector-last-command) - (call-interactively command-selector-last-command) - (let* ((candidate-strings - (mapcar (lambda (candidate) - (format "%s" (if (symbolp candidate) - candidate - (let ((s (format "%s" candidate))) - (if (>= (length s) 7) - (concat (substring s 0 7) "...") - s))))) - candidates)) - (selection (dropdown-list candidate-strings))) - (when selection - (let ((cmd (nth selection candidates))) - (call-interactively cmd) - (setq command-selector-last-command cmd)))))) - -;;;;;;;;;;;;;;;;;;;; - -(provide 'dropdown-list) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; dropdown-list.el ends here \ No newline at end of file diff --git a/extensions/yasnippet/extras/imported/html-mode/.yas-setup.el b/extensions/yasnippet/extras/imported/html-mode/.yas-setup.el deleted file mode 100644 index 37aeaea..0000000 --- a/extensions/yasnippet/extras/imported/html-mode/.yas-setup.el +++ /dev/null @@ -1,680 +0,0 @@ -;; .yas-setup.el for html-mode - -(defvar yas/html-default-tag "p") - -(defvar yas/html-xhtml-attr "") - -(defvar yas/html-just-like-tm nil - "Html-mode snippets behave as close to TextMate as possible.") - -(defun yas/html-remove-preceding-word () - (interactive) - (let (word-begin - word-end - (line-beginning-position (line-beginning-position)) - (orig-point (point)) - retval) - (save-excursion - (when (and (forward-word -1) - (setq word-begin (point)) - (forward-word 1) - (setq word-end (point)) - (< word-begin orig-point) - (>= word-end orig-point) - (<= (line-beginning-position) word-begin) - ;; (not (string-match "^[\s\t]+$" " ")) - ) - (setq retval - (cons - (buffer-substring-no-properties word-begin orig-point) - (buffer-substring-no-properties word-end orig-point))) - (delete-region word-begin word-end) - retval)))) - - -(defun yas/html-first-word (string) - (replace-regexp-in-string "\\\W.*" "" string)) - -(defun yas/html-insert-tag-pair-snippet () - (let* ((tag-and-suffix (or (and yas/selected-text - (cons yas/selected-text nil)) - (yas/html-remove-preceding-word))) - (tag (car tag-and-suffix)) - (suffix (or (cdr tag-and-suffix) "")) - (single-no-arg "\\(br\\|hr\\)") - (single "\\(img\\|meta\\|link\\|input\\|base\\|area\\|col\\|frame\\|param\\)")) - (cond ((null tag) - (yas/expand-snippet (format "<${1:%s}>%s%s" - (or yas/html-default-tag - "p") - (if yas/html-just-like-tm "$2" "$0") - suffix))) - ((string-match single-no-arg tag) - (insert (format "<%s%s/>%s" tag yas/html-xhtml-attr suffix))) - ((string-match single tag) - (yas/expand-snippet (format "<%s $1%s/>%s" tag yas/html-xhtml-attr suffix))) - (t - (yas/expand-snippet (format "<%s>%s%s" - tag - (if yas/html-just-like-tm "$1" "$0") - (replace-regexp-in-string "\\\W.*" "" tag) - suffix)))))) - -(defun yas/html-wrap-each-line-in-openclose-tag () - (let* ((mirror "${1:$(yas/html-first-word yas/text)}") - (yas/html-wrap-newline (when (string-match "\n" yas/selected-text) "\n")) - (template (concat (format "<${1:%s}>" (or yas/html-default-tag "p")) - yas/selected-text - ""))) - (setq template (replace-regexp-in-string "\n" (concat "\n<$1>") template)) - (yas/expand-snippet template))) - -(defun yas/html-toggle-wrap (string wrap) - (or (and string - (string-match (format "<%s>\\(.*\\)" wrap wrap) - string) - (match-string 1 string)) - (concat "" string ""))) - -(defun yas/html-between-tag-pair-p () - (save-excursion - (backward-word) - (looking-at "\\\w+>"))) - -(defun yas/html-id-from-string (string) - (replace-regexp-in-string " " "_" (downcase string))) - -(defun yas/html-tidy () - (interactive) - (let ((start (or (and mark-active - (region-beginning)) - (point-min))) - (end (or (and mark-active - (region-end)) - (point-max))) - (orig (point)) - (orig-line (count-screen-lines (window-start) (line-beginning-position)))) - (shell-command-on-region start end "tidy" (current-buffer) t (get-buffer-create "*tidy errors*") t) - (goto-char (min (point-max) orig)) - (recenter (1- orig-line)))) - -(defun yas/html-tag-description () - (interactive) - (let* ((tag-at-point (sgml-beginning-of-tag)) - (fragment (and tag-at-point - (aget yas/html-tag-description-urls (upcase tag-at-point))))) - (if fragment - (browse-url (concat "http://www.w3.org/TR/html4/index/" - fragment)) - (if tag-at-point - (message "No documentation for " tag-at-point) - (message "Not on a HTML tag."))))) - -(defvar yas/html-tag-description-urls - '(("A" . "../struct/links.html#edef-A") - ("ABBR" . "../struct/text.html#edef-ABBR") - ("ACRONYM" . "../struct/text.html#edef-ACRONYM") - ("ADDRESS" . "../struct/global.html#edef-ADDRESS") - ("APPLET" . "../struct/objects.html#edef-APPLET") - ("AREA" . "../struct/objects.html#edef-AREA") - ("B" . "../present/graphics.html#edef-B") - ("BASE" . "../struct/links.html#edef-BASE") - ("BASEFONT" . "../present/graphics.html#edef-BASEFONT") - ("BDO" . "../struct/dirlang.html#edef-BDO") - ("BIG" . "../present/graphics.html#edef-BIG") - ("BLOCKQUOTE" . "../struct/text.html#edef-BLOCKQUOTE") - ("BODY" . "../struct/global.html#edef-BODY") - ("BR" . "../struct/text.html#edef-BR") - ("BUTTON" . "../interact/forms.html#edef-BUTTON") - ("CAPTION" . "../struct/tables.html#edef-CAPTION") - ("CENTER" . "../present/graphics.html#edef-CENTER") - ("CITE" . "../struct/text.html#edef-CITE") - ("CODE" . "../struct/text.html#edef-CODE") - ("COL" . "../struct/tables.html#edef-COL") - ("COLGROUP" . "../struct/tables.html#edef-COLGROUP") - ("DD" . "../struct/lists.html#edef-DD") - ("DEL" . "../struct/text.html#edef-del") - ("DFN" . "../struct/text.html#edef-DFN") - ("DIR" . "../struct/lists.html#edef-DIR") - ("DIV" . "../struct/global.html#edef-DIV") - ("DL" . "../struct/lists.html#edef-DL") - ("DT" . "../struct/lists.html#edef-DT") - ("EM" . "../struct/text.html#edef-EM") - ("FIELDSET" . "../interact/forms.html#edef-FIELDSET") - ("FONT" . "../present/graphics.html#edef-FONT") - ("FORM" . "../interact/forms.html#edef-FORM") - ("FRAME" . "../present/frames.html#edef-FRAME") - ("FRAMESET" . "../present/frames.html#edef-FRAMESET") - ("H1" . "../struct/global.html#edef-H1") - ("H2" . "../struct/global.html#edef-H2") - ("H3" . "../struct/global.html#edef-H3") - ("H4" . "../struct/global.html#edef-H4") - ("H5" . "../struct/global.html#edef-H5") - ("H6" . "../struct/global.html#edef-H6") - ("HEAD" . "../struct/global.html#edef-HEAD") - ("HR" . "../present/graphics.html#edef-HR") - ("HTML" . "../struct/global.html#edef-HTML") - ("I" . "../present/graphics.html#edef-I") - ("IFRAME" . "../present/frames.html#edef-IFRAME") - ("IMG" . "../struct/objects.html#edef-IMG") - ("INPUT" . "../interact/forms.html#edef-INPUT") - ("INS" . "../struct/text.html#edef-ins") - ("ISINDEX" . "../interact/forms.html#edef-ISINDEX") - ("KBD" . "../struct/text.html#edef-KBD") - ("LABEL" . "../interact/forms.html#edef-LABEL") - ("LEGEND" . "../interact/forms.html#edef-LEGEND") - ("LI" . "../struct/lists.html#edef-LI") - ("LINK" . "../struct/links.html#edef-LINK") - ("MAP" . "../struct/objects.html#edef-MAP") - ("MENU" . "../struct/lists.html#edef-MENU") - ("META" . "../struct/global.html#edef-META") - ("NOFRAMES" . "../present/frames.html#edef-NOFRAMES") - ("NOSCRIPT" . "../interact/scripts.html#edef-NOSCRIPT") - ("OBJECT" . "../struct/objects.html#edef-OBJECT") - ("OL" . "../struct/lists.html#edef-OL") - ("OPTGROUP" . "../interact/forms.html#edef-OPTGROUP") - ("OPTION" . "../interact/forms.html#edef-OPTION") - ("P" . "../struct/text.html#edef-P") - ("PARAM" . "../struct/objects.html#edef-PARAM") - ("PRE" . "../struct/text.html#edef-PRE") - ("Q" . "../struct/text.html#edef-Q") - ("S" . "../present/graphics.html#edef-S") - ("SAMP" . "../struct/text.html#edef-SAMP") - ("SCRIPT" . "../interact/scripts.html#edef-SCRIPT") - ("SELECT" . "../interact/forms.html#edef-SELECT") - ("SMALL" . "../present/graphics.html#edef-SMALL") - ("SPAN" . "../struct/global.html#edef-SPAN") - ("STRIKE" . "../present/graphics.html#edef-STRIKE") - ("STRONG" . "../struct/text.html#edef-STRONG") - ("STYLE" . "../present/styles.html#edef-STYLE") - ("SUB" . "../struct/text.html#edef-SUB") - ("SUP" . "../struct/text.html#edef-SUP") - ("TABLE" . "../struct/tables.html#edef-TABLE") - ("TBODY" . "../struct/tables.html#edef-TBODY") - ("TD" . "../struct/tables.html#edef-TD") - ("TEXTAREA" . "../interact/forms.html#edef-TEXTAREA") - ("TFOOT" . "../struct/tables.html#edef-TFOOT") - ("TH" . "../struct/tables.html#edef-TH") - ("THEAD" . "../struct/tables.html#edef-THEAD") - ("TITLE" . "../struct/global.html#edef-TITLE") - ("TR" . "../struct/tables.html#edef-TR") - ("TT" . "../present/graphics.html#edef-TT") - ("U" . "../present/graphics.html#edef-U") - ("UL" . "../struct/lists.html#edef-UL") - ("VAR" . "../struct/text.html#edef-VAR"))) - -;; -;; -;; Substitutions for: content -;; # as in Snippets/Emphasize.yasnippet -;; ${TM_SELECTED_TEXT/\A(.*)<\/em>\z|.*/(?1:$1:$0<\/em>)/m} =yyas> `(yas/html-toggle-wrap yas/selected-text "em")` -;; ${TM_SELECTED_TEXT/\A(.*)<\/strong>\z|.*/(?1:$1:$0<\/strong>)/m} =yyas> `(yas/html-toggle-wrap yas/selected-text "strong")` -;; ${1/\s.*//} =yyas> ${1:$(replace-regexp-in-string "^[\s\t\n]*" "" yas/text)} -;; ${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g} =yyas> ${1:$(replace-regexp-in-string " " "_" (downcase yas/text))} -;; ${TM_XHTML} =yyas> `yas/html-xhtml-attr` - - -;; # as in Commands/Preview in All Active Browsers.yasnippet -;; 970EE6B4-A091-11D9-A5A2-000D93C8BE28 =yyas> (browse-url-of-buffer) -;; 637CEA2B-578C-429C-BB74-30E8D42BFA22 =yyas> (yas/html-tag-description) -;; 2ED44A32-C353-447F-BAE4-E3522DB6944D =yyas> (yas/html-insert-tag-pair-snippet) -;; 991E7EBD-F3F5-469A-BA01-DC30E04AD472 =yyas> (yas/html-wrap-each-line-in-openclose-tag) - -;; Substitutions for: binding -;; -;; # as in Snippets/Strong.yasnippet -;; @b =yyas> s-b -;; -;; # as in Snippets/Emphasize.yasnippet -;; @i =yyas> s-i -;; -;; # as in Snippets/Wrap Selection In Tag.yasnippet -;; ^W =yyas> C-c M-w -;; -;; # as in Commands/Insert Tag Pair.yasnippet -;; ^< =yyas> C-< -;; -;; # as in Commands/Documentation for Tag.yasnippet -;; ^h =yyas> C-c M-h -;; -;; # as in Commands/Wrap Each Selected Line in OpenClose Tag.yasnippet -;; ^@W =yyas> C-c M-W -;; -;; # as in Snippets/XHTML   NonBreakingSpace.yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Commands/Insert Entity.yasnippet -;; @& =yyas> (yas/unknown) -;; -;; # as in Commands/Refresh All Active Browsers.yasnippet -;; @r =yyas> (yas/unknown) -;; -;; # as in Commands/Persistent Include.yasnippet -;; ^@i =yyas> (yas/unknown) -;; -;; # as in Commands/CodeCompletion HTML Tags.yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Commands/Update Includes.yasnippet -;; ^@u =yyas> (yas/unknown) -;; -;; # as in Macros/Delete whitespace between tags.yasnippet -;; ^~ =yyas> (yas/unknown) -;; -;; # as in Commands/Tidy.yasnippet -;; ^H =yyas> (yas/unknown) -;; -;; -;; --**-- -;; Automatically generated code, do not edit this part -;; -;; Translated menu -;; -(yas/define-menu 'html-mode - '(;; Documentation for Tag - (yas/item "637CEA2B-578C-429C-BB74-30E8D42BFA22") - ;; Ignoring Validate Syntax (W3C) - (yas/ignore-item "3F26240E-6E4A-11D9-B411-000D93589AF6") - - ;; Open Document in Running Browser(s) - (yas/item "970EE6B4-A091-11D9-A5A2-000D93C8BE28") - ;; Ignoring Refresh Running Browser(s) - (yas/ignore-item "B8651C6E-A05E-11D9-86AC-000D93C8BE28") - - (yas/submenu "Entities" - (;; Ignoring Convert Character / Selection to Entities - (yas/ignore-item "3DD8406C-A116-11D9-A5A2-000D93C8BE28") - ;; Ignoring Convert Character / Selection to Entities Excl. Tags - (yas/ignore-item "43C9E8AE-3E53-4B82-A1AF-56697BB3EF09") - ;; Ignoring Decode Entities in Line / Selection - (yas/ignore-item "C183920D-A126-11D9-A5A2-000D93C8BE28") - - ;; Non-Breaking Space - (yas/item "73B40BAE-A295-11D9-87F7-000D93C8BE28") - ;; → - (yas/item "C70BB693-0954-4440-AEB4-F2ADD6D923F0") - ;; ← - (yas/item "C0418A4A-7E42-4D49-8F86-6E339296CB84") - ;; ⇤ - (yas/item "7F102705-27D8-4029-BF61-2F042FB61E06") - ;; ⌅ - (yas/item "7062316B-4236-4793-AD35-05E4A6577393") - ;; ⌃ - (yas/item "B4987DA5-9C2F-4D2D-AC14-678115079205") - ;; ⌦ - (yas/item "44E448B6-37CE-4BFE-8611-C5113593B74B") - ;; ↩ - (yas/item "9B216475-D73D-4518-851F-CACD0066A909") - ;; ⇥ - (yas/item "ADC78A82-40C2-4AAC-8968-93AF0ED98DF0") - ;; ⌫ - (yas/item "38E50882-27AF-4246-A039-355C3E1A699E") - ;; ⌘ - (yas/item "7214ACD1-93D9-4D3F-A428-8A7302E0A35E") - ;; ↓ - (yas/item "35654B4E-2D76-4CD3-8FBB-2DA1F314BA19") - ;; → - (yas/item "AC15621A-8A16-40DD-A671-EA4C37637215") - ;; ↑ - (yas/item "0E2F4A47-EADE-4A05-931E-FC874FA28FC3") - ;; ⇧ - (yas/item "1B8D58B9-D9DB-484C-AACD-5D5DF5385308") - ;; ⎋ - (yas/item "D7CC7C7C-CD01-4357-AF91-AEFFD914DF98") - ;; ⌥ - (yas/item "980A8D39-CA8B-4EC2-9739-DC36A262F28E") - (yas/separator) - ;; Ignoring Insert Entity… - (yas/ignore-item "89E5CC0A-3EFF-4DEF-A299-2E9651DE6529"))) - (yas/submenu "URL Escapes" - (;; Ignoring URL Escape Line / Selection - (yas/ignore-item "6B024865-6095-4CE3-8EDD-DC6F2230C2FF") - ;; Ignoring URL Unescape Line / Selection - (yas/ignore-item "2C4C9673-B166-432A-8938-75A5CA622481"))) - ;; Ignoring Encrypt Line / Selection (ROT 13) - (yas/ignore-item "9B13543F-8356-443C-B6E7-D9259B604927") - - ;; Ignoring CodeCompletion HTML Attributes - (yas/ignore-item "CBD82CF3-74E9-4E7A-B3F6-9348754EB5AA") - ;; Insert Open/Close Tag (With Current Word) - (yas/item "2ED44A32-C353-447F-BAE4-E3522DB6944D") - ;; Ignoring Insert Close Tag - (yas/ignore-item "0658019F-3635-462E-AAC2-74E4FE508A9B") - (yas/submenu "Insert DocType" - (;; HTML — 4.01 Strict - (yas/item "944F1410-188C-4D70-8340-CECAA56FC7F2") - ;; HTML — 4.01 Transitional - (yas/item "B2AAEE56-42D8-42C3-8F67-865473F50E8D") - (yas/separator) - ;; XHTML — 1.0 Frameset - (yas/item "9ED6ABBE-A802-11D9-BFC8-000D93C8BE28") - ;; XHTML — 1.0 Strict - (yas/item "C8B83564-A802-11D9-BFC8-000D93C8BE28") - ;; XHTML — 1.0 Transitional - (yas/item "7D8C2F74-A802-11D9-BFC8-000D93C8BE28") - ;; XHTML — 1.1 - (yas/item "5CE8FC6E-A802-11D9-BFC8-000D93C8BE28"))) - (yas/submenu "Insert Tag" - (;; Ignoring CodeCompletion HTML Tags - (yas/ignore-item "3463E85F-F500-49A0-8631-D78ED85F9D60") - - ;; Base - (yas/item "4462A6B8-A08A-11D9-A5A2-000D93C8BE28") - ;; Body - (yas/item "4905D47B-A08B-11D9-A5A2-000D93C8BE28") - ;; Br - (yas/item "3E008E42-A5C9-11D9-9BCD-000D93C8BE28") - ;; Div - (yas/item "576036C0-A60E-11D9-ABD6-000D93C8BE28") - ;; Embed QT Movie - (yas/item "42F15753-9B6D-4DD8-984C-807B94363277") - ;; Fieldset - (yas/item "9BD2BE01-A854-4D55-B584-725D04C075C0") - ;; Form - (yas/item "232C2E8B-A08E-11D9-A5A2-000D93C8BE28") - ;; Head - (yas/item "9CF008C4-A086-11D9-A5A2-000D93C8BE28") - ;; Heading - (yas/item "65BA66DC-A07F-11D9-A5A2-000D93C8BE28") - ;; Input - (yas/item "44180979-A08E-11D9-A5A2-000D93C8BE28") - ;; Input with Label - (yas/item "D8DCCC81-749A-4E2A-B4BC-D109D5799CAA") - ;; Link - (yas/item "77BFD0C0-A08A-11D9-A5A2-000D93C8BE28") - ;; Mail Anchor - (yas/item "81DA4C74-A530-11D9-9BCD-000D93C8BE28") - ;; Meta - (yas/item "DA99AC44-A083-11D9-A5A2-000D93C8BE28") - ;; Option - (yas/item "5820372E-A093-4F38-B25C-B0CCC50A0FC4") - ;; Script - (yas/item "6592050A-A087-11D9-A5A2-000D93C8BE28") - ;; Script With External Source - (yas/item "7D676C4C-A087-11D9-A5A2-000D93C8BE28") - ;; Select Box - (yas/item "26023CFF-C73F-4EF5-9803-E4DBA2CBEADD") - ;; Style - (yas/item "3C518074-A088-11D9-A5A2-000D93C8BE28") - ;; Table - (yas/item "57176082-A12F-11D9-A5A2-000D93C8BE28") - ;; Text Area - (yas/item "AAC9D7B8-A12C-11D9-A5A2-000D93C8BE28") - ;; Title - (yas/item "B62ECABE-A086-11D9-A5A2-000D93C8BE28"))) - - (yas/submenu "Includes" - (;; Ignoring Add Persistent Include - (yas/ignore-item "0D814247-7A00-46EE-A2A4-45FBBF4B1181") - ;; Ignoring Update Document - (yas/ignore-item "4400BCE9-20E3-426E-B1D7-2C0BCA53BCF8") - ;; Ignoring Help: Persistent Includes - (yas/ignore-item "9AFDEB2C-D9F0-423E-8211-EBB089F51F0C"))) - (yas/submenu "Format" - (;; Strong - (yas/item "4117D930-B6FA-4022-97E7-ECCAF4E70F63") - ;; Emphasize - (yas/item "EBB98620-3292-4621-BA38-D8A9A65D9551"))) - (yas/submenu "Conditional Comments" - (;; IE Conditional Comment: Internet Explorer - (yas/item "0ED6DA73-F38F-4A65-B18F-3379D2BA9387") - ;; IE Conditional Comment: Internet Explorer 5.0 only - (yas/item "3A517A94-001E-464D-8184-1FE56D0D0D70") - ;; IE Conditional Comment: Internet Explorer 5.5 only - (yas/item "E3F8984E-7269-4981-9D30-967AB56A6ACE") - ;; IE Conditional Comment: Internet Explorer 5.x - (yas/item "F3512848-7889-45DA-993B-0547976C8E6D") - ;; IE Conditional Comment: Internet Explorer 6 and below - (yas/item "32BBB9AB-8732-4F91-A587-354941A27B69") - ;; IE Conditional Comment: Internet Explorer 6 only - (yas/item "48DF7485-52EA-49B3-88AF-3A41F933F325") - ;; IE Conditional Comment: Internet Explorer 7 and above - (yas/item "CBC24AF4-88E0-498B-BE50-934B9CF29EC7") - ;; IE Conditional Comment: NOT Internet Explorer - (yas/item "F00170EE-4A82-413F-A88B-85293E69A88B"))) - - ;; Wrap Selection in Open/Close Tag - (yas/item "BC8B8AE2-5F16-11D9-B9C3-000D93589AF6") - ;; Wrap Each Selected Line in Open/Close Tag - (yas/item "991E7EBD-F3F5-469A-BA01-DC30E04AD472") - ;; Wrap in - (yas/item "912906A0-9A29-434B-AE98-E9DFDE6E48B4") - (yas/separator) - ;; Ignoring Strip HTML Tags from Document / Selection - (yas/ignore-item "20D760B5-A127-11D9-A5A2-000D93C8BE28") - ;; Ignoring Tidy - (yas/ignore-item "45F92B81-6F0E-11D9-A1E4-000D9332809C")) - '("7B7E945E-A112-11D9-A5A2-000D93C8BE28" - "3C44EABE-8D6F-4B1B-AB91-F419FAD1A0AD" - "4400BCE9-20E3-426E-B1D7-2C0BCA53BCF8" - "3463E85F-F500-49A0-8631-D78ED85F9D60" - "CBD82CF3-74E9-4E7A-B3F6-9348754EB5AA" - "9B13543F-8356-443C-B6E7-D9259B604927" - "0D814247-7A00-46EE-A2A4-45FBBF4B1181" - "9AFDEB2C-D9F0-423E-8211-EBB089F51F0C" - "C8B717C2-6B33-11D9-BB47-000D93589AF6" - "CD6D2CC6-6B33-11D9-BDFD-000D93589AF6" - "B23D6E15-6B33-11D9-86C1-000D93589AF6" - "7B7E945E-A112-11D9-A5A2-000D93C8BE28" - "45F92B81-6F0E-11D9-A1E4-000D9332809C" - "3DD8406C-A116-11D9-A5A2-000D93C8BE28" - "3F26240E-6E4A-11D9-B411-000D93589AF6" - "43C9E8AE-3E53-4B82-A1AF-56697BB3EF09" - "89E5CC0A-3EFF-4DEF-A299-2E9651DE6529" - "2C4C9673-B166-432A-8938-75A5CA622481" - "6B024865-6095-4CE3-8EDD-DC6F2230C2FF" - "0658019F-3635-462E-AAC2-74E4FE508A9B" - "20D760B5-A127-11D9-A5A2-000D93C8BE28" - "B8651C6E-A05E-11D9-86AC-000D93C8BE28" - "C183920D-A126-11D9-A5A2-000D93C8BE28" - "CDE8EFD6-9DE2-4E8C-BB6A-52E8CCD2E977" - "E6F19171-F664-4B4F-92DA-3E15E6CAD35C" - "EBEE6B51-29C7-4362-818F-A190CACD5296" - "26068A55-4C84-409D-BA00-162B55AF6961" - "65D38039-6B0A-48E9-9E49-43832ECC4107" - "04332FA8-8157-46C4-9854-8C190FFD96C6")) - -;; Unknown substitutions -;; -;; Substitutions for: content -;; -;; # as in Templates/XHTML 1.1/info.yasnippet -;; CDE8EFD6-9DE2-4E8C-BB6A-52E8CCD2E977 =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer 5_0 only.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer 5.0 only ")` =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer ")` =yyas> (yas/unknown) -;; -;; # as in Commands/CodeCompletion HTML Tags.yasnippet -;; 3463E85F-F500-49A0-8631-D78ED85F9D60 =yyas> (yas/unknown) -;; -;; # as in Snippets/Emphasize.yasnippet -;; `(yas/html-toggle-wrap yas/selected-text "em")` =yyas> (yas/unknown) -;; -;; # as in Templates/HTML 4.0 Transitional/info.yasnippet -;; E6F19171-F664-4B4F-92DA-3E15E6CAD35C =yyas> (yas/unknown) -;; -;; # as in Commands/Insert Entity.yasnippet -;; 89E5CC0A-3EFF-4DEF-A299-2E9651DE6529 =yyas> (yas/unknown) -;; -;; # as in Commands/Convert to HTML Entities.yasnippet -;; 3DD8406C-A116-11D9-A5A2-000D93C8BE28 =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML body.yasnippet -;; ${TM_FILENAME/(.*)\..*/\L$1/} =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML form.yasnippet -;; ${TM_FILENAME/(.*?)\..*/$1_submit/} =yyas> (yas/unknown) -;; -;; # as in Commands/Persistent Include.yasnippet -;; 0D814247-7A00-46EE-A2A4-45FBBF4B1181 =yyas> (yas/unknown) -;; -;; # as in Commands/Refresh All Active Browsers.yasnippet -;; B8651C6E-A05E-11D9-86AC-000D93C8BE28 =yyas> (yas/unknown) -;; -;; # as in Snippets/Strong.yasnippet -;; `(yas/html-toggle-wrap yas/selected-text "strong")` =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer 5_5 only.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer 5.5 only ")` =yyas> (yas/unknown) -;; -;; # as in Commands/Insert Close Tag.yasnippet -;; 0658019F-3635-462E-AAC2-74E4FE508A9B =yyas> (yas/unknown) -;; -;; # as in Commands/Decode Numeric URL Escapes in Line Selection.yasnippet -;; 2C4C9673-B166-432A-8938-75A5CA622481 =yyas> (yas/unknown) -;; -;; # as in Commands/Convert to named entities excl tags.yasnippet -;; 43C9E8AE-3E53-4B82-A1AF-56697BB3EF09 =yyas> (yas/unknown) -;; -;; # as in DragCommands/CSS Link.yasnippet -;; C8B717C2-6B33-11D9-BB47-000D93589AF6 =yyas> (yas/unknown) -;; -;; # as in Commands/About Persistent Includes.yasnippet -;; 9AFDEB2C-D9F0-423E-8211-EBB089F51F0C =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML link.yasnippet -;; `yas/html-xhtml-attr` =yyas> (yas/unknown) -;; -;; # as in Templates/HTML 4.0 Strict/info.yasnippet -;; 04332FA8-8157-46C4-9854-8C190FFD96C6 =yyas> (yas/unknown) -;; -;; # as in Macros/Delete whitespace between tags.yasnippet -;; 7B7E945E-A112-11D9-A5A2-000D93C8BE28 =yyas> (yas/unknown) -;; -;; # as in DragCommands/Anchor Tag.yasnippet -;; B23D6E15-6B33-11D9-86C1-000D93589AF6 =yyas> (yas/unknown) -;; -;; # as in Templates/XHTML 1.0 Transitional/info.yasnippet -;; 65D38039-6B0A-48E9-9E49-43832ECC4107 =yyas> (yas/unknown) -;; -;; # as in Commands/Strip HTML tags.yasnippet -;; 20D760B5-A127-11D9-A5A2-000D93C8BE28 =yyas> (yas/unknown) -;; -;; # as in Commands/Tidy.yasnippet -;; 45F92B81-6F0E-11D9-A1E4-000D9332809C =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML title.yasnippet -;; ${TM_FILENAME/((.+)\..*)?/(?2:$2:Page Title)/} =yyas> (yas/unknown) -;; -;; # as in Commands/Encrypt Line Selection (ROT 13).yasnippet -;; 9B13543F-8356-443C-B6E7-D9259B604927 =yyas> (yas/unknown) -;; -;; # as in Templates/XHTML 1.0 Strict/info.yasnippet -;; EBEE6B51-29C7-4362-818F-A190CACD5296 =yyas> (yas/unknown) -;; -;; # as in Commands/Convert Line Selection to URL Escapes.yasnippet -;; 6B024865-6095-4CE3-8EDD-DC6F2230C2FF =yyas> (yas/unknown) -;; -;; # as in Commands/W3C validation.yasnippet -;; 3F26240E-6E4A-11D9-B411-000D93589AF6 =yyas> (yas/unknown) -;; -;; # as in Commands/CodeCompletion HTML Attributes.yasnippet -;; CBD82CF3-74E9-4E7A-B3F6-9348754EB5AA =yyas> (yas/unknown) -;; -;; # as in Commands/Update Includes.yasnippet -;; 4400BCE9-20E3-426E-B1D7-2C0BCA53BCF8 =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer 6 and below.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer 6 and below ")` =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer 5_x.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer 5.x ")` =yyas> (yas/unknown) -;; -;; # as in DragCommands/Image Tag.yasnippet -;; CD6D2CC6-6B33-11D9-BDFD-000D93589AF6 =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML h1.yasnippet -;; `yas/selected-text` =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment NOT Internet Explorer.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: NOT Internet Explorer ")` =yyas> (yas/unknown) -;; -;; # as in Templates/XHTML 1.0 Frameset/info.yasnippet -;; 26068A55-4C84-409D-BA00-162B55AF6961 =yyas> (yas/unknown) -;; -;; # as in Commands/Decode HTML Entities.yasnippet -;; C183920D-A126-11D9-A5A2-000D93C8BE28 =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer 6 only.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer 6 only ")` =yyas> (yas/unknown) -;; -;; # as in Snippets/IE Conditional Comment Internet Explorer 7+.yasnippet -;; `(or (yas/selected-text) " IE Conditional Comment: Internet Explorer 7 and above ")` =yyas> (yas/unknown) -;; -;; - -;; Substitutions for: condition -;; -;; # as in Snippets/XHTML head.yasnippet -;; text.html - text.html source =yyas> (yas/unknown) -;; -;; # as in Commands/CodeCompletion HTML Attributes.yasnippet -;; text.html punctuation.definition.tag -source, text.html meta.tag -entity.other.attribute-name -source =yyas> (yas/unknown) -;; -;; # as in Snippets/Smart returnindent for tag pairs.yasnippet -;; meta.scope.between-tag-pair =yyas> (yas/unknown) -;; -;; # as in Commands/CodeCompletion HTML Tags.yasnippet -;; text.html -entity.other.attribute-name -string.quoted, invalid.illegal.incomplete.html =yyas> (yas/unknown) -;; -;; # as in Snippets/Wrap Selection In Tag.yasnippet -;; text.html, =yyas> (yas/unknown) -;; -;; # as in Commands/Refresh All Active Browsers.yasnippet -;; text.html, source.css =yyas> (yas/unknown) -;; -;; # as in Templates/HTML 4.0 Strict/info.yasnippet -;; text.html =yyas> (yas/unknown) -;; -;; # as in Commands/Documentation for Tag.yasnippet -;; text.html, text.html entity.name.tag =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML title.yasnippet -;; text.html - text.blog =yyas> (yas/unknown) -;; -;; # as in Snippets/Wrap in =.yasnippet -;; text.html string =yyas> (yas/unknown) -;; -;; - -;; Substitutions for: binding -;; -;; # as in Commands/W3C validation.yasnippet -;; ^V =yyas> (yas/unknown) -;; -;; # as in Snippets/Smart returnindent for tag pairs.yasnippet -;; =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML   NonBreakingSpace.yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Commands/Insert Close Tag.yasnippet -;; ~@. =yyas> (yas/unknown) -;; -;; # as in Snippets/XHTML br.yasnippet -;; ^ =yyas> (yas/unknown) -;; -;; # as in Commands/Decode HTML Entities.yasnippet -;; @& =yyas> (yas/unknown) -;; -;; # as in Commands/Refresh All Active Browsers.yasnippet -;; @r =yyas> (yas/unknown) -;; -;; # as in Commands/CodeCompletion HTML Attributes.yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Commands/Update Includes.yasnippet -;; ^@u =yyas> (yas/unknown) -;; -;; # as in Macros/Delete whitespace between tags.yasnippet -;; ^~ =yyas> (yas/unknown) -;; -;; # as in Commands/Tidy.yasnippet -;; ^H =yyas> (yas/unknown) -;; -;; - -;; .yas-setup.el for html-mode ends here diff --git a/extensions/yasnippet/extras/imported/rails-mode/.yas-setup.el b/extensions/yasnippet/extras/imported/rails-mode/.yas-setup.el deleted file mode 100644 index 3702d95..0000000 --- a/extensions/yasnippet/extras/imported/rails-mode/.yas-setup.el +++ /dev/null @@ -1,1174 +0,0 @@ -;; .yas-setup.el for rails-mode -(defvar yas/rails-root-cache nil) - -(add-to-list 'auto-mode-alist '("\\.erb$" . yas/rails-erb-mode)) - -(define-derived-mode yas/rails-erb-mode - nxml-mode "eRB" - "Embedded Ruby Mode, very thin layer over `nxml-mode'." - (add-to-list (make-local-variable 'yas/extra-modes) 'html-mode) - (rng-set-vacuous-schema) - (message "hey erb mode")) - -(defvar yas/rails-erb-font-lock-keywords - '(("\\(<%=\\)\\(.*+\\)\\(%>\\)" - (1 font-lock-function-name-face) - (2 font-lock-string-face) - (3 font-lock-function-name-face)) - ("\\(<%\\)\\(.*+\\)\\(%>\\)" - (1 font-lock-variable-name-face) - (2 font-lock-string-face) - (3 font-lock-variable-name-face))) - "(Crummy) font lock highlighting for ERB constructs.." - ) -(font-lock-add-keywords 'yas/rails-erb-mode yas/rails-erb-font-lock-keywords) - -;; stolen from rinari-mode's rinari-root -(defun yas/rails-root (&optional dir) - (or dir (setq dir default-directory)) - (or (and (featurep 'rinari) (rinari-root dir)) - yas/rails-root-cache - (if (file-exists-p (expand-file-name - "environment.rb" (expand-file-name "config" dir))) - (set (make-local-variable 'yas/rails-root-cache) dir) - (let ((new-dir (expand-file-name (file-name-as-directory "..") dir))) - ;; regexp to match windows roots, tramp roots, or regular posix roots - (unless (string-match "\\(^[[:alpha:]]:/$\\|^/[^\/]+:\\|^/$\\)" dir) - (yas/rails-root new-dir)))))) - -;; stolen from rinari-mode's rinari-extract-partial -(defun yas/rails-extract-partial (begin end partial-name) - (interactive "r\nsName your partial: ") - (let* ((path (buffer-file-name)) ending) - (if (string-match "view" path) - (let ((ending (and (string-match ".+?\\(\\.[^/]*\\)$" path) - (match-string 1 path))) - (partial-name - (replace-regexp-in-string "[[:space:]]+" "_" partial-name))) - (kill-region begin end) - (if (string-match "\\(.+\\)/\\(.+\\)" partial-name) - (let ((default-directory (expand-file-name (match-string 1 partial-name) - (expand-file-name "..")))) - (find-file (concat "_" (match-string 2 partial-name) ending))) - (find-file (concat "_" partial-name ending))) - (yank) (pop-to-buffer nil) - (insert (concat "<%= render :partial => '" partial-name "' %>\n"))) - (message "not in a view")))) -;;; -;;; The TextMate "intelligent" migration snippet -;; -(defvar yas/rails-intelligent-migration-snippet-bits - '((:rename_column . ((:up . "rename_column :${1:table_name}, :${2:column_name}, :${3:new_column_name}$0") - (:down . "rename_column :$1, :$3, :$2" ))) - - (:rename_column_continue . ((:up . "rename_column :${1:table_name}, :${2:column_name}, :${3:new_column_name}\nmncc$0") - (:down . "rename_column :$1, :$3, :$2" ))) - - (:rename_table . ((:up . "rename_table :${1:old_table_name}, :${2:new_table_name}$0") - (:down . "rename_table :$2, :$1" ))) - - (:rename_table_continue . ((:up . "rename_table :${1:old_table_name}, :${2:new_table_name}\nmntc$0") - (:down . "rename_table :$2, :$1" ))) - - (:add_remove_column . ((:up . "add_column :${1:table_name}, :${2:column_name}, :${3:string}$0") - (:down . "remove_column :$1, :$2" ))) - - (:add_remove_column_continue . ((:up . "add_column :${1:table_name}, :${2:column_name}, :${3:string}\nmarcc$0") - (:down . "remove_column :$1, :$2" ))) - - (:remove_add_column . ((:up . "remove_column :${1:table_name}, :${2:column_name}$0") - (:down . "add_column :$1, :$2, :$3{string}" ))) - - (:create_drop_table . ((:up . "create_table :${1:table_name}, :force . true do |t|\nt.$0\nt.timestamps\nend") - (:down . "drop_table :$1" ))) - - (:change_change_table . ((:up . "change_table :${1:table_name} do |t|\nt.$0\nend") - (:down . "change_table :$1 do |t|\nend" ))) - - (:add_remove_index . ((:up . "add_index :${1:table_name}, :${2:column_name}$0") - (:down . "remove_index :$1, :$2" ))) - - (:add_remove_unique_index . ((:up . "add_index :${1:table_name}, ${2:[:${3:column_name}${4:, :${5:column_name}}]}, :unique . true$0") - (:down . "remove_index :$1, :column . $2" ))) - - (:add_remove_named_index . ((:up . "add_index :${1:table_name}, [:${2:column_name}${3:, :${4:column_name}}], :name . \"${5:index_name}\"${6:, :unique . true}$0") - (:down . "remove_index :$1, :name . :$5" ))))) - - -(defun yas/rails-intelligent-migration-snippet (type) - (let* ((start (point)) - (end (save-excursion - (search-forward-regexp "^\s*def\sself\.down" nil 'noerror))) - (up (aget (aget yas/rails-intelligent-migration-snippet-bits type) :up)) - (down (aget (aget yas/rails-intelligent-migration-snippet-bits type) :down)) - (snippet - (and up down start end (concat up - (buffer-substring-no-properties start end) - "\n" down)))) - (when snippet - (delete-region start end) - (yas/expand-snippet snippet)))) - -(yas/define-condition-cache - yas/rails-intelligent-migration-snippet-condition-p - "Non-nil if an \"intelligent\" migration snippet should be expanded" - (and (yas/rails-migration-p) - (not (yas/rails-in-create-table-p)) - (not (yas/rails-in-change-table-p)) - (yas/rails-in-ruby-block-like "self\.up"))) - -(defun yas/rails-in-ruby-block-like (regexp) - (save-excursion - (ruby-accurate-end-of-block) - (ruby-backward-sexp) - (search-forward-regexp regexp (line-end-position) t))) - -;;; conditions -(yas/define-condition-cache - yas/rails-in-create-table-p - "Non-nil if point is inside a 'create_table' method call." - (yas/rails-in-ruby-block-like "create_table")) - -(yas/define-condition-cache - yas/rails-in-change-table-p - "Non-nil if point is inside a 'change_table' method call." - (yas/rails-in-ruby-block-like "change_table")) - -(yas/define-condition-cache - yas/rails-model-p - "Non-nil if the current buffer is a rails model." - (and (yas/rails-root) - (string-match "app/models/$" default-directory))) - -(yas/define-condition-cache - yas/rails-view-p - "Non-nil if the current buffer is a rails view." - (and (yas/rails-root) - (string-match "app/views/" default-directory))) - -(yas/define-condition-cache - yas/rails-controller-p -"Non-nil if the current buffer is a rails controller." - (and (yas/rails-root) - (string-match "app/controllers/$" default-directory))) - -(yas/define-condition-cache - yas/rails-migration-p - "Non-nil if the current buffer is a rails migration." - (and (yas/rails-root) - (string-match "db/migrate/" default-directory))) - -(defun yas/rails-activate-maybe () - (when (and yas/minor-mode - (yas/rails-root)) - (add-to-list (make-local-variable 'yas/extra-modes) 'rails-mode))) - -(defadvice cd (after yas/rails-on-cd-activate activate) - "Add `rails-mode' to `yas/extra-modes' so that rails snippets -are recognized. Stolen from `rinari-mode' more or`' less." - (setq yas/rails-root-cache nil) - (yas/rails-activate-maybe)) - -(add-hook 'yas/minor-mode-hook 'yas/rails-activate-maybe) -;; Substitutions for: content -;; -;; # as in Macros/Remove 3A Add Column.yasnippet -;; 809BCA42-5C49-4B08-B3C4-BB773036C086 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Named Index.yasnippet -;; A7F692C1-778A-48B8-945E-573568BA0403 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Unit Test.yasnippet -;; BDBB15A4-2824-4BEC-93A5-7475F9C46A39 =yyas> (yas/rails-find 'unit-test) -;; -;; # as in Commands/Go To File on This Line.yasnippet -;; 09BB96F2-75FD-48A7-8314-B5B56B09B477 =yyas> (ffap) -;; -;; # as in Commands/Test Uncommitted.yasnippet -;; 212C3047-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Redo Last Migration.yasnippet -;; CFDA9F62-D071-4E0F-AD10-66AE0729FFCF =yyas> (yas/rails-compile "rake") -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet -;; 0BCF0EE2-35EE-4959-A771-E74D55271D5A =yyas> (yas/unknown) -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet -;; 275C0B86-F735-49B6-8A22-218A8F4CC2E0 =yyas> (yas/unknown) -;; -;; # as in Macros/Change Change Table.yasnippet -;; 20FC02C5-32A3-4F20-B163-FF75C9FDFABF =yyas> (yas/unknown) -;; -;; # as in Commands/Rake Migrate.yasnippet -;; 985F56D4-82ED-4C45-8250-2ECCFC71957E =yyas> (yas/unknown) -;; -;; # as in Commands/DB Schema Import.yasnippet -;; 6DEF923E-2347-46EC-AFBE-183D08E63DC1 =yyas> (yas/unknown) -;; -;; # as in Commands/Load Fixtures (Test DB).yasnippet -;; F758BFD1-00CA-4742-BE71-032580080F5C =yyas> (yas/unknown) -;; -;; # as in Commands/Generate Quick Migration.yasnippet -;; D696FA2C-785A-4B73-A2F6-F750904DD7C2 =yyas> (yas/unknown) -;; -;; # as in Macros/Remove 3A Add Timestamps.yasnippet -;; E885A3E8-8020-4AC3-A25E-510B26F114B2 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Several Columns (marcc).yasnippet -;; 27A6C58A-896B-4956-BA81-D671A2EF9C7D =yyas> (yas/rails-intelligent-migration-snippet :add_remove_column_continue) -;; -;; # as in Macros/Add 3A Remove Column.yasnippet -;; 18C76913-061C-4D65-866D-67AA3724AFEF =yyas> (yas/rails-intelligent-migration-snippet :add_remove_column) -;; -;; # as in Commands/Go To View.yasnippet -;; EE862691-A624-4797-90CF-EDD39EFB2D8E =yyas> (yas/rails-find 'view) -;; -;; # as in Commands/Test Plugins.yasnippet -;; 0D966168-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Macros/Change Column.yasnippet -;; 42DE1441-D1B7-4998-BAF9-16B1EC7E210C =yyas> (yas/unknown) -;; -;; # as in Commands/Make Selection in to Partial.yasnippet -;; 1DD8A214-1C97-45BA-ADEE-8F888DDE8570 =yyas> (call-interactively 'yas/rails-extract-partial) -;; -;; # as in Commands/Go To Functional Test.yasnippet -;; DFE393BE-0764-49FE-B464-6350A50921E6 =yyas> (yas/rails-find 'functional-test) -;; -;; # as in Commands/Test Recent.yasnippet -;; 190401C2-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Test All.yasnippet -;; DC549A45-D9B0-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename Column.yasnippet -;; AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3 =yyas> (yas/unknown) -;; -;; # as in Macros/Create 3A Drop Table.yasnippet -;; 25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Unique Index.yasnippet -;; 33057A79-677B-4DFB-99D4-1492778BDDC6 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Timestamps.yasnippet -;; 221969A1-A5EA-4A8E-8817-C74EBED63901 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Helper.yasnippet -;; 51C9C27A-D931-49F9-B6D8-C0E7ABEC992D =yyas> (yas/unknown) -;; -;; # as in Commands/DB Schema Dump.yasnippet -;; 310C901C-EF32-4E88-938A-804ABBF8C428 =yyas> (yas/unknown) -;; -;; # as in Commands/Test Functionals.yasnippet -;; F4EA552D-D9B0-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Migrate to Previous Version.yasnippet -;; 9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Model.yasnippet -;; C7151BF3-7068-4344-9B09-86F3BF4A9C63 =yyas> (yas/rails-find 'model) -;; -;; # as in Macros/Drop 3A Create Table.yasnippet -;; A2135370-67A1-488D-B43C-B4F221127C2F =yyas> (yas/unknown) -;; -;; # as in Macros/Change Column Default.yasnippet -;; A219EBB8-004A-4012-B5B2-232C9A5C94F8 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Index.yasnippet -;; 95F83E1D-5B03-424F-8BEC-8AF66C8939BC =yyas> (yas/unknown) -;; -;; # as in Commands/Load Fixtures.yasnippet -;; 5EEA0C71-B34B-4408-953B-F47AAD343CCC =yyas> (yas/unknown) -;; -;; # as in Commands/Documentation for Word.yasnippet -;; 32F30207-D827-46D9-889A-451C35269D52 =yyas> (yas/unknown) -;; -;; # as in Commands/Clone Development DB to Test DB.yasnippet -;; 6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename 3A Rename Several Columns.yasnippet -;; F03162DE-9DB6-417B-9DD7-52D9F11EA736 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Stylesheet.yasnippet -;; B207BBD4-D6AA-41E9-9530-27210F2D7B66 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Javascript.yasnippet -;; B078346F-61D8-4E75-9427-80720FBC67F7 =yyas> (yas/unknown) -;; -;; # as in Commands/Rake Migrate to Version.yasnippet -;; 07C696F8-79F5-4E0B-9EE9-03B693A54ABB =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Alternate File.yasnippet -;; 9453F0B3-B946-445F-BDB0-B01DE70732FC =yyas> (yas/rails-find 'alternate) -;; -;; # as in Commands/View demo help.yasnippet -;; 964436B8-E578-11DC-8177-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Go to Fixture.yasnippet -;; 638D94A4-BDFC-4FE9-8909-9934F3FD2899 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename Table.yasnippet -;; FD8CC811-2AD3-480F-B975-DF959DC96C67 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename 3A Rename Several Columns (mncc).yasnippet -;; 04A86178-71B1-430A-A06D-DFF7C9A338B5 =yyas> (yas/unknown) -;; -;; # as in Commands/Generate.yasnippet -;; 4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE =yyas> (yas/unknown) -;; -;; # as in Commands/Test Integration.yasnippet -;; 04A30A4D-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Show DB Schema.yasnippet -;; 1970AE74-3949-40B3-B263-727AA3FF167A =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Several Columns.yasnippet -;; 7BC860E6-7561-4E6E-983B-507D7A6F6228 =yyas> (yas/unknown) -;; -;; # as in Commands/Install Bundled Plugin.yasnippet -;; 46ECE243-0448-4A64-A223-27CC21E7704D =yyas> (yas/unknown) -;; -;; # as in Commands/Go To File.yasnippet -;; 0CCC8443-40F3-4BAB-9440-D737562B5F45 =yyas> (yas/rails-find 'file) -;; -;; # as in Commands/Test Units.yasnippet -;; 2C60CBA1-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Snippets/returning do 7Cvariable7C E280A6 end.yasnippet -;; ${2/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1: |)/} =yyas> ${2:$(and (yas/text) " |")} -;; ${2/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/} =yyas> ${2:$(and (yas/text) "|")} -;; -;; # as in Snippets/form_for label.yasnippet -;; ${1/[[:alpha:]]+|(_)/(?1: :\u$0)/g} =yyas> ${1:$(capitalize (replace-regexp-in-string "_" " " yas/text))} -;; -;; # as in Snippets/has_one (ho).yasnippet -;; ${1/[[:alpha:]]+|(_)/(?1::\u$0)/g} =yyas> ${1:$(replace-regexp-in-string "_" "" (capitalize yas/text))} -;; -;; # as in Snippets/Create sweeper class.yasnippet -;; ${1/./\l$0/} =yyas> ${1:$(and (yas/text) (concat (downcase (substring yas/text 0 1)) (substring yas/text 1)))} -;; -;; # as in Snippets/image_submit_tag.yasnippet -;; ${1/^(\w+)(\.\w*)?$/$1/} =yyas> ${1:$(file-name-sans-extension yas-text)} -;; -;; # as in Snippets/respond_to (html).yasnippet -;; $TM_SELECTED_TEXT =yyas> `yas/selected-text` -;; -;; # as in Snippets/find_in_batches.yasnippet -;; ${TM_CURRENT_WORD/(\w+)\./\L$1/g} =yyas> `(downcase (replace-regexp-in-string "\\..*$" "" (current-word)))` -;; - -;; Substitutions for: condition - -;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.helper, meta.rails.unit_test, source.js, source.css, source.yaml, meta.rails.controller, meta.rails.functional_test, text.haml =yyas> (yas/unknown) -;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.helper, meta.rails.functional_test, source.js, source.css, source.yaml, meta.rails.model, meta.rails.unit_test, text.haml =yyas> (yas/unknown) -;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.controller, meta.rails.model, meta.rails.unit_test, meta.rails.functional_test, text.haml =yyas> t -;; meta.rails.controller, meta.rails.helper, meta.rails.model, meta.rails.unit_test, meta.rails.functional_test =yyas> (yas/unknown) -;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.controller, meta.rails.helper, text.haml =yyas> (yas/unknown) -;; meta.rails.controller, meta.rails.helper, meta.rails.model, meta.rails.functional_test, source.yaml =yyas> t -;; meta.rails.controller, meta.rails.helper, meta.rails.model, source.yaml, meta.rails.unit_test =yyas> t -;; meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table =yyas> (yas/rails-intelligent-migration-snippet-condition-p) -;; meta.rails.migration.create_table, meta.rails.migration.change_table =yyas> (or (yas/rails-in-create-table-p) (yas/rails-in-change-table-p)) -;; meta.rails.controller, meta.rails.mailer, source.js, source.css =yyas> (yas/unknown) -;; meta.rails.migration.create_table =yyas> (yas/rails-in-create-table-p) -;; meta.rails.functional_test =yyas> (yas/rails-in-functional-test-p) -;; text.html.ruby, text.haml =yyas> (yas/rails-view-p) -;; meta.rails.controller =yyas> (yas/rails-in-controller-p) -;; meta.rails.routes =yyas> (yas/rails-in-routes-p) -;; text.html.ruby =yyas> (yas/unknown) - - -;; Substitutions for: binding -;; -;; # as in Snippets/rails session.yasnippet -;; ^j =yyas> C-c M-j -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet -;; ~$ =yyas> (yas/unknown) -;; -;; # as in Commands/Go To View.yasnippet -;; ~$@ =yyas> C-M-s-down -;; -;; # as in Commands/Generate Quick Migration.yasnippet -;; ^M =yyas> (yas/unknown) -;; -;; # as in Commands/Go To File on This Line.yasnippet -;; ~@ =yyas> (yas/unknown) -;; -;; # as in Commands/Show DB Schema.yasnippet -;; ^@S =yyas> C-c M-s -;; -;; # as in Snippets/rails params.yasnippet -;; ^p =yyas> C-c M-p -;; -;; # as in Commands/Go To File.yasnippet -;; 0CCC8443-40F3-4BAB-9440-D737562B5F45 =yyas> M-s-up -;; # as in Commands/Go To Alternate File.yasnippet -;; 9453F0B3-B946-445F-BDB0-B01DE70732FC =yyas> M-s-down -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Commands/Test Units.yasnippet -;; ^\ =yyas> C-c M-\ -;; -;; # as in Commands/Rake Migrate.yasnippet -;; ^| =yyas> C-c M-| -;; -;; # as in Snippets/respond_to (html).yasnippet -;; @H =yyas> C-c M-h -;; -;; # as in Commands/Make Selection in to Partial.yasnippet -;; ^H =yyas> C-c M-m -;; -;; # as in Commands/View demo help.yasnippet -;; ^h =yyas> (yas/unknown) -;; -;; -;; -;; --**-- -;; Automatically generated code, do not edit this part -;; -;; Translated menu -;; -(yas/define-menu 'rails-mode - '((yas/submenu "Go To" - (;; Alternate File - (yas/item "0CCC8443-40F3-4BAB-9440-D737562B5F45") - ;; File on Current Line - (yas/item "09BB96F2-75FD-48A7-8314-B5B56B09B477") - (yas/separator) - ;; Go to Model - (yas/item "C7151BF3-7068-4344-9B09-86F3BF4A9C63") - ;; Go to Controller - (yas/item "9453F0B3-B946-445F-BDB0-B01DE70732FC") - ;; Go to View - (yas/item "EE862691-A624-4797-90CF-EDD39EFB2D8E") - ;; Go to Functional Test - (yas/item "DFE393BE-0764-49FE-B464-6350A50921E6") - ;; Ignoring Go to Helper - (yas/ignore-item "51C9C27A-D931-49F9-B6D8-C0E7ABEC992D") - ;; Ignoring Go to Javascript - (yas/ignore-item "B078346F-61D8-4E75-9427-80720FBC67F7") - ;; Ignoring Go to Stylesheet - (yas/ignore-item "B207BBD4-D6AA-41E9-9530-27210F2D7B66") - ;; Go to Unit Test - (yas/item "BDBB15A4-2824-4BEC-93A5-7475F9C46A39") - ;; Ignoring Go to Fixture - (yas/ignore-item "638D94A4-BDFC-4FE9-8909-9934F3FD2899"))) - (yas/submenu "Run Tests" - (;; Ignoring Test All - (yas/ignore-item "DC549A45-D9B0-11DC-94E9-00112475D960") - ;; Ignoring Test Functionals - (yas/ignore-item "F4EA552D-D9B0-11DC-94E9-00112475D960") - ;; Ignoring Test Integration - (yas/ignore-item "04A30A4D-D9B1-11DC-94E9-00112475D960") - ;; Ignoring Test Plugins - (yas/ignore-item "0D966168-D9B1-11DC-94E9-00112475D960") - ;; Ignoring Test Recent - (yas/ignore-item "190401C2-D9B1-11DC-94E9-00112475D960") - ;; Ignoring Test Uncommitted - (yas/ignore-item "212C3047-D9B1-11DC-94E9-00112475D960") - ;; Ignoring Test Units - (yas/ignore-item "2C60CBA1-D9B1-11DC-94E9-00112475D960"))) - - ;; Ignoring Call Generate Script - (yas/ignore-item "4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE") - ;; Ignoring Install Plugin - (yas/ignore-item "46ECE243-0448-4A64-A223-27CC21E7704D") - (yas/submenu "Database" - (;; Ignoring Migrate to Current - (yas/ignore-item "985F56D4-82ED-4C45-8250-2ECCFC71957E") - ;; Ignoring Migrate to Version ... - (yas/ignore-item "07C696F8-79F5-4E0B-9EE9-03B693A54ABB") - ;; Ignoring Migrate to Previous Version - (yas/ignore-item "9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29") - ;; Redo Last Migration - (yas/item "CFDA9F62-D071-4E0F-AD10-66AE0729FFCF") - (yas/separator) - ;; Ignoring Load Fixtures (Development DB) - (yas/ignore-item "5EEA0C71-B34B-4408-953B-F47AAD343CCC") - ;; Ignoring Load Fixtures (Test DB) - (yas/ignore-item "F758BFD1-00CA-4742-BE71-032580080F5C") - - ;; Ignoring Load schema.rb to DB - (yas/ignore-item "6DEF923E-2347-46EC-AFBE-183D08E63DC1") - ;; Ignoring Dump DB to schema.rb - (yas/ignore-item "310C901C-EF32-4E88-938A-804ABBF8C428") - ;; Ignoring Clone Development DB to Test DB - (yas/ignore-item "6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1"))) - - ;; params[…] - (yas/item "AC8EDA3E-875B-11D9-897C-000393CBCE2E") - ;; session[…] - (yas/item "7B02ABF8-8763-11D9-897C-000393CBCE2E") - (yas/submenu "Logger" - (;; logger.debug - (yas/item "D975E5C1-42C2-40F1-8960-0DA533B18113") - ;; logger.info - (yas/item "36E2A3EE-E9CC-4B7F-A4CF-AFAF970B8699") - ;; logger.warn - (yas/item "38D5CA05-E219-4399-A244-609AF40B1D0B") - ;; logger.error - (yas/item "7053B86A-9B81-4154-AB3C-61B8035C5D33") - ;; logger.fatal - (yas/item "35E95C81-22F7-4C40-8297-ED21086DDA81") - ;; RAILS_DEFAULT_LOGGER.debug - (yas/item "7B15B396-1F41-4529-9253-32761E94448C"))) - (yas/separator) - (yas/submenu "Models" - (;; Ignoring Show DB Schema for Current Class - (yas/ignore-item "1970AE74-3949-40B3-B263-727AA3FF167A") - - (yas/submenu "Callbacks" - (;; before_validation - (yas/item "A1776279-5396-4FE9-9218-8BF2C88C5271") - ;; before_validation_on_create - (yas/item "E2CE2E3B-8A61-4866-9AF5-A12F44CF7233") - ;; before_validation_on_update - (yas/item "86CFB156-E72B-440F-9C7D-08A3375C3ADB") - ;; after_validation - (yas/item "44FBD811-70A9-462B-AC56-F975ADAD62AF") - ;; after_validation_on_create - (yas/item "BA0DE6C7-EAD3-42C9-8ABB-2B9A5F2FE225") - ;; after_validation_on_update - (yas/item "BCB25D36-2D3F-41E9-B2CF-37D6E883E8D1") - ;; before_save - (yas/item "523BE8A6-0845-493D-A9B6-532F73D21950") - ;; after_save - (yas/item "4D1787E3-1583-4CF3-8D99-CC45D7C35EED") - ;; before_create - (yas/item "D64D8863-DCB6-4397-B5B0-073E0AE04167") - ;; after_create - (yas/item "279D1981-B055-4693-B9AF-5B571A62A6AE") - ;; before_destroy - (yas/item "3F4B502B-5F68-4687-88E9-6EF3BDF9677D") - ;; after_update - (yas/item "0C9EA1A1-66C5-4E1C-9C30-E1FFE8EC6EAE") - ;; before_update - (yas/item "1C20EEBE-B4BA-48C8-9B33-7B5BB00D958C") - ;; after_destroy - (yas/item "A2F3E8C1-4216-4890-8491-2F8C7534ED03"))) - (yas/submenu "Associations" - (;; belongs_to - (yas/item "B8F08BD7-6160-482C-8A3D-CBC6BD2079A4") - ;; has_and_belongs_to_many - (yas/item "2AC3AC1F-743B-4A33-863C-C37885073806") - ;; has_one - (yas/item "BD2E4045-54E6-450E-B31B-5E1865CFFBC9") - ;; has_many - (yas/item "F396B7BD-8255-48B1-904A-06E7D7CC2741") - ;; has_many :dependent => :destroy - (yas/item "3E3AF538-171B-4108-AB92-827AD7E24C77") - ;; has_many (through) - (yas/item "9D58B6C9-BA52-48B3-B639-D5CB894AF810") - ;; has_many :dependent => :destroy - (yas/item "3E3AF538-171B-4108-AB92-827AD7E24C77"))) - (yas/submenu "Scopes" - (;; named_scope - (yas/item "1CB65A0D-4FEC-4438-9B4F-8B0BD13FB875") - ;; named_scope lambda - (yas/item "4E286CB4-069E-474C-A970-95216FE7DE95"))) - (yas/submenu "Finders" - (;; find(id) - (yas/item "59CD3A41-8164-4FB4-B462-D7ACE86BCDBF") - ;; find(:all) - (yas/item "A017AB39-A875-40DC-8ACF-7E3551057CA0") - ;; find(:first) - (yas/item "FE430ECD-5D40-4D95-A73B-F064C73992DE"))) - (yas/submenu "Validations" - (;; validates_acceptance_of - (yas/item "89198999-7E6D-4D97-A20E-45263E1CA993") - ;; validates_acceptance_of if - (yas/item "A2477223-AD5A-4723-8052-943CE9BA634D") - ;; validates_associated - (yas/item "47944705-F605-4ED4-B4C0-9E823EE25138") - ;; validates_associated if - (yas/item "85E9264C-5414-4FA0-AC07-F305A798ED46") - ;; validates_confirmation_of - (yas/item "B5893618-D07C-48F1-8867-736D0AAFF0E7") - ;; validates_confirmation_of if - (yas/item "1354726C-DA64-4CA6-A099-26626A865D8D") - ;; validates_exclusion_of - (yas/item "4CC98A56-B60B-4A89-80E0-400C5314A050") - ;; validates_exclusion_of if - (yas/item "869AB0B7-12DD-440A-905A-BFB1E0E16E1C") - ;; validates_inclusion_of - (yas/item "4611F02E-E9BF-11DC-8518-00112475D960") - ;; validates_inclusion_of if - (yas/item "47FF50AF-E9BF-11DC-8518-00112475D960") - ;; validates_format_of - (yas/item "EB47FBA1-AFB3-42F9-94A4-552D3175C17A") - ;; validates_format_of if - (yas/item "14BF0586-F2E8-4AB3-BB4B-E49099384403") - ;; validates_length_of - (yas/item "5CE8838A-BF2C-497E-B87A-E90C3BC482E0") - ;; validates_length_of if - (yas/item "EC511A43-D3B7-11DC-BA49-00112475D960") - ;; validates_numericality_of - (yas/item "B21BA16D-7C04-4912-8488-425CDCC332A8") - ;; validates_numericality_of if - (yas/item "CF506019-E964-4172-A3DA-475AE3B65558") - ;; validates_presence_of - (yas/item "5DAC28A7-33C8-4DA7-9E85-56618D6BEC9F") - ;; validates_presence_of if - (yas/item "F5CBBE16-F5CC-4EDA-8BC6-30281BD7D854") - ;; validates_uniqueness_of - (yas/item "F8316545-9AE4-4C7F-87ED-A2C00E6637FA") - ;; validates_uniqueness_of if - (yas/item "43680344-0818-42BF-95B4-58CD2D76545B"))))) - (yas/submenu "Controllers" - (;; Create controller class - (yas/item "4B3F798E-E3B6-48C8-8C2F-CB8631011638") - ;; flash[…] - (yas/item "D864896E-8763-11D9-897C-000393CBCE2E") - (yas/submenu "respond_to" - (;; respond_to (html) - (yas/item "3BDD0D52-443E-4F5F-AE09-ABCC2ABE9A42") - ;; respond_to - (yas/item "B41D3164-EA53-4DDC-850E-27B82B24061F") - ;; wants.format - (yas/item "3F26FDB4-ACF9-4856-9312-6A4D78DC8564"))) - (yas/submenu "redirect_to" - (;; redirect_to (path) - (yas/item "A909C4C3-8EFE-4E39-9D96-BA8F0ABE6085") - ;; redirect_to (path plural) - (yas/item "AFE06B67-CE98-42A6-93D1-8EC8E3B9F83C") - ;; redirect_to (nested path) - (yas/item "9D7228B3-A6ED-4598-B096-032B3600864F") - ;; redirect_to (nested path plural) - (yas/item "EF527A27-D1D4-4FD8-BD23-71397881C29A") - ;; redirect_to (action) - (yas/item "F2F3167C-73B9-11D9-B752-000D932CD5BA") - ;; redirect_to (action, id) - (yas/item "2233B484-73BA-11D9-B752-000D932CD5BA") - ;; redirect_to (controller) - (yas/item "053490FE-73BA-11D9-B752-000D932CD5BA") - ;; redirect_to (controller, action) - (yas/item "0C137FBF-73BA-11D9-B752-000D932CD5BA") - ;; redirect_to (controller, action, id) - (yas/item "18D3C1C3-73BA-11D9-B752-000D932CD5BA"))) - (yas/submenu "render" - (;; render (action) - (yas/item "7B03D38B-7580-41AC-BC2B-3766AB074A43") - ;; render (action, layout) - (yas/item "053F1D6A-B413-43FF-B697-E3120FD0489F") - ;; render (file) - (yas/item "7D43B0EA-2C3C-499B-9346-A8E48CBF29CD") - ;; render (file, use_full_path) - (yas/item "2A8FBE48-E196-4019-AE76-BF3ED4B54F47") - ;; render (inline) - (yas/item "64E93A71-6E62-48D9-9694-123080AE6723") - ;; render (inline, locals) - (yas/item "1E5DE984-510C-4992-8AD5-C5FA6D7F2A88") - ;; render (inline, type) - (yas/item "A8AF8B90-94E8-42E1-8057-DDBA57809F6A") - ;; render (layout) - (yas/item "3F83272F-62D5-4BCB-BAA3-806083078829") - ;; render (nothing) - (yas/item "AC8A995F-0034-433C-905D-E5C1F29D6EFF") - ;; render (nothing, status) - (yas/item "724A68C1-A727-46FF-AF59-288E26B09629") - ;; render (partial) - (yas/item "498168A5-5AF8-4F59-8A2D-B517FAB98CDB") - ;; render (partial, collection) - (yas/item "046FB1B6-9C65-4702-91EC-4AA9878CD949") - ;; render (partial, locals) - (yas/item "6F41AFFD-B3A7-42D0-8A84-D6086C118D92") - ;; render (partial, object) - (yas/item "BFAAC8DA-A043-4684-967B-B3E5DAE08C62") - ;; render (partial, status) - (yas/item "CBB06A4E-3A82-45F3-91AA-259F02314B9D") - ;; render (text) - (yas/item "67C5082F-5011-434A-8EAA-6B8D3600935F") - ;; render (text, layout) - (yas/item "A3B09AFE-40B5-4623-8B85-E9F369ECE22D") - ;; render (text, layout => true) - (yas/item "97C0992D-715F-4322-A3E0-DD4D2B7E2FC2") - ;; render (text, status) - (yas/item "4F636977-F7A6-4BF5-B09B-7F087683C3B9") - ;; render (update) - (yas/item "ECB10C0B-E8B7-4606-ABF5-4A2A26E5AB1A"))) - (yas/submenu "REST methods" - (;; def create - resource - (yas/item "54F61419-001F-4B71-83AC-8DC633694AF0"))) - (yas/separator) - ;; verify — render - (yas/item "9ECBF20C-003E-41D9-A881-4BAC0656F9DC") - ;; verify — redirect - (yas/item "7BBD3F57-57A5-4CD0-8E79-B931021FC110"))) - (yas/submenu "ERb Templates" - (;; Create Partial From Selection - (yas/item "1DD8A214-1C97-45BA-ADEE-8F888DDE8570") - (yas/separator) - ;; form_for - (yas/item "7D99041D-C3B7-4940-AE64-6B1758CDB47C") - ;; form_for with errors - (yas/item "15BDD7B6-5C15-4684-93C7-A05E3D2221AC") - (yas/submenu "form_for f. drop-down list" - (;; f.label (ffl) - (yas/item "402C251E-595B-4A58-8EB9-41989040F280") - ;; f.text_field (fftf) - (yas/item "CC1BCD1C-2479-4335-B511-17B880316A75") - ;; f.text_area (ffta) - (yas/item "06498926-F84D-466C-8736-B8A0AC586A94") - ;; f.check_box (ffcb) - (yas/item "F579F9E7-E072-4BCC-BFF9-C8C5BAE7FFA5") - ;; f.radio_box (ffrb) - (yas/item "A95358D2-C68A-4894-8C36-062C9F45848A") - ;; f.password_field (ffpf) - (yas/item "42289456-C8D1-498C-AE30-5206544B349F") - ;; f.hidden_field (ffhf) - (yas/item "5DBA8F72-DD6C-4CBF-83FD-76301E159BA9") - ;; f.file_field (ffff) - (yas/item "79BC2303-3D9D-4E21-AF85-73B388B7B56D") - ;; f.submit (ffs) - (yas/item "C315EC5D-A7F3-49CB-9795-21B78BB42FF4"))) - (yas/submenu "form_for helpers" - (;; form_for label - (yas/item "B31822D9-2048-4D16-B2AF-00E0B4E5C368") - ;; form_for text_field - (yas/item "F46EE8EE-239C-46D7-980B-3F861B7D9111") - ;; form_for text_area - (yas/item "4C898FA8-D09C-4B28-BE42-14BB4EA4E2B1") - ;; form_for check_box - (yas/item "F0DB6886-4FFE-45BA-907F-44326AD8142D") - ;; form_for radio_box - (yas/item "D4282CE1-4171-4B13-9220-3F2718BC2505") - ;; form_for password_field - (yas/item "3379FB35-C664-4255-96C6-6E4B91F12759") - ;; form_for hidden_field - (yas/item "99FEFD9B-5A07-46E3-950D-5C474E42B695") - ;; form_for file_field - (yas/item "C8BA285D-E12E-4AB8-A941-514C963E8226") - ;; form_for submit - (yas/item "3000E569-4E19-4566-B08E-A3FFFAAC9075"))) - (yas/separator) - ;; form_tag - (yas/item "F0F6DACA-6A0B-11D9-BDC2-000D932CD5BA") - ;; submit_tag - (yas/item "D0E29200-E910-11DC-A399-00112475D960") - ;; image_submit_tag - (yas/item "9FB9848E-EA5A-11DC-9DE5-00112475D960") - (yas/submenu "link_to" - (;; link_to (path) - (yas/item "326B57A7-B4A9-447B-A3D2-0EA74158E1E1") - ;; link_to (path plural) - (yas/item "6BA737F0-63D1-4D82-9381-4331E18B12C5") - ;; link_to (nested path) - (yas/item "750DEEF9-18A0-40FC-8E54-574CE5EE5565") - ;; link_to (nested path plural) - (yas/item "866AAD87-E458-4F2D-9E7C-3CE73EFC047B") - ;; link_to (action) - (yas/item "9E2B42FE-7BC8-11D9-906A-000D932CD5BA") - ;; link_to (action, id) - (yas/item "B4F952F4-7BC8-11D9-906A-000D932CD5BA") - ;; link_to (controller) - (yas/item "74590E16-7BCB-11D9-906A-000D932CD5BA") - ;; link_to (controller, action) - (yas/item "C11C0BF5-7BC8-11D9-906A-000D932CD5BA") - ;; link_to (controller, action, id) - (yas/item "D21BE958-7BC8-11D9-906A-000D932CD5BA") - ;; link_to model - (yas/item "E5E08AA0-4EDD-4583-BF07-5D6C49E98410"))) - ;; end (ERB) - (yas/item "AC385ABF-96CD-4FCB-80AD-BF37D6EE79D2") - (yas/separator) - ;; map(&:sym_proc) - (yas/item "EC605540-C431-4FD0-AD91-D913118DACA7") - (yas/separator) - ;; for loop in rhtml - (yas/item "F7744F07-306C-4951-AB5A-3D69BA5516B7"))) - (yas/submenu "Layouts" - (;; javascript_include_tag - (yas/item "FEF49C86-9386-405E-A191-684D1C963E3A") - ;; stylesheet_link_tag - (yas/item "980C7667-9D60-49FF-AF74-A7B19B379F45"))) - (yas/submenu "RJS" - (;; page.replace (id, partial) - (yas/item "273E5E76-8D13-4476-9C38-8AF87432CB96") - ;; page.hide (*ids) - (yas/item "390A447F-0FA3-4F01-A10C-4F35675E0A43") - ;; page.replace_html (id, partial) - (yas/item "8B914165-9C66-4FA3-9AD6-1DA41B25F8F1") - ;; page.insert_html (position, id, partial) - (yas/item "62BEA590-F4EF-4001-B661-764EDFB92811") - ;; page.visual_effect (effect, id) - (yas/item "CFDC27A3-58CF-4198-8F93-36360978F0D0") - ;; page.show (*ids) - (yas/item "5ACBF49D-B5A5-495C-89D8-18AA740D9D02") - ;; page.toggle (*ids) - (yas/item "028DA0A4-B310-4BEF-8643-2A22993C21C7"))) - (yas/submenu "Migrations" - (;; Ignoring Quick Migration - (yas/ignore-item "D696FA2C-785A-4B73-A2F6-F750904DD7C2") - - (yas/submenu "Columns" - (;; Add / Remove Column - (yas/item "18C76913-061C-4D65-866D-67AA3724AFEF") - ;; Ignoring Add / Remove Several Columns - (yas/ignore-item "7BC860E6-7561-4E6E-983B-507D7A6F6228") - ;; Add / Remove Several Columns (marcc) - (yas/item "27A6C58A-896B-4956-BA81-D671A2EF9C7D") - ;; Ignoring Rename / Rename Column - (yas/ignore-item "AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3") - ;; Ignoring Rename / Rename Several Columns - (yas/ignore-item "F03162DE-9DB6-417B-9DD7-52D9F11EA736") - ;; Ignoring Rename / Rename Several Columns (mncc) - (yas/ignore-item "04A86178-71B1-430A-A06D-DFF7C9A338B5") - ;; Remove / Add Column - (yas/item "16A705EB-10DC-42B5-9FF2-377E206421DC"))) - (yas/submenu "Tables" - (;; Ignoring Create / Drop Table - (yas/ignore-item "25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2") - ;; Ignoring Rename / Rename Table - (yas/ignore-item "FD8CC811-2AD3-480F-B975-DF959DC96C67") - ;; Drop / Create Table - (yas/item "20375601-B13F-4314-B8E4-362706566636") - ;; Ignoring Change / Change Table - (yas/ignore-item "20FC02C5-32A3-4F20-B163-FF75C9FDFABF") - - (yas/submenu "Create columns t. drop-down list" - (;; t.string (tcs) - (yas/item "B757F7E5-E4BD-11DC-A11A-00112475D960") - ;; t.text (tct) - (yas/item "FFE7B820-E4BD-11DC-A11A-00112475D960") - ;; t.integer (tci) - (yas/item "0E63B7D5-E4BE-11DC-A11A-00112475D960") - ;; t.float (tcf) - (yas/item "1BDC463A-E4BE-11DC-A11A-00112475D960") - ;; t.decimal (tcd) - (yas/item "26C09807-E4BE-11DC-A11A-00112475D960") - ;; t.datetime (tcdt) - (yas/item "3458B140-E4BE-11DC-A11A-00112475D960") - ;; t.timestamp (tcts) - (yas/item "49643690-E4BE-11DC-A11A-00112475D960") - ;; t.time (tcti) - (yas/item "537BDD48-E4BE-11DC-A11A-00112475D960") - ;; t.date (tcda) - (yas/item "61CF5B32-E4BE-11DC-A11A-00112475D960") - ;; t.boolean (tcb) - (yas/item "6BE6F315-E4BE-11DC-A11A-00112475D960") - ;; t.binary (tcbi) - (yas/item "7CE57C6C-E4BE-11DC-A11A-00112475D960") - ;; t.timestamps (tctss) - (yas/item "950B0BF2-E4BE-11DC-A11A-00112475D960") - ;; t.lock_version (tcl) - (yas/item "A677FFD4-E4BE-11DC-A11A-00112475D960") - ;; t.references (tcr) - (yas/item "B6D9225C-E4BE-11DC-A11A-00112475D960"))) - (yas/submenu "Create columns helpers" - (;; Table column string - (yas/item "377BF814-D52D-11DC-BD8E-00112475D960") - ;; Table column text - (yas/item "6A9D4C30-D52D-11DC-BD8E-00112475D960") - ;; Table column integer - (yas/item "729D559E-D52D-11DC-BD8E-00112475D960") - ;; Table column float - (yas/item "8AF989C4-D52E-11DC-BD8E-00112475D960") - ;; Table column decimal - (yas/item "93A16768-D52E-11DC-BD8E-00112475D960") - ;; Table column datetime - (yas/item "D6CBCA96-D52F-11DC-BD8E-00112475D960") - ;; Table column timestamp - (yas/item "4600CE20-D532-11DC-BD8E-00112475D960") - ;; Table column time - (yas/item "4F5DDD37-D532-11DC-BD8E-00112475D960") - ;; Table column date - (yas/item "56276686-D532-11DC-BD8E-00112475D960") - ;; Table column boolean - (yas/item "967093B4-D532-11DC-BD8E-00112475D960") - ;; Table column binary - (yas/item "5E9B8B0E-D532-11DC-BD8E-00112475D960") - ;; Table column timestamps - (yas/item "E0C8FDC4-D532-11DC-BD8E-00112475D960") - ;; Table column lock_version - (yas/item "FC2523C1-D532-11DC-BD8E-00112475D960") - ;; Table column(s) references - (yas/item "EDA6568B-D533-11DC-BD8E-00112475D960"))) - ;; Create Column in Table - (yas/item "7592CA99-75D7-48B6-9133-00B9F148FF43") - ;; Create Several Columns in Table - (yas/item "67FD2F8F-5F25-45F2-A451-2F39977A9EDE") - (yas/submenu "Change columns t. drop-down list" - (;; t.rename (tre) - (yas/item "9D4E30E2-4A61-4941-B9F3-BEE97552747A"))) - (yas/submenu "Change columns helpers" - (;; Table column(s) rename - (yas/item "DF30226E-1111-448A-B669-7CA34EE83909"))))) - (yas/submenu "Indexes" - (;; Ignoring Add / Remove Index - (yas/ignore-item "95F83E1D-5B03-424F-8BEC-8AF66C8939BC") - ;; Ignoring Add / Remove Named Index - (yas/ignore-item "A7F692C1-778A-48B8-945E-573568BA0403") - ;; Ignoring Add / Remove Unique Index - (yas/ignore-item "33057A79-677B-4DFB-99D4-1492778BDDC6"))))) - (yas/submenu "Routes" - (;; map.named_route - (yas/item "91C543BF-7BD8-4E3A-B493-AE572C5472A0") - ;; map.resources - (yas/item "0FF86C46-0E01-4D03-8232-72CA5BD55706") - ;; map.resource - (yas/item "2183A9A9-17ED-4A4F-ABB6-668EDDD3A6E4") - ;; map.with_options - (yas/item "BD4B90F7-2187-4E75-BFFB-77BE67CB8DAE") - ;; map.catch_all - (yas/item "F3606586-F905-4A91-92CA-82319239221D"))) - (yas/submenu "ActiveSupport" - (;; cattr_accessor - (yas/item "F57522B2-9F5F-4DF9-AE46-9478AF019C63") - ;; mattr_accessor - (yas/item "B25B7560-FACB-4A9E-A226-B71C796BD1F3") - ;; returning do |variable| … end - (yas/item "D2783155-23F3-4B90-A317-5BD139471193"))) - (yas/separator) - (yas/submenu "Fixtures" - (;; $LABEL - (yas/item "786980D8-FA69-4542-85A3-5E48CFAA6814") - ;; <%= Fixtures.identify(:symbol) %> - (yas/item "9671EB7A-89D6-4C23-914F-88CBEE0D177A") - (yas/separator) - ;; Ignoring Autocomplete Foreign Key Fixture Reference - (yas/ignore-item "0BCF0EE2-35EE-4959-A771-E74D55271D5A") - ;; Ignoring Autocomplete Foreign Key Fixture Reference (habtm) - (yas/ignore-item "275C0B86-F735-49B6-8A22-218A8F4CC2E0"))) - (yas/submenu "Unit Tests" - (;; assert_difference - (yas/item "30BEA6FB-301C-4460-93EC-FA3404688962") - ;; assert_no_difference - (yas/item "5C6F4462-70E6-40B4-B3F2-F371656E7784") - (yas/separator))) - (yas/submenu "Functional Tests" - (;; Create functional test class - (yas/item "F60D0630-CBF5-4283-9D20-FA46C787A88D") - ;; def test_should_get_action - (yas/item "1C491A76-751F-44EF-8DFB-0A585C7EEFF6") - ;; def test_should_post_action - (yas/item "8B9CD068-4338-4039-AA06-D839A6C7A9FF") - (yas/separator) - ;; assert_response - (yas/item "2BD82DCB-1F19-4C8F-BC70-C0BBB06A2138") - ;; assert_redirected_to - (yas/item "CD60F800-850D-47CF-BE32-3DE665DD5C68") - ;; assert_redirected_to (path) - (yas/item "D33EDCE7-F8AF-48D4-AA7A-852BBF03E31D") - ;; assert_redirected_to (path plural) - (yas/item "0249637E-0720-46DA-A8FD-E176A2CC458B") - ;; assert_redirected_to (nested path) - (yas/item "97021C0D-EB65-4046-B688-01F09B3B1615") - ;; assert_redirected_to (nested path plural) - (yas/item "4C92C020-7337-4D6E-91EE-7ABF2BFC7F41") - (yas/separator) - ;; assert_select - (yas/item "DBE14FE8-B415-4DBC-A316-F8DA63FE9FD7") - (yas/separator) - ;; assert_rjs - (yas/item "E0F281EC-5311-41F8-ADD9-2E2D059DA651") - (yas/separator) - ;; assert(var = assigns(:var)) - (yas/item "FE9C4B4E-860D-49F0-AAF7-5582B98F5F54"))) - (yas/submenu "Ajax Tests" - (;; xhr post - (yas/item "62C3838B-0790-4FC2-8425-F273A57F5D33") - ;; xhr get - (yas/item "78FCF992-D01B-404F-BC54-5EE7B91F999A") - ;; xhr delete - (yas/item "F1BE0C3D-7203-43E9-BEFB-D1A99CDD31C1") - ;; xhr put - (yas/item "C12C98A5-74E5-4E70-9ADB-8783455D6539"))) - (yas/separator) - ;; Ignoring View demo help - (yas/ignore-item "964436B8-E578-11DC-8177-00112475D960")) - '("A2135370-67A1-488D-B43C-B4F221127C2F" - "809BCA42-5C49-4B08-B3C4-BB773036C086" - "1970AE74-3949-40B3-B263-727AA3FF167A" - "638D94A4-BDFC-4FE9-8909-9934F3FD2899" - "F758BFD1-00CA-4742-BE71-032580080F5C" - "6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1" - "07C696F8-79F5-4E0B-9EE9-03B693A54ABB" - "D696FA2C-785A-4B73-A2F6-F750904DD7C2" - "DC549A45-D9B0-11DC-94E9-00112475D960" - "964436B8-E578-11DC-8177-00112475D960" - "5EEA0C71-B34B-4408-953B-F47AAD343CCC" - "0BCF0EE2-35EE-4959-A771-E74D55271D5A" - "0D966168-D9B1-11DC-94E9-00112475D960" - "190401C2-D9B1-11DC-94E9-00112475D960" - "212C3047-D9B1-11DC-94E9-00112475D960" - "F4EA552D-D9B0-11DC-94E9-00112475D960" - "04A30A4D-D9B1-11DC-94E9-00112475D960" - "275C0B86-F735-49B6-8A22-218A8F4CC2E0" - "2C60CBA1-D9B1-11DC-94E9-00112475D960" - "9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29" - "B207BBD4-D6AA-41E9-9530-27210F2D7B66" - "B078346F-61D8-4E75-9427-80720FBC67F7" - "6DEF923E-2347-46EC-AFBE-183D08E63DC1" - "4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE" - "46ECE243-0448-4A64-A223-27CC21E7704D" - "310C901C-EF32-4E88-938A-804ABBF8C428" - "51C9C27A-D931-49F9-B6D8-C0E7ABEC992D" - "985F56D4-82ED-4C45-8250-2ECCFC71957E" - "25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2" - "04A86178-71B1-430A-A06D-DFF7C9A338B5" - "FD8CC811-2AD3-480F-B975-DF959DC96C67" - "AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3" - "95F83E1D-5B03-424F-8BEC-8AF66C8939BC" - "33057A79-677B-4DFB-99D4-1492778BDDC6" - "A7F692C1-778A-48B8-945E-573568BA0403" - "20FC02C5-32A3-4F20-B163-FF75C9FDFABF" - "A2135370-67A1-488D-B43C-B4F221127C2F" - "7BC860E6-7561-4E6E-983B-507D7A6F6228" - "F03162DE-9DB6-417B-9DD7-52D9F11EA736" - "809BCA42-5C49-4B08-B3C4-BB773036C086")) - -;; Unknown substitutions -;; -;; Substitutions for: content -;; -;; # as in Macros/Remove 3A Add Column.yasnippet -;; 809BCA42-5C49-4B08-B3C4-BB773036C086 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Named Index.yasnippet -;; A7F692C1-778A-48B8-945E-573568BA0403 =yyas> (yas/unknown) -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet -;; 275C0B86-F735-49B6-8A22-218A8F4CC2E0 =yyas> (yas/unknown) -;; -;; # as in Commands/Test Uncommitted.yasnippet -;; 212C3047-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet -;; 0BCF0EE2-35EE-4959-A771-E74D55271D5A =yyas> (yas/unknown) -;; -;; # as in Macros/Change Change Table.yasnippet -;; 20FC02C5-32A3-4F20-B163-FF75C9FDFABF =yyas> (yas/unknown) -;; -;; # as in Commands/Rake Migrate.yasnippet -;; 985F56D4-82ED-4C45-8250-2ECCFC71957E =yyas> (yas/unknown) -;; -;; # as in Commands/DB Schema Import.yasnippet -;; 6DEF923E-2347-46EC-AFBE-183D08E63DC1 =yyas> (yas/unknown) -;; -;; # as in Commands/Generate Quick Migration.yasnippet -;; D696FA2C-785A-4B73-A2F6-F750904DD7C2 =yyas> (yas/unknown) -;; -;; # as in Commands/Load Fixtures (Test DB).yasnippet -;; F758BFD1-00CA-4742-BE71-032580080F5C =yyas> (yas/unknown) -;; -;; # as in Commands/Test Plugins.yasnippet -;; 0D966168-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Test Recent.yasnippet -;; 190401C2-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Test All.yasnippet -;; DC549A45-D9B0-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Unique Index.yasnippet -;; 33057A79-677B-4DFB-99D4-1492778BDDC6 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename Column.yasnippet -;; AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3 =yyas> (yas/unknown) -;; -;; # as in Macros/Create 3A Drop Table.yasnippet -;; 25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Helper.yasnippet -;; 51C9C27A-D931-49F9-B6D8-C0E7ABEC992D =yyas> (yas/unknown) -;; -;; # as in Commands/DB Schema Dump.yasnippet -;; 310C901C-EF32-4E88-938A-804ABBF8C428 =yyas> (yas/unknown) -;; -;; # as in Commands/Migrate to Previous Version.yasnippet -;; 9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29 =yyas> (yas/unknown) -;; -;; # as in Commands/Test Functionals.yasnippet -;; F4EA552D-D9B0-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Macros/Drop 3A Create Table.yasnippet -;; A2135370-67A1-488D-B43C-B4F221127C2F =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Index.yasnippet -;; 95F83E1D-5B03-424F-8BEC-8AF66C8939BC =yyas> (yas/unknown) -;; -;; # as in Commands/Load Fixtures.yasnippet -;; 5EEA0C71-B34B-4408-953B-F47AAD343CCC =yyas> (yas/unknown) -;; -;; # as in Commands/Clone Development DB to Test DB.yasnippet -;; 6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename 3A Rename Several Columns.yasnippet -;; F03162DE-9DB6-417B-9DD7-52D9F11EA736 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Javascript.yasnippet -;; B078346F-61D8-4E75-9427-80720FBC67F7 =yyas> (yas/unknown) -;; -;; # as in Commands/Go To Stylesheet.yasnippet -;; B207BBD4-D6AA-41E9-9530-27210F2D7B66 =yyas> (yas/unknown) -;; -;; # as in Commands/Rake Migrate to Version.yasnippet -;; 07C696F8-79F5-4E0B-9EE9-03B693A54ABB =yyas> (yas/unknown) -;; -;; # as in Commands/View demo help.yasnippet -;; 964436B8-E578-11DC-8177-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Go to Fixture.yasnippet -;; 638D94A4-BDFC-4FE9-8909-9934F3FD2899 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename Table.yasnippet -;; FD8CC811-2AD3-480F-B975-DF959DC96C67 =yyas> (yas/unknown) -;; -;; # as in Macros/Rename 3A Rename Several Columns (mncc).yasnippet -;; 04A86178-71B1-430A-A06D-DFF7C9A338B5 =yyas> (yas/unknown) -;; -;; # as in Commands/Generate.yasnippet -;; 4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE =yyas> (yas/unknown) -;; -;; # as in Commands/Test Integration.yasnippet -;; 04A30A4D-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; # as in Commands/Show DB Schema.yasnippet -;; 1970AE74-3949-40B3-B263-727AA3FF167A =yyas> (yas/unknown) -;; -;; # as in Snippets/respond_to (html).yasnippet -;; `yas/selected-text` =yyas> (yas/unknown) -;; -;; # as in Macros/Add 3A Remove Several Columns.yasnippet -;; 7BC860E6-7561-4E6E-983B-507D7A6F6228 =yyas> (yas/unknown) -;; -;; # as in Commands/Install Bundled Plugin.yasnippet -;; 46ECE243-0448-4A64-A223-27CC21E7704D =yyas> (yas/unknown) -;; -;; # as in Commands/Test Units.yasnippet -;; 2C60CBA1-D9B1-11DC-94E9-00112475D960 =yyas> (yas/unknown) -;; -;; - -;; Substitutions for: condition -;; -;; # as in Commands/Rake Migrate.yasnippet -;; =yyas> (yas/unknown) -;; -;; # as in Snippets/stylesheet_link_tag.yasnippet -;; text.html.ruby =yyas> (yas/unknown) -;; -;; - -;; Substitutions for: binding -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet -;; ~$ =yyas> (yas/unknown) -;; -;; # as in Commands/Generate Quick Migration.yasnippet -;; ^M =yyas> (yas/unknown) -;; -;; # as in Commands/Go To File on This Line.yasnippet -;; ~@ =yyas> (yas/unknown) -;; -;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Commands/View demo help.yasnippet -;; ^h =yyas> (yas/unknown) -;; -;; - -;; .yas-setup.el for rails-mode ends here diff --git a/extensions/yasnippet/extras/imported/ruby-mode/.yas-setup.el b/extensions/yasnippet/extras/imported/ruby-mode/.yas-setup.el deleted file mode 100644 index 96d8541..0000000 --- a/extensions/yasnippet/extras/imported/ruby-mode/.yas-setup.el +++ /dev/null @@ -1,1019 +0,0 @@ -;; .yas-setup.el for ruby-mode -;; -*- coding: utf-8 -*- -;; -(defvar yas/ruby-snippet-open-paren " " - "The open parenthesis used in ruby-mode snippets. Normally blank but could be (") -(defvar yas/ruby-snippet-close-paren " " - "The close parenthesis used in ruby-mode snippets. Normally blank but could be )") -(defvar yas/ruby-shebang-args " -wKU" - "Arguments for the ruby shebang line.") - -(defun yas/ruby-infer-class-name () - "Infer the class name from the buffer. Thanks to hitesh " - (if buffer-file-name - (let ((fn (capitalize (file-name-nondirectory - (file-name-sans-extension - (buffer-file-name)))))) - (cond - ((string-match "_" fn) (replace-match "" nil nil fn)) - (t fn))) - "SomeClass")) - -(defun yas/ruby-chomp (x) - "Chomp string X, return nil if X became empty" - (let ((len (length x)) - (start 0) - (end (1- (length x)))) - (unless (zerop len) - (while (and (< start len) - (memq (aref x start) - '(? ?\t ?\n))) - (setq start (1+ start))) - (while (and (> end start) - (memq (aref x end) - '(? ?\t ?\n))) - (setq end (1- end))) - (unless (<= end start) - (substring x start (1+ end)))))) - -(defvar yas/ruby-block-start-regexp "\\(^\\|[\s\t\n^]\\)\\(do\\)[\s\t\n]\\(|.*|\\)?") - -(defun yas/ruby-toggle-single-multi-line-block () - "Toggle \"do .. end\" blocks into \"{ .. }\" blocks back and forth." - ;; - ;; TODO: Some code to be refactored here. - ;; - ;; FIXME: correctly detect statements in { .. } block, split-string(";") is no good - ;; - (interactive) - (let* ((do-block-bounds (save-excursion - (when (or (save-excursion (beginning-of-line) - (looking-at yas/ruby-block-start-regexp)) - (save-excursion (ruby-beginning-of-block) - (looking-at yas/ruby-block-start-regexp))) - (cons (match-beginning 1) - (progn (goto-char (match-beginning 1)) - (ruby-end-of-block) (point)))))) - (brace-block-bounds (condition-case nil - (let ((syntax-info (syntax-ppss))) - (if (fourth syntax-info) - (goto-char (ninth syntax-info))) - (while (progn (up-list -1) (not (eq (char-after) ?{)))) - (cons (point) - (progn (forward-sexp) (point)))) - (error nil))) - (block-region) - (statements)) - (if (and do-block-bounds brace-block-bounds) - (if (< (car do-block-bounds) (car brace-block-bounds)) - (setq do-block-bounds nil) - (setq brace-block-bounds nil))) - (cond (do-block-bounds - (goto-char (car do-block-bounds)) - (setq block-region (buffer-substring-no-properties (+ 2 (car do-block-bounds)) (cdr do-block-bounds))) - (delete-region (car do-block-bounds) (+ 3 (cdr do-block-bounds))) - (insert "{") - (when (string-match "\\(|.*|\\).*" block-region) - (insert " " (match-string 1 block-region)) - (setq block-region (substring block-region (match-end 1)))) - (setq statements (remove nil (mapcar #'yas/ruby-chomp - (split-string block-region "\n")))) - (mapc #'(lambda (string) - (insert " " string) - (if (member (aref string (1- (length string))) '(?; - ?|)) - (insert " ") - (insert ";"))) - statements) - (when statements (delete-backward-char 1)) - (save-excursion - (insert " }"))) - (brace-block-bounds - ;; (message "found a brace block") - (goto-char (car brace-block-bounds)) - (setq block-region (buffer-substring (1+ (car brace-block-bounds)) (1- (cdr brace-block-bounds)))) - (delete-region (car brace-block-bounds) (cdr brace-block-bounds)) - (insert "do") - (when (string-match "\\(|.*|\\).*" block-region) - (insert " " (match-string 1 block-region)) - (setq block-region (substring block-region (match-end 1)))) - (setq statements (remove nil (mapcar #'yas/ruby-chomp - (split-string block-region ";")))) - (mapc #'(lambda (string) - (insert "\n" string) - (indent-according-to-mode)) - statements) - (unless statements (insert "\n") (indent-according-to-mode)) - (save-excursion - (insert "\nend") - (indent-according-to-mode))) - (t - (message "No enclosing block found."))))) - -(defvar yas/ruby-require-regexps - '(("abbrev" . ("abbrev")) - ("base64" . ("Base64")) - ("benchmark" . ("Benchmark")) - ("bigdecimal" . ("BigDecimal")) - ("bigdecimal/math" . ("BigMath")) - ("cgi" . ("CGI")) - ("complex" . ("Complex")) - ("csv" . ("CSV")) - ("curses" . ("Curses")) - ("date" . ("Date(?:Time)?")) - ("dbm" . ("DBM")) - ("delegate" . ("DelegateClass" "Delegator" "SimpleDelegator ")) - ("digest" . ("MD5" "SHA1")) - ("dl" . ("DL")) - ("enumerator" . ("(?:enum|each)_(?:cons|slice)" "enum_(?:for|with_index)" "to_enum ")) - ("erb" . ("ERB")) - ("etc" . ("Etc")) - ("fcntl" . ("Fcntl")) - ("fileutils" . ("FileUtils")) - ("find" . ("Find(?:\.|::)find")) - ("forwardable" . ("(?:Single)?Forwardable")) - ("gdbm" . ("GDBM")) - ("generator" . ("Generator" "SyncEnumerator")) - ("getoptlong" . ("GetoptLong")) - ("gserver" . ("GServer")) - ("iconv" . ("Iconv")) - ("ipaddr" . ("IpAddr")) - ("logger" . ("Logger")) - ("matrix" . ("Matrix" "Vector")) - ("monitor" . ("Monitor(?:Mixin)?")) - ("net/ftp" . ("Net::FTP")) - ("net/http" . ("Net::HTTP")) - ("net/imap" . ("Net::IMAP")) - ("net/pop" . ("Net::(?:APOP|POP3)")) - ("net/smtp" . ("Net::SMTP")) - ("net/telnet" . ("Net::Telnet")) - ("nkf" . ("NKF")) - ("observer" . ("Observable")) - ("open3" . ("Open3")) - ("optparse" . ("OptionParser")) - ("ostruct" . ("OpenStruct")) - ("pathname" . ("Pathname")) - ("ping" . ("Ping")) - ("pp" . ("pp")) - ("pstore" . ("PStore")) - ("rational" . ("Rational")) - ("rdoc/usage" . ("RDoc(?:\.|::)usage")) - ("rdoc/markup/simple_markup" . ("SM::SimpleMarkup")) - ("rdoc/markup/simple_markup/to_html" . ("SM::SimpleMarkup")) - ("rdoc/usage" . ("RDoc(?:\.|::)usage")) - ("resolv" . ("Resolv")) - ("rexml/document" . ("REXML")) - ("rinda/tuplespace" . ("Rinda::TupleSpace(?:Proxy)?")) - ("rinda/ring" . ("Rinda::Ring(?:Finger|Server)?")) - ("rss" . ("RSS")) - ("scanf" . ("scanf")) - ("sdbm" . ("SDBM")) - ("set" . ("(?:Sorted)?Set")) - ("singleton" . ("Singleton")) - ("soap" . ("SOAP")) - ("socket" . (" (?:TCP|UNIX)(?:Socket|Server)" "(?:UDP)?Socket")) - ("stringio" . ("StringIO")) - ("strscan" . ("StringScanner")) - ("syslog" . ("Syslog")) - ("tempfile" . ("Tempfile")) - ("test/unit" . ("Test::Unit")) - ("thread" . (" ConditionVariable" "Mutex" "(?:Sized)?Queue ")) - ("time" . ("Time(?:\.|::)parse")) - ("timeout" . ("Timeout(?:\.|::)timeout")) - ("tk" . ("TK")) - ("tmpdir" . ("Dir(?:\.|::)tmpdir")) - ("tracer" . ("Tracer")) - ("tsort" . ("TSort")) - ("uri" . ("URI")) - ("weakref" . ("WeakRef")) - ("webrick" . ("WEBrick")) - ("Win32API" . ("Win32(?:API)?")) - ("win32ole" . ("WIN32OLE")) - ("wsdl" . ("WSDL")) - ("xmlrpc" . ("XMLRPC")) - ("yaml" . ("YAML")) - ("zlib" . ("Zlib")))) - -(defun yas/ruby-require (package) - (save-excursion - (goto-char (point-min)) - (unless (search-forward-regexp (format "^[\s\t]*require[( ][ ]*\"%s\"[ )]*$" - package) nil t) - (unless (search-forward-regexp "^[\s\t]*require.*\n" nil t) - (search-forward-regexp "^[\s\t]*[^#]" nil t) - (goto-char (line-beginning-position))) - (insert "require \"" package "\"\n")))) - -(defun yas/ruby-pipe-through-xmpfilter () - (interactive) - (let ((start (or (and mark-active - (region-beginning)) - (point-min))) - (end (or (and mark-active - (region-end)) - (point-max))) - (orig (point)) - retval - (orig-line (count-screen-lines (window-start) (line-beginning-position)))) - - (unless (zerop (shell-command-on-region start end "xmpfilter" (get-buffer-create "*xmpfilter*") t (get-buffer-create "*xmpfilter errors*") t)) - ;;some undo actions here - ) - (goto-char (min (point-max) orig)) - (recenter orig-line) - retval)) - -(put (intern "ruby-thing") 'bounds-of-thing-at-point 'yas/ri-ruby-thing-bounds) -(defun yas/ri-ruby-thing-bounds () - (let ((start (point)) - (end (point))) - (save-excursion - (while (not (and (zerop (skip-syntax-forward "\w\_")) - (zerop (skip-chars-forward "#:")))) - (setq end (point))) - (while (not (and (zerop (skip-syntax-backward "\w\_")) - (zerop (skip-chars-backward "#:")))) - (setq start (point)))) - (unless (= start end) - (cons start end)))) - -(defvar yas/ri-history nil - "History of yas/ri queries.") -(require 'ansi-color) -(defun yas/ri (query) - (interactive (list (read-from-minibuffer "Ri query: " - (thing-at-point 'ruby-thing) - nil - nil - 'ri-history))) - (with-current-buffer (get-buffer-create "*Ri*") - (setq buffer-read-only nil) - (shell-command (concat "ri -f ansi " query) "*Ri*") - (ansi-color-apply-on-region (point-min) (point-max)) - (yas/ri-mode) - (display-buffer (current-buffer))) - t) - -(defun yas/ri-mode () - "Mode for viewing Ruby documentation." - (buffer-disable-undo) - (kill-all-local-variables) - (local-set-key (kbd "q") 'quit-window) - (local-set-key (kbd "RET") 'yas/ri) - (setq mode-name "ri") - (setq major-mode 'yas/ri-mode) - (setq buffer-read-only t) - (run-hooks 'yas/ri-mode-hook)) - -;; conditions -;; -(yas/define-condition-cache yas/ruby-in-interpolated-string-p (member (fourth (syntax-ppss)) (list ?\" ?\`))) -(yas/define-condition-cache yas/ruby-in-comment-p (fifth (syntax-ppss))) -(yas/define-condition-cache yas/ruby-in-string-p (fourth (syntax-ppss))) -(yas/define-condition-cache yas/ruby-end-is-block-end-p - (save-excursion - (ruby-backward-sexp) - (not (eq (point) (point-min))))) - -;; My work in progress substitutions -;; -;; Substitutions for: content -;; -;; ${1/.+/(/} =yyas> ${1:$(and (yas/text) "(")} -;; ${1/.+/)/} =yyas> ${1:$(and (yas/text) ")")} -;; ${2/.+/ => /} =yyas> ${2:$(and (yas/text) " => ")} -;; ${1:${TM_FILENAME/\.\w+//} =yyas> ${1:$(and buffer-file-name (file-name-sans-extension buffer-file-name))} -;; ${1/(^.*?\S.*)|.*/(?1:\()/} =yyas> ${1:$(and (string-match "[^\s\t]" yas/text) "(" )} -;; ${1/(^.*?\S.*)|.*/(?1:\))/} =yyas> ${1:$(and (string-match "[^\s\t]" yas/text) ")" )} -;; ${2/(^.*?\S.*)|.*/(?1:\()/} =yyas> ${2:$(and (string-match "[^\s\t]" yas/text) "(" )} -;; ${2/(^.*?\S.*)|.*/(?1:\))/} =yyas> ${2:$(and (string-match "[^\s\t]" yas/text) ")" )} -;; ${3/(^.*?\S.*)|.*/(?1:\()/} =yyas> ${3:$(and (string-match "[^\s\t]" yas/text) "(" )} -;; ${3/(^.*?\S.*)|.*/(?1:\))/} =yyas> ${3:$(and (string-match "[^\s\t]" yas/text) ")" )} -;; ${2/^\s*$|(.*\S.*)/(?1: )/} =yyas> ${2:$(and (string-match "[^\s\t]" yas/text) " " )} -;; ${3/^\s*$|(.*\S.*)/(?1: )/} =yyas> ${3:$(and (string-match "[^\s\t]" yas/text) " " )} -;; ${3/(^[rwab+]+$)|.*/(?1:, ")/} =yyas> ${3:$(and (string-match "^[rwab+]+$" yas/text) ", \\"" )} -;; ${3/(^[rwab+]+$)|.*/(?1:")/} =yyas> ${3:$(and (string-match "^[rwab+]+$" yas/text) "\\"" )} -;; ${3/^\s*$|(.*\S.*)/(?1:, )/} =yyas> ${3:$(and (string-match "[^\s\t]" (yas/text) ", ")} -;; ${TM_SELECTED_TEXT/([\t ]*).*/$1/m} =yyas> -;; ${TM_SELECTED_TEXT/(\A.*)|(.+)|\n\z/(?1:$0:(?2:\t$0))/g} =yyas> `yas/selected-text` -;; (yas/multi-line-unknown BF487539-8085-4FF4-8601-1AD20FABAEDC) =yyas> `(yas/ruby-infer-class-name)` -;; (yas/multi-line-unknown 2B73EC5F-06D2-460C-A14F-6FA05AFCF0CC) =yyas> `(yas/ruby-infer-class-name)` -;; -;; ${TM_FILENAME/(?:\A|_)([A-Za-z0-9]+)(?:\.rb)?/(?2::\u$1)/g} =yyas> `(yas/ruby-infer-class-name)` -;; -;; ${1/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/} =yyas> ${1:$(and (yas/text) "|")} -;; ${1/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1: |)/} =yyas> ${1:$(and (yas/text) " |")} -;; ${1/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/} =yyas> ${1:$(and (yas/text) "| ")} -;; -;; ${1/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/} =yyas> ${1:$(and (yas/text) "|")} -;; ${1/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/} =yyas> ${1:$(and (yas/text) "| ")} -;; ${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/} =yyas> ${2:$(and (yas/text) "|")} -;; ${2/(^(?\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:| )/} =yyas> ${2:$(and (yas/text) "| ")} -;; -;; ${1/([\w&&[^_]]+)|./\u$1/g} =yyas> ${1:$(replace-regexp-in-string "[_/]" "" (capitalize yas/text))} -;; -;; 7990EE60-C850-4779-A8C0-7FD2C853B99B =yyas> (yas/ruby-toggle-single-multi-line-block) -;; 7E084412-80E6-4B70-8092-C03D1ECE4CD2 =yyas> (yas/ruby-require "eac")(yas/expand-uuid 'ruby-mode "FDD73070-6D32-4301-A86A-C55B77C3D8ED") -;; FBFC214F-B019-4967-95D2-028F374A3221 =yyas> (yas/ruby-pipe-through-xmpfilter) -;; 63F3B3B7-CBE2-426B-B551-657733F3868B =yyas> (call-interactively (if (featurep 'ri) 'ri 'yas/ri)) - -;; -;; `[[ $TM_LINE_INDEX != 0 ]] && echo; echo` =yyas> `(concat (if (eq 0 current-line) "\n" "") "\n")` -;; `snippet_paren.rb` =yyas> `yas/ruby-snippet-open-paren` -;; `snippet_paren.rb end` =yyas> `yas/ruby-snippet-close-paren` -;; ${TM_RUBY_SWITCHES: -wKU} =yyas> `yas/ruby-shebang-args` -;; -;; Substitutions for: condition -;; -;; 7990EE60-C850-4779-A8C0-7FD2C853B99B =yyas> 'force-in-comment -;; FBFC214F-B019-4967-95D2-028F374A3221 =yyas> 'force-in-comment -;; 88BC3896-DC39-4307-A271-21D33340F15A =yyas> 'force-in-comment -;; 0F940CBC-2173-49FF-B6FD-98A62863F8F2 =yyas> 'force-in-comment -;; 451A0596-1F72-4AFB-AF2F-45900FABB0F7 =yyas> (not (yas/ruby-end-is-block-end-p)) -;; (string.quoted.double.ruby|string.interpolated.ruby) - string source =yyas> (and (yas/ruby-in-interpolated-string-p) 'force-in-comment) -;; text.html.ruby, text.html source.ruby =yyas> (yas/unimplemented) -;; text.html, source.yaml, meta.erb =yyas> (yas/unimplemented) -;; keyword.control.start-block.ruby, meta.syntax.ruby.start-block =yyas> -;; -;; Substitutions for: binding -;; -;; # as in Commands/New Method.yasnippet -;; $ =yyas> C-c M-m -;; ^W =yyas> C-c M-w -;; # =yyas> # -;; ^{ =yyas> C-c M-{ -;; @R =yyas> C-c M-R -;; @r =yyas> C-c M-r -;; ^R =yyas> C-c M-S-r -;; @i =yyas> s-i -;; @b =yyas> s-b -;; ^@E =yyas> C-c M-e -;; ^: =yyas> C-c M-: -;; ^> =yyas> C-c M-> -;; ^h =yyas> C-c M-h -;; -;; -;; # as in Commands/Enclose in + (RDoc comments).yasnippet -;; @k =yyas> (yas/unknown) -;; -;; # as in Commands/Check Ruby Syntax.yasnippet -;; ^V =yyas> (yas/unknown) -;; -;; # as in Commands/Omit from RDoc.yasnippet -;; ^@O =yyas> (yas/unknown) -;; -;; # as in Commands/Enclose in (RDoc comments).yasnippet -;; @b =yyas> (yas/unknown) -;; -;; # as in Snippets/hash pointer.yasnippet -;; ^l =yyas> (yas/unknown) -;; -;; # as in Commands/Make Destructive Call.yasnippet -;; ^! =yyas> (yas/unknown) -;; -;; # as in Commands/Toggle Quote Style.yasnippet -;; ^" =yyas> (yas/unknown) -;; -;; # as in Commands/Open Require.yasnippet -;; @D =yyas> (yas/unknown) -;; -;; # as in Commands/Execute Line with Ruby.yasnippet -;; ^E =yyas> (yas/unknown) -;; -;; # as in Commands/Completion Ruby (rcodetools).yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Macros/Delete forwardbackward.yasnippet -;;  =yyas> (yas/unknown) -;; -;; --**-- -;; Automatically generated code, do not edit this part -;; -;; Translated menu -;; -(yas/define-menu 'ruby-mode - '(;; Ignoring Run - (yas/ignore-item "35222962-C50D-4D58-A6AE-71E7AD980BE4") - ;; Ignoring Run Focused Unit Test - (yas/ignore-item "5289EE40-86B8-11D9-A8D4-000A95E13C98") - ;; Ignoring Run Rake Task - (yas/ignore-item "569C9822-8C41-4907-94C7-1A8A0031B66D") - - ;; Documentation for Word / Selection - (yas/item "63F3B3B7-CBE2-426B-B551-657733F3868B") - (yas/submenu "RDoc" - (;; Ignoring Show for Current File / Project - (yas/ignore-item "1AD6A138-2E89-4D6A-AB3F-416BF9CE968D") - - (yas/submenu "Format" - (;; Ignoring Bold - (yas/ignore-item "931DD73E-615E-476E-9B0D-8341023AE730") - ;; Ignoring Italic - (yas/ignore-item "DAA69A0C-FC1E-4509-9931-DFFB38B4D6AE") - ;; Ignoring Typewriter - (yas/ignore-item "2DDB6FE0-6111-4C40-A149-8E67E76F8272"))) - - ;; New Block - (yas/item "05984208-D559-4C04-A69C-2019361A985A") - ;; Ignoring Omit - (yas/ignore-item "BF4CA9F1-51CD-48D4-8357-852234F59046") - - ;; :yields: - (yas/item "ED6368FB-A11D-4622-9F42-7879481094F1"))) - (yas/separator) - (yas/submenu "Rake" - (;; namespace :name ... end - (yas/item "A3D89AAA-9156-4077-A026-37BB7358C3BA") - ;; namespace :name ... task :default ... end - (yas/item "2031FC41-CBD3-41CC-B9A9-7F068E607A05") - ;; desc ... - (yas/item "F686E1AD-B03D-45A6-BD51-6E3FD1298FE0") - ;; task :name ... end - (yas/item "CB81DA55-F3BC-4BFB-B0C5-29F0EE6F8081") - ;; desc ... task :name ... end - (yas/item "FE9A8EDA-C243-4068-8F38-A615B82D08C9") - ;; Ignoring Rake/Sake task using file path - (yas/ignore-item "E07FF68B-C87D-4332-8477-D026929FDADA"))) - (yas/separator) - ;; Ignoring Open Require - (yas/ignore-item "8646378E-91F5-4771-AC7C-43FC49A93576") - ;; Ignoring Validate Syntax - (yas/ignore-item "EE5F19BA-6C02-11D9-92BA-0011242E4184") - - ;; Ignoring Execute Line / Selection as Ruby - (yas/ignore-item "EE5F1FB2-6C02-11D9-92BA-0011242E4184") - ;; Execute and Update ‘# =>’ Markers - (yas/item "FBFC214F-B019-4967-95D2-028F374A3221") - ;; Add ‘# =>’ Marker - (yas/item "88BC3896-DC39-4307-A271-21D33340F15A") - (yas/separator) - ;; Ignoring Insert Missing Requires - (yas/ignore-item "9FB64639-F776-499B-BA6F-BB45F86F80FD") - ;; Ignoring Add ! to Method in Line / Selection - (yas/ignore-item "7F79BC8D-8A4F-4570-973B-05DFEC25747F") - ;; Ignoring Toggle String / Symbol - (yas/ignore-item "B297E4B8-A8FF-49CE-B9C4-6D4911724D43") - ;; Insert ERb’s <% .. %> or <%= .. %> - (yas/item "FDFABCB9-DF58-4469-AE11-5407A4FF4D70") - (yas/separator) - (yas/submenu "Declarations" - (;; begin … rescue … end - (yas/item "0F940CBC-2173-49FF-B6FD-98A62863F8F2") - ;; case … end - (yas/item "667083EE-62C3-11D9-B8CF-000D93589AF6") - ;; when … - (yas/item "48D8E498-C9A5-4B1B-9A18-71A5860276FB") - ;; if … end - (yas/item "6670835F-62C3-11D9-B8CF-000D93589AF6") - ;; if … else … end - (yas/item "667082E6-62C3-11D9-B8CF-000D93589AF6") - ;; elsif ... - (yas/item "CD1609FA-47DA-4EE4-9C5B-5C56D953F5B1") - ;; unless … end - (yas/item "F53E098D-D08E-4CE2-990A-B0BD70E60614") - ;; while ... end - (yas/item "D121FC61-96A4-4B8F-8709-280EDA876FF3") - ;; until ... end - (yas/item "488B387C-50C0-4B2D-9260-5A7E7EAF9B42") - (yas/separator) - (yas/submenu "Classes and Modules" - (;; class .. end - (yas/item "BF487539-8085-4FF4-8601-1AD20FABAEDC") - ;; class .. initialize .. end - (yas/item "83EED068-8C1C-4BAF-9893-902DC00616AB") - ;; class .. < ParentClass .. initialize .. end - (yas/item "0CCBE04E-F4E2-4E55-9506-7DE67ACF8388") - ;; ClassName = Struct .. do .. end - (yas/item "05DFF82C-5A29-4EBD-93FE-C165FFFB5EA8") - ;; class BlankSlate .. initialize .. end - (yas/item "E98FB8F9-7302-431D-8BF2-275A68A6126C") - ;; Ignoring class .. < DelegateClass .. initialize .. end - (yas/ignore-item "121B334B-2AA6-4E9A-A8B8-BF93B627982B") - ;; class .. < DelegateClass .. initialize .. end - (yas/item "AFE1D078-EA16-45F5-AD8A-FAC1B523D861") - ;; class << self .. end - (yas/item "C7AAAE45-487A-4B61-8962-D47675AAC05F") - (yas/separator) - ;; module .. end - (yas/item "2B73EC5F-06D2-460C-A14F-6FA05AFCF0CC") - ;; module .. module_function .. end - (yas/item "0E85EC81-2FAB-4648-B590-119CC1BB6E41") - ;; module .. ClassMethods .. end - (yas/item "A71A18CF-2D71-4BFF-AA0C-D9B8C59BC4EB"))) - (yas/submenu "Methods" - (;; Ignoring New Method - (yas/ignore-item "0275EF39-9357-408F-AF20-79E415CA9504") - - ;; attr_reader .. - (yas/item "A150C2D8-25B3-4339-BC92-8A0160A70486") - ;; attr_writer .. - (yas/item "3D383096-A03F-4EF8-9060-3C727045AB34") - ;; attr_accessor .. - (yas/item "D7A7D3C9-1714-4C50-8CC0-D83A03883E8F") - (yas/separator) - ;; include Enumerable .. - (yas/item "AAD5D511-6BE7-41DA-8F2B-1593A48FBB08") - ;; include Comparable .. - (yas/item "6C9D6B3D-D8E9-4606-9534-577C8D21FFF6") - (yas/separator) - ;; Ignoring extend Forwardable - (yas/ignore-item "58FDEA60-10AF-4C49-AA09-29B77030DB25") - ;; extend Forwardable - (yas/item "7F46C90A-595B-4B83-A4F7-058F63CE4218") - (yas/separator) - ;; def … end - (yas/item "4E9A7A73-875C-11D9-897C-000393CBCE2E") - ;; def self .. end - (yas/item "7C6E88FA-CA0E-4110-8C75-A94E54286A75") - ;; def method_missing .. end - (yas/item "87D5F8AD-8DA6-4AED-A0D8-B51CAC980445") - ;; def_delegator .. - (yas/item "C44ED391-614F-4BA2-BB0F-87668EEA9954") - ;; def_delegators .. - (yas/item "4A6EFD6B-88E2-4822-AD48-03460EDBC796") - (yas/separator) - ;; alias_method .. - (yas/item "988C8AEF-FC71-4455-9C4F-9338C05685A4"))) - ;; __END__ - (yas/item "451A0596-1F72-4AFB-AF2F-45900FABB0F7") - (yas/separator) - ;; #!/usr/bin/env ruby -wKU - (yas/item "A05CBDD6-845D-45EB-94FB-F8787F5456BE") - ;; require ".." - (yas/item "97DE939B-D243-4D5C-B953-1C9090912E7C") - ;; application { .. } - (yas/item "E16D24D2-CC7E-4786-BE0B-1725FC865D78") - ;; usage_if() - (yas/item "21C0D711-F32A-4665-AA0D-B136F9DD3945") - ;; usage_unless() - (yas/item "49D69DEC-6991-49F4-8D9B-BA60BFDD3D17"))) - (yas/submenu "Iterators" - ((yas/submenu "Arrays" - (;; Array.new(10) { |i| .. } - (yas/item "DAE6A754-D906-4763-B816-CE67125CEF08") - (yas/separator) - ;; delete_if { |e| .. } - (yas/item "263C94DC-63CF-4BA3-9692-C5582CA8F1AB") - ;; fill(range) { |i| .. } - (yas/item "6021BBDC-4AAD-447B-A0C2-A4BB31721558") - ;; flatten_once() - (yas/item "3DDB99C4-486D-4C11-A217-5680FDD8EC19") - ;; zip(enums) { |row| .. } - (yas/item "FD010022-E0E7-44DB-827F-33F7D9310DA2"))) - (yas/submenu "Counting" - (;; downto(0) { |n| .. } - (yas/item "4991BB86-736E-4758-B9B2-E4FA90B9368F") - ;; step(2) { |e| .. } - (yas/item "36853A11-0307-4AE7-B835-7CE6358717A5") - ;; times { |n| .. } - (yas/item "206D54AF-E67A-4DF0-B7F4-3D42FEB81685") - ;; upto(1.0/0.0) { |n| .. } - (yas/item "51954118-81D7-42B6-9A10-BE23D8B9FFE2") - (yas/separator) - ;; loop { .. } - (yas/item "567E3D18-BF2B-4379-8927-2777EC9F495E"))) - (yas/submenu "Each Element" - (;; each { |e| .. } - (yas/item "ECBA4CA0-275F-460E-85BE-E82FEA2E2B26") - ;; each_byte { |byte| .. } - (yas/item "338EC03D-3FF4-4435-94E8-1CEF20CEC75D") - ;; each_char { |chr| .. } - (yas/item "7E084412-80E6-4B70-8092-C03D1ECE4CD2") - ;; each_char { |chr| .. } - (yas/item "FDD73070-6D32-4301-A86A-C55B77C3D8ED") - ;; Ignoring each_cons(..) { |group| .. } - (yas/ignore-item "EC73D5CC-5F05-46B9-A6F4-82037E4A38C9") - ;; each_cons(..) { |group| .. } - (yas/item "3C04589C-5127-478E-97B3-CA7DD2EA7ECD") - ;; each_index { |i| .. } - (yas/item "689120C9-AB40-4081-8268-9362E00FA4A0") - ;; each_key { |key| .. } - (yas/item "E54F7077-3C33-4B53-A4F7-21E16132D3AD") - ;; each_line { |line| .. } - (yas/item "02913388-EE8E-4C55-AC94-94F3D751F47E") - ;; each_pair { |name, val| .. } - (yas/item "7A3CECED-452B-438E-A5C6-95B6BDC43243") - ;; Ignoring each_slice(..) { |group| .. } - (yas/ignore-item "825B721D-4367-4DF7-98C0-F005695DF9E3") - ;; each_slice(..) { |group| .. } - (yas/item "CD748479-D2A4-4AB5-95BD-4C89512BA210") - ;; each_value { |val| .. } - (yas/item "844DBD70-BC23-4FBF-9C18-F4A610239DF2") - ;; each_with_index { |e, i| .. } - (yas/item "1DD13CF5-39C0-4F10-B655-56DACEBC7F94") - ;; reverse_each { |e| .. } - (yas/item "F3C5F719-EF03-4FF7-A777-4A8402FE3B6B") - (yas/separator) - ;; inject(init) { |mem, var| .. } - (yas/item "B563E0D7-513D-49B4-9733-1B04A6F25A74") - (yas/separator) - ;; map { |e| .. } - (yas/item "5A3754FC-43A3-462B-AB42-E3E951872E6F") - ;; Ignoring map_with_index { |e, i| .. } - (yas/ignore-item "BFB65D1C-62F1-485D-8A67-3E5A2E55107C") - ;; map_with_index { |e, i| .. } - (yas/item "BD4CFD7B-1AC0-4569-9BDA-FD491F41F4E6"))) - (yas/submenu "Files" - (;; Dir.glob("..") { |file| .. } - (yas/item "332AA973-AA71-48CB-AEE9-1D71E11019AC") - ;; File.foreach ("..") { |line| .. } - (yas/item "8F594E5E-6F46-4E98-B5FB-1C8F3BA9828F") - ;; open("path/or/url", "w") { |io| .. } - (yas/item "418F1817-255F-430A-B09A-222964ED66A7") - ;; unix_filter { .. } - (yas/item "8CEF9711-88D5-4202-AFB9-29EF4EFD25C1") - (yas/separator) - ;; option_parse { .. } - (yas/item "C3C48948-4F49-484E-A8DE-DEB44723099E") - ;; option(..) - (yas/item "209D5D73-7A77-4931-A158-3FB6D5B48A88"))) - (yas/submenu "Ordering" - (;; sort { |a, b| .. } - (yas/item "9E0B4D4B-2956-4B3A-800A-3D8CE54E66BF") - ;; sort_by { |e| .. } - (yas/item "BA9440C9-36C3-4031-BB61-67B581D5B179") - (yas/separator) - ;; randomize() - (yas/item "B0CE57EC-FB2E-4482-8CCE-448DC2588715"))) - (yas/submenu "Searching and Selection" - (;; all? { |e| .. } - (yas/item "07D1F987-7CDB-4EAD-B64A-27A93051700E") - ;; any? { |e| .. } - (yas/item "A3B9B76B-2BC5-425C-AB24-9FAAFC375798") - ;; classify { |e| .. } - (yas/item "5DA9E1E8-2C54-420A-9B84-B040A1AF2B9E") - ;; collect { |e| .. } - (yas/item "669A86AD-936F-4EDA-8E4E-6863804072DA") - ;; detect { |e| .. } - (yas/item "6C6B9849-9631-49FF-A9F9-F0E94A1512C5") - ;; fetch(name) { |key| .. } - (yas/item "1F72122A-35AD-4BA1-AA01-889A10319666") - ;; find { |e| .. } - (yas/item "E23FE534-8061-4828-98A5-46270B6910B0") - ;; find_all { |e| .. } - (yas/item "197709C5-8382-4A59-B6D7-31A0CC0F23B7") - ;; grep(/pattern/) { |match| .. } - (yas/item "9D9E7BA3-8C5D-4532-83EA-326358C2F5BB") - ;; max { |a, b| .. } - (yas/item "98182B9E-7C61-4824-BE4C-9CD69C816037") - ;; min { |a, b| .. } - (yas/item "CB03D11A-7204-48D0-92C1-E109034403E7") - ;; partition { |e| .. } - (yas/item "52B8BF63-F09E-4789-8407-06168A8AE666") - ;; reject { |e| .. } - (yas/item "B79B9DAB-ABEF-44F6-BF7E-635E7BA11DFD") - ;; select { |e| .. } - (yas/item "4E409AA4-E7D4-46B7-A4E9-E32F992B33E9"))) - (yas/submenu "Strings" - (;; sub(/../) { |match| .. } - (yas/item "8021944C-CEA4-4983-8D1C-78D18D4004A1") - ;; gsub(/../) { |match| .. } - (yas/item "2514FC26-468C-4D08-A788-494A444C4286") - (yas/separator) - ;; scan(/../) { |match| .. } - (yas/item "66802933-B49F-479B-9DF9-1D898FF1FA90"))))) - (yas/submenu "Blocks" - (;; Toggle ‘do … end’ / ‘{ … }’ - (yas/item "7990EE60-C850-4779-A8C0-7FD2C853B99B") - (yas/separator) - ;; Insert { |variable| … } - (yas/item "855FC4EF-7B1E-48EE-AD4E-5ECB8ED79D1C") - ;; Insert do |variable| … end - (yas/item "4B72C5C3-6CA7-41AC-B2F9-51DEA25D469E") - (yas/separator) - ;; lambda { |args| .. } - (yas/item "21E75321-0CF7-45E8-A297-BCC7C0DDDD15"))) - (yas/submenu "Hashes" - (;; Hash.new { |hash, key| hash[key] = .. } - (yas/item "E16EE658-1CA0-4950-954B-B962E50B754F") - (yas/separator) - ;; Hash Pair — :key => "value" - (yas/item "840B9C4C-7037-4C3B-9028-EB9DC75EDB3E") - ;; Hash Pointer — => - (yas/item "B9E3A6DF-875D-11D9-897C-000393CBCE2E"))) - (yas/submenu "Tests" - (;; class .. < Test::Unit::TestCase .. end - (yas/item "31D1F145-33AB-4441-BA11-4D1C46928C4C") - ;; def test_ .. end - (yas/item "00F66D41-25AF-4597-B67D-E540965A5222") - ;; require "tc_.." .. - (yas/item "5297FD0C-98B1-4514-BBD1-1516810BECA6") - (yas/separator) - ;; assert(..) - (yas/item "B32C147D-44A6-478A-9D5D-189D7831E9A7") - ;; assert_equal(..) - (yas/item "43A61A22-6BEE-4997-961C-1CDE739C05FE") - ;; assert_not_equal(..) - (yas/item "A243E96F-DC21-4AA0-B340-13A7674F6AFF") - ;; assert_in_delta(..) - (yas/item "429D0EF5-580D-4166-8F79-713DE96B77F1") - ;; assert_instance_of(..) - (yas/item "0E831E03-67E1-4357-8323-C60685C23C4F") - ;; assert_kind_of(..) - (yas/item "671F05E2-D9CC-485E-BB1B-B13EF20FAC65") - ;; assert_nil(..) - (yas/item "4C79256C-480A-459C-BDE8-BB0D972811DB") - ;; assert_not_nil(..) - (yas/item "79FEC3CC-2A40-4611-9A85-ECDB22FE0701") - ;; assert_match(..) - (yas/item "711ED6C3-0F18-41FB-9A7D-3094BB319A85") - ;; assert_no_match(..) - (yas/item "A072BB1E-1DD1-45D3-9346-8CA3BA21B364") - ;; assert_operator(..) - (yas/item "1B925A4D-8EE4-442B-9254-293599F5717F") - ;; assert_raise(..) { .. } - (yas/item "68B21F6F-5D89-41FA-A19C-F29C2F912B4E") - ;; assert_nothing_raised(..) { .. } - (yas/item "82F8EEE0-2452-411E-8102-7BFDDBCA2E72") - ;; assert_respond_to(..) - (yas/item "09A11FDA-49FC-4466-8787-8D1D5D111A89") - ;; assert_same(..) - (yas/item "29340695-E426-4F77-8CF7-C59360A549F4") - ;; assert_not_same(..) - (yas/item "F91C25EC-EC76-498B-BFB5-FDA8F57C5875") - ;; assert_send(..) - (yas/item "7850AD5C-A90D-4E2C-A931-EADFF8D3D9A3") - ;; assert_throws(..) { .. } - (yas/item "05655BD8-23C6-445F-BFD1-420BF25C3030") - ;; assert_nothing_thrown { .. } - (yas/item "33639D7A-BD8C-4396-9C44-307B8AC87C9E") - ;; flunk(..) - (yas/item "DB457094-1AC9-4856-AEFC-43A9576B6775") - (yas/separator) - ;; Ignoring Benchmark.bmbm do .. end - (yas/ignore-item "C649F945-DAB8-4DA2-B73C-2EFF9D7D34F3") - ;; Benchmark.bmbm do .. end - (yas/item "942F20E2-C40A-44B8-A3F2-99AAC68CB534") - ;; results.report(..) { .. } - (yas/item "1C60D589-DD46-4109-90CA-6B34AEA2F298"))) - (yas/submenu "Serialization" - (;; Marshal.dump(.., file) - (yas/item "0CB48BCA-3F6E-4AE0-85BC-08A1D2508216") - ;; Marshal.load(obj) - (yas/item "20AAD0BC-075D-4EC0-9057-E3E5E62C4125") - (yas/separator) - ;; Ignoring PStore.new( .. ) - (yas/ignore-item "5AE7CFB4-418E-4E00-AD76-06DB755EE876") - ;; PStore.new( .. ) - (yas/item "5B46ECFD-23A4-4F0C-9951-F64C19C72C2B") - ;; transaction( .. ) { .. } - (yas/item "46BF99AD-E172-4D49-BCF7-072F4730E1D9") - (yas/separator) - ;; Ignoring YAML.dump(.., file) - (yas/ignore-item "9460392B-C036-4A76-A5AE-1191F10E4B1B") - ;; YAML.dump(.., file) - (yas/item "3BA6762A-BB6B-489E-8006-F30F386AEF48") - ;; Ignoring YAML.load(file) - (yas/ignore-item "2C07D4E7-D74F-4AE4-82BE-B0BA82247AFA") - ;; YAML.load(file) - (yas/item "8343ACF4-EEB7-44B5-B835-94826466D4D5") - (yas/separator) - ;; Ignoring xmlread(..) - (yas/ignore-item "F6BF907E-FDF7-4D9B-9E57-BE159561349D") - ;; xmlread(..) - (yas/item "B904D4AA-D15D-48A4-8EB2-563BAF489332") - ;; xpath(..) { .. } - (yas/item "CC300D44-6C3F-4F6C-A8AB-86F5A2DC57CF"))) - (yas/submenu "Idioms" - (;; class_from_name() - (yas/item "2DBEE50B-3097-4A57-AB48-3586CF392D8B") - ;; deep_copy(..) - (yas/item "0BA2B2F1-E767-4A03-9791-0AC0183251F1") - ;; path_from_here( .. ) - (yas/item "A4E89D97-D5ED-48BB-B5FF-1BFB79211FCD") - ;; singleton_class() - (yas/item "B46D35B8-5DEB-4C10-A110-BA1965A2EB9C") - ;; Ignoring word_wrap() - (yas/ignore-item "97054C4D-E4A3-45B1-9C00-B82DBCB30CAD"))) - (yas/submenu "File" - (;; require File.dirname(__FILE__) + "/.." - (yas/item "7C42D878-FD0F-4181-A71A-57A091C0154A") - (yas/separator) - ;; File.dirname(__FILE__) - (yas/item "16920DC1-6FA6-48C8-90C5-C19E2C734303") - (yas/separator) - ;; File.read(filename) - (yas/item "FAFE9F5C-BF9C-4416-8623-2CB8EBC31B3C") - ;; File.open(filename, 'r') { |f| f.read } - (yas/item "005EB926-4BFE-4BFA-93B2-C9030636289C"))) - ;; class .. < Test::Unit::TestCase with test_helper - (yas/item "228CAB3A-E221-4727-B430-31E94F76C9D3")) - '("E5158F94-CC52-4424-A495-14EF9272653F" - "EEE6D060-C5A0-400D-A2E0-0835013C5365" - "76FCF165-54CB-4213-BC55-BD60B9C6A3EC" - "6519CB08-8326-4B77-A251-54722FFBFC1F" - "835FAAC6-5431-436C-998B-241F7226B99B" - "A83F68A9-F751-4BB4-AE16-56812878C16A" - "47D203ED-EB9B-4653-A07B-A897800CEB76" - "835FAAC6-5431-436C-998B-241F7226B99B" - "569C9822-8C41-4907-94C7-1A8A0031B66D" - "BF4CA9F1-51CD-48D4-8357-852234F59046" - "B3875596-723C-41EE-9E6F-F84930C3B568" - "B297E4B8-A8FF-49CE-B9C4-6D4911724D43" - "931DD73E-615E-476E-9B0D-8341023AE730" - "DAA69A0C-FC1E-4509-9931-DFFB38B4D6AE" - "47D203ED-EB9B-4653-A07B-A897800CEB76" - "2DDB6FE0-6111-4C40-A149-8E67E76F8272" - "35222962-C50D-4D58-A6AE-71E7AD980BE4" - "8646378E-91F5-4771-AC7C-43FC49A93576" - "E07FF68B-C87D-4332-8477-D026929FDADA" - "2C07D4E7-D74F-4AE4-82BE-B0BA82247AFA" - "E5158F94-CC52-4424-A495-14EF9272653F" - "58FDEA60-10AF-4C49-AA09-29B77030DB25" - "825B721D-4367-4DF7-98C0-F005695DF9E3" - "121B334B-2AA6-4E9A-A8B8-BF93B627982B" - "BFB65D1C-62F1-485D-8A67-3E5A2E55107C" - "EC73D5CC-5F05-46B9-A6F4-82037E4A38C9" - "9460392B-C036-4A76-A5AE-1191F10E4B1B" - "1AD6A138-2E89-4D6A-AB3F-416BF9CE968D" - "EE5F1FB2-6C02-11D9-92BA-0011242E4184" - "9FB64639-F776-499B-BA6F-BB45F86F80FD" - "7F79BC8D-8A4F-4570-973B-05DFEC25747F" - "EE5F19BA-6C02-11D9-92BA-0011242E4184" - "97054C4D-E4A3-45B1-9C00-B82DBCB30CAD" - "76FCF165-54CB-4213-BC55-BD60B9C6A3EC" - "0275EF39-9357-408F-AF20-79E415CA9504" - "5289EE40-86B8-11D9-A8D4-000A95E13C98" - "6519CB08-8326-4B77-A251-54722FFBFC1F" - "C649F945-DAB8-4DA2-B73C-2EFF9D7D34F3" - "5AE7CFB4-418E-4E00-AD76-06DB755EE876" - "A83F68A9-F751-4BB4-AE16-56812878C16A" - "F6BF907E-FDF7-4D9B-9E57-BE159561349D")) - -;; Unknown substitutions -;; -;; Substitutions for: content -;; -;; # as in Macros/xmlread(__).yasnippet -;; F6BF907E-FDF7-4D9B-9E57-BE159561349D =yyas> (yas/unknown) -;; -;; # as in Commands/Check Ruby Syntax.yasnippet -;; EE5F19BA-6C02-11D9-92BA-0011242E4184 =yyas> (yas/unknown) -;; -;; # as in Macros/Overwrite } in #{ .. }.yasnippet -;; E5158F94-CC52-4424-A495-14EF9272653F =yyas> (yas/unknown) -;; -;; # as in Commands/Enclose in + (RDoc comments).yasnippet -;; 2DDB6FE0-6111-4C40-A149-8E67E76F8272 =yyas> (yas/unknown) -;; -;; # as in Snippets/RDoc documentation block.yasnippet -;; `(concat (if (eq 0 current-line) "\n" "") "\n")` =yyas> (yas/unknown) -;; -;; # as in Snippets/class __ TestUnitTestCase with test_helper.yasnippet -;; (yas/multi-line-unknown 228CAB3A-E221-4727-B430-31E94F76C9D3) =yyas> (yas/unknown) -;; -;; # as in Macros/YAML.dump(.., file) (Yd).yasnippet -;; 9460392B-C036-4A76-A5AE-1191F10E4B1B =yyas> (yas/unknown) -;; -;; # as in Macros/map_with_index { e, i .. } (mapwi).yasnippet -;; BFB65D1C-62F1-485D-8A67-3E5A2E55107C =yyas> (yas/unknown) -;; -;; # as in Macros/each_slice(..) { group .. } (eas).yasnippet -;; 825B721D-4367-4DF7-98C0-F005695DF9E3 =yyas> (yas/unknown) -;; -;; # as in Commands/Run.yasnippet -;; 35222962-C50D-4D58-A6AE-71E7AD980BE4 =yyas> (yas/unknown) -;; -;; # as in Commands/Enclose in _ (RDoc comments).yasnippet -;; DAA69A0C-FC1E-4509-9931-DFFB38B4D6AE =yyas> (yas/unknown) -;; -;; # as in Commands/Omit from RDoc.yasnippet -;; BF4CA9F1-51CD-48D4-8357-852234F59046 =yyas> (yas/unknown) -;; -;; # as in Snippets/assert_not_nil(..) (asnn).yasnippet -;; `yas/ruby-snippet-close-paren` =yyas> (yas/unknown) -;; -;; # as in Macros/YAML.load(file) (Yl).yasnippet -;; 2C07D4E7-D74F-4AE4-82BE-B0BA82247AFA =yyas> (yas/unknown) -;; -;; # as in Commands/Toggle StringSymbol.yasnippet -;; B297E4B8-A8FF-49CE-B9C4-6D4911724D43 =yyas> (yas/unknown) -;; -;; # as in Commands/Run Rake Task.yasnippet -;; 569C9822-8C41-4907-94C7-1A8A0031B66D =yyas> (yas/unknown) -;; -;; # as in Macros/Benchmark_bmbm(__) do __ end.yasnippet -;; C649F945-DAB8-4DA2-B73C-2EFF9D7D34F3 =yyas> (yas/unknown) -;; -;; # as in Commands/Toggle Quote Style.yasnippet -;; 6519CB08-8326-4B77-A251-54722FFBFC1F =yyas> (yas/unknown) -;; -;; # as in Commands/word_wrap() (worw).yasnippet -;; 97054C4D-E4A3-45B1-9C00-B82DBCB30CAD =yyas> (yas/unknown) -;; -;; # as in Snippets/class .. TestUnitTestCase .. end (tc).yasnippet -;; (yas/multi-line-unknown 31D1F145-33AB-4441-BA11-4D1C46928C4C) =yyas> (yas/unknown) -;; -;; # as in Commands/Make Destructive Call.yasnippet -;; 7F79BC8D-8A4F-4570-973B-05DFEC25747F =yyas> (yas/unknown) -;; -;; # as in Commands/Insert Missing Requires.yasnippet -;; 9FB64639-F776-499B-BA6F-BB45F86F80FD =yyas> (yas/unknown) -;; -;; # as in Macros/extend Forwardable (Forw).yasnippet -;; 58FDEA60-10AF-4C49-AA09-29B77030DB25 =yyas> (yas/unknown) -;; -;; # as in Commands/RakeSake task using file path.yasnippet -;; E07FF68B-C87D-4332-8477-D026929FDADA =yyas> (yas/unknown) -;; -;; # as in Commands/Completion Ruby (rcodetools).yasnippet -;; 47D203ED-EB9B-4653-A07B-A897800CEB76 =yyas> (yas/unknown) -;; -;; # as in Commands/gsub - remove whitespace from front of line.yasnippet -;; B3875596-723C-41EE-9E6F-F84930C3B568 =yyas> (yas/unknown) -;; -;; # as in Commands/Toggle ERb Tags.yasnippet -;; 835FAAC6-5431-436C-998B-241F7226B99B =yyas> (yas/unknown) -;; -;; # as in Snippets/assert_not_nil(..) (asnn).yasnippet -;; `yas/ruby-snippet-open-paren` =yyas> (yas/unknown) -;; -;; # as in Commands/New Method.yasnippet -;; 0275EF39-9357-408F-AF20-79E415CA9504 =yyas> (yas/unknown) -;; -;; # as in Commands/Execute Line with Ruby.yasnippet -;; EE5F1FB2-6C02-11D9-92BA-0011242E4184 =yyas> (yas/unknown) -;; -;; # as in Macros/class .. DelegateClass .. initialize .. end (class).yasnippet -;; 121B334B-2AA6-4E9A-A8B8-BF93B627982B =yyas> (yas/unknown) -;; -;; # as in Macros/PStore_new( __ ).yasnippet -;; 5AE7CFB4-418E-4E00-AD76-06DB755EE876 =yyas> (yas/unknown) -;; -;; # as in Commands/Run focused unit test.yasnippet -;; 5289EE40-86B8-11D9-A8D4-000A95E13C98 =yyas> (yas/unknown) -;; -;; # as in Commands/Show RDoc for this file.yasnippet -;; 1AD6A138-2E89-4D6A-AB3F-416BF9CE968D =yyas> (yas/unknown) -;; -;; # as in Snippets/module .. end.yasnippet -;; `(yas/ruby-infer-class-name)` =yyas> (yas/unknown) -;; -;; # as in Commands/Check ERB Syntax.yasnippet -;; 76FCF165-54CB-4213-BC55-BD60B9C6A3EC =yyas> (yas/unknown) -;; -;; # as in Snippets/embed string variable.yasnippet -;; `yas/selected-text` =yyas> (yas/unknown) -;; -;; # as in Macros/Delete forwardbackward.yasnippet -;; A83F68A9-F751-4BB4-AE16-56812878C16A =yyas> (yas/unknown) -;; -;; # as in Macros/each_cons(..) { group .. } (eac).yasnippet -;; EC73D5CC-5F05-46B9-A6F4-82037E4A38C9 =yyas> (yas/unknown) -;; -;; # as in Commands/Open Require.yasnippet -;; 8646378E-91F5-4771-AC7C-43FC49A93576 =yyas> (yas/unknown) -;; -;; # as in Commands/Enclose in (RDoc comments).yasnippet -;; 931DD73E-615E-476E-9B0D-8341023AE730 =yyas> (yas/unknown) -;; -;; - -;; Substitutions for: condition -;; -;; # as in Macros/xmlread(__).yasnippet -;; =yyas> (yas/unknown) -;; -;; # as in Snippets/Insert ERb's __ or = __.yasnippet -;; text.html, source.yaml =yyas> (yas/unknown) -;; -;; - -;; Substitutions for: binding -;; -;; # as in Commands/Enclose in + (RDoc comments).yasnippet -;; @k =yyas> (yas/unknown) -;; -;; # as in Commands/Check ERB Syntax.yasnippet -;; ^V =yyas> (yas/unknown) -;; -;; # as in Commands/Omit from RDoc.yasnippet -;; ^@O =yyas> (yas/unknown) -;; -;; # as in Snippets/hash pointer.yasnippet -;; ^l =yyas> (yas/unknown) -;; -;; # as in Commands/Make Destructive Call.yasnippet -;; ^! =yyas> (yas/unknown) -;; -;; # as in Commands/Toggle Quote Style.yasnippet -;; ^" =yyas> (yas/unknown) -;; -;; # as in Commands/Open Require.yasnippet -;; @D =yyas> (yas/unknown) -;; -;; # as in Commands/Execute Line with Ruby.yasnippet -;; ^E =yyas> (yas/unknown) -;; -;; # as in Macros/Overwrite } in #{ .. }.yasnippet -;; } =yyas> (yas/unknown) -;; -;; # as in Commands/Completion Ruby (rcodetools).yasnippet -;; ~ =yyas> (yas/unknown) -;; -;; # as in Macros/Delete forwardbackward.yasnippet -;;  =yyas> (yas/unknown) -;; -;; - -;; .yas-setup.el for ruby-mode ends here diff --git a/extensions/yasnippet/extras/textmate_import.rb b/extensions/yasnippet/extras/textmate_import.rb deleted file mode 100755 index e7a9281..0000000 --- a/extensions/yasnippet/extras/textmate_import.rb +++ /dev/null @@ -1,516 +0,0 @@ -#!/usr/bin/ruby -# -*- coding: utf-8 -*- -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- -# textmate_import.rb --- import textmate snippets -# -# Copyright (C) 2009 Rob Christie, 2010 João Távora -# -# This is a quick script to generate YASnippets from TextMate Snippets. -# -# I based the script off of a python script of a similar nature by -# Jeff Wheeler: http://nokrev.com -# http://code.nokrev.com/?p=snippet-copier.git;a=blob_plain;f=snippet_copier.py -# -# Use textmate_import.rb --help to get usage information. - -require 'rubygems' -require 'plist' -require 'choice' -require 'fileutils' -require 'shellwords' # String#shellescape -require 'ruby-debug' if $DEBUG - -Choice.options do - header '' - header 'Standard Options:' - - option :bundle_dir do - short '-d' - long '--bundle-dir=PATH' - desc 'Tells the program the directory to find the TextMate bundle directory' - default '.' - end - - option :output_dir do - short '-o' - long '--output-dir=PATH' - desc 'What directory to write the new YASnippets to' - end - - option :snippet do - short '-f' - long '--file=SNIPPET FILE NAME' - desc 'A specific snippet that you want to copy or a glob for various files' - default '*.{tmSnippet,tmCommand,plist,tmMacro}' - end - - option :print_pretty do - short '-p' - long '--pretty-print' - desc 'Pretty prints multiple snippets when printing to standard out' - end - - option :quiet do - short '-q' - long '--quiet' - desc 'Be quiet.' - end - - option :convert_bindings do - short '-b' - long '--convert-bindings' - desc "TextMate \"keyEquivalent\" keys are translated to YASnippet \"# binding :\" directives" - end - - option :info_plist do - short '-g' - long '--info-plist=PLIST' - desc "Specify a plist file derive menu information from defaults to \"bundle-dir\"/info.plist" - end - - separator '' - separator 'Common options: ' - - option :help do - long '--help' - desc 'Show this message' - end -end - -# Represents and is capable of outputting the representation of a -# TextMate menu in terms of `yas/define-menu' -# -class TmSubmenu - - @@excluded_items = []; - def self.excluded_items; @@excluded_items; end - - attr_reader :items, :name - def initialize(name, hash) - @items = hash["items"] - @name = name - end - - def to_lisp(allsubmenus, - deleteditems, - indent = 0, - thingy = ["(", ")"]) - - first = true; - - string = "" - separator_useless = true; - items.each do |uuid| - if deleteditems.index(uuid) - $stderr.puts "#{uuid} has been deleted!" - next - end - string += "\n" - string += " " * indent - string += (first ? thingy[0] : (" " * thingy[0].length)) - - submenu = allsubmenus[uuid] - snippet = TmSnippet::snippets_by_uid[uuid] - unimplemented = TmSnippet::unknown_substitutions["content"][uuid] - if submenu - str = "(yas/submenu " - string += str + "\"" + submenu.name + "\"" - string += submenu.to_lisp(allsubmenus, deleteditems, - indent + str.length + thingy[0].length) - elsif snippet and not unimplemented - string += ";; " + snippet.name + "\n" - string += " " * (indent + thingy[0].length) - string += "(yas/item \"" + uuid + "\")" - separator_useless = false; - elsif snippet and unimplemented - string += ";; Ignoring " + snippet.name + "\n" - string += " " * (indent + thingy[0].length) - string += "(yas/ignore-item \"" + uuid + "\")" - separator_useless = true; - elsif (uuid =~ /---------------------/) - string += "(yas/separator)" unless separator_useless - end - first = false; - end - string += ")" - string += thingy[1] - - return string - end - - def self.main_menu_to_lisp (parsed_plist, modename) - mainmenu = parsed_plist["mainMenu"] - deleted = parsed_plist["deleted"] - - root = TmSubmenu.new("__main_menu__", mainmenu) - all = {} - - mainmenu["submenus"].each_pair do |k,v| - all[k] = TmSubmenu.new(v["name"], v) - end - - excluded = mainmenu["excludedItems"] + TmSubmenu::excluded_items - closing = "\n '(" - closing+= excluded.collect do |uuid| - "\"" + uuid + "\"" - end.join( "\n ") + "))" - - str = "(yas/define-menu " - return str + "'#{modename}" + root.to_lisp(all, - deleted, - str.length, - ["'(" , closing]) - end -end - - -# Represents a textmate snippet -# -# - @file is the .tmsnippet/.plist file path relative to cwd -# -# - optional @info is a Plist.parsed info.plist found in the bundle dir -# -# - @@snippets_by_uid is where one can find all the snippets parsed so -# far. -# -# -class SkipSnippet < RuntimeError; end -class TmSnippet - @@known_substitutions = { - "content" => { - "${TM_RAILS_TEMPLATE_START_RUBY_EXPR}" => "<%= ", - "${TM_RAILS_TEMPLATE_END_RUBY_EXPR}" => " %>", - "${TM_RAILS_TEMPLATE_START_RUBY_INLINE}" => "<% ", - "${TM_RAILS_TEMPLATE_END_RUBY_INLINE}" => " -%>", - "${TM_RAILS_TEMPLATE_END_RUBY_BLOCK}" => "end" , - "${0:$TM_SELECTED_TEXT}" => "${0:`yas/selected-text`}", - /\$\{(\d+)\}/ => "$\\1", - "${1:$TM_SELECTED_TEXT}" => "${1:`yas/selected-text`}", - "${2:$TM_SELECTED_TEXT}" => "${2:`yas/selected-text`}", - '$TM_SELECTED_TEXT' => "`yas/selected-text`", - %r'\$\{TM_SELECTED_TEXT:([^\}]*)\}' => "`(or (yas/selected-text) \"\\1\")`", - %r'`[^`]+\n[^`]`' => Proc.new {|uuid, match| "(yas/multi-line-unknown " + uuid + ")"}}, - "condition" => { - /^source\..*$/ => "" }, - "binding" => {}, - "type" => {} - } - - def self.extra_substitutions; @@extra_substitutions; end - @@extra_substitutions = { - "content" => {}, - "condition" => {}, - "binding" => {}, - "type" => {} - } - - def self.unknown_substitutions; @@unknown_substitutions; end - @@unknown_substitutions = { - "content" => {}, - "condition" => {}, - "binding" => {}, - "type" => {} - } - - @@snippets_by_uid={} - def self.snippets_by_uid; @@snippets_by_uid; end - - def initialize(file,info=nil) - @file = file - @info = info - @snippet = TmSnippet::read_plist(file) - @@snippets_by_uid[self.uuid] = self; - raise SkipSnippet.new "not a snippet/command/macro." unless (@snippet["scope"] || @snippet["command"]) - raise SkipSnippet.new "looks like preferences."if @file =~ /Preferences\// - raise RuntimeError.new("Cannot convert this snippet #{file}!") unless @snippet; - end - - def name - @snippet["name"] - end - - def uuid - @snippet["uuid"] - end - - def key - @snippet["tabTrigger"] - end - - def condition - yas_directive "condition" - end - - def type - override = yas_directive "type" - if override - return override - else - return "# type: command\n" if @file =~ /(Commands\/|Macros\/)/ - end - end - - def binding - yas_directive "binding" - end - - def content - known = @@known_substitutions["content"] - extra = @@extra_substitutions["content"] - if direct = extra[uuid] - return direct - else - ct = @snippet["content"] - if ct - known.each_pair do |k,v| - if v.respond_to? :call - ct.gsub!(k) {|match| v.call(uuid, match)} - else - ct.gsub!(k,v) - end - end - extra.each_pair do |k,v| - ct.gsub!(k,v) - end - # the remaining stuff is an unknown substitution - # - [ %r'\$\{ [^/\}\{:]* / [^/]* / [^/]* / [^\}]*\}'x , - %r'\$\{[^\d][^}]+\}', - %r'`[^`]+`', - %r'\$TM_[\w_]+', - %r'\(yas/multi-line-unknown [^\)]*\)' - ].each do |reg| - ct.scan(reg) do |match| - @@unknown_substitutions["content"][match] = self - end - end - return ct - else - @@unknown_substitutions["content"][uuid] = self - TmSubmenu::excluded_items.push(uuid) - return "(yas/unimplemented)" - end - end - end - - def to_yas - doc = "# -*- mode: snippet -*-\n" - doc << (self.type || "") - doc << "# uuid: #{self.uuid}\n" - doc << "# key: #{self.key}\n" if self.key - doc << "# contributor: Translated from textmate snippet by PROGRAM_NAME\n" - doc << "# name: #{self.name}\n" - doc << (self.binding || "") - doc << (self.condition || "") - doc << "# --\n" - doc << (self.content || "(yas/unimplemented)") - doc - end - - def self.canonicalize(filename) - invalid_char = /[^ a-z_0-9.+=~(){}\/'`&#,-]/i - - filename. - gsub(invalid_char, ''). # remove invalid characters - gsub(/ {2,}/,' '). # squeeze repeated spaces into a single one - rstrip # remove trailing whitespaces - end - - def yas_file() - File.join(TmSnippet::canonicalize(@file[0, @file.length-File.extname(@file).length]) + ".yasnippet") - end - - def self.read_plist(xml_or_binary) - begin - parsed = Plist::parse_xml(xml_or_binary) - return parsed if parsed - raise ArgumentError.new "Probably in binary format and parse_xml is very quiet..." - rescue StandardError => e - if (system "plutil -convert xml1 #{xml_or_binary.shellescape} -o /tmp/textmate_import.tmpxml") - return Plist::parse_xml("/tmp/textmate_import.tmpxml") - else - raise RuntimeError.new "plutil failed miserably, check if you have it..." - end - end - end - - private - - @@yas_to_tm_directives = {"condition" => "scope", "binding" => "keyEquivalent", "key" => "tabTrigger"} - def yas_directive(yas_directive) - # - # Merge "known" hardcoded substitution with "extra" substitutions - # provided in the .yas-setup.el file. - # - merged = @@known_substitutions[yas_directive]. - merge(@@extra_substitutions[yas_directive]) - # - # First look for an uuid-based direct substitution for this - # directive. - # - if direct = merged[uuid] - return "# #{yas_directive}: "+ direct + "\n" unless direct.empty? - else - tm_directive = @@yas_to_tm_directives[yas_directive] - val = tm_directive && @snippet[tm_directive] - if val and !val.delete(" ").empty? then - # - # Sort merged substitutions by length (bigger ones first, - # regexps last), and apply them to the value gotten for plist. - # - merged.sort_by do |what, with| - if what.respond_to? :length then -what.length else 0 end - end.each do |sub| - if val.gsub!(sub[0],sub[1]) - return "# #{yas_directive}: "+ val + "\n" unless val.empty? - end - end - # - # If we get here, no substitution matched, so mark this an - # unknown substitution. - # - @@unknown_substitutions[yas_directive][val] = self - return "## #{yas_directive}: \""+ val + "\n" - end - end - end - -end - - -if $0 == __FILE__ - # Read the the bundle's info.plist if can find it/guess it - # - info_plist_file = Choice.choices.info_plist || File.join(Choice.choices.bundle_dir,"info.plist") - info_plist = TmSnippet::read_plist(info_plist_file) if info_plist_file and File.readable? info_plist_file; - - # Calculate the mode name - # - modename = File.basename Choice.choices.output_dir || "major-mode-name" - - # Read in .yas-setup.el looking for the separator between auto-generated - # - original_dir = Dir.pwd - yas_setup_el_file = File.join(original_dir, Choice.choices.output_dir, ".yas-setup.el") - separator = ";; --**--" - whole, head , tail = "", "", "" - if File::exists? yas_setup_el_file - File.open yas_setup_el_file, 'r' do |file| - whole = file.read - head , tail = whole.split(separator) - end - else - head = ";; .yas-setup.el for #{modename}\n" + ";; \n" - end - - # Now iterate the tail part to find extra substitutions - # - tail ||= "" - head ||= "" - directive = nil - # puts "get this head #{head}" - head.each_line do |line| - case line - when /^;; Substitutions for:(.*)$/ - directive = $~[1].strip - # puts "found the directove #{directive}" - when /^;;(.*)[ ]+=yyas>(.*)$/ - replacewith = $~[2].strip - lookfor = $~[1] - lookfor.gsub!(/^[ ]*/, "") - lookfor.gsub!(/[ ]*$/, "") - # puts "found this wonderful substitution for #{directive} which is #{lookfor} => #{replacewith}" - unless !directive or replacewith =~ /yas\/unknown/ then - TmSnippet.extra_substitutions[directive][lookfor] = replacewith - end - end - end - - # Glob snippets into snippet_files, going into subdirs - # - Dir.chdir Choice.choices.bundle_dir - snippet_files_glob = File.join("**", Choice.choices.snippet) - snippet_files = Dir.glob(snippet_files_glob) - - # Attempt to convert each snippet files in snippet_files - # - puts "Will try to convert #{snippet_files.length} snippets...\n" unless Choice.choices.quiet - - - # Iterate the globbed files - # - snippet_files.each do |file| - begin - puts "Processing \"#{File.join(Choice.choices.bundle_dir,file)}\"\n" unless Choice.choices.quiet - snippet = TmSnippet.new(file,info_plist) - - if - file_to_create = File.join(original_dir, Choice.choices.output_dir, snippet.yas_file) - FileUtils.mkdir_p(File.dirname(file_to_create)) - File.open(file_to_create, 'w') do |f| - f.write(snippet.to_yas) - end - else - if Choice.choices.print_pretty - puts "--------------------------------------------" - end - puts snippet.to_yas if Choice.choices.print_pretty or not Choice.choices.info_plist - if Choice.choices.print_pretty - puts "--------------------------------------------\n\n" - end - end - rescue SkipSnippet => e - $stdout.puts "Skipping \"#{file}\": #{e.message}" - rescue RuntimeError => e - $stderr.puts "Oops.... \"#{file}\": #{e.message}" - $strerr.puts "#{e.backtrace.join("\n")}" unless Choice.choices.quiet - end - end - - # Attempt to decypher the menu - # - menustr = TmSubmenu::main_menu_to_lisp(info_plist, modename) if info_plist - puts menustr if $DEBUG - - # Write some basic .yas-* files - # - if Choice.choices.output_dir - FileUtils.mkdir_p Choice.choices.output_dir - FileUtils.touch File.join(original_dir, Choice.choices.output_dir, ".yas-make-groups") unless menustr - FileUtils.touch File.join(original_dir, Choice.choices.output_dir, ".yas-ignore-filenames-as-triggers") - - # Now, output head + a new tail in (possibly new) .yas-setup.el - # file - # - File.open yas_setup_el_file, 'w' do |file| - file.puts head - file.puts separator - file.puts ";; Automatically generated code, do not edit this part" - file.puts ";; " - file.puts ";; Translated menu" - file.puts ";; " - file.puts menustr - file.puts - file.puts ";; Unknown substitutions" - file.puts ";; " - ["content", "condition", "binding"].each do |type| - file.puts ";; Substitutions for: #{type}" - file.puts ";; " - # TmSnippet::extra_substitutions[type]. - # each_pair do |k,v| - # file.puts ";; " + k + "" + (" " * [1, 90-k.length].max) + " =yyas> " + v - # end - unknown = TmSnippet::unknown_substitutions[type]; - unknown.keys.uniq.each do |k| - file.puts ";; # as in " + unknown[k].yas_file - file.puts ";; " + k + "" + (" " * [1, 90-k.length].max) + " =yyas> (yas/unknown)" - file.puts ";; " - end - file.puts ";; " - file.puts - end - file.puts ";; .yas-setup.el for #{modename} ends here" - end - end -end diff --git a/extensions/yasnippet/snippets/c++-mode/.yas-parents b/extensions/yasnippet/snippets/c++-mode/.yas-parents deleted file mode 100644 index ce9828b..0000000 --- a/extensions/yasnippet/snippets/c++-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -cc-mode diff --git a/extensions/yasnippet/snippets/c++-mode/beginend b/extensions/yasnippet/snippets/c++-mode/beginend deleted file mode 100644 index 68303e2..0000000 --- a/extensions/yasnippet/snippets/c++-mode/beginend +++ /dev/null @@ -1,3 +0,0 @@ -#name : v.begin(), v.end() -# -- -${1:v}.begin(), $1.end \ No newline at end of file diff --git a/extensions/yasnippet/snippets/c++-mode/class b/extensions/yasnippet/snippets/c++-mode/class deleted file mode 100644 index 820fc6c..0000000 --- a/extensions/yasnippet/snippets/c++-mode/class +++ /dev/null @@ -1,8 +0,0 @@ -#name : class ... { ... } -# -- -class ${1:Name} -{ -public: - ${1:$(yas/substr text "[^: ]*")}($2); - virtual ~${1:$(yas/substr text "[^: ]*")}(); -}; \ No newline at end of file diff --git a/extensions/yasnippet/snippets/c++-mode/ns b/extensions/yasnippet/snippets/c++-mode/ns deleted file mode 100644 index 0c2513f..0000000 --- a/extensions/yasnippet/snippets/c++-mode/ns +++ /dev/null @@ -1,3 +0,0 @@ -#name : namespace ... -# -- -namespace \ No newline at end of file diff --git a/extensions/yasnippet/snippets/c++-mode/template b/extensions/yasnippet/snippets/c++-mode/template deleted file mode 100644 index 7e50616..0000000 --- a/extensions/yasnippet/snippets/c++-mode/template +++ /dev/null @@ -1,3 +0,0 @@ -#name : template -# -- -template \ No newline at end of file diff --git a/extensions/yasnippet/snippets/c++-mode/using b/extensions/yasnippet/snippets/c++-mode/using deleted file mode 100644 index 13d0f5d..0000000 --- a/extensions/yasnippet/snippets/c++-mode/using +++ /dev/null @@ -1,4 +0,0 @@ -#name : using namespace ... -# -- -using namespace ${std}; -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/c-mode/.yas-parents b/extensions/yasnippet/snippets/c-mode/.yas-parents deleted file mode 100644 index ce9828b..0000000 --- a/extensions/yasnippet/snippets/c-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -cc-mode diff --git a/extensions/yasnippet/snippets/c-mode/fopen b/extensions/yasnippet/snippets/c-mode/fopen deleted file mode 100644 index 044c743..0000000 --- a/extensions/yasnippet/snippets/c-mode/fopen +++ /dev/null @@ -1,3 +0,0 @@ -#name : FILE *fp = fopen(..., ...); -# -- -FILE *${fp} = fopen(${"file"}, "${r}"); diff --git a/extensions/yasnippet/snippets/c-mode/printf b/extensions/yasnippet/snippets/c-mode/printf deleted file mode 100644 index 055461d..0000000 --- a/extensions/yasnippet/snippets/c-mode/printf +++ /dev/null @@ -1,6 +0,0 @@ -# -*- mode: snippet -*- -# name : printf -# contributor : joaotavora -# -- -printf ("${1:%s}\\n"${1:$(if (string-match "%" text) "," "\);") -}$2${1:$(if (string-match "%" text) "\);" "")} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/cc-mode/.yas-parents b/extensions/yasnippet/snippets/cc-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/cc-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/cc-mode/do b/extensions/yasnippet/snippets/cc-mode/do deleted file mode 100644 index 5f7a313..0000000 --- a/extensions/yasnippet/snippets/cc-mode/do +++ /dev/null @@ -1,6 +0,0 @@ -#name : do { ... } while (...) -# -- -do -{ - $0 -} while (${1:condition}); \ No newline at end of file diff --git a/extensions/yasnippet/snippets/cc-mode/for b/extensions/yasnippet/snippets/cc-mode/for deleted file mode 100644 index c4cade6..0000000 --- a/extensions/yasnippet/snippets/cc-mode/for +++ /dev/null @@ -1,6 +0,0 @@ -#name : for (...; ...; ...) { ... } -# -- -for (${1:int i = 0}; ${2:i < N}; ${3:++i}) -{ - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/cc-mode/if b/extensions/yasnippet/snippets/cc-mode/if deleted file mode 100644 index c3fe10d..0000000 --- a/extensions/yasnippet/snippets/cc-mode/if +++ /dev/null @@ -1,6 +0,0 @@ -#name : if (...) { ... } -# -- -if (${1:condition}) -{ - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/cc-mode/inc b/extensions/yasnippet/snippets/cc-mode/inc deleted file mode 100644 index ae33328..0000000 --- a/extensions/yasnippet/snippets/cc-mode/inc +++ /dev/null @@ -1,3 +0,0 @@ -#name : #include "..." -# -- -#include "$1" diff --git a/extensions/yasnippet/snippets/cc-mode/inc.1 b/extensions/yasnippet/snippets/cc-mode/inc.1 deleted file mode 100644 index 66326cd..0000000 --- a/extensions/yasnippet/snippets/cc-mode/inc.1 +++ /dev/null @@ -1,3 +0,0 @@ -#name : #include <...> -# -- -#include <$1> diff --git a/extensions/yasnippet/snippets/cc-mode/main b/extensions/yasnippet/snippets/cc-mode/main deleted file mode 100644 index 9249049..0000000 --- a/extensions/yasnippet/snippets/cc-mode/main +++ /dev/null @@ -1,7 +0,0 @@ -#name: int main(argc, argv) { ... } -# -- -int main(int argc, char *argv[]) -{ - $0 - return 0; -} diff --git a/extensions/yasnippet/snippets/cc-mode/once b/extensions/yasnippet/snippets/cc-mode/once deleted file mode 100644 index 1b63c39..0000000 --- a/extensions/yasnippet/snippets/cc-mode/once +++ /dev/null @@ -1,8 +0,0 @@ -#name : #ifndef XXX; #define XXX; #endif -# -- -#ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_} -#define $1 - -$0 - -#endif /* $1 */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/cc-mode/struct b/extensions/yasnippet/snippets/cc-mode/struct deleted file mode 100644 index f50dabf..0000000 --- a/extensions/yasnippet/snippets/cc-mode/struct +++ /dev/null @@ -1,6 +0,0 @@ -#name : struct ... { ... } -# -- -struct ${1:name} -{ - $0 -}; \ No newline at end of file diff --git a/extensions/yasnippet/snippets/cperl-mode/.yas-parents b/extensions/yasnippet/snippets/cperl-mode/.yas-parents deleted file mode 100644 index bfa2993..0000000 --- a/extensions/yasnippet/snippets/cperl-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -perl-mode diff --git a/extensions/yasnippet/snippets/csharp-mode/.yas-parents b/extensions/yasnippet/snippets/csharp-mode/.yas-parents deleted file mode 100644 index ce9828b..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -cc-mode diff --git a/extensions/yasnippet/snippets/csharp-mode/attrib b/extensions/yasnippet/snippets/csharp-mode/attrib deleted file mode 100644 index 9e14e22..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/attrib +++ /dev/null @@ -1,7 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : private attribute ....; -# -- -/// -/// $3 -/// -private $1 $2; diff --git a/extensions/yasnippet/snippets/csharp-mode/attrib.1 b/extensions/yasnippet/snippets/csharp-mode/attrib.1 deleted file mode 100644 index 099cc7b..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/attrib.1 +++ /dev/null @@ -1,21 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : private attribute ....; public property ... ... { ... } -# -- -/// -/// $3 -/// -private $1 $2; - -/// -/// $4 -/// -/// $5 -public $1 $2 -{ - get { - return this.$2; - } - set { - this.$2 = value; - } -} diff --git a/extensions/yasnippet/snippets/csharp-mode/attrib.2 b/extensions/yasnippet/snippets/csharp-mode/attrib.2 deleted file mode 100644 index 566eacf..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/attrib.2 +++ /dev/null @@ -1,21 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : private _attribute ....; public Property ... ... { ... } -# -- -/// -/// $3 -/// -private $1 ${2:$(if (> (length text) 0) (format "_%s%s" (downcase (substring text 0 1)) (substring text 1 (length text))) "")}; - -/// -/// ${3:Description} -/// -/// $1 -public ${1:Type} ${2:Name} -{ - get { - return this.${2:$(if (> (length text) 0) (format "_%s%s" (downcase (substring text 0 1)) (substring text 1 (length text))) "")}; - } - set { - this.${2:$(if (> (length text) 0) (format "_%s%s" (downcase (substring text 0 1)) (substring text 1 (length text))) "")} = value; - } -} diff --git a/extensions/yasnippet/snippets/csharp-mode/class b/extensions/yasnippet/snippets/csharp-mode/class deleted file mode 100644 index 1cce2e8..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/class +++ /dev/null @@ -1,21 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : class ... { ... } -# -- -${5:public} class ${1:Name} -{ - #region Ctor & Destructor - /// - /// ${3:Standard Constructor} - /// - public $1($2) - { - } - - /// - /// ${4:Default Destructor} - /// - public ~$1() - { - } - #endregion -} diff --git a/extensions/yasnippet/snippets/csharp-mode/comment b/extensions/yasnippet/snippets/csharp-mode/comment deleted file mode 100644 index 3bd20d3..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/comment +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : /// ... -# -- -/// -/// $1 -/// diff --git a/extensions/yasnippet/snippets/csharp-mode/comment.1 b/extensions/yasnippet/snippets/csharp-mode/comment.1 deleted file mode 100644 index 3c14ad9..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/comment.1 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : /// ... -# -- -/// $2 diff --git a/extensions/yasnippet/snippets/csharp-mode/comment.2 b/extensions/yasnippet/snippets/csharp-mode/comment.2 deleted file mode 100644 index 63a6a20..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/comment.2 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : /// ... -# -- -/// $1 diff --git a/extensions/yasnippet/snippets/csharp-mode/comment.3 b/extensions/yasnippet/snippets/csharp-mode/comment.3 deleted file mode 100644 index 394c323..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/comment.3 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : /// ... -# -- -/// $2 diff --git a/extensions/yasnippet/snippets/csharp-mode/method b/extensions/yasnippet/snippets/csharp-mode/method deleted file mode 100644 index e9a5906..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/method +++ /dev/null @@ -1,10 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : public void Method { ... } -# -- -/// -/// ${5:Description} -/// ${2:$(if (string= (upcase text) "VOID") "" (format "%s%s%s" "\n/// " text ""))} -${1:public} ${2:void} ${3:MethodName}($4) -{ -$0 -} diff --git a/extensions/yasnippet/snippets/csharp-mode/namespace b/extensions/yasnippet/snippets/csharp-mode/namespace deleted file mode 100644 index af7c928..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/namespace +++ /dev/null @@ -1,7 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : namespace .. { ... } -# -- -namespace $1 -{ -$0 -} diff --git a/extensions/yasnippet/snippets/csharp-mode/prop b/extensions/yasnippet/snippets/csharp-mode/prop deleted file mode 100644 index df9df91..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/prop +++ /dev/null @@ -1,16 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : property ... ... { ... } -# -- -/// -/// $5 -/// -/// $6 -$1 $2 $3 -{ - get { - return this.$4; - } - set { - this.$4 = value; - } -} diff --git a/extensions/yasnippet/snippets/csharp-mode/region b/extensions/yasnippet/snippets/csharp-mode/region deleted file mode 100644 index 83f9a24..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/region +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : #region ... #endregion -# -- -#region $1 -$0 -#endregion diff --git a/extensions/yasnippet/snippets/csharp-mode/using b/extensions/yasnippet/snippets/csharp-mode/using deleted file mode 100644 index 704637e..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/using +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : using ...; -# -- -using $1; diff --git a/extensions/yasnippet/snippets/csharp-mode/using.1 b/extensions/yasnippet/snippets/csharp-mode/using.1 deleted file mode 100644 index e9f0bb0..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/using.1 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : using System; -# -- -using System; diff --git a/extensions/yasnippet/snippets/csharp-mode/using.2 b/extensions/yasnippet/snippets/csharp-mode/using.2 deleted file mode 100644 index 0a3c07d..0000000 --- a/extensions/yasnippet/snippets/csharp-mode/using.2 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : using System....; -# -- -using System.$1; diff --git a/extensions/yasnippet/snippets/css-mode/.yas-parents b/extensions/yasnippet/snippets/css-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/css-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/css-mode/bg b/extensions/yasnippet/snippets/css-mode/bg deleted file mode 100644 index d731807..0000000 --- a/extensions/yasnippet/snippets/css-mode/bg +++ /dev/null @@ -1,3 +0,0 @@ -#name : background-color: ... -# -- -background-color: #${1:DDD}; \ No newline at end of file diff --git a/extensions/yasnippet/snippets/css-mode/bg.1 b/extensions/yasnippet/snippets/css-mode/bg.1 deleted file mode 100644 index d31f540..0000000 --- a/extensions/yasnippet/snippets/css-mode/bg.1 +++ /dev/null @@ -1,3 +0,0 @@ -#name : background-image: ... -# -- -background-image: url($1); \ No newline at end of file diff --git a/extensions/yasnippet/snippets/css-mode/bor b/extensions/yasnippet/snippets/css-mode/bor deleted file mode 100644 index eb3a2b4..0000000 --- a/extensions/yasnippet/snippets/css-mode/bor +++ /dev/null @@ -1,3 +0,0 @@ -#name : border size style color -# -- -border: ${1:1px} ${2:solid} #${3:999}; \ No newline at end of file diff --git a/extensions/yasnippet/snippets/css-mode/cl b/extensions/yasnippet/snippets/css-mode/cl deleted file mode 100644 index 4fc7a8d..0000000 --- a/extensions/yasnippet/snippets/css-mode/cl +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : clear: ... -# -- -clear: $1; diff --git a/extensions/yasnippet/snippets/css-mode/disp.block b/extensions/yasnippet/snippets/css-mode/disp.block deleted file mode 100644 index f74ea3c..0000000 --- a/extensions/yasnippet/snippets/css-mode/disp.block +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : display: block -# -- -display: block; diff --git a/extensions/yasnippet/snippets/css-mode/disp.inline b/extensions/yasnippet/snippets/css-mode/disp.inline deleted file mode 100644 index 30275a8..0000000 --- a/extensions/yasnippet/snippets/css-mode/disp.inline +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : display: inline -# -- -display: inline; diff --git a/extensions/yasnippet/snippets/css-mode/disp.none b/extensions/yasnippet/snippets/css-mode/disp.none deleted file mode 100644 index 80632a5..0000000 --- a/extensions/yasnippet/snippets/css-mode/disp.none +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : display: none -# -- -display: none; diff --git a/extensions/yasnippet/snippets/css-mode/ff b/extensions/yasnippet/snippets/css-mode/ff deleted file mode 100644 index a7352cf..0000000 --- a/extensions/yasnippet/snippets/css-mode/ff +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : font-family: ... -# -- -font-family: $1; diff --git a/extensions/yasnippet/snippets/css-mode/fs b/extensions/yasnippet/snippets/css-mode/fs deleted file mode 100644 index c28cdbb..0000000 --- a/extensions/yasnippet/snippets/css-mode/fs +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : font-size: ... -# -- -font-size: ${12px}; diff --git a/extensions/yasnippet/snippets/css-mode/mar.bottom b/extensions/yasnippet/snippets/css-mode/mar.bottom deleted file mode 100644 index 9672f60..0000000 --- a/extensions/yasnippet/snippets/css-mode/mar.bottom +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : margin-bottom: ... -# -- -margin-bottom: $1; diff --git a/extensions/yasnippet/snippets/css-mode/mar.left b/extensions/yasnippet/snippets/css-mode/mar.left deleted file mode 100644 index 414353e..0000000 --- a/extensions/yasnippet/snippets/css-mode/mar.left +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : margin-left: ... -# -- -margin-left: $1; diff --git a/extensions/yasnippet/snippets/css-mode/mar.mar b/extensions/yasnippet/snippets/css-mode/mar.mar deleted file mode 100644 index 13354db..0000000 --- a/extensions/yasnippet/snippets/css-mode/mar.mar +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : margin: ... -# -- -margin: $1; diff --git a/extensions/yasnippet/snippets/css-mode/mar.margin b/extensions/yasnippet/snippets/css-mode/mar.margin deleted file mode 100644 index 97de70c..0000000 --- a/extensions/yasnippet/snippets/css-mode/mar.margin +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : margin top right bottom left -# -- -margin: ${top} ${right} ${bottom} ${left}; diff --git a/extensions/yasnippet/snippets/css-mode/mar.right b/extensions/yasnippet/snippets/css-mode/mar.right deleted file mode 100644 index 47a4973..0000000 --- a/extensions/yasnippet/snippets/css-mode/mar.right +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : margin-right: ... -# -- -margin-right: $1; diff --git a/extensions/yasnippet/snippets/css-mode/mar.top b/extensions/yasnippet/snippets/css-mode/mar.top deleted file mode 100644 index c805754..0000000 --- a/extensions/yasnippet/snippets/css-mode/mar.top +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : margin-top: ... -# -- -margin-top: $1; diff --git a/extensions/yasnippet/snippets/css-mode/pad.bottom b/extensions/yasnippet/snippets/css-mode/pad.bottom deleted file mode 100644 index 3b9495e..0000000 --- a/extensions/yasnippet/snippets/css-mode/pad.bottom +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : padding-bottom: ... -# -- -padding-bottom: $1; diff --git a/extensions/yasnippet/snippets/css-mode/pad.left b/extensions/yasnippet/snippets/css-mode/pad.left deleted file mode 100644 index ecae515..0000000 --- a/extensions/yasnippet/snippets/css-mode/pad.left +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : padding-left: ... -# -- -padding-left: $1; diff --git a/extensions/yasnippet/snippets/css-mode/pad.pad b/extensions/yasnippet/snippets/css-mode/pad.pad deleted file mode 100644 index ee3a682..0000000 --- a/extensions/yasnippet/snippets/css-mode/pad.pad +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : padding: ... -# -- -padding: $1; diff --git a/extensions/yasnippet/snippets/css-mode/pad.padding b/extensions/yasnippet/snippets/css-mode/pad.padding deleted file mode 100644 index c1009d3..0000000 --- a/extensions/yasnippet/snippets/css-mode/pad.padding +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : padding: top right bottom left -# -- -padding: ${top} ${right} ${bottom} ${left}; diff --git a/extensions/yasnippet/snippets/css-mode/pad.right b/extensions/yasnippet/snippets/css-mode/pad.right deleted file mode 100644 index 98a9e12..0000000 --- a/extensions/yasnippet/snippets/css-mode/pad.right +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : padding-right: ... -# -- -padding-right: $1; diff --git a/extensions/yasnippet/snippets/css-mode/pad.top b/extensions/yasnippet/snippets/css-mode/pad.top deleted file mode 100644 index 34987f6..0000000 --- a/extensions/yasnippet/snippets/css-mode/pad.top +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : rejeep -#name : padding-top: ... -# -- -padding-top: $1; diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/.read_me b/extensions/yasnippet/snippets/emacs-lisp-mode/.read_me deleted file mode 100644 index 9e6e532..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/.read_me +++ /dev/null @@ -1,11 +0,0 @@ -TITLE: Emacs Idiom Template Set. Version 1. 2009-02-22 - -DESCRIPTION: Some useful templates for emacs lisp. This template set is based on useful elisp idioms on common tasks. - -LICENSING: GPL version 3. - -AUTHOR: Xah Lee - -Home Page: latest version at: -• Emacs Lisp Idiom Templates - http://xahlee.org/emacs/elisp_idiom_templates.html diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/.yas-parents b/extensions/yasnippet/snippets/emacs-lisp-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/defun b/extensions/yasnippet/snippets/emacs-lisp-mode/defun deleted file mode 100644 index 0105d20..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/defun +++ /dev/null @@ -1,11 +0,0 @@ -#name : function template -#contributor : Xah Lee -# -- -(defun $1 () - "thisandthat." - (interactive) - (let (var1) - (setq var1 some) - $0 - ) -) \ No newline at end of file diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/dired.process_marked b/extensions/yasnippet/snippets/emacs-lisp-mode/dired.process_marked deleted file mode 100644 index 1b42597..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/dired.process_marked +++ /dev/null @@ -1,16 +0,0 @@ -#name : process marked files in dired -#contributor : Xah Lee -# -- -;; idiom for processing a list of files in dired's marked files - -;; suppose myProcessFile is your function that takes a file path -;; and do some processing on the file - -(defun dired-myProcessFile () - "apply myProcessFile function to marked files in dired." - (interactive) - (require 'dired) - (mapc 'myProcessFile (dired-get-marked-files)) -) - -;; to use it, type M-x dired-myProcessFile diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/file.process b/extensions/yasnippet/snippets/emacs-lisp-mode/file.process deleted file mode 100644 index abd1a33..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/file.process +++ /dev/null @@ -1,17 +0,0 @@ -#name : a function that process a file -#contributor : Xah Lee -# -- -(defun doThisFile (fpath) - "Process the file at path FPATH ..." - (let () - ;; create temp buffer without undo record or font lock. (more efficient) - ;; first space in temp buff name is necessary - (set-buffer (get-buffer-create " myTemp")) - (insert-file-contents fpath nil nil nil t) - - ;; process it ... - ;; (goto-char 0) ; move to begining of file's content (in case it was open) - ;; ... do something here - ;; (write-file fpath) ;; write back to the file - - (kill-buffer " myTemp"))) diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/file.read-lines b/extensions/yasnippet/snippets/emacs-lisp-mode/file.read-lines deleted file mode 100644 index b4a1942..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/file.read-lines +++ /dev/null @@ -1,17 +0,0 @@ -#name : read lines of a file -#contributor : Xah Lee -# -- -(defun read-lines (filePath) - "Return a list of lines in FILEPATH." - (with-temp-buffer - (insert-file-contents filePath) - (split-string - (buffer-string) "\n" t)) ) - -;; process all lines -(mapc - (lambda (aLine) - (message aLine) ; do your stuff here - ) - (read-lines "inputFilePath") -) \ No newline at end of file diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/find-replace b/extensions/yasnippet/snippets/emacs-lisp-mode/find-replace deleted file mode 100644 index cefcf51..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/find-replace +++ /dev/null @@ -1,17 +0,0 @@ -#name : find and replace on region -#contributor : Xah Lee -# -- -(defun replace-html-chars-region (start end) - "Replace “<” to “<” and other chars in HTML. -This works on the current region." - (interactive "r") - (save-restriction - (narrow-to-region start end) - (goto-char (point-min)) - (while (search-forward "&" nil t) (replace-match "&" nil t)) - (goto-char (point-min)) - (while (search-forward "<" nil t) (replace-match "<" nil t)) - (goto-char (point-min)) - (while (search-forward ">" nil t) (replace-match ">" nil t)) - ) - ) diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/grabstring b/extensions/yasnippet/snippets/emacs-lisp-mode/grabstring deleted file mode 100644 index 55600b1..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/grabstring +++ /dev/null @@ -1,4 +0,0 @@ -#name : grab buffer substring -#contributor : Xah Lee -# -- -(setq $0 (buffer-substring-no-properties myStartPos myEndPos)) diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/grabthing b/extensions/yasnippet/snippets/emacs-lisp-mode/grabthing deleted file mode 100644 index 772b8dc..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/grabthing +++ /dev/null @@ -1,4 +0,0 @@ -#name : grab word under cursor -#contributor : Xah Lee -# -- -(setq $0 (thing-at-point 'symbol)) diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/traverse_dir b/extensions/yasnippet/snippets/emacs-lisp-mode/traverse_dir deleted file mode 100644 index 2859cbd..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/traverse_dir +++ /dev/null @@ -1,6 +0,0 @@ -#name : traversing a directory -#contributor : Xah Lee -# -- -;; apply a function to all files in a dir -(require 'find-lisp) -(mapc 'my-process-file (find-lisp-find-files "~/myweb/" "\\.html$")) diff --git a/extensions/yasnippet/snippets/emacs-lisp-mode/word-or-region b/extensions/yasnippet/snippets/emacs-lisp-mode/word-or-region deleted file mode 100644 index 66a59e4..0000000 --- a/extensions/yasnippet/snippets/emacs-lisp-mode/word-or-region +++ /dev/null @@ -1,27 +0,0 @@ -#name : Command that works on region or word -#contributor : Xah Lee -# -- -;; example of a command that works on current word or text selection -(defun down-case-word-or-region () - "Lower case the current word or text selection." -(interactive) -(let (pos1 pos2 meat) - (if (and transient-mark-mode mark-active) - (setq pos1 (region-beginning) - pos2 (region-end)) - (setq pos1 (car (bounds-of-thing-at-point 'symbol)) - pos2 (cdr (bounds-of-thing-at-point 'symbol)))) - - ; now, pos1 and pos2 are the starting and ending positions - ; of the current word, or current text selection if exists - - ;; put your code here. - $0 - ;; Some example of things you might want to do - (downcase-region pos1 pos2) ; example of a func that takes region as args - (setq meat (buffer-substring-no-properties pos1 pos2)) ; grab the text. - (delete-region pos1 pos2) ; get rid of it - (insert "newText") ; insert your new text - - ) -) diff --git a/extensions/yasnippet/snippets/erlang-mode/.yas-parents b/extensions/yasnippet/snippets/erlang-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/erlang-mode/after b/extensions/yasnippet/snippets/erlang-mode/after deleted file mode 100644 index 264e201..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/after +++ /dev/null @@ -1,4 +0,0 @@ -#name : after ... -> -# -- -after - $1 -> $0 diff --git a/extensions/yasnippet/snippets/erlang-mode/begin b/extensions/yasnippet/snippets/erlang-mode/begin deleted file mode 100644 index 7b48494..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/begin +++ /dev/null @@ -1,5 +0,0 @@ -#name : begin ... end -# -- -begin - $0 -end diff --git a/extensions/yasnippet/snippets/erlang-mode/beh b/extensions/yasnippet/snippets/erlang-mode/beh deleted file mode 100644 index 4975b26..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/beh +++ /dev/null @@ -1,4 +0,0 @@ -#name : -behaviour(...). -# -- --behaviour(${1:gen_server}). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/case b/extensions/yasnippet/snippets/erlang-mode/case deleted file mode 100644 index 5bed114..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/case +++ /dev/null @@ -1,5 +0,0 @@ -#name : case ... of ... end -# -- -case $1 of - $0 -end diff --git a/extensions/yasnippet/snippets/erlang-mode/compile b/extensions/yasnippet/snippets/erlang-mode/compile deleted file mode 100644 index ae3a4d8..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/compile +++ /dev/null @@ -1,4 +0,0 @@ -#name : -compile(...). -# -- --compile([${1:export_all}]). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/def b/extensions/yasnippet/snippets/erlang-mode/def deleted file mode 100644 index 6fb92f1..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/def +++ /dev/null @@ -1,4 +0,0 @@ -#name : -define(...,...). -# -- --define($1,$2). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/exp b/extensions/yasnippet/snippets/erlang-mode/exp deleted file mode 100644 index 67f56da..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/exp +++ /dev/null @@ -1,5 +0,0 @@ -#name : -export([]). -#contributor : hitesh -# -- --export([${1:start/0}]). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/fun b/extensions/yasnippet/snippets/erlang-mode/fun deleted file mode 100644 index 77f8293..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/fun +++ /dev/null @@ -1,3 +0,0 @@ -#name : fun (...) -> ... end -# -- -fun ($1) -> $0 end diff --git a/extensions/yasnippet/snippets/erlang-mode/if b/extensions/yasnippet/snippets/erlang-mode/if deleted file mode 100644 index 45674c4..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/if +++ /dev/null @@ -1,6 +0,0 @@ -#name : if ... -> ... ; true -> ... end -# -- -if - $1 -> $2; - true -> $0 -end diff --git a/extensions/yasnippet/snippets/erlang-mode/ifdef b/extensions/yasnippet/snippets/erlang-mode/ifdef deleted file mode 100644 index ea89ecf..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/ifdef +++ /dev/null @@ -1,5 +0,0 @@ -#name : -ifdef(...). ... -endif. -# -- --ifdef($1). -$0 --endif. diff --git a/extensions/yasnippet/snippets/erlang-mode/ifndef b/extensions/yasnippet/snippets/erlang-mode/ifndef deleted file mode 100644 index dcd67a7..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/ifndef +++ /dev/null @@ -1,5 +0,0 @@ -#name : -ifndef(...). ... -endif. -# -- --ifndef($1). -$0 --endif. diff --git a/extensions/yasnippet/snippets/erlang-mode/imp b/extensions/yasnippet/snippets/erlang-mode/imp deleted file mode 100644 index c035ddd..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/imp +++ /dev/null @@ -1,5 +0,0 @@ -#name : -import([]). -#contributor : hitesh -# -- --import(${1:lists}, [${2:map/2, sum/1}]). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/inc b/extensions/yasnippet/snippets/erlang-mode/inc deleted file mode 100644 index f7b2161..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/inc +++ /dev/null @@ -1,4 +0,0 @@ -#name : -include("..."). -# -- --include("$1"). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/inc.lib b/extensions/yasnippet/snippets/erlang-mode/inc.lib deleted file mode 100644 index 09a6723..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/inc.lib +++ /dev/null @@ -1,4 +0,0 @@ -#name : -include_lib("..."). -# -- --include_lib("$1"). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/loop b/extensions/yasnippet/snippets/erlang-mode/loop deleted file mode 100644 index 0205802..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/loop +++ /dev/null @@ -1,8 +0,0 @@ -#name : loop(...) -> receive _ -> loop(...) end. -# -- -${1:loop}($2) -> - receive - ${3:_} -> - $1($2) - end. -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/mod b/extensions/yasnippet/snippets/erlang-mode/mod deleted file mode 100644 index 7275d39..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/mod +++ /dev/null @@ -1,6 +0,0 @@ -#name : -module(). -#contributor : hitesh -# -- --module(${1:`(file-name-nondirectory - (file-name-sans-extension (or (buffer-file-name) (buffer-name))))`}). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/rcv b/extensions/yasnippet/snippets/erlang-mode/rcv deleted file mode 100644 index 804fb3f..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/rcv +++ /dev/null @@ -1,5 +0,0 @@ -#name : receive ... -> ... end -# -- -receive - $1 -> $0 -end diff --git a/extensions/yasnippet/snippets/erlang-mode/rcv.after b/extensions/yasnippet/snippets/erlang-mode/rcv.after deleted file mode 100644 index 51046df..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/rcv.after +++ /dev/null @@ -1,6 +0,0 @@ -#name : receive after ... -> ... end -# -- -receive -after - $1 -> $0 -end diff --git a/extensions/yasnippet/snippets/erlang-mode/rec b/extensions/yasnippet/snippets/erlang-mode/rec deleted file mode 100644 index 0d67834..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/rec +++ /dev/null @@ -1,4 +0,0 @@ -#name : -record(...,{...}). -# -- --record($1,{$2}). -$0 diff --git a/extensions/yasnippet/snippets/erlang-mode/try b/extensions/yasnippet/snippets/erlang-mode/try deleted file mode 100644 index fa5c9c2..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/try +++ /dev/null @@ -1,7 +0,0 @@ -#name : try ... of ... catch after end -# -- -try $1 of - $0 -catch -after -end diff --git a/extensions/yasnippet/snippets/erlang-mode/undef b/extensions/yasnippet/snippets/erlang-mode/undef deleted file mode 100644 index 7ab5dd4..0000000 --- a/extensions/yasnippet/snippets/erlang-mode/undef +++ /dev/null @@ -1,4 +0,0 @@ -#name : -undef(...). -# -- --undef($1). -$0 diff --git a/extensions/yasnippet/snippets/f90-mode/.yas-parents b/extensions/yasnippet/snippets/f90-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/f90-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/f90-mode/au b/extensions/yasnippet/snippets/f90-mode/au deleted file mode 100644 index 1f0af73..0000000 --- a/extensions/yasnippet/snippets/f90-mode/au +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : automatic -# -- -automatic $0 diff --git a/extensions/yasnippet/snippets/f90-mode/bd b/extensions/yasnippet/snippets/f90-mode/bd deleted file mode 100644 index 8840102..0000000 --- a/extensions/yasnippet/snippets/f90-mode/bd +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : block data -# -- -block data $0 diff --git a/extensions/yasnippet/snippets/f90-mode/c b/extensions/yasnippet/snippets/f90-mode/c deleted file mode 100644 index c7182e4..0000000 --- a/extensions/yasnippet/snippets/f90-mode/c +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : continue -# -- -continue $0 diff --git a/extensions/yasnippet/snippets/f90-mode/ch b/extensions/yasnippet/snippets/f90-mode/ch deleted file mode 100644 index 7e6b4cb..0000000 --- a/extensions/yasnippet/snippets/f90-mode/ch +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : character -# -- -character $0 diff --git a/extensions/yasnippet/snippets/f90-mode/cx b/extensions/yasnippet/snippets/f90-mode/cx deleted file mode 100644 index 8feb41e..0000000 --- a/extensions/yasnippet/snippets/f90-mode/cx +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : complex -# -- -complex $0 diff --git a/extensions/yasnippet/snippets/f90-mode/dc b/extensions/yasnippet/snippets/f90-mode/dc deleted file mode 100644 index 1992b1b..0000000 --- a/extensions/yasnippet/snippets/f90-mode/dc +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : double complex -# -- -double complex $0 diff --git a/extensions/yasnippet/snippets/f90-mode/do b/extensions/yasnippet/snippets/f90-mode/do deleted file mode 100644 index 2c117fd..0000000 --- a/extensions/yasnippet/snippets/f90-mode/do +++ /dev/null @@ -1,6 +0,0 @@ -#contributor: Li Zhu -#name : do while (...) end do -# -- -do while (${1:condition}) - $0 -end do diff --git a/extensions/yasnippet/snippets/f90-mode/dp b/extensions/yasnippet/snippets/f90-mode/dp deleted file mode 100644 index ad014b7..0000000 --- a/extensions/yasnippet/snippets/f90-mode/dp +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : double precision -# -- -double precision $0 diff --git a/extensions/yasnippet/snippets/f90-mode/eq b/extensions/yasnippet/snippets/f90-mode/eq deleted file mode 100644 index 0c6d09f..0000000 --- a/extensions/yasnippet/snippets/f90-mode/eq +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : equivalence -# -- -equivalence $0 diff --git a/extensions/yasnippet/snippets/f90-mode/ib b/extensions/yasnippet/snippets/f90-mode/ib deleted file mode 100644 index 9275a12..0000000 --- a/extensions/yasnippet/snippets/f90-mode/ib +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit byte -# -- -implicit byte $0 diff --git a/extensions/yasnippet/snippets/f90-mode/ic b/extensions/yasnippet/snippets/f90-mode/ic deleted file mode 100644 index 79842ea..0000000 --- a/extensions/yasnippet/snippets/f90-mode/ic +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit complex -# -- -implicit complex $0 diff --git a/extensions/yasnippet/snippets/f90-mode/ich b/extensions/yasnippet/snippets/f90-mode/ich deleted file mode 100644 index 53c7f81..0000000 --- a/extensions/yasnippet/snippets/f90-mode/ich +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit character -# -- -implicit character $0 diff --git a/extensions/yasnippet/snippets/f90-mode/if b/extensions/yasnippet/snippets/f90-mode/if deleted file mode 100644 index b4fb526..0000000 --- a/extensions/yasnippet/snippets/f90-mode/if +++ /dev/null @@ -1,6 +0,0 @@ -#contributor: Li Zhu -#name : if then end if -# -- -if ( ${1:condition} ) then - $0 -end if diff --git a/extensions/yasnippet/snippets/f90-mode/ii b/extensions/yasnippet/snippets/f90-mode/ii deleted file mode 100644 index 4b1fee5..0000000 --- a/extensions/yasnippet/snippets/f90-mode/ii +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit integer -# -- -implicit integer $0 diff --git a/extensions/yasnippet/snippets/f90-mode/il b/extensions/yasnippet/snippets/f90-mode/il deleted file mode 100644 index 8658af5..0000000 --- a/extensions/yasnippet/snippets/f90-mode/il +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit logical -# -- -implicit logical $0 diff --git a/extensions/yasnippet/snippets/f90-mode/in b/extensions/yasnippet/snippets/f90-mode/in deleted file mode 100644 index 0c1d5e1..0000000 --- a/extensions/yasnippet/snippets/f90-mode/in +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit none -# -- -implicit none diff --git a/extensions/yasnippet/snippets/f90-mode/inc b/extensions/yasnippet/snippets/f90-mode/inc deleted file mode 100644 index dd649c4..0000000 --- a/extensions/yasnippet/snippets/f90-mode/inc +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : include -# -- -include $0 diff --git a/extensions/yasnippet/snippets/f90-mode/intr b/extensions/yasnippet/snippets/f90-mode/intr deleted file mode 100644 index 147fffd..0000000 --- a/extensions/yasnippet/snippets/f90-mode/intr +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : intrinsic -# -- -intrinsic $0 diff --git a/extensions/yasnippet/snippets/f90-mode/ir b/extensions/yasnippet/snippets/f90-mode/ir deleted file mode 100644 index fb37082..0000000 --- a/extensions/yasnippet/snippets/f90-mode/ir +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : implicit real -# -- -implicit real $0 diff --git a/extensions/yasnippet/snippets/f90-mode/l b/extensions/yasnippet/snippets/f90-mode/l deleted file mode 100644 index 8605d69..0000000 --- a/extensions/yasnippet/snippets/f90-mode/l +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : logical -# -- -logical $0 diff --git a/extensions/yasnippet/snippets/f90-mode/pa b/extensions/yasnippet/snippets/f90-mode/pa deleted file mode 100644 index 1b1b503..0000000 --- a/extensions/yasnippet/snippets/f90-mode/pa +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : parameter -# -- -parameter $0 diff --git a/extensions/yasnippet/snippets/f90-mode/pr b/extensions/yasnippet/snippets/f90-mode/pr deleted file mode 100644 index e0f8baa..0000000 --- a/extensions/yasnippet/snippets/f90-mode/pr +++ /dev/null @@ -1,6 +0,0 @@ -#contributor: Li Zhu -#name : program ... end program ... -# -- -program ${1:name} - $0 -end program ${1:name} diff --git a/extensions/yasnippet/snippets/f90-mode/re b/extensions/yasnippet/snippets/f90-mode/re deleted file mode 100644 index 08c7ba0..0000000 --- a/extensions/yasnippet/snippets/f90-mode/re +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : read (*,*) -# -- -read (${1:*},${2:*}) $0 diff --git a/extensions/yasnippet/snippets/f90-mode/st b/extensions/yasnippet/snippets/f90-mode/st deleted file mode 100644 index 23ae7d0..0000000 --- a/extensions/yasnippet/snippets/f90-mode/st +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : structure -# -- -structure $0 diff --git a/extensions/yasnippet/snippets/f90-mode/su b/extensions/yasnippet/snippets/f90-mode/su deleted file mode 100644 index d3857b8..0000000 --- a/extensions/yasnippet/snippets/f90-mode/su +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : subroutine -# -- -subroutine $0 diff --git a/extensions/yasnippet/snippets/f90-mode/wr b/extensions/yasnippet/snippets/f90-mode/wr deleted file mode 100644 index 1ac3eb9..0000000 --- a/extensions/yasnippet/snippets/f90-mode/wr +++ /dev/null @@ -1,4 +0,0 @@ -#contributor: Li Zhu -#name : write (*,*) -# -- -write (${1:*},${2:*}) $0 diff --git a/extensions/yasnippet/snippets/html-mode/.yas-make-groups b/extensions/yasnippet/snippets/html-mode/.yas-make-groups deleted file mode 100644 index e69de29..0000000 diff --git a/extensions/yasnippet/snippets/html-mode/.yas-parents b/extensions/yasnippet/snippets/html-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/html-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/html-mode/body b/extensions/yasnippet/snippets/html-mode/body deleted file mode 100644 index 3655775..0000000 --- a/extensions/yasnippet/snippets/html-mode/body +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/br b/extensions/yasnippet/snippets/html-mode/br deleted file mode 100644 index 07c2d4a..0000000 --- a/extensions/yasnippet/snippets/html-mode/br +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :
-# -- -
\ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/code b/extensions/yasnippet/snippets/html-mode/code deleted file mode 100644 index a5ad908..0000000 --- a/extensions/yasnippet/snippets/html-mode/code +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/code.class b/extensions/yasnippet/snippets/html-mode/code.class deleted file mode 100644 index b910eb7..0000000 --- a/extensions/yasnippet/snippets/html-mode/code.class +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/div b/extensions/yasnippet/snippets/html-mode/div deleted file mode 100644 index 1c9c0c8..0000000 --- a/extensions/yasnippet/snippets/html-mode/div +++ /dev/null @@ -1,3 +0,0 @@ -#name : ... -# -- -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/div.class b/extensions/yasnippet/snippets/html-mode/div.class deleted file mode 100644 index 11c12d6..0000000 --- a/extensions/yasnippet/snippets/html-mode/div.class +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
...
-# -- -
- $0 -
\ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/div.id b/extensions/yasnippet/snippets/html-mode/div.id deleted file mode 100644 index cec25fb..0000000 --- a/extensions/yasnippet/snippets/html-mode/div.id +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
...
-# -- -
- $0 -
\ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/div.id-class b/extensions/yasnippet/snippets/html-mode/div.id-class deleted file mode 100644 index d5b1402..0000000 --- a/extensions/yasnippet/snippets/html-mode/div.id-class +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
...
-# -- -
- $0 -
\ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/dov b/extensions/yasnippet/snippets/html-mode/dov deleted file mode 100644 index e8341ea..0000000 --- a/extensions/yasnippet/snippets/html-mode/dov +++ /dev/null @@ -1,11 +0,0 @@ -#name : ... -# -- -a mirror up here $3 - - - - $0 - - - actually some other shit and $3 - diff --git a/extensions/yasnippet/snippets/html-mode/form b/extensions/yasnippet/snippets/html-mode/form deleted file mode 100644 index 043a59a..0000000 --- a/extensions/yasnippet/snippets/html-mode/form +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
-# -- -
- $0 -
\ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/head b/extensions/yasnippet/snippets/html-mode/head deleted file mode 100644 index 37ef1ad..0000000 --- a/extensions/yasnippet/snippets/html-mode/head +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/header/h1 b/extensions/yasnippet/snippets/html-mode/header/h1 deleted file mode 100644 index dffe61e..0000000 --- a/extensions/yasnippet/snippets/html-mode/header/h1 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :

...

-# -- -

$1

diff --git a/extensions/yasnippet/snippets/html-mode/header/h2 b/extensions/yasnippet/snippets/html-mode/header/h2 deleted file mode 100644 index d785865..0000000 --- a/extensions/yasnippet/snippets/html-mode/header/h2 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :

...

-# -- -

$1

diff --git a/extensions/yasnippet/snippets/html-mode/header/h3 b/extensions/yasnippet/snippets/html-mode/header/h3 deleted file mode 100644 index 415261a..0000000 --- a/extensions/yasnippet/snippets/html-mode/header/h3 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :

...

-# -- -

$1

diff --git a/extensions/yasnippet/snippets/html-mode/header/h4 b/extensions/yasnippet/snippets/html-mode/header/h4 deleted file mode 100644 index 66ab06a..0000000 --- a/extensions/yasnippet/snippets/html-mode/header/h4 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :

...

-# -- -

$1

diff --git a/extensions/yasnippet/snippets/html-mode/header/h5 b/extensions/yasnippet/snippets/html-mode/header/h5 deleted file mode 100644 index 0c41b22..0000000 --- a/extensions/yasnippet/snippets/html-mode/header/h5 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :
...
-# -- -
$1
diff --git a/extensions/yasnippet/snippets/html-mode/header/h6 b/extensions/yasnippet/snippets/html-mode/header/h6 deleted file mode 100644 index 5670bc2..0000000 --- a/extensions/yasnippet/snippets/html-mode/header/h6 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :
...
-# -- -
$1
diff --git a/extensions/yasnippet/snippets/html-mode/hr b/extensions/yasnippet/snippets/html-mode/hr deleted file mode 100644 index 20e38b5..0000000 --- a/extensions/yasnippet/snippets/html-mode/hr +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :
-# -- -
diff --git a/extensions/yasnippet/snippets/html-mode/href b/extensions/yasnippet/snippets/html-mode/href deleted file mode 100644 index 0425e6c..0000000 --- a/extensions/yasnippet/snippets/html-mode/href +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/html b/extensions/yasnippet/snippets/html-mode/html deleted file mode 100644 index 93a0ad7..0000000 --- a/extensions/yasnippet/snippets/html-mode/html +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - diff --git a/extensions/yasnippet/snippets/html-mode/html.xmlns b/extensions/yasnippet/snippets/html-mode/html.xmlns deleted file mode 100644 index fd6adc8..0000000 --- a/extensions/yasnippet/snippets/html-mode/html.xmlns +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - diff --git a/extensions/yasnippet/snippets/html-mode/img b/extensions/yasnippet/snippets/html-mode/img deleted file mode 100644 index 674b1dc..0000000 --- a/extensions/yasnippet/snippets/html-mode/img +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$3 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/input b/extensions/yasnippet/snippets/html-mode/input deleted file mode 100644 index 1ad74f8..0000000 --- a/extensions/yasnippet/snippets/html-mode/input +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/link.stylesheet b/extensions/yasnippet/snippets/html-mode/link.stylesheet deleted file mode 100644 index 0953396..0000000 --- a/extensions/yasnippet/snippets/html-mode/link.stylesheet +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/link.stylesheet-ie b/extensions/yasnippet/snippets/html-mode/link.stylesheet-ie deleted file mode 100644 index 9cf9fec..0000000 --- a/extensions/yasnippet/snippets/html-mode/link.stylesheet-ie +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/list/dd b/extensions/yasnippet/snippets/html-mode/list/dd deleted file mode 100644 index e447d4a..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/dd +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Rodrigo Setti -#name :
...
-# -- -
$1
diff --git a/extensions/yasnippet/snippets/html-mode/list/dl b/extensions/yasnippet/snippets/html-mode/list/dl deleted file mode 100644 index a75c875..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/dl +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Rodrigo Setti -#name :
...
-# -- -
- $0 -
diff --git a/extensions/yasnippet/snippets/html-mode/list/dl.id b/extensions/yasnippet/snippets/html-mode/list/dl.id deleted file mode 100644 index 28a6d37..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/dl.id +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Rodrigo Setti -#name :
...
-# -- -
- $0 -
diff --git a/extensions/yasnippet/snippets/html-mode/list/dt b/extensions/yasnippet/snippets/html-mode/list/dt deleted file mode 100644 index 024cce4..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/dt +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Rodrigo Setti -#name :
...
-# -- -
$1
diff --git a/extensions/yasnippet/snippets/html-mode/list/li b/extensions/yasnippet/snippets/html-mode/list/li deleted file mode 100644 index a199ca3..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/li +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :
  • ...
  • -# -- -
  • $1
  • diff --git a/extensions/yasnippet/snippets/html-mode/list/li.class b/extensions/yasnippet/snippets/html-mode/list/li.class deleted file mode 100644 index 313f512..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/li.class +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :
  • ...
  • -# -- -
  • $2
  • diff --git a/extensions/yasnippet/snippets/html-mode/list/ol b/extensions/yasnippet/snippets/html-mode/list/ol deleted file mode 100644 index 74057c8..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/ol +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
      ...
    -# -- -
      - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/list/ol.class b/extensions/yasnippet/snippets/html-mode/list/ol.class deleted file mode 100644 index fc24485..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/ol.class +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
      ...
    -# -- -
      - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/list/ol.id b/extensions/yasnippet/snippets/html-mode/list/ol.id deleted file mode 100644 index f875ff2..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/ol.id +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
      ...
    -# -- -
      - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/list/ul b/extensions/yasnippet/snippets/html-mode/list/ul deleted file mode 100644 index 5c6aeb2..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/ul +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
      ...
    -# -- -
      - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/list/ul.class b/extensions/yasnippet/snippets/html-mode/list/ul.class deleted file mode 100644 index bc27649..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/ul.class +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
      ...
    -# -- -
      - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/list/ul.id b/extensions/yasnippet/snippets/html-mode/list/ul.id deleted file mode 100644 index c323e7a..0000000 --- a/extensions/yasnippet/snippets/html-mode/list/ul.id +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
      ...
    -# -- -
      - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/mailto b/extensions/yasnippet/snippets/html-mode/mailto deleted file mode 100644 index b134f2c..0000000 --- a/extensions/yasnippet/snippets/html-mode/mailto +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/meta/doctype b/extensions/yasnippet/snippets/html-mode/meta/doctype deleted file mode 100644 index 91e1109..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/doctype +++ /dev/null @@ -1,3 +0,0 @@ -#name : Doctype HTML 4.01 Strict -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhml1 b/extensions/yasnippet/snippets/html-mode/meta/doctype.xhml1 deleted file mode 100644 index 63781f8..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhml1 +++ /dev/null @@ -1,3 +0,0 @@ -#name : DocType XHTML 1.0 frameset -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1 b/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1 deleted file mode 100644 index deaca2f..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1 +++ /dev/null @@ -1,3 +0,0 @@ -#name : DocType XHTML 1.1 -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict b/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict deleted file mode 100644 index 1db1c92..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict +++ /dev/null @@ -1,3 +0,0 @@ -#name : DocType XHTML 1.0 Strict -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional b/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional deleted file mode 100644 index e138ac4..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional +++ /dev/null @@ -1,3 +0,0 @@ -#name : DocType XHTML 1.0 Transitional -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/meta/meta b/extensions/yasnippet/snippets/html-mode/meta/meta deleted file mode 100644 index a4fd453..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/meta +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/meta/meta.http-equiv b/extensions/yasnippet/snippets/html-mode/meta/meta.http-equiv deleted file mode 100644 index 947e7fb..0000000 --- a/extensions/yasnippet/snippets/html-mode/meta/meta.http-equiv +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - diff --git a/extensions/yasnippet/snippets/html-mode/p b/extensions/yasnippet/snippets/html-mode/p deleted file mode 100644 index 579cc76..0000000 --- a/extensions/yasnippet/snippets/html-mode/p +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name :

    ...

    -# -- -

    $1

    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/pre b/extensions/yasnippet/snippets/html-mode/pre deleted file mode 100644 index 58e77cf..0000000 --- a/extensions/yasnippet/snippets/html-mode/pre +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
    ...
    -# -- -
    -  $0
    -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/quote b/extensions/yasnippet/snippets/html-mode/quote deleted file mode 100644 index 694185b..0000000 --- a/extensions/yasnippet/snippets/html-mode/quote +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name :
    ...
    -# -- -
    - $1 -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/script.javascript b/extensions/yasnippet/snippets/html-mode/script.javascript deleted file mode 100644 index 807f0ea..0000000 --- a/extensions/yasnippet/snippets/html-mode/script.javascript +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/script.javascript-src b/extensions/yasnippet/snippets/html-mode/script.javascript-src deleted file mode 100644 index 3e3cc3d..0000000 --- a/extensions/yasnippet/snippets/html-mode/script.javascript-src +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/span b/extensions/yasnippet/snippets/html-mode/span deleted file mode 100644 index 3dfdf2f..0000000 --- a/extensions/yasnippet/snippets/html-mode/span +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$1 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/span.class b/extensions/yasnippet/snippets/html-mode/span.class deleted file mode 100644 index 2d5ee55..0000000 --- a/extensions/yasnippet/snippets/html-mode/span.class +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/span.id b/extensions/yasnippet/snippets/html-mode/span.id deleted file mode 100644 index dbce842..0000000 --- a/extensions/yasnippet/snippets/html-mode/span.id +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/style b/extensions/yasnippet/snippets/html-mode/style deleted file mode 100644 index 83285a2..0000000 --- a/extensions/yasnippet/snippets/html-mode/style +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/table/table b/extensions/yasnippet/snippets/html-mode/table/table deleted file mode 100644 index a2ad495..0000000 --- a/extensions/yasnippet/snippets/html-mode/table/table +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ...
    -# -- - - $0 -
    diff --git a/extensions/yasnippet/snippets/html-mode/table/td b/extensions/yasnippet/snippets/html-mode/table/td deleted file mode 100644 index 9f1aad5..0000000 --- a/extensions/yasnippet/snippets/html-mode/table/td +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$2 diff --git a/extensions/yasnippet/snippets/html-mode/table/th b/extensions/yasnippet/snippets/html-mode/table/th deleted file mode 100644 index fbae4cc..0000000 --- a/extensions/yasnippet/snippets/html-mode/table/th +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$2 diff --git a/extensions/yasnippet/snippets/html-mode/table/tr b/extensions/yasnippet/snippets/html-mode/table/tr deleted file mode 100644 index 5f14238..0000000 --- a/extensions/yasnippet/snippets/html-mode/table/tr +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- - - $0 - diff --git a/extensions/yasnippet/snippets/html-mode/textarea b/extensions/yasnippet/snippets/html-mode/textarea deleted file mode 100644 index 9553d7a..0000000 --- a/extensions/yasnippet/snippets/html-mode/textarea +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/html-mode/title b/extensions/yasnippet/snippets/html-mode/title deleted file mode 100644 index 01e368b..0000000 --- a/extensions/yasnippet/snippets/html-mode/title +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Jimmy Wu -#name : ... -# -- -$1 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/latex-mode/.yas-parents b/extensions/yasnippet/snippets/latex-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/latex-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/latex-mode/begin b/extensions/yasnippet/snippets/latex-mode/begin deleted file mode 100644 index dc42d2f..0000000 --- a/extensions/yasnippet/snippets/latex-mode/begin +++ /dev/null @@ -1,7 +0,0 @@ -#contributor : Rodrigo Setti -#name : \begin{environment} ... \end{environment} -# -- - -\begin{${1:environment}} -$0 -\end{$1} diff --git a/extensions/yasnippet/snippets/markdown-mode/+ b/extensions/yasnippet/snippets/markdown-mode/+ deleted file mode 100644 index 0407169..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/+ +++ /dev/null @@ -1,5 +0,0 @@ -#name : Unordered List -#contributor: Peng Deng -# -- -+ ${1:Text} -+$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/- b/extensions/yasnippet/snippets/markdown-mode/- deleted file mode 100644 index 9d5c51d..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/- +++ /dev/null @@ -1,5 +0,0 @@ -#name : Unordered List -#contributor: Peng Deng -# -- -- ${1:Text} --$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/.yas-parents b/extensions/yasnippet/snippets/markdown-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/markdown-mode/_ b/extensions/yasnippet/snippets/markdown-mode/_ deleted file mode 100644 index 50ab476..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/_ +++ /dev/null @@ -1,4 +0,0 @@ -#name : Emphasis -#contributor: Peng Deng -# -- -_${1:Text}_ $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/__ b/extensions/yasnippet/snippets/markdown-mode/__ deleted file mode 100644 index b6304f3..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/__ +++ /dev/null @@ -1,4 +0,0 @@ -#name : Strong -#contributor: Peng Deng -# -- -**${1:Text}** $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/` b/extensions/yasnippet/snippets/markdown-mode/` deleted file mode 100644 index ae58211..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/` +++ /dev/null @@ -1,4 +0,0 @@ -#name : Inline Code -#contributor: Peng Deng -# -- -\`${1:Code}\` $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h1.1 b/extensions/yasnippet/snippets/markdown-mode/h1.1 deleted file mode 100644 index 8bb7ea2..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h1.1 +++ /dev/null @@ -1,6 +0,0 @@ -#name : Header 1 (#) -#contributor: Peng Deng -# -- -# ${1:Header 1} # - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h1.2 b/extensions/yasnippet/snippets/markdown-mode/h1.2 deleted file mode 100644 index d2e7b5b..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h1.2 +++ /dev/null @@ -1,7 +0,0 @@ -#name : Header 1 (=) -#contributor: Peng Deng -# -- -${1:Header 1} -${1:$(make-string (string-width text) ?\=)} - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h2.1 b/extensions/yasnippet/snippets/markdown-mode/h2.1 deleted file mode 100644 index bfee3fc..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h2.1 +++ /dev/null @@ -1,6 +0,0 @@ -#name : Header 2 (##) -#contributor: Peng Deng -# -- -## ${1:Header 1} ## - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h2.2 b/extensions/yasnippet/snippets/markdown-mode/h2.2 deleted file mode 100644 index af06045..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h2.2 +++ /dev/null @@ -1,7 +0,0 @@ -#name : Header 2 (-) -#contributor: Peng Deng -# -- -${1:Header 2} -${1:$(make-string (string-width text) ?\-)} - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h3 b/extensions/yasnippet/snippets/markdown-mode/h3 deleted file mode 100644 index 44a6104..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h3 +++ /dev/null @@ -1,6 +0,0 @@ -#name : Header 3 -#contributor: Peng Deng -# -- -### ${1:Header 3} ### - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h4 b/extensions/yasnippet/snippets/markdown-mode/h4 deleted file mode 100644 index 315140a..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h4 +++ /dev/null @@ -1,6 +0,0 @@ -#name : Header 4 -#contributor: Peng Deng -# -- -#### ${1:Header 4} #### - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h5 b/extensions/yasnippet/snippets/markdown-mode/h5 deleted file mode 100644 index f50a785..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h5 +++ /dev/null @@ -1,6 +0,0 @@ -#name : Header 5 -#contributor: Peng Deng -# -- -##### ${1:Header 5} ##### - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/h6 b/extensions/yasnippet/snippets/markdown-mode/h6 deleted file mode 100644 index 1cdfebb..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/h6 +++ /dev/null @@ -1,6 +0,0 @@ -#name : Header 6 -#contributor: Peng Deng -# -- -###### ${1:Header 6} ###### - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/hr.1 b/extensions/yasnippet/snippets/markdown-mode/hr.1 deleted file mode 100644 index 5fbe4f4..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/hr.1 +++ /dev/null @@ -1,7 +0,0 @@ -#name : Horizontal Rule (-) -#contributor: Peng Deng -# -- - ----------- - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/hr.2 b/extensions/yasnippet/snippets/markdown-mode/hr.2 deleted file mode 100644 index 2d4de22..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/hr.2 +++ /dev/null @@ -1,7 +0,0 @@ -#name : Horizontal Rule (*) -#contributor: Peng Deng -# -- - -******* - -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/img b/extensions/yasnippet/snippets/markdown-mode/img deleted file mode 100644 index 69ee77d..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/img +++ /dev/null @@ -1,4 +0,0 @@ -#name : Image -#contributor: Peng Deng -# -- -![${1:Alt Text}](${2:URL} $3) $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/link b/extensions/yasnippet/snippets/markdown-mode/link deleted file mode 100644 index dd7f99b..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/link +++ /dev/null @@ -1,4 +0,0 @@ -#name : Link -#contributor: Peng Deng -# -- -[${1:Link Text}](${2:URL} $3) $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/ol b/extensions/yasnippet/snippets/markdown-mode/ol deleted file mode 100644 index e715669..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/ol +++ /dev/null @@ -1,5 +0,0 @@ -#name : Ordered List -#contributor: Peng Deng -# -- -${1:1}. ${2:Text} -${1:$(number-to-string (1+ (string-to-number text)))}. $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/rimg b/extensions/yasnippet/snippets/markdown-mode/rimg deleted file mode 100644 index caafb60..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/rimg +++ /dev/null @@ -1,4 +0,0 @@ -#name : Referenced Image -#contributor: Peng Deng -# -- -![${1:Alt Text}][$2] $0 diff --git a/extensions/yasnippet/snippets/markdown-mode/rlb b/extensions/yasnippet/snippets/markdown-mode/rlb deleted file mode 100644 index 681d9f0..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/rlb +++ /dev/null @@ -1,5 +0,0 @@ -#name : Reference Label -#contributor: Peng Deng -# -- -[${1:Reference}]: ${2:URL} $3 -$0 diff --git a/extensions/yasnippet/snippets/markdown-mode/rlink b/extensions/yasnippet/snippets/markdown-mode/rlink deleted file mode 100644 index e35a0c0..0000000 --- a/extensions/yasnippet/snippets/markdown-mode/rlink +++ /dev/null @@ -1,4 +0,0 @@ -#name : Reference Link -#contributor: Peng Deng -# -- -[${1:Link Text}][$2] $0 diff --git a/extensions/yasnippet/snippets/nxml-mode/.yas-make-groups b/extensions/yasnippet/snippets/nxml-mode/.yas-make-groups deleted file mode 100644 index e69de29..0000000 diff --git a/extensions/yasnippet/snippets/nxml-mode/.yas-parents b/extensions/yasnippet/snippets/nxml-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/nxml-mode/body b/extensions/yasnippet/snippets/nxml-mode/body deleted file mode 100644 index 9a9addc..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/body +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/br b/extensions/yasnippet/snippets/nxml-mode/br deleted file mode 100644 index 3e235ed..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/br +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    -# -- -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/code b/extensions/yasnippet/snippets/nxml-mode/code deleted file mode 100644 index 15da807..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/code +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/div b/extensions/yasnippet/snippets/nxml-mode/div deleted file mode 100644 index 90fbc2e..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/div +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/form b/extensions/yasnippet/snippets/nxml-mode/form deleted file mode 100644 index a83c4f9..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/form +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    -# -- -
    - $0 -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/head b/extensions/yasnippet/snippets/nxml-mode/head deleted file mode 100644 index 2a4865b..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/head +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/header/h1 b/extensions/yasnippet/snippets/nxml-mode/header/h1 deleted file mode 100644 index 08972eb..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/header/h1 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :

    ...

    -# -- -

    $1

    diff --git a/extensions/yasnippet/snippets/nxml-mode/header/h2 b/extensions/yasnippet/snippets/nxml-mode/header/h2 deleted file mode 100644 index 1dfb50a..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/header/h2 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :

    ...

    -# -- -

    $1

    diff --git a/extensions/yasnippet/snippets/nxml-mode/header/h3 b/extensions/yasnippet/snippets/nxml-mode/header/h3 deleted file mode 100644 index 651bf19..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/header/h3 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :

    ...

    -# -- -

    $1

    diff --git a/extensions/yasnippet/snippets/nxml-mode/header/h4 b/extensions/yasnippet/snippets/nxml-mode/header/h4 deleted file mode 100644 index ac01b05..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/header/h4 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :

    ...

    -# -- -

    $1

    diff --git a/extensions/yasnippet/snippets/nxml-mode/header/h5 b/extensions/yasnippet/snippets/nxml-mode/header/h5 deleted file mode 100644 index 8268413..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/header/h5 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    ...
    -# -- -
    $1
    diff --git a/extensions/yasnippet/snippets/nxml-mode/header/h6 b/extensions/yasnippet/snippets/nxml-mode/header/h6 deleted file mode 100644 index 3de08c1..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/header/h6 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    ...
    -# -- -
    $1
    diff --git a/extensions/yasnippet/snippets/nxml-mode/hr b/extensions/yasnippet/snippets/nxml-mode/hr deleted file mode 100644 index 85d4acb..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/hr +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    -# -- -
    diff --git a/extensions/yasnippet/snippets/nxml-mode/href b/extensions/yasnippet/snippets/nxml-mode/href deleted file mode 100644 index 3da0ece..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/href +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/html b/extensions/yasnippet/snippets/nxml-mode/html deleted file mode 100644 index fdcb784..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/html +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- - - $0 - diff --git a/extensions/yasnippet/snippets/nxml-mode/img b/extensions/yasnippet/snippets/nxml-mode/img deleted file mode 100644 index 442d679..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/img +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/input b/extensions/yasnippet/snippets/nxml-mode/input deleted file mode 100644 index 56cfc09..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/input +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/li b/extensions/yasnippet/snippets/nxml-mode/li deleted file mode 100644 index 0c4c9e4..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/li +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
  • ...
  • -# -- -
  • $1
  • \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/link b/extensions/yasnippet/snippets/nxml-mode/link deleted file mode 100644 index d16475a..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/link +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/meta/doctype b/extensions/yasnippet/snippets/nxml-mode/meta/doctype deleted file mode 100644 index af8fb49..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/meta/doctype +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : DocType XHTML 1.1 -# -- - diff --git a/extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict b/extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict deleted file mode 100644 index bb0b7de..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : DocType XHTML 1.0 Strict -# -- - diff --git a/extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional b/extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional deleted file mode 100644 index c8c50d3..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : DocType XHTML 1.0 Transitional -# -- - diff --git a/extensions/yasnippet/snippets/nxml-mode/meta/meta b/extensions/yasnippet/snippets/nxml-mode/meta/meta deleted file mode 100644 index a8d0e2f..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/meta/meta +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : -# -- - diff --git a/extensions/yasnippet/snippets/nxml-mode/name b/extensions/yasnippet/snippets/nxml-mode/name deleted file mode 100644 index a7683d5..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/name +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/ol b/extensions/yasnippet/snippets/nxml-mode/ol deleted file mode 100644 index d7993be..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/ol +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
      ...
    -# -- -
      - $0 -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/p b/extensions/yasnippet/snippets/nxml-mode/p deleted file mode 100644 index c79b367..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/p +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :

    ...

    -# -- -

    $1

    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/pre b/extensions/yasnippet/snippets/nxml-mode/pre deleted file mode 100644 index b92cabb..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/pre +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    ...
    -# -- -
    -  $0
    -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/quote b/extensions/yasnippet/snippets/nxml-mode/quote deleted file mode 100644 index 5e17c98..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/quote +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
    ...
    -# -- -
    - $1 -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/span b/extensions/yasnippet/snippets/nxml-mode/span deleted file mode 100644 index 69d5332..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/span +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$1 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/style b/extensions/yasnippet/snippets/nxml-mode/style deleted file mode 100644 index 1f462cd..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/style +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : -# -- - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/table b/extensions/yasnippet/snippets/nxml-mode/table deleted file mode 100644 index 3d28497..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/table +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ...
    -# -- - - $0 -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/tag.1l b/extensions/yasnippet/snippets/nxml-mode/tag.1l deleted file mode 100644 index 8988635..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/tag.1l +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -<${1:tag}>$2$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/tag.2l b/extensions/yasnippet/snippets/nxml-mode/tag.2l deleted file mode 100644 index 08b4a26..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/tag.2l +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : \n...\n -# -- -<${1:tag}> - $2 -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/td b/extensions/yasnippet/snippets/nxml-mode/td deleted file mode 100644 index 4543d5c..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/td +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/th b/extensions/yasnippet/snippets/nxml-mode/th deleted file mode 100644 index 4b679ef..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/th +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$2 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/title b/extensions/yasnippet/snippets/nxml-mode/title deleted file mode 100644 index 581d8bb..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/title +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- -$1 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/tr b/extensions/yasnippet/snippets/nxml-mode/tr deleted file mode 100644 index 6726429..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/tr +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name : ... -# -- - - $0 - \ No newline at end of file diff --git a/extensions/yasnippet/snippets/nxml-mode/ul b/extensions/yasnippet/snippets/nxml-mode/ul deleted file mode 100644 index 0462dd1..0000000 --- a/extensions/yasnippet/snippets/nxml-mode/ul +++ /dev/null @@ -1,6 +0,0 @@ -#contributor : Anders Bach Nielsen -#name :
      ...
    -# -- -
      - $0 -
    \ No newline at end of file diff --git a/extensions/yasnippet/snippets/objc-mode/.yas-parents b/extensions/yasnippet/snippets/objc-mode/.yas-parents deleted file mode 100644 index ce9828b..0000000 --- a/extensions/yasnippet/snippets/objc-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -cc-mode diff --git a/extensions/yasnippet/snippets/objc-mode/prop b/extensions/yasnippet/snippets/objc-mode/prop deleted file mode 100644 index 4d585db..0000000 --- a/extensions/yasnippet/snippets/objc-mode/prop +++ /dev/null @@ -1,13 +0,0 @@ -#name : foo { ... } ; setFoo { ... } -# -- -- (${1:id})${2:foo} -{ - return $2; -} - -- (void)set${2:$(capitalize text)}:($1)aValue -{ - [$2 autorelease]; - $2 = [aValue retain]; -} -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/.yas-parents b/extensions/yasnippet/snippets/perl-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/perl-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/perl-mode/eval b/extensions/yasnippet/snippets/perl-mode/eval deleted file mode 100644 index c1f1e1b..0000000 --- a/extensions/yasnippet/snippets/perl-mode/eval +++ /dev/null @@ -1,8 +0,0 @@ -#name : eval { ... } if ($@) { ... } -# -- -eval { - ${1:# do something risky...} -}; -if (\$@) { - ${2:# handle failure...} -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/for b/extensions/yasnippet/snippets/perl-mode/for deleted file mode 100644 index ec5532f..0000000 --- a/extensions/yasnippet/snippets/perl-mode/for +++ /dev/null @@ -1,5 +0,0 @@ -#name : for (...) { ... } -# -- -for (my \$${1:var} = 0; \$$1 < ${2:expression}; \$$1++) { - ${3:# body...} -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/fore b/extensions/yasnippet/snippets/perl-mode/fore deleted file mode 100644 index c878a0e..0000000 --- a/extensions/yasnippet/snippets/perl-mode/fore +++ /dev/null @@ -1,5 +0,0 @@ -#name : foreach ... { ... } -# -- -foreach my \$${1:x} (@${2:array}) { - ${3:# body...} -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/if b/extensions/yasnippet/snippets/perl-mode/if deleted file mode 100644 index 3191b97..0000000 --- a/extensions/yasnippet/snippets/perl-mode/if +++ /dev/null @@ -1,5 +0,0 @@ -#name : if (...) { ... } -# -- -if ($1) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/ife b/extensions/yasnippet/snippets/perl-mode/ife deleted file mode 100644 index 23f7cf6..0000000 --- a/extensions/yasnippet/snippets/perl-mode/ife +++ /dev/null @@ -1,7 +0,0 @@ -#name : if (...) { ... } else { ... } -# -- -if ($1) { - $2 -} else { - $3 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/ifee b/extensions/yasnippet/snippets/perl-mode/ifee deleted file mode 100644 index 7c187d1..0000000 --- a/extensions/yasnippet/snippets/perl-mode/ifee +++ /dev/null @@ -1,9 +0,0 @@ -#name : if, elsif, else ... -# -- -if ($1) { - ${2:# body...} -} elsif ($3) { - ${4:# elsif...} -} else { - ${5:# else...} -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/sub b/extensions/yasnippet/snippets/perl-mode/sub deleted file mode 100644 index 5ab54d7..0000000 --- a/extensions/yasnippet/snippets/perl-mode/sub +++ /dev/null @@ -1,5 +0,0 @@ -#name : sub ... { ... } -# -- -sub ${1:function_name} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/unless b/extensions/yasnippet/snippets/perl-mode/unless deleted file mode 100644 index baeffa2..0000000 --- a/extensions/yasnippet/snippets/perl-mode/unless +++ /dev/null @@ -1,5 +0,0 @@ -#name : unless (...) { ... } -# -- -unless ($1) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/while b/extensions/yasnippet/snippets/perl-mode/while deleted file mode 100644 index 9c2c470..0000000 --- a/extensions/yasnippet/snippets/perl-mode/while +++ /dev/null @@ -1,5 +0,0 @@ -#name : while (...) { ... } -# -- -while ($1) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/xfore b/extensions/yasnippet/snippets/perl-mode/xfore deleted file mode 100644 index 58e455d..0000000 --- a/extensions/yasnippet/snippets/perl-mode/xfore +++ /dev/null @@ -1,3 +0,0 @@ -#name : ... foreach ... -# -- -${1:expression} foreach @${2:array}; \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/xif b/extensions/yasnippet/snippets/perl-mode/xif deleted file mode 100644 index 1d4dba8..0000000 --- a/extensions/yasnippet/snippets/perl-mode/xif +++ /dev/null @@ -1,3 +0,0 @@ -#name : ... if ... -# -- -${1:expression} if ${2:condition} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/xunless b/extensions/yasnippet/snippets/perl-mode/xunless deleted file mode 100644 index f456db3..0000000 --- a/extensions/yasnippet/snippets/perl-mode/xunless +++ /dev/null @@ -1,3 +0,0 @@ -#name : ... unless ... -# -- -${1:expression} unless ${2:condition} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/perl-mode/xwhile b/extensions/yasnippet/snippets/perl-mode/xwhile deleted file mode 100644 index 2515586..0000000 --- a/extensions/yasnippet/snippets/perl-mode/xwhile +++ /dev/null @@ -1,3 +0,0 @@ -#name : ... while ... -# -- -${1:expression} while ${2:condition}; \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/.yas-parents b/extensions/yasnippet/snippets/python-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/python-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/python-mode/__ b/extensions/yasnippet/snippets/python-mode/__ deleted file mode 100644 index a67dc49..0000000 --- a/extensions/yasnippet/snippets/python-mode/__ +++ /dev/null @@ -1,3 +0,0 @@ -#name : __...__ -# -- -__${init}__ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/class b/extensions/yasnippet/snippets/python-mode/class deleted file mode 100644 index 0c02035..0000000 --- a/extensions/yasnippet/snippets/python-mode/class +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -# name: class -# contributor: Orestis Markou -# contributor: Nishio Hirokazu -# contributor: Yasser González Fernández -# -- -class ${1:ClassName}(${2:object}): - $0 diff --git a/extensions/yasnippet/snippets/python-mode/def b/extensions/yasnippet/snippets/python-mode/def deleted file mode 100644 index 03926a9..0000000 --- a/extensions/yasnippet/snippets/python-mode/def +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -# name: def -# contributor: Orestis Markou -# contributor: Yasser González Fernández -# -- -def ${1:name}($2): - $0 diff --git a/extensions/yasnippet/snippets/python-mode/doc b/extensions/yasnippet/snippets/python-mode/doc deleted file mode 100644 index c698930..0000000 --- a/extensions/yasnippet/snippets/python-mode/doc +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -# name: doc -# contributor: Gabriele Lanaro -# expand-env ((yas/indent-line 'fixed) -# -- -"""$0 -""" diff --git a/extensions/yasnippet/snippets/python-mode/for b/extensions/yasnippet/snippets/python-mode/for deleted file mode 100644 index 84f3ddd..0000000 --- a/extensions/yasnippet/snippets/python-mode/for +++ /dev/null @@ -1,4 +0,0 @@ -#name : for ... in ... : ... -# -- -for ${var} in ${collection}: - $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/from b/extensions/yasnippet/snippets/python-mode/from deleted file mode 100644 index 3679593..0000000 --- a/extensions/yasnippet/snippets/python-mode/from +++ /dev/null @@ -1,4 +0,0 @@ -#name : from ... import ... -# -- -from $1 import $2 -$0 diff --git a/extensions/yasnippet/snippets/python-mode/ifmain b/extensions/yasnippet/snippets/python-mode/ifmain deleted file mode 100644 index 6224923..0000000 --- a/extensions/yasnippet/snippets/python-mode/ifmain +++ /dev/null @@ -1,4 +0,0 @@ -#name : if __name__ == '__main__': ... -# -- -if __name__ == '__main__': - $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/init b/extensions/yasnippet/snippets/python-mode/init deleted file mode 100644 index 6546bc4..0000000 --- a/extensions/yasnippet/snippets/python-mode/init +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# name: init -# contributor: Gabriele Lanaro -# -- -def __init__(self$1): - $0 diff --git a/extensions/yasnippet/snippets/python-mode/ipdb b/extensions/yasnippet/snippets/python-mode/ipdb deleted file mode 100644 index 17f5cbb..0000000 --- a/extensions/yasnippet/snippets/python-mode/ipdb +++ /dev/null @@ -1,3 +0,0 @@ -# contributor: Fidel Ramos -# -- -import ipdb; ipdb.set_trace() \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/param b/extensions/yasnippet/snippets/python-mode/param deleted file mode 100644 index 0cf98fe..0000000 --- a/extensions/yasnippet/snippets/python-mode/param +++ /dev/null @@ -1,6 +0,0 @@ -# -*- mode: snippet -*- -# name: param -# key: param -# condition: 'force-in-comment -# -- -:param $1: $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/pdb b/extensions/yasnippet/snippets/python-mode/pdb deleted file mode 100644 index 523ef55..0000000 --- a/extensions/yasnippet/snippets/python-mode/pdb +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : matt harrison -#pdb : import pdb; pdb.set_trace() -# -- -import pdb; pdb.set_trace() diff --git a/extensions/yasnippet/snippets/python-mode/prop b/extensions/yasnippet/snippets/python-mode/prop deleted file mode 100644 index e415f19..0000000 --- a/extensions/yasnippet/snippets/python-mode/prop +++ /dev/null @@ -1,11 +0,0 @@ -#contributor : Julio Carlos Menendez -#name : decorator: @property def x: ... @x.setter -# expand-env: ((yas/indent-line 'fixed) (yas/wrap-around-region 'nil)) -# -- -@property -def ${1:prop}(self): - ${0:pass} - -@$1.setter -def $1(self, value): - pass diff --git a/extensions/yasnippet/snippets/python-mode/prop.fun b/extensions/yasnippet/snippets/python-mode/prop.fun deleted file mode 100644 index f5a8717..0000000 --- a/extensions/yasnippet/snippets/python-mode/prop.fun +++ /dev/null @@ -1,17 +0,0 @@ -# contributor: Mads D. Kristensen -# name: prop -# desc: property with fget/fset/fdel -# expand-env: ((yas/indent-line 'fixed) (yas/wrap-around-region 'nil)) -# -- -def ${1:foo}(): - doc = """${2:Doc string}""" - def fget(self): - return self._$1 - def fset(self, value): - self._$1 = value - def fdel(self): - del self._$1 - return locals() -$1 = property(**$1()) - -$0 diff --git a/extensions/yasnippet/snippets/python-mode/super b/extensions/yasnippet/snippets/python-mode/super deleted file mode 100644 index f417116..0000000 --- a/extensions/yasnippet/snippets/python-mode/super +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# name: super -# contributor: Gabriele Lanaro -# -- -super(${1:`(prev-class-name)`},self).${2:`(prev-def-name)`}(${3:`(prev-def-args)`}) - $0 diff --git a/extensions/yasnippet/snippets/python-mode/testcase b/extensions/yasnippet/snippets/python-mode/testcase deleted file mode 100644 index 5044334..0000000 --- a/extensions/yasnippet/snippets/python-mode/testcase +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# name: unittest.TestCase normal -# contributor: Gabriele Lanaro -# -- -class ${1:TestCase}(${2:unittest.TestCase}): - $0 diff --git a/extensions/yasnippet/snippets/python-mode/try.except b/extensions/yasnippet/snippets/python-mode/try.except deleted file mode 100644 index cf6938b..0000000 --- a/extensions/yasnippet/snippets/python-mode/try.except +++ /dev/null @@ -1,6 +0,0 @@ -# This was cloned from a TextMate bundle for yasnippet. -# -- -try: - ${1:pass} -except ${2:Exception}, ${3:e}: - ${4:raise $3} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/try.exceptelse b/extensions/yasnippet/snippets/python-mode/try.exceptelse deleted file mode 100644 index 3050ffc..0000000 --- a/extensions/yasnippet/snippets/python-mode/try.exceptelse +++ /dev/null @@ -1,8 +0,0 @@ -# This was cloned from a TextMate bundle for yasnippet. -# -- -try: - ${1:pass} -except ${2:Exception}, ${3:e}: - ${4:raise $3} -else: - ${5:pass} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/try.exceptelsefinally b/extensions/yasnippet/snippets/python-mode/try.exceptelsefinally deleted file mode 100644 index c3c1ce1..0000000 --- a/extensions/yasnippet/snippets/python-mode/try.exceptelsefinally +++ /dev/null @@ -1,10 +0,0 @@ -# This was cloned from a TextMate bundle for yasnippet. -# -- -try: - ${1:pass} -except ${2:Exception}, ${3:e}}: - ${4:raise} -else: - ${5:pass} -finally: - ${6:pass} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/try.exceptfinally b/extensions/yasnippet/snippets/python-mode/try.exceptfinally deleted file mode 100644 index 9b8aef3..0000000 --- a/extensions/yasnippet/snippets/python-mode/try.exceptfinally +++ /dev/null @@ -1,8 +0,0 @@ -# This was cloned from a TextMate bundle for yasnippet. -# -- -try: - ${1:pass} -except ${2:Exception}, ${3:e}: - ${4:raise $3} -finally: - ${5:pass} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/python-mode/utf8 b/extensions/yasnippet/snippets/python-mode/utf8 deleted file mode 100644 index 4a2ca32..0000000 --- a/extensions/yasnippet/snippets/python-mode/utf8 +++ /dev/null @@ -1,3 +0,0 @@ -# contributor: Fidel Ramos (haplo) -# -- -# -*- coding: utf-8 -*- diff --git a/extensions/yasnippet/snippets/python-mode/while b/extensions/yasnippet/snippets/python-mode/while deleted file mode 100644 index 704dd7c..0000000 --- a/extensions/yasnippet/snippets/python-mode/while +++ /dev/null @@ -1,4 +0,0 @@ -#name : while ... : ... -# -- -while ${condition}: - $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/rst-mode/.yas-parents b/extensions/yasnippet/snippets/rst-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/rst-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/rst-mode/chap b/extensions/yasnippet/snippets/rst-mode/chap deleted file mode 100644 index 6474c00..0000000 --- a/extensions/yasnippet/snippets/rst-mode/chap +++ /dev/null @@ -1,6 +0,0 @@ -#name : Chapter title -# -- -${1:Chapter} -${1:$(make-string (string-width text) ?\=)} - -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/rst-mode/sec b/extensions/yasnippet/snippets/rst-mode/sec deleted file mode 100644 index 76087ed..0000000 --- a/extensions/yasnippet/snippets/rst-mode/sec +++ /dev/null @@ -1,6 +0,0 @@ -#name : Section title -# -- -${1:Section} -${1:$(make-string (string-width text) ?\-)} - -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/rst-mode/tit b/extensions/yasnippet/snippets/rst-mode/tit deleted file mode 100644 index cac2e77..0000000 --- a/extensions/yasnippet/snippets/rst-mode/tit +++ /dev/null @@ -1,7 +0,0 @@ -#name : Document title -# -- -${1:$(make-string (string-width text) ?\=)} -${1:Title} -${1:$(make-string (string-width text) ?\=)} - -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/ruby-mode/.yas-make-groups b/extensions/yasnippet/snippets/ruby-mode/.yas-make-groups deleted file mode 100644 index e69de29..0000000 diff --git a/extensions/yasnippet/snippets/ruby-mode/.yas-parents b/extensions/yasnippet/snippets/ruby-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/all b/extensions/yasnippet/snippets/ruby-mode/collections/all deleted file mode 100644 index afb68a7..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/all +++ /dev/null @@ -1,3 +0,0 @@ -#name : all? { |...| ... } -# -- -all? { |${e}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/any b/extensions/yasnippet/snippets/ruby-mode/collections/any deleted file mode 100644 index 2f4f9f1..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/any +++ /dev/null @@ -1,3 +0,0 @@ -#name : any? { |...| ... } -# -- -any? { |${e}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/classify b/extensions/yasnippet/snippets/ruby-mode/collections/classify deleted file mode 100644 index d1ad6f3..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/classify +++ /dev/null @@ -1,3 +0,0 @@ -#name : classify { |...| ... } -# -- -classify { |${e}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/collect b/extensions/yasnippet/snippets/ruby-mode/collections/collect deleted file mode 100644 index 37cd4b5..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/collect +++ /dev/null @@ -1,3 +0,0 @@ -#name : collect { |...| ... } -# -- -collect { |${e}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/deli b/extensions/yasnippet/snippets/ruby-mode/collections/deli deleted file mode 100644 index f51d9a6..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/deli +++ /dev/null @@ -1,3 +0,0 @@ -#name : delete_if { |...| ... } -# -- -delete_if { |${e} $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/det b/extensions/yasnippet/snippets/ruby-mode/collections/det deleted file mode 100644 index 599898c..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/det +++ /dev/null @@ -1,3 +0,0 @@ -#name : detect { |...| ... } -# -- -detect { |${e}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/ea b/extensions/yasnippet/snippets/ruby-mode/collections/ea deleted file mode 100644 index 40cb2cd..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/ea +++ /dev/null @@ -1,3 +0,0 @@ -#name : each { |...| ... } -# -- -each { |${e}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/eac b/extensions/yasnippet/snippets/ruby-mode/collections/eac deleted file mode 100644 index 7a7ccd4..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/eac +++ /dev/null @@ -1,3 +0,0 @@ -#name : each_cons(...) { |...| ... } -# -- -each_cons(${1:2}) { |${group}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/eai b/extensions/yasnippet/snippets/ruby-mode/collections/eai deleted file mode 100644 index b68cf69..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/eai +++ /dev/null @@ -1,3 +0,0 @@ -#name : each_index { |i| ... } -# -- -each_index { |${i}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/eav b/extensions/yasnippet/snippets/ruby-mode/collections/eav deleted file mode 100644 index 189ceff..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/eav +++ /dev/null @@ -1,3 +0,0 @@ -#name : each_value { |val| ... } -# -- -each_value { |${val}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/eawi b/extensions/yasnippet/snippets/ruby-mode/collections/eawi deleted file mode 100644 index 8718f7a..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/eawi +++ /dev/null @@ -1,3 +0,0 @@ -#name : each_with_index { |e, i| ... } -# -- -each_with_index { |${e}, ${i}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/inject b/extensions/yasnippet/snippets/ruby-mode/collections/inject deleted file mode 100644 index eaa0f28..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/inject +++ /dev/null @@ -1,3 +0,0 @@ -#name : inject(...) { |...| ... } -# -- -inject(${1:0}) { |${2:injection}, ${3:element}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/reject b/extensions/yasnippet/snippets/ruby-mode/collections/reject deleted file mode 100644 index 032b06d..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/reject +++ /dev/null @@ -1,3 +0,0 @@ -#name : reject { |...| ... } -# -- -reject { |${1:element}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/select b/extensions/yasnippet/snippets/ruby-mode/collections/select deleted file mode 100644 index 5ea4ef8..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/select +++ /dev/null @@ -1,3 +0,0 @@ -#name : select { |...| ... } -# -- -select { |${1:element}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/collections/zip b/extensions/yasnippet/snippets/ruby-mode/collections/zip deleted file mode 100644 index 910de64..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/collections/zip +++ /dev/null @@ -1,3 +0,0 @@ -#name : zip(...) { |...| ... } -# -- -zip(${enums}) { |${row}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/forin b/extensions/yasnippet/snippets/ruby-mode/control structure/forin deleted file mode 100644 index 197e09e..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/forin +++ /dev/null @@ -1,5 +0,0 @@ -#name : for ... in ...; ... end -# -- -for ${1:element} in ${2:collection} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/if b/extensions/yasnippet/snippets/ruby-mode/control structure/if deleted file mode 100644 index c96069b..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/if +++ /dev/null @@ -1,5 +0,0 @@ -#name : if ... end -# -- -if ${1:condition} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/ife b/extensions/yasnippet/snippets/ruby-mode/control structure/ife deleted file mode 100644 index 959d77c..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/ife +++ /dev/null @@ -1,7 +0,0 @@ -#name : if ... else ... end -# -- -if ${1:condition} - $2 -else - $3 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/tim b/extensions/yasnippet/snippets/ruby-mode/control structure/tim deleted file mode 100644 index 44023c0..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/tim +++ /dev/null @@ -1,3 +0,0 @@ -#name : times { |n| ... } -# -- -times { |${n}| $0 } diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/until b/extensions/yasnippet/snippets/ruby-mode/control structure/until deleted file mode 100644 index b3534a8..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/until +++ /dev/null @@ -1,5 +0,0 @@ -#name : until ... end -# -- -until ${condition} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/upt b/extensions/yasnippet/snippets/ruby-mode/control structure/upt deleted file mode 100644 index 73c0046..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/upt +++ /dev/null @@ -1,5 +0,0 @@ -#name : upto(...) { |n| ... } -# -- -upto(${n}) { |${i}| - $0 -} diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/when b/extensions/yasnippet/snippets/ruby-mode/control structure/when deleted file mode 100644 index 51f63a3..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/when +++ /dev/null @@ -1,5 +0,0 @@ -#name : when ... end -# -- -when ${condition} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/control structure/while b/extensions/yasnippet/snippets/ruby-mode/control structure/while deleted file mode 100644 index 00e114f..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/control structure/while +++ /dev/null @@ -1,5 +0,0 @@ -#name : while ... end -# -- -while ${condition} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/Comp b/extensions/yasnippet/snippets/ruby-mode/definitions/Comp deleted file mode 100644 index 7afea97..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/Comp +++ /dev/null @@ -1,7 +0,0 @@ -#name : include Comparable; def <=> ... end -# -- -include Comparable - -def <=> other - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/am b/extensions/yasnippet/snippets/ruby-mode/definitions/am deleted file mode 100644 index 68ceff0..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/am +++ /dev/null @@ -1,3 +0,0 @@ -#name : alias_method new, old -# -- -alias_method :${new_name}, :${old_name} diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/cla b/extensions/yasnippet/snippets/ruby-mode/definitions/cla deleted file mode 100644 index da71b10..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/cla +++ /dev/null @@ -1,5 +0,0 @@ -#name : class << self ... end -# -- -class << ${self} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/cls b/extensions/yasnippet/snippets/ruby-mode/definitions/cls deleted file mode 100644 index 64ef27e..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/cls +++ /dev/null @@ -1,12 +0,0 @@ -#name : class ... end -#contributor : hitesh -# -- -class ${1:`(let ((fn (capitalize (file-name-nondirectory - (file-name-sans-extension - (or (buffer-file-name) - (buffer-name (current-buffer)))))))) - (cond - ((string-match "_" fn) (replace-match "" nil nil fn)) - (t fn)))`} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/mm b/extensions/yasnippet/snippets/ruby-mode/definitions/mm deleted file mode 100644 index 7b348d7..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/mm +++ /dev/null @@ -1,5 +0,0 @@ -#name : def method_missing ... end -# -- -def method_missing(method, *args) - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/r b/extensions/yasnippet/snippets/ruby-mode/definitions/r deleted file mode 100644 index b933a13..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/r +++ /dev/null @@ -1,3 +0,0 @@ -#name : attr_reader ... -# -- -attr_reader : diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/rw b/extensions/yasnippet/snippets/ruby-mode/definitions/rw deleted file mode 100644 index 7153541..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/rw +++ /dev/null @@ -1,3 +0,0 @@ -#name : attr_accessor ... -# -- -attr_accessor : diff --git a/extensions/yasnippet/snippets/ruby-mode/definitions/w b/extensions/yasnippet/snippets/ruby-mode/definitions/w deleted file mode 100644 index cd6d473..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/definitions/w +++ /dev/null @@ -1,3 +0,0 @@ -#name : attr_writer ... -# -- -attr_writer : diff --git a/extensions/yasnippet/snippets/ruby-mode/general/# b/extensions/yasnippet/snippets/ruby-mode/general/# deleted file mode 100644 index b9e3f8a..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/# +++ /dev/null @@ -1,3 +0,0 @@ -#name : # => -# -- -# => diff --git a/extensions/yasnippet/snippets/ruby-mode/general/=b b/extensions/yasnippet/snippets/ruby-mode/general/=b deleted file mode 100644 index e396723..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/=b +++ /dev/null @@ -1,5 +0,0 @@ -#name : =begin rdoc ... =end -# -- -=begin rdoc - $0 -=end diff --git a/extensions/yasnippet/snippets/ruby-mode/general/app b/extensions/yasnippet/snippets/ruby-mode/general/app deleted file mode 100644 index b151ccc..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/app +++ /dev/null @@ -1,5 +0,0 @@ -#name : if __FILE__ == $PROGRAM_NAME ... end -# -- -if __FILE__ == $PROGRAM_NAME - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/general/bm b/extensions/yasnippet/snippets/ruby-mode/general/bm deleted file mode 100644 index 44fb2b6..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/bm +++ /dev/null @@ -1,5 +0,0 @@ -#name : Benchmark.bmbm(...) do ... end -# -- -Benchmark.bmbm(${1:10}) do |x| - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/general/case b/extensions/yasnippet/snippets/ruby-mode/general/case deleted file mode 100644 index b919081..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/case +++ /dev/null @@ -1,6 +0,0 @@ -#name : case ... end -# -- -case ${1:object} -when ${2:condition} - $0 -end diff --git a/extensions/yasnippet/snippets/ruby-mode/general/dee b/extensions/yasnippet/snippets/ruby-mode/general/dee deleted file mode 100644 index 496e187..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/dee +++ /dev/null @@ -1,3 +0,0 @@ -#name : deep_copy(...) -# -- -Marshal.load(Marshal.dump($0)) diff --git a/extensions/yasnippet/snippets/ruby-mode/general/rb b/extensions/yasnippet/snippets/ruby-mode/general/rb deleted file mode 100644 index 9153653..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/rb +++ /dev/null @@ -1,3 +0,0 @@ -#name : /usr/bin/ruby -wKU -# -- -#!/usr/bin/ruby -wKU diff --git a/extensions/yasnippet/snippets/ruby-mode/general/req b/extensions/yasnippet/snippets/ruby-mode/general/req deleted file mode 100644 index 3ada7d5..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/req +++ /dev/null @@ -1,3 +0,0 @@ -#name : require "..." -# -- -require "$0" diff --git a/extensions/yasnippet/snippets/ruby-mode/general/rreq b/extensions/yasnippet/snippets/ruby-mode/general/rreq deleted file mode 100644 index ff80c71..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/rreq +++ /dev/null @@ -1,3 +0,0 @@ -#name : require File.join(File.dirname(__FILE__), ...) -# -- -require File.join(File.dirname(__FILE__), $0) diff --git a/extensions/yasnippet/snippets/ruby-mode/general/y b/extensions/yasnippet/snippets/ruby-mode/general/y deleted file mode 100644 index a57fbde..0000000 --- a/extensions/yasnippet/snippets/ruby-mode/general/y +++ /dev/null @@ -1,3 +0,0 @@ -#name : :yields: arguments (rdoc) -# -- -:yields: $0 diff --git a/extensions/yasnippet/snippets/scala-mode/.yas-parents b/extensions/yasnippet/snippets/scala-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/scala-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/scala-mode/act b/extensions/yasnippet/snippets/scala-mode/act deleted file mode 100644 index fce52fc..0000000 --- a/extensions/yasnippet/snippets/scala-mode/act +++ /dev/null @@ -1,10 +0,0 @@ -#Author : Jonas Bonèr -#name : def act = { ..} -# -- -def act = { - loop { - react { - $0 - } - } -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/act.arg b/extensions/yasnippet/snippets/scala-mode/act.arg deleted file mode 100644 index fc6df9e..0000000 --- a/extensions/yasnippet/snippets/scala-mode/act.arg +++ /dev/null @@ -1,10 +0,0 @@ -#Author : Jonas Bonèr -#name : def act(arg: T) = { ..} -# -- -def act(${1:arg}: ${2:type}) = { - loop { - react { - $0 - } - } -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/actor b/extensions/yasnippet/snippets/scala-mode/actor deleted file mode 100644 index d38a183..0000000 --- a/extensions/yasnippet/snippets/scala-mode/actor +++ /dev/null @@ -1,10 +0,0 @@ -#Author : Jonas Bonèr -#name : val a = actor { ..} -# -- -val a = actor { - loop { - react { - $0 - } - } -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ano b/extensions/yasnippet/snippets/scala-mode/ano deleted file mode 100644 index b949801..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ano +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : (args) => ... -# -- -($1) => ${2:body} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/app b/extensions/yasnippet/snippets/scala-mode/app deleted file mode 100644 index b89bab9..0000000 --- a/extensions/yasnippet/snippets/scala-mode/app +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Anders Bach Nielsen -#name : object name extends Application -# -- -object ${1:name} extends Application { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/arr.new b/extensions/yasnippet/snippets/scala-mode/arr.new deleted file mode 100644 index e3297ca..0000000 --- a/extensions/yasnippet/snippets/scala-mode/arr.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : Array[T](..) -# -- -Array[${1:value}](${2:args}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/arr.val-new b/extensions/yasnippet/snippets/scala-mode/arr.val-new deleted file mode 100644 index 4de4720..0000000 --- a/extensions/yasnippet/snippets/scala-mode/arr.val-new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val a = Array[T](..) -# -- -val ${1:arr} = Array[${2:value}](${3:args}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/asof b/extensions/yasnippet/snippets/scala-mode/asof deleted file mode 100644 index 3b2b209..0000000 --- a/extensions/yasnippet/snippets/scala-mode/asof +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : asInstanceOf[T] -# -- -asInstanceOf[${1:type}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ass b/extensions/yasnippet/snippets/scala-mode/ass deleted file mode 100644 index 653dcef..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ass +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : assert(x === y) -# -- -assert(${1:x} === ${2:y}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ass.true b/extensions/yasnippet/snippets/scala-mode/ass.true deleted file mode 100644 index 923c518..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ass.true +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : assert(true) -# -- -assert(true) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/at.author b/extensions/yasnippet/snippets/scala-mode/at.author deleted file mode 100644 index 82fe4cc..0000000 --- a/extensions/yasnippet/snippets/scala-mode/at.author +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Anders Bach Nielsen -#name : @author name -# -- -@author ${1:name} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/at.param b/extensions/yasnippet/snippets/scala-mode/at.param deleted file mode 100644 index 72b6e79..0000000 --- a/extensions/yasnippet/snippets/scala-mode/at.param +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Anders Bach Nielsen -#name : @param name description -# -- -@param ${1:name} ${2:description} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/at.return b/extensions/yasnippet/snippets/scala-mode/at.return deleted file mode 100644 index 9c3f41c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/at.return +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Anders Bach Nielsen -#name : @return description -# -- -@return ${1:description} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/at.version b/extensions/yasnippet/snippets/scala-mode/at.version deleted file mode 100644 index 1158ce2..0000000 --- a/extensions/yasnippet/snippets/scala-mode/at.version +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Anders Bach Nielsen -#name : @version number -# -- -@version ${1:0.1} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/bang b/extensions/yasnippet/snippets/scala-mode/bang deleted file mode 100644 index a547da8..0000000 --- a/extensions/yasnippet/snippets/scala-mode/bang +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : actor ! message -# -- -${1:actor} ! ${2:message} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/case b/extensions/yasnippet/snippets/scala-mode/case deleted file mode 100644 index 13d6aec..0000000 --- a/extensions/yasnippet/snippets/scala-mode/case +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : case pattern => -# -- -case ${1:pattern} => $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/case.match-all b/extensions/yasnippet/snippets/scala-mode/case.match-all deleted file mode 100644 index 028bf5f..0000000 --- a/extensions/yasnippet/snippets/scala-mode/case.match-all +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : case _ => -# -- -case _ => $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cast b/extensions/yasnippet/snippets/scala-mode/cast deleted file mode 100644 index 3b2b209..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cast +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : asInstanceOf[T] -# -- -asInstanceOf[${1:type}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cc b/extensions/yasnippet/snippets/scala-mode/cc deleted file mode 100644 index 7ed1142..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cc +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : case class T(arg: A) -# -- -case class ${1:name}(${2:arg}: ${3:type}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cl b/extensions/yasnippet/snippets/scala-mode/cl deleted file mode 100644 index 1fd712c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cl +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : class T { .. } -# -- -class ${1:name} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cl.abs b/extensions/yasnippet/snippets/scala-mode/cl.abs deleted file mode 100644 index 402dec7..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cl.abs +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : abstract class T { .. } -# -- -abstract class ${1:name} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cl.abs-arg b/extensions/yasnippet/snippets/scala-mode/cl.abs-arg deleted file mode 100644 index fe29524..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cl.abs-arg +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : abstract class T(args) { .. } -# -- -abstract class ${1:name}(${2:args}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cl.arg b/extensions/yasnippet/snippets/scala-mode/cl.arg deleted file mode 100644 index f82460f..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cl.arg +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : class T(args) { .. } -# -- -class ${1:name}(${2:args}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/clof b/extensions/yasnippet/snippets/scala-mode/clof deleted file mode 100644 index 955726c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/clof +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : classOf[T] -# -- -classOf[${1:type}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/co b/extensions/yasnippet/snippets/scala-mode/co deleted file mode 100644 index 75b1f3b..0000000 --- a/extensions/yasnippet/snippets/scala-mode/co +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : case object T -# -- -case object ${1:name} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cons b/extensions/yasnippet/snippets/scala-mode/cons deleted file mode 100644 index a48e4ff..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cons +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : element1 :: element2 -# -- -${1:element1} :: ${2:element2} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/cons.nil b/extensions/yasnippet/snippets/scala-mode/cons.nil deleted file mode 100644 index c288f93..0000000 --- a/extensions/yasnippet/snippets/scala-mode/cons.nil +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : element1 :: Nil -# -- -${1:element1} :: Nil $0 diff --git a/extensions/yasnippet/snippets/scala-mode/def.arg b/extensions/yasnippet/snippets/scala-mode/def.arg deleted file mode 100644 index 7765bbf..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.arg +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : def f(arg: T) = ... -# -- -def ${1:name}(${2:args}) = $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.arg-body b/extensions/yasnippet/snippets/scala-mode/def.arg-body deleted file mode 100644 index e6e278e..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.arg-body +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : def f(arg: T) = {...} -# -- -def ${1:name}(${2:args}) = { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.arg-ret b/extensions/yasnippet/snippets/scala-mode/def.arg-ret deleted file mode 100644 index dddb9ce..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.arg-ret +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : def f(arg: T): R = ... -# -- -def ${1:name}(${2:args}): ${3:Unit} = $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.arg-ret-body b/extensions/yasnippet/snippets/scala-mode/def.arg-ret-body deleted file mode 100644 index 862f7fd..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.arg-ret-body +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : def f(arg: T): R = {...} -# -- -def ${1:name}(${2:args}): ${3:Unit} = { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.body b/extensions/yasnippet/snippets/scala-mode/def.body deleted file mode 100644 index 858908c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.body +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : def f = {...} -# -- -def ${1:name} = { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.ret b/extensions/yasnippet/snippets/scala-mode/def.ret deleted file mode 100644 index e5483fb..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.ret +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : def f: R = ... -# -- -def ${1:name}: ${2:Unit} = $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.ret-body b/extensions/yasnippet/snippets/scala-mode/def.ret-body deleted file mode 100644 index f342e04..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.ret-body +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : def f: R = {...} -# -- -def ${1:name}: ${3:Unit} = { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/def.simple b/extensions/yasnippet/snippets/scala-mode/def.simple deleted file mode 100644 index 4814c73..0000000 --- a/extensions/yasnippet/snippets/scala-mode/def.simple +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : def f = ... -# -- -def ${1:name} = $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/doc.class b/extensions/yasnippet/snippets/scala-mode/doc.class deleted file mode 100644 index 60442f1..0000000 --- a/extensions/yasnippet/snippets/scala-mode/doc.class +++ /dev/null @@ -1,8 +0,0 @@ -#Author : Anders Bach Nielsen -#name : /** cls/trt/obj name */ -# -- -/** - * `(scala-mode-find-clstrtobj-name-doc)` - * ${1:description} - * $0 - */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/doc.def b/extensions/yasnippet/snippets/scala-mode/doc.def deleted file mode 100644 index 8a3d614..0000000 --- a/extensions/yasnippet/snippets/scala-mode/doc.def +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Anders Bach Nielsen -#name : /** method name */ -# -- -/** - * `(scala-mode-def-and-args-doc)` - */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/doc.file b/extensions/yasnippet/snippets/scala-mode/doc.file deleted file mode 100644 index 7da4289..0000000 --- a/extensions/yasnippet/snippets/scala-mode/doc.file +++ /dev/null @@ -1,9 +0,0 @@ -#Author : Anders Bach Nielsen -#name : /** file name */ -# -- -/** - * `(scala-mode-file-doc)` - * $0 - * @author ${1:name} - * @version ${2:0.1} - */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/doc.file-scala b/extensions/yasnippet/snippets/scala-mode/doc.file-scala deleted file mode 100644 index 6719348..0000000 --- a/extensions/yasnippet/snippets/scala-mode/doc.file-scala +++ /dev/null @@ -1,16 +0,0 @@ -#Author : Anders Bach Nielsen -#name : /** scala file */ -# -- -/* __ *\ -** ________ ___ / / ___ Scala $3 ** -** / __/ __// _ | / / / _ | (c) 2005-`(format-time-string "%Y")` , LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ -/** - * $0 - * @author ${1:name} - * @version ${2:0.1} - * $Id$ - */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/doc.file-scala-api b/extensions/yasnippet/snippets/scala-mode/doc.file-scala-api deleted file mode 100644 index 4a762f5..0000000 --- a/extensions/yasnippet/snippets/scala-mode/doc.file-scala-api +++ /dev/null @@ -1,16 +0,0 @@ -#Author : Anders Bach Nielsen -#name : /** scala api file */ -# -- -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-`(format-time-string "%Y")`, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ -/** - * $0 - * @author ${1:name} - * @version ${2:0.1} - * $Id$ - */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/doc.scaladoc b/extensions/yasnippet/snippets/scala-mode/doc.scaladoc deleted file mode 100644 index 038428c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/doc.scaladoc +++ /dev/null @@ -1,7 +0,0 @@ -#Author : Anders Bach Nielsen -#name : /** ... */ -# -- -/** - * ${1:description} - * $0 - */ \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/expect b/extensions/yasnippet/snippets/scala-mode/expect deleted file mode 100644 index 94c742c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/expect +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : expect(value) { ..} -# -- -expect(${1:reply}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ext b/extensions/yasnippet/snippets/scala-mode/ext deleted file mode 100644 index e256317..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ext +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : extends T -# -- -extends $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/for.extract b/extensions/yasnippet/snippets/scala-mode/for.extract deleted file mode 100644 index 60f1155..0000000 --- a/extensions/yasnippet/snippets/scala-mode/for.extract +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : x <- xs -# -- -${1:x} <- ${2:xs} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/for.if b/extensions/yasnippet/snippets/scala-mode/for.if deleted file mode 100644 index f44c544..0000000 --- a/extensions/yasnippet/snippets/scala-mode/for.if +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : for (x <- xs if guard) { ... } -# -- -for (${1:x} <- ${2:xs} if ${3:guard}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/for.loop b/extensions/yasnippet/snippets/scala-mode/for.loop deleted file mode 100644 index 050d5e8..0000000 --- a/extensions/yasnippet/snippets/scala-mode/for.loop +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : for (x <- xs) { ... } -# -- -for (${1:x} <- ${2:xs}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/for.multi b/extensions/yasnippet/snippets/scala-mode/for.multi deleted file mode 100644 index c512067..0000000 --- a/extensions/yasnippet/snippets/scala-mode/for.multi +++ /dev/null @@ -1,9 +0,0 @@ -#Author : Jonas Bonèr -#name : for {x <- xs \ y <- ys} { yield } -# -- -for { - ${1:x} <- ${2:xs} - ${3:x} <- ${4:xs} -} { - yield $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/foreach b/extensions/yasnippet/snippets/scala-mode/foreach deleted file mode 100644 index cafdd00..0000000 --- a/extensions/yasnippet/snippets/scala-mode/foreach +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : foreach(x => ..) -# -- -foreach(${1:x} => ${2:body}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/hmap.new b/extensions/yasnippet/snippets/scala-mode/hmap.new deleted file mode 100644 index dd564a0..0000000 --- a/extensions/yasnippet/snippets/scala-mode/hmap.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : new HashMap[K, V] -# -- -new HashMap[${1:key}, ${2:value}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/hmap.val-new b/extensions/yasnippet/snippets/scala-mode/hmap.val-new deleted file mode 100644 index 2f4a3c2..0000000 --- a/extensions/yasnippet/snippets/scala-mode/hmap.val-new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val m = new HashMap[K, V] -# -- -val ${1:m} = new HashMap[${2:key}, ${3:value}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/hset.new b/extensions/yasnippet/snippets/scala-mode/hset.new deleted file mode 100644 index d1be3ee..0000000 --- a/extensions/yasnippet/snippets/scala-mode/hset.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : new HashSet[K] -# -- -new HashSet[${1:key}] $0 diff --git a/extensions/yasnippet/snippets/scala-mode/hset.val-new b/extensions/yasnippet/snippets/scala-mode/hset.val-new deleted file mode 100644 index ba792a2..0000000 --- a/extensions/yasnippet/snippets/scala-mode/hset.val-new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val m = new HashSet[K] -# -- -val ${1:m} = new HashSet[${2:key}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/if b/extensions/yasnippet/snippets/scala-mode/if deleted file mode 100644 index 24891c0..0000000 --- a/extensions/yasnippet/snippets/scala-mode/if +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : if (cond) { .. } -# -- -if (${1:condition}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/if.else b/extensions/yasnippet/snippets/scala-mode/if.else deleted file mode 100644 index ebff471..0000000 --- a/extensions/yasnippet/snippets/scala-mode/if.else +++ /dev/null @@ -1,8 +0,0 @@ -#Author : Jonas Bonèr -#name : if (cond) { .. } else { .. } -# -- -if (${1:condition}) { - $2 -} else { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/imp b/extensions/yasnippet/snippets/scala-mode/imp deleted file mode 100644 index cf5efa1..0000000 --- a/extensions/yasnippet/snippets/scala-mode/imp +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : import .. -# -- -import $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/intercept b/extensions/yasnippet/snippets/scala-mode/intercept deleted file mode 100644 index 4725eaa..0000000 --- a/extensions/yasnippet/snippets/scala-mode/intercept +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : intercept(classOf[T]) { ..} -# -- -intercept(classOf[${1:Exception]}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/isof b/extensions/yasnippet/snippets/scala-mode/isof deleted file mode 100644 index a3538c8..0000000 --- a/extensions/yasnippet/snippets/scala-mode/isof +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : isInstanceOf[T] -# -- -isInstanceOf[${1:type}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ls.new b/extensions/yasnippet/snippets/scala-mode/ls.new deleted file mode 100644 index 7a28e61..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ls.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : List(..) -# -- -List(${1:args}, ${2:args}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ls.val-new b/extensions/yasnippet/snippets/scala-mode/ls.val-new deleted file mode 100644 index 37138f0..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ls.val-new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val l = List(..) -# -- -val ${1:l} = List(${2:args}, ${3:args}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/main b/extensions/yasnippet/snippets/scala-mode/main deleted file mode 100644 index ad314b3..0000000 --- a/extensions/yasnippet/snippets/scala-mode/main +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name: def main(args: Array[String]) = { ... } -# -- -def main(args: Array[String]) = { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/map b/extensions/yasnippet/snippets/scala-mode/map deleted file mode 100644 index 17322a5..0000000 --- a/extensions/yasnippet/snippets/scala-mode/map +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : map(x => ..) -# -- -map(${1:x} => ${2:body}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/map.new b/extensions/yasnippet/snippets/scala-mode/map.new deleted file mode 100644 index 21c95fb..0000000 --- a/extensions/yasnippet/snippets/scala-mode/map.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : Map(key -> value) -# -- -Map(${1:key} -> ${2:value}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/match b/extensions/yasnippet/snippets/scala-mode/match deleted file mode 100644 index e85fac1..0000000 --- a/extensions/yasnippet/snippets/scala-mode/match +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : cc match { .. } -# -- -${1:cc} match { - case ${2:pattern} => $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/match.can b/extensions/yasnippet/snippets/scala-mode/match.can deleted file mode 100644 index 77d475b..0000000 --- a/extensions/yasnippet/snippets/scala-mode/match.can +++ /dev/null @@ -1,11 +0,0 @@ -#Author : Jonas Bonèr -#name : can match { case Full(res) => .. } -# -- -${1:option} match { - case Full(res) => $0 - - case Empty => - - case Failure(msg, _, _) => - -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/match.option b/extensions/yasnippet/snippets/scala-mode/match.option deleted file mode 100644 index 5b098f1..0000000 --- a/extensions/yasnippet/snippets/scala-mode/match.option +++ /dev/null @@ -1,8 +0,0 @@ -#Author : Jonas Bonèr -#name : option match { case None => .. } -# -- -${1:option} match { - case None => $0 - case Some(res) => - -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/mix b/extensions/yasnippet/snippets/scala-mode/mix deleted file mode 100644 index 5261e32..0000000 --- a/extensions/yasnippet/snippets/scala-mode/mix +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : trait T { .. } -# -- -trait ${1:name} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/ob b/extensions/yasnippet/snippets/scala-mode/ob deleted file mode 100644 index efbc82e..0000000 --- a/extensions/yasnippet/snippets/scala-mode/ob +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : object name extends T -# -- -object ${1:name} extends ${2:type} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pac b/extensions/yasnippet/snippets/scala-mode/pac deleted file mode 100644 index ed32216..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pac +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : package .. -# -- -package $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pr.newline b/extensions/yasnippet/snippets/scala-mode/pr.newline deleted file mode 100644 index 77088cb..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pr.newline +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : println(..) -# -- -println(${1:obj}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pr.simple b/extensions/yasnippet/snippets/scala-mode/pr.simple deleted file mode 100644 index 3a73f9d..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pr.simple +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : print(..) -# -- -print(${1:obj}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pr.string b/extensions/yasnippet/snippets/scala-mode/pr.string deleted file mode 100644 index 9c06ef7..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pr.string +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : println("..") -# -- -println("${1:msg}") $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pr.trace b/extensions/yasnippet/snippets/scala-mode/pr.trace deleted file mode 100644 index 9a0579c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pr.trace +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : println("obj: " + obj) -# -- -println("${1:obj}: " + ${1:obj}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pri b/extensions/yasnippet/snippets/scala-mode/pri deleted file mode 100644 index 643ef2c..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pri +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : private -# -- -private $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pri.param b/extensions/yasnippet/snippets/scala-mode/pri.param deleted file mode 100644 index e53638a..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pri.param +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : private[this] -# -- -private[${1:this}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pro b/extensions/yasnippet/snippets/scala-mode/pro deleted file mode 100644 index e4b7b59..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pro +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : protected -# -- -protected $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/pro.param b/extensions/yasnippet/snippets/scala-mode/pro.param deleted file mode 100644 index 712b050..0000000 --- a/extensions/yasnippet/snippets/scala-mode/pro.param +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : protected[this] -# -- -protected[${1:this}] $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/suite b/extensions/yasnippet/snippets/scala-mode/suite deleted file mode 100644 index a65cea7..0000000 --- a/extensions/yasnippet/snippets/scala-mode/suite +++ /dev/null @@ -1,8 +0,0 @@ -#Author : Jonas Bonèr -#name : class T extends Suite { .. } -# -- -import org.scalatest._ - -class ${1:name} extends Suite { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/test b/extensions/yasnippet/snippets/scala-mode/test deleted file mode 100644 index c4d13f6..0000000 --- a/extensions/yasnippet/snippets/scala-mode/test +++ /dev/null @@ -1,7 +0,0 @@ -#Author : Jonas Bonèr -#name : @Test def testX = ... -# -- -//@Test -def test${1:name} = { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/throw b/extensions/yasnippet/snippets/scala-mode/throw deleted file mode 100644 index f9a4932..0000000 --- a/extensions/yasnippet/snippets/scala-mode/throw +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : throw new Exception -# -- -throw new ${1:Exception}(${2:msg}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/tr b/extensions/yasnippet/snippets/scala-mode/tr deleted file mode 100644 index 68d8162..0000000 --- a/extensions/yasnippet/snippets/scala-mode/tr +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Anders Bach Nielsen -#name : trait T { .. } -# -- -trait ${1:name} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/tr.ext b/extensions/yasnippet/snippets/scala-mode/tr.ext deleted file mode 100644 index 2b82154..0000000 --- a/extensions/yasnippet/snippets/scala-mode/tr.ext +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Anders Bach Nielsen -#name : trait T extends C { .. } -# -- -trait ${1:name} extends ${2:class} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/tr.ext-with b/extensions/yasnippet/snippets/scala-mode/tr.ext-with deleted file mode 100644 index 8edb409..0000000 --- a/extensions/yasnippet/snippets/scala-mode/tr.ext-with +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Anders Bach Nielsen -#name : trait T1 extends C with T2 { .. } -# -- -trait ${1:name} extends ${2:class} with ${3:trait} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/tr.with b/extensions/yasnippet/snippets/scala-mode/tr.with deleted file mode 100644 index 19801eb..0000000 --- a/extensions/yasnippet/snippets/scala-mode/tr.with +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Anders Bach Nielsen -#name : trait T1 with T2 { .. } -# -- -trait ${1:name} with ${2:trait} { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/try b/extensions/yasnippet/snippets/scala-mode/try deleted file mode 100644 index 0c33f10..0000000 --- a/extensions/yasnippet/snippets/scala-mode/try +++ /dev/null @@ -1,9 +0,0 @@ -#Author : Jonas Bonèr -#name : try { .. } catch { case e => ..} -# -- -try { - $0 -} catch { - case ${1:e}: ${2:Exception} => - ${1:println(\"ERROR: \" + e) // TODO: handle exception}\n} -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/try.catch-finally b/extensions/yasnippet/snippets/scala-mode/try.catch-finally deleted file mode 100644 index f146a20..0000000 --- a/extensions/yasnippet/snippets/scala-mode/try.catch-finally +++ /dev/null @@ -1,11 +0,0 @@ -#Author : Jonas Bonèr -#name : try { .. } catch { case e => ..} finally { ..} -# -- -try { - $0 -} catch { - case ${1:e}: ${2:Exception} => - ${1:println(\"ERROR: \" + e) // TODO: handle exception}\n} -} finally { - -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/try.finally b/extensions/yasnippet/snippets/scala-mode/try.finally deleted file mode 100644 index 63625f2..0000000 --- a/extensions/yasnippet/snippets/scala-mode/try.finally +++ /dev/null @@ -1,8 +0,0 @@ -#Author : Jonas Bonèr -#name : try { .. } finally { .. } -# -- -try { - -} finally { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/tup.arrow b/extensions/yasnippet/snippets/scala-mode/tup.arrow deleted file mode 100644 index 4e7ad69..0000000 --- a/extensions/yasnippet/snippets/scala-mode/tup.arrow +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : element1 -> element2 -# -- -${1:element1} -> ${2:element2} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/tup.paren b/extensions/yasnippet/snippets/scala-mode/tup.paren deleted file mode 100644 index 4bff202..0000000 --- a/extensions/yasnippet/snippets/scala-mode/tup.paren +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : (element1, element2) -# -- -(${1:element1}, ${2:element2}) $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/val b/extensions/yasnippet/snippets/scala-mode/val deleted file mode 100644 index 3067cd4..0000000 --- a/extensions/yasnippet/snippets/scala-mode/val +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val name = .. -# -- -val ${1:name} = ${2:obj} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/val.new b/extensions/yasnippet/snippets/scala-mode/val.new deleted file mode 100644 index 35a0c6a..0000000 --- a/extensions/yasnippet/snippets/scala-mode/val.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val name = new .. -# -- -val ${1:name} = new ${2:obj} $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/val.ret b/extensions/yasnippet/snippets/scala-mode/val.ret deleted file mode 100644 index 4bf4f10..0000000 --- a/extensions/yasnippet/snippets/scala-mode/val.ret +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : val name: T = .. -# -- -val ${1:name}: ${2:T} = ${3:obj} $0 diff --git a/extensions/yasnippet/snippets/scala-mode/var b/extensions/yasnippet/snippets/scala-mode/var deleted file mode 100644 index 662d6c8..0000000 --- a/extensions/yasnippet/snippets/scala-mode/var +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : var name = .. -# -- -var ${1:name} = ${2:obj} $0 diff --git a/extensions/yasnippet/snippets/scala-mode/var.new b/extensions/yasnippet/snippets/scala-mode/var.new deleted file mode 100644 index d681c4a..0000000 --- a/extensions/yasnippet/snippets/scala-mode/var.new +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : var name = new .. -# -- -var ${1:name} = new ${2:obj} $0 diff --git a/extensions/yasnippet/snippets/scala-mode/var.ret b/extensions/yasnippet/snippets/scala-mode/var.ret deleted file mode 100644 index 9d0ac3a..0000000 --- a/extensions/yasnippet/snippets/scala-mode/var.ret +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : var name: T = .. -# -- -var ${1:name}: ${2:T} = ${3:obj} $0 diff --git a/extensions/yasnippet/snippets/scala-mode/whi b/extensions/yasnippet/snippets/scala-mode/whi deleted file mode 100644 index 082c139..0000000 --- a/extensions/yasnippet/snippets/scala-mode/whi +++ /dev/null @@ -1,6 +0,0 @@ -#Author : Jonas Bonèr -#name : while(cond) { .. } -# -- -while (${1:condition}) { - $0 -} \ No newline at end of file diff --git a/extensions/yasnippet/snippets/scala-mode/with b/extensions/yasnippet/snippets/scala-mode/with deleted file mode 100644 index 6bd94e4..0000000 --- a/extensions/yasnippet/snippets/scala-mode/with +++ /dev/null @@ -1,4 +0,0 @@ -#Author : Jonas Bonèr -#name : with T -# -- -with $0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/snippet-mode/.yas-parents b/extensions/yasnippet/snippets/snippet-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/snippet-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/snippet-mode/field b/extensions/yasnippet/snippets/snippet-mode/field deleted file mode 100644 index bdaf0d4..0000000 --- a/extensions/yasnippet/snippets/snippet-mode/field +++ /dev/null @@ -1,5 +0,0 @@ -# name : ${ ... } field -# contributor : joaotavora -# key : $f -# -- -\${${1:${2:n}:}$3${4:\$(${5:lisp-fn})}\}$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/snippet-mode/mirror b/extensions/yasnippet/snippets/snippet-mode/mirror deleted file mode 100644 index 1c32eeb..0000000 --- a/extensions/yasnippet/snippets/snippet-mode/mirror +++ /dev/null @@ -1,5 +0,0 @@ -# name : ${n:$(...)} mirror -# key : $m -# contributor : joaotavora -# -- -\${${2:n}:${4:\$(${5:reflection-fn})}\}$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/snippet-mode/vars b/extensions/yasnippet/snippets/snippet-mode/vars deleted file mode 100644 index 0e8a0a5..0000000 --- a/extensions/yasnippet/snippets/snippet-mode/vars +++ /dev/null @@ -1,11 +0,0 @@ -# -*- mode: snippet -*- -# name : Snippet header -# contributor : joaotavora -# -- -# name : $1${2: -# key : ${3:trigger-key}}${4: -# keybinding : ${5:keybinding}}${6: -# expand-env : (${7:})} -# contributor : $6 -# -- -$0 \ No newline at end of file diff --git a/extensions/yasnippet/snippets/sql-mode/.yas-parents b/extensions/yasnippet/snippets/sql-mode/.yas-parents deleted file mode 100644 index eed5b44..0000000 --- a/extensions/yasnippet/snippets/sql-mode/.yas-parents +++ /dev/null @@ -1 +0,0 @@ -text-mode diff --git a/extensions/yasnippet/snippets/sql-mode/column b/extensions/yasnippet/snippets/sql-mode/column deleted file mode 100644 index 90e4963..0000000 --- a/extensions/yasnippet/snippets/sql-mode/column +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : , ColumnName ColumnType NOT NULL... -# -- - , ${1:Name} ${2:Type} ${3:NOT NULL} diff --git a/extensions/yasnippet/snippets/sql-mode/constraint b/extensions/yasnippet/snippets/sql-mode/constraint deleted file mode 100644 index 989e508..0000000 --- a/extensions/yasnippet/snippets/sql-mode/constraint +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : CONSTRAINT [..] PRIMARY KEY ... -# -- -CONSTRAINT [${1:PK_Name}] PRIMARY KEY ${2:CLUSTERED} ([${3:ColumnName}]) diff --git a/extensions/yasnippet/snippets/sql-mode/constraint.1 b/extensions/yasnippet/snippets/sql-mode/constraint.1 deleted file mode 100644 index 98d89f0..0000000 --- a/extensions/yasnippet/snippets/sql-mode/constraint.1 +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : CONSTRAINT [..] FOREIGN KEY ... -# -- -CONSTRAINT [${1:FK_Name}] FOREIGN KEY ${2:CLUSTERED} ([${3:ColumnName}]) diff --git a/extensions/yasnippet/snippets/sql-mode/create b/extensions/yasnippet/snippets/sql-mode/create deleted file mode 100644 index a34624d..0000000 --- a/extensions/yasnippet/snippets/sql-mode/create +++ /dev/null @@ -1,10 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : create table ... -# -- -CREATE TABLE [${1:dbo}].[${2:TableName}] -( - ${3:Id} ${4:INT IDENTITY(1,1)} ${5:NOT NULL} -$0 - CONSTRAINT [${6:PK_}] PRIMARY KEY ${7:CLUSTERED} ([$3]) -) -GO diff --git a/extensions/yasnippet/snippets/sql-mode/create.1 b/extensions/yasnippet/snippets/sql-mode/create.1 deleted file mode 100644 index 1323daf..0000000 --- a/extensions/yasnippet/snippets/sql-mode/create.1 +++ /dev/null @@ -1,12 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : create procedure ... -# -- -CREATE PROCEDURE [${1:dbo}].[${2:Name}] -( - $3 $4 = ${5:NULL} ${6:OUTPUT} -) -AS -BEGIN -$0 -END -GO diff --git a/extensions/yasnippet/snippets/sql-mode/references b/extensions/yasnippet/snippets/sql-mode/references deleted file mode 100644 index f2e4eab..0000000 --- a/extensions/yasnippet/snippets/sql-mode/references +++ /dev/null @@ -1,4 +0,0 @@ -#contributor : Alejandro Espinoza Esparza -#name : REFERENCES ... -# -- -REFERENCES ${1:TableName}([${2:ColumnName}]) diff --git a/extensions/yasnippet/snippets/text-mode/email b/extensions/yasnippet/snippets/text-mode/email deleted file mode 100644 index 1ac7f94..0000000 --- a/extensions/yasnippet/snippets/text-mode/email +++ /dev/null @@ -1,3 +0,0 @@ -#name : (user's email) -# -- -`(replace-regexp-in-string "@" "@NOSPAM." user-mail-address)` \ No newline at end of file diff --git a/extensions/yasnippet/snippets/text-mode/time b/extensions/yasnippet/snippets/text-mode/time deleted file mode 100644 index d744f1a..0000000 --- a/extensions/yasnippet/snippets/text-mode/time +++ /dev/null @@ -1,3 +0,0 @@ -#name : (current time) -# -- -`(current-time-string)` \ No newline at end of file diff --git a/extensions/yasnippet/yasnippet-debug.el b/extensions/yasnippet/yasnippet-debug.el deleted file mode 100644 index f98eb93..0000000 --- a/extensions/yasnippet/yasnippet-debug.el +++ /dev/null @@ -1,128 +0,0 @@ -;;; yasnippet-debug.el --- debug functions for yasnippet - -;; Copyright (C) 2010 João Távora - -;; Author: João Távora(defun yas/debug-snippet-vars () -;; Keywords: emulations, convenience - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Commentary: - -;; Just some debug functions - -;;; Code: - -(require 'yasnippet) - -(defun yas/debug-snippet-vars () - "Debug snippets, fields, mirrors and the `buffer-undo-list'." - (interactive) - (with-output-to-temp-buffer "*YASnippet trace*" - (princ "Interesting YASnippet vars: \n\n") - - (princ (format "\nPost command hook: %s\n" post-command-hook)) - (princ (format "\nPre command hook: %s\n" pre-command-hook)) - - (princ (format "%s live snippets in total\n" (length (yas/snippets-at-point (quote all-snippets))))) - (princ (format "%s overlays in buffer:\n\n" (length (overlays-in (point-min) (point-max))))) - (princ (format "%s live snippets at point:\n\n" (length (yas/snippets-at-point)))) - - - (dolist (snippet (yas/snippets-at-point)) - (princ (format "\tsid: %d control overlay from %d to %d\n" - (yas/snippet-id snippet) - (overlay-start (yas/snippet-control-overlay snippet)) - (overlay-end (yas/snippet-control-overlay snippet)))) - (princ (format "\tactive field: %d from %s to %s covering \"%s\"\n" - (yas/field-number (yas/snippet-active-field snippet)) - (marker-position (yas/field-start (yas/snippet-active-field snippet))) - (marker-position (yas/field-end (yas/snippet-active-field snippet))) - (buffer-substring-no-properties (yas/field-start (yas/snippet-active-field snippet)) (yas/field-end (yas/snippet-active-field snippet))))) - (when (yas/snippet-exit snippet) - (princ (format "\tsnippet-exit: at %s next: %s\n" - (yas/exit-marker (yas/snippet-exit snippet)) - (yas/exit-next (yas/snippet-exit snippet))))) - (dolist (field (yas/snippet-fields snippet)) - (princ (format "\tfield: %d from %s to %s covering \"%s\" next: %s%s\n" - (yas/field-number field) - (marker-position (yas/field-start field)) - (marker-position (yas/field-end field)) - (buffer-substring-no-properties (yas/field-start field) (yas/field-end field)) - (yas/debug-format-fom-concise (yas/field-next field)) - (if (yas/field-parent-field field) "(has a parent)" ""))) - (dolist (mirror (yas/field-mirrors field)) - (princ (format "\t\tmirror: from %s to %s covering \"%s\" next: %s\n" - (marker-position (yas/mirror-start mirror)) - (marker-position (yas/mirror-end mirror)) - (buffer-substring-no-properties (yas/mirror-start mirror) (yas/mirror-end mirror)) - (yas/debug-format-fom-concise (yas/mirror-next mirror))))))) - - (princ (format "\nUndo is %s and point-max is %s.\n" - (if (eq buffer-undo-list t) - "DISABLED" - "ENABLED") - (point-max))) - (unless (eq buffer-undo-list t) - (princ (format "Undpolist has %s elements. First 10 elements follow:\n" (length buffer-undo-list))) - (let ((first-ten (subseq buffer-undo-list 0 19))) - (dolist (undo-elem first-ten) - (princ (format "%2s: %s\n" (position undo-elem first-ten) (truncate-string-to-width (format "%s" undo-elem) 70)))))))) - -(defun yas/debug-format-fom-concise (fom) - (when fom - (cond ((yas/field-p fom) - (format "field %d from %d to %d" - (yas/field-number fom) - (marker-position (yas/field-start fom)) - (marker-position (yas/field-end fom)))) - ((yas/mirror-p fom) - (format "mirror from %d to %d" - (marker-position (yas/mirror-start fom)) - (marker-position (yas/mirror-end fom)))) - (t - (format "snippet exit at %d" - (marker-position (yas/fom-start fom))))))) - - -(defun yas/exterminate-package () - (interactive) - (yas/global-mode -1) - (yas/minor-mode -1) - (mapatoms #'(lambda (atom) - (when (string-match "yas/" (symbol-name atom)) - (unintern atom))))) - -(defun yas/debug-test (&optional quiet) - (interactive "P") - (yas/load-directory (or (and (listp yas/snippet-dirs) - (first yas/snippet-dirs)) - yas/snippet-dirs - "~/Source/yasnippet/snippets/")) - (set-buffer (switch-to-buffer "*YAS TEST*")) - (mapc #'yas/commit-snippet (yas/snippets-at-point 'all-snippets)) - (erase-buffer) - (setq buffer-undo-list nil) - (setq undo-in-progress nil) - (snippet-mode) - (yas/minor-mode 1) - (let ((abbrev)) - (setq abbrev "$f") - (insert abbrev)) - (unless quiet - (add-hook 'post-command-hook 'yas/debug-snippet-vars 't 'local))) - -(provide 'yasnippet-debug) -;;; yasnippet-debug.el ends here - diff --git a/extensions/yasnippet/yasnippet.el b/extensions/yasnippet/yasnippet.el deleted file mode 100644 index c851b44..0000000 --- a/extensions/yasnippet/yasnippet.el +++ /dev/null @@ -1,4320 +0,0 @@ -;;; Yasnippet.el --- Yet another snippet extension for Emacs. - -;; Copyright 2008 pluskid -;; 2009 pluskid, joaotavora - -;; Authors: pluskid , joaotavora -;; Version: 0.7.0 -;; Package-version: 0.7.0 -;; X-URL: http://code.google.com/p/yasnippet/ -;; Keywords: convenience, emulation -;; URL: http://code.google.com/p/yasnippet/ -;; EmacsWiki: YaSnippetMode - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; Basic steps to setup: -;; -;; 1. In your .emacs file: -;; (add-to-list 'load-path "/dir/to/yasnippet.el") -;; (require 'yasnippet) -;; 2. Place the `snippets' directory somewhere. E.g: ~/.emacs.d/snippets -;; 3. In your .emacs file -;; (setq yas/snippet-dirs "~/.emacs/snippets") -;; (yas/load-directory yas/snippet-dirs) -;; 4. To enable the YASnippet menu and tab-trigger expansion -;; M-x yas/minor-mode -;; 5. To globally enable the minor mode in *all* buffers -;; M-x yas/global-mode -;; -;; Steps 4. and 5. are optional, you don't have to use the minor -;; mode to use YASnippet. -;; -;; Interesting variables are: -;; -;; `yas/snippet-dirs' -;; -;; The directory where user-created snippets are to be -;; stored. Can also be a list of directories. In that case, -;; when used for bulk (re)loading of snippets (at startup or -;; via `yas/reload-all'), directories appearing earlier in -;; the list shadow other dir's snippets. Also, the first -;; directory is taken as the default for storing the user's -;; new snippets. -;; -;; The deprecated `yas/root-directory' aliases this variable -;; for backward-compatibility. -;; -;; `yas/extra-modes' -;; -;; A local variable that you can set in a hook to override -;; snippet-lookup based on major mode. It is a a symbol (or -;; list of symbols) that correspond to subdirectories of -;; `yas/snippet-dirs' and is used for deciding which -;; snippets to consider for the active buffer. -;; -;; Deprecated `yas/mode-symbol' aliases this variable for -;; backward-compatibility. -;; -;; Major commands are: -;; -;; M-x yas/expand -;; -;; Try to expand snippets before point. In `yas/minor-mode', -;; this is bound to `yas/trigger-key' which you can customize. -;; -;; M-x yas/load-directory -;; -;; Prompts you for a directory hierarchy of snippets to load. -;; -;; M-x yas/insert-snippet -;; -;; Prompts you for possible snippet expansion if that is -;; possible according to buffer-local and snippet-local -;; expansion conditions. With prefix argument, ignore these -;; conditions. -;; -;; M-x yas/find-snippets -;; -;; Lets you find the snippet files in the correct -;; subdirectory of `yas/snippet-dirs', according to the -;; active major mode (if it exists) like -;; `find-file-other-window'. -;; -;; M-x yas/visit-snippet-file -;; -;; Prompts you for possible snippet expansions like -;; `yas/insert-snippet', but instead of expanding it, takes -;; you directly to the snippet definition's file, if it -;; exists. -;; -;; M-x yas/new-snippet -;; -;; Lets you create a new snippet file in the correct -;; subdirectory of `yas/snippet-dirs', according to the -;; active major mode. -;; -;; M-x yas/load-snippet-buffer -;; -;; When editing a snippet, this loads the snippet. This is -;; bound to "C-c C-c" while in the `snippet-mode' editing -;; mode. -;; -;; M-x yas/tryout-snippet -;; -;; When editing a snippet, this opens a new empty buffer, -;; sets it to the appropriate major mode and inserts the -;; snippet there, so you can see what it looks like. This is -;; bound to "C-c C-t" while in `snippet-mode'. -;; -;; M-x yas/describe-tables -;; -;; Lists known snippets in a separate buffer. User is -;; prompted as to whether only the currently active tables -;; are to be displayed, or all the tables for all major -;; modes. -;; -;; The `dropdown-list.el' extension is bundled with YASnippet, you -;; can optionally use it the preferred "prompting method", puting in -;; your .emacs file, for example: -;; -;; (require 'dropdown-list) -;; (setq yas/prompt-functions '(yas/dropdown-prompt -;; yas/ido-prompt -;; yas/completing-prompt)) -;; -;; Also check out the customization group -;; -;; M-x customize-group RET yasnippet RET -;; -;; If you use the customization group to set variables -;; `yas/snippet-dirs' or `yas/global-mode', make sure the path to -;; "yasnippet.el" is present in the `load-path' *before* the -;; `custom-set-variables' is executed in your .emacs file. -;; -;; For more information and detailed usage, refer to the project page: -;; http://code.google.com/p/yasnippet/ - -;;; Code: - -(require 'cl) -(require 'assoc) -(require 'easymenu) -(require 'help-mode) - - -;;; User customizable variables - -(defgroup yasnippet nil - "Yet Another Snippet extension" - :group 'editing) - -;;;###autoload -(defcustom yas/snippet-dirs nil - "Directory or list of snippet dirs for each major mode. - -The directory where user-created snippets are to be stored. Can -also be a list of directories. In that case, when used for -bulk (re)loading of snippets (at startup or via -`yas/reload-all'), directories appearing earlier in the list -shadow other dir's snippets. Also, the first directory is taken -as the default for storing the user's new snippets." - :type '(choice (string :tag "Single directory (string)") - (repeat :args (string) :tag "List of directories (strings)")) - :group 'yasnippet - :require 'yasnippet - :set #'(lambda (symbol new) - (let ((old (and (boundp symbol) - (symbol-value symbol)))) - (set-default symbol new) - (unless (or (not (fboundp 'yas/reload-all)) - (equal old new)) - (yas/reload-all))))) -(defun yas/snippet-dirs () - (if (listp yas/snippet-dirs) yas/snippet-dirs (list yas/snippet-dirs))) -(defvaralias 'yas/root-directory 'yas/snippet-dirs) - -(defcustom yas/prompt-functions '(yas/x-prompt - yas/dropdown-prompt - yas/completing-prompt - yas/ido-prompt - yas/no-prompt) - "Functions to prompt for keys, templates, etc interactively. - -These functions are called with the following arguments: - -- PROMPT: A string to prompt the user - -- CHOICES: a list of strings or objects. - -- optional DISPLAY-FN : A function that, when applied to each of -the objects in CHOICES will return a string. - -The return value of any function you put here should be one of -the objects in CHOICES, properly formatted with DISPLAY-FN (if -that is passed). - -- To signal that your particular style of prompting is -unavailable at the moment, you can also have the function return -nil. - -- To signal that the user quit the prompting process, you can -signal `quit' with - - (signal 'quit \"user quit!\")." - :type '(repeat function) - :group 'yasnippet) - -(defcustom yas/indent-line 'auto - "Controls indenting applied to a recent snippet expansion. - -The following values are possible: - -- `fixed' Indent the snippet to the current column; - -- `auto' Indent each line of the snippet with `indent-according-to-mode' - -Every other value means don't apply any snippet-side indendation -after expansion (the manual per-line \"$>\" indentation still -applies)." - :type '(choice (const :tag "Nothing" nothing) - (const :tag "Fixed" fixed) - (const :tag "Auto" auto)) - :group 'yasnippet) - -(defcustom yas/also-auto-indent-first-line nil - "Non-nil means also auto indent first line according to mode. - -Naturally this is only valid when `yas/indent-line' is `auto'" - :type 'boolean - :group 'yasnippet) - -(defcustom yas/snippet-revival t - "Non-nil means re-activate snippet fields after undo/redo." - :type 'boolean - :group 'yasnippet) - -(defcustom yas/trigger-key "TAB" - "The key bound to `yas/expand' when function `yas/minor-mode' is active. - -Value is a string that is converted to the internal Emacs key -representation using `read-kbd-macro'." - :type 'string - :group 'yasnippet - :set #'(lambda (symbol key) - (let ((old (and (boundp symbol) - (symbol-value symbol)))) - (set-default symbol key) - ;; On very first loading of this defcustom, - ;; `yas/trigger-key' is *not* loaded. - (if (fboundp 'yas/trigger-key-reload) - (yas/trigger-key-reload old))))) - -(defcustom yas/next-field-key '("TAB" "") - "The key to navigate to next field when a snippet is active. - -Value is a string that is converted to the internal Emacs key -representation using `read-kbd-macro'. - -Can also be a list of strings." - :type '(choice (string :tag "String") - (repeat :args (string) :tag "List of strings")) - :group 'yasnippet - :set #'(lambda (symbol val) - (set-default symbol val) - (if (fboundp 'yas/init-yas-in-snippet-keymap) - (yas/init-yas-in-snippet-keymap)))) - - -(defcustom yas/prev-field-key '("" "") - "The key to navigate to previous field when a snippet is active. - -Value is a string that is converted to the internal Emacs key -representation using `read-kbd-macro'. - -Can also be a list of strings." - :type '(choice (string :tag "String") - (repeat :args (string) :tag "List of strings")) - :group 'yasnippet - :set #'(lambda (symbol val) - (set-default symbol val) - (if (fboundp 'yas/init-yas-in-snippet-keymap) - (yas/init-yas-in-snippet-keymap)))) - -(defcustom yas/skip-and-clear-key "C-d" - "The key to clear the currently active field. - -Value is a string that is converted to the internal Emacs key -representation using `read-kbd-macro'. - -Can also be a list of strings." - :type '(choice (string :tag "String") - (repeat :args (string) :tag "List of strings")) - :group 'yasnippet - :set #'(lambda (symbol val) - (set-default symbol val) - (if (fboundp 'yas/init-yas-in-snippet-keymap) - (yas/init-yas-in-snippet-keymap)))) - -(defcustom yas/triggers-in-field nil - "If non-nil, `yas/next-field-key' can trigger stacked expansions. - -Otherwise, `yas/next-field-key' just tries to move on to the next -field" - :type 'boolean - :group 'yasnippet) - -(defcustom yas/fallback-behavior 'call-other-command - "How to act when `yas/trigger-key' does *not* expand a snippet. - -- `call-other-command' means try to temporarily disable YASnippet - and call the next command bound to `yas/trigger-key'. - -- nil or the symbol `return-nil' mean do nothing. (and - `yas/expand-returns' nil) - -- A lisp form (apply COMMAND . ARGS) means interactively call - COMMAND, if ARGS is non-nil, call COMMAND non-interactively - with ARGS as arguments." - :type '(choice (const :tag "Call previous command" call-other-command) - (const :tag "Do nothing" return-nil)) - :group 'yasnippet) - -(defcustom yas/choose-keys-first nil - "If non-nil, prompt for snippet key first, then for template. - -Otherwise prompts for all possible snippet names. - -This affects `yas/insert-snippet' and `yas/visit-snippet-file'." - :type 'boolean - :group 'yasnippet) - -(defcustom yas/choose-tables-first nil - "If non-nil, and multiple eligible snippet tables, prompts user for tables first. - -Otherwise, user chooses between the merging together of all -eligible tables. - -This affects `yas/insert-snippet', `yas/visit-snippet-file'" - :type 'boolean - :group 'yasnippet) - -(defcustom yas/use-menu 'abbreviate - "Display a YASnippet menu in the menu bar. - -When non-nil, submenus for each snippet table will be listed -under the menu \"Yasnippet\". - -- If set to `real-modes' only submenus whose name more or less -corresponds to a major mode are listed. - -- If set to `abbreviate', only the current major-mode -menu and the modes set in `yas/extra-modes' are listed. - -Any other non-nil value, every submenu is listed." - :type '(choice (const :tag "Full" t) - (const :tag "Real modes only" real-modes) - (const :tag "Abbreviate" abbreviate)) - :group 'yasnippet) - -(defcustom yas/trigger-symbol " =>" - "The text that will be used in menu to represent the trigger." - :type 'string - :group 'yasnippet) - -(defcustom yas/wrap-around-region nil - "If non-nil, snippet expansion wraps around selected region. - -The wrapping occurs just before the snippet's exit marker. This -can be overriden on a per-snippet basis." - :type 'boolean - :group 'yasnippet) - -(defcustom yas/good-grace t - "If non-nil, don't raise errors in inline elisp evaluation. - -An error string \"[yas] error\" is returned instead." - :type 'boolean - :group 'yasnippet) - -(defcustom yas/ignore-filenames-as-triggers nil - "If non-nil, don't derive tab triggers from filenames. - -This means a snippet without a \"# key:'\ directive won't have a -tab trigger." - :type 'boolean - :group 'yasnippet) - -(defcustom yas/visit-from-menu nil - "If non-nil visit snippets's files from menu, instead of expanding them. - -This cafn only work when snippets are loaded from files." - :type 'boolean - :group 'yasnippet) - -(defcustom yas/expand-only-for-last-commands nil - "List of `last-command' values to restrict tab-triggering to, or nil. - -Leave this set at nil (the default) to be able to trigger an -expansion simply by placing the cursor after a valid tab trigger, -using whichever commands. - -Optionallly, set this to something like '(self-insert-command) if -you to wish restrict expansion to only happen when the last -letter of the snippet tab trigger was typed immediately before -the trigger key itself." - :type '(repeat function) - :group 'yasnippet) - -;; Only two faces, and one of them shouldn't even be used... -;; -(defface yas/field-highlight-face - '((t (:inherit 'region))) - "The face used to highlight the currently active field of a snippet" - :group 'yasnippet) - -(defface yas/field-debug-face - '() - "The face used for debugging some overlays normally hidden" - :group 'yasnippet) - - -;;; User can also customize the next defvars -(defun yas/define-some-keys (keys keymap definition) - "Bind KEYS to DEFINITION in KEYMAP, read with `read-kbd-macro'." - (let ((keys (or (and (listp keys) keys) - (list keys)))) - (dolist (key keys) - (define-key keymap (read-kbd-macro key) definition)))) - -(defvar yas/keymap - (let ((map (make-sparse-keymap))) - (mapc #'(lambda (binding) - (yas/define-some-keys (car binding) map (cdr binding))) - `((,yas/next-field-key . yas/next-field-or-maybe-expand) - (,yas/prev-field-key . yas/prev-field) - ("C-g" . yas/abort-snippet) - (,yas/skip-and-clear-key . yas/skip-and-clear-or-delete-char))) - map) - "The keymap active while a snippet expansion is in progress.") - -(defvar yas/key-syntaxes (list "w" "w_" "w_.()" "^ ") - "A list of syntax of a key. This list is tried in the order -to try to find a key. For example, if the list is '(\"w\" \"w_\"). -And in emacs-lisp-mode, where \"-\" has the syntax of \"_\": - -foo-bar - -will first try \"bar\", if not found, then \"foo-bar\" is tried.") - -(defvar yas/after-exit-snippet-hook - '() - "Hooks to run after a snippet exited. - -The hooks will be run in an environment where some variables bound to -proper values: - -`yas/snippet-beg' : The beginning of the region of the snippet. - -`yas/snippet-end' : Similar to beg. - -Attention: These hooks are not run when exiting nested/stackd snippet expansion!") - -(defvar yas/before-expand-snippet-hook - '() - "Hooks to run just before expanding a snippet.") - -(defvar yas/buffer-local-condition - '(if (and (or (fourth (syntax-ppss)) - (fifth (syntax-ppss))) - (eq (symbol-function this-command) 'yas/expand-from-trigger-key)) - '(require-snippet-condition . force-in-comment) - t) - "Snippet expanding condition. - -This variable is a lisp form: - - * If it evaluates to nil, no snippets can be expanded. - - * If it evaluates to the a cons (require-snippet-condition - . REQUIREMENT) - - * Snippets bearing no \"# condition:\" directive are not - considered - - * Snippets bearing conditions that evaluate to nil (or - produce an error) won't be onsidered. - - * If the snippet has a condition that evaluates to non-nil - RESULT: - - * If REQUIREMENT is t, the snippet is considered - - * If REQUIREMENT is `eq' RESULT, the snippet is - considered - - * Otherwise, the snippet is not considered. - - * If it evaluates to the symbol 'always, all snippets are - considered for expansion, regardless of any conditions. - - * If it evaluates to t or some other non-nil value - - * Snippet bearing no conditions, or conditions that - evaluate to non-nil, are considered for expansion. - - * Otherwise, the snippet is not considered. - -Here's an example preventing snippets from being expanded from -inside comments, in `python-mode' only, with the exception of -snippets returning the symbol 'force-in-comment in their -conditions. - - (add-hook 'python-mode-hook - '(lambda () - (setq yas/buffer-local-condition - '(if (python-in-string/comment) - '(require-snippet-condition . force-in-comment) - t)))) - -The default value is similar, it filters out potential snippet -expansions inside comments and string literals, unless the -snippet itself contains a condition that returns the symbol -`force-in-comment'.") - - -;;; Internal variables - -(defvar yas/version "0.7.0") - -(defvar yas/menu-table (make-hash-table) - "A hash table of MAJOR-MODE symbols to menu keymaps.") - -(defun teste () - (interactive) - (message "AHAHA!")) - -(defvar yas/known-modes - '(ruby-mode rst-mode markdown-mode) - "A list of mode which is well known but not part of emacs.") - -(defvar yas/escaped-characters - '(?\\ ?` ?' ?$ ?} ?\( ?\)) - "List of characters which *might* need to be escaped.") - -(defconst yas/field-regexp - "${\\([0-9]+:\\)?\\([^}]*\\)}" - "A regexp to *almost* recognize a field.") - -(defconst yas/multi-dollar-lisp-expression-regexp - "$+[ \t\n]*\\(([^)]*)\\)" - "A regexp to *almost* recognize a \"$(...)\" expression.") - -(defconst yas/backquote-lisp-expression-regexp - "`\\([^`]*\\)`" - "A regexp to recognize a \"`lisp-expression`\" expression." ) - -(defconst yas/transform-mirror-regexp - "${\\(?:\\([0-9]+\\):\\)?$\\([ \t\n]*([^}]*\\)" - "A regexp to *almost* recognize a mirror with a transform.") - -(defconst yas/simple-mirror-regexp - "$\\([0-9]+\\)" - "A regexp to recognize a simple mirror.") - -(defvar yas/snippet-id-seed 0 - "Contains the next id for a snippet.") - -(defun yas/snippet-next-id () - (let ((id yas/snippet-id-seed)) - (incf yas/snippet-id-seed) - id)) - - -;;; Minor mode stuff - -;; XXX: `last-buffer-undo-list' is somehow needed in Carbon Emacs for MacOSX -(defvar last-buffer-undo-list nil) - -(defvar yas/minor-mode-menu nil - "Holds the YASnippet menu") - -(defun yas/init-minor-keymap () - (let ((map (make-sparse-keymap))) - (easy-menu-define yas/minor-mode-menu - map - "Menu used when YAS/minor-mode is active." - '("YASnippet" - "----" - ["Expand trigger" yas/expand - :help "Possibly expand tab trigger before point"] - ["Insert at point..." yas/insert-snippet - :help "Prompt for an expandable snippet and expand it at point"] - ["New snippet..." yas/new-snippet - :help "Create a new snippet in an appropriate directory"] - ["Visit snippet file..." yas/visit-snippet-file - :help "Prompt for an expandable snippet and find its file"] - ["Find snippets..." yas/find-snippets - :help "Invoke `find-file' in the appropriate snippet directory"] - "----" - ("Snippet menu behaviour" - ["Visit snippets" (setq yas/visit-from-menu t) - :help "Visit snippets from the menu" - :active t :style radio :selected yas/visit-from-menu] - ["Expand snippets" (setq yas/visit-from-menu nil) - :help "Expand snippets from the menu" - :active t :style radio :selected (not yas/visit-from-menu)] - "----" - ["Show \"Real\" modes only" (setq yas/use-menu 'real-modes) - :help "Show snippet submenus for modes that appear to be real major modes" - :active t :style radio :selected (eq yas/use-menu 'real-modes)] - ["Show all modes" (setq yas/use-menu 't) - :help "Show one snippet submenu for each loaded table" - :active t :style radio :selected (eq yas/use-menu 't)] - ["Abbreviate according to current mode" (setq yas/use-menu 'abbreviate) - :help "Show only snippet submenus for the current active modes" - :active t :style radio :selected (eq yas/use-menu 'abbreviate)]) - ("Indenting" - ["Auto" (setq yas/indent-line 'auto) - :help "Indent each line of the snippet with `indent-according-to-mode'" - :active t :style radio :selected (eq yas/indent-line 'auto)] - ["Fixed" (setq yas/indent-line 'fixed) - :help "Indent the snippet to the current column" - :active t :style radio :selected (eq yas/indent-line 'fixed)] - ["None" (setq yas/indent-line 'none) - :help "Don't apply any particular snippet indentation after expansion" - :active t :style radio :selected (not (member yas/indent-line '(fixed auto)))] - "----" - ["Also auto indent first line" (setq yas/also-auto-indent-first-line - (not yas/also-auto-indent-first-line)) - :help "When auto-indenting also, auto indent the first line menu" - :active (eq yas/indent-line 'auto) - :style toggle :selected yas/also-auto-indent-first-line] - ) - ("Prompting method" - ["System X-widget" (setq yas/prompt-functions - (cons 'yas/x-prompt - (remove 'yas/x-prompt - yas/prompt-functions))) - :help "Use your windowing system's (gtk, mac, windows, etc...) default menu" - :active t :style radio :selected (eq (car yas/prompt-functions) - 'yas/x-prompt)] - ["Dropdown-list" (setq yas/prompt-functions - (cons 'yas/dropdown-prompt - (remove 'yas/dropdown-prompt - yas/prompt-functions))) - :help "Use a special dropdown list" - :active t :style radio :selected (eq (car yas/prompt-functions) - 'yas/dropdown-prompt)] - ["Ido" (setq yas/prompt-functions - (cons 'yas/ido-prompt - (remove 'yas/ido-prompt - yas/prompt-functions))) - :help "Use an ido-style minibuffer prompt" - :active t :style radio :selected (eq (car yas/prompt-functions) - 'yas/ido-prompt)] - ["Completing read" (setq yas/prompt-functions - (cons 'yas/completing-prompt - (remove 'yas/completing-prompt-prompt - yas/prompt-functions))) - :help "Use a normal minibuffer prompt" - :active t :style radio :selected (eq (car yas/prompt-functions) - 'yas/completing-prompt-prompt)] - ) - ("Misc" - ["Wrap region in exit marker" - (setq yas/wrap-around-region - (not yas/wrap-around-region)) - :help "If non-nil automatically wrap the selected text in the $0 snippet exit" - :style toggle :selected yas/wrap-around-region] - ["Allow stacked expansions " - (setq yas/triggers-in-field - (not yas/triggers-in-field)) - :help "If non-nil allow snippets to be triggered inside other snippet fields" - :style toggle :selected yas/triggers-in-field] - ["Revive snippets on undo " - (setq yas/snippet-revival - (not yas/snippet-revival)) - :help "If non-nil allow snippets to become active again after undo" - :style toggle :selected yas/snippet-revival] - ["Good grace " - (setq yas/good-grace - (not yas/good-grace)) - :help "If non-nil don't raise errors in bad embedded eslip in snippets" - :style toggle :selected yas/good-grace] - ["Ignore filenames as triggers" - (setq yas/ignore-filenames-as-triggers - (not yas/ignore-filenames-as-triggers)) - :help "If non-nil don't derive tab triggers from filenames" - :style toggle :selected yas/ignore-filenames-as-triggers] - ) - "----" - ["Load snippets..." yas/load-directory - :help "Load snippets from a specific directory"] - ["Reload everything" yas/reload-all - :help "Cleanup stuff, reload snippets, rebuild menus"] - ["About" yas/about - :help "Display some information about YASsnippet"])) - ;; Now for the stuff that has direct keybindings - ;; - (define-key map "\C-c&\C-s" 'yas/insert-snippet) - (define-key map "\C-c&\C-n" 'yas/new-snippet) - (define-key map "\C-c&\C-v" 'yas/visit-snippet-file) - (define-key map "\C-c&\C-f" 'yas/find-snippets) - map)) - -(defvar yas/minor-mode-map (yas/init-minor-keymap) - "The keymap used when `yas/minor-mode' is active.") - -(defun yas/trigger-key-reload (&optional unbind-key) - "Rebind `yas/expand' to the new value of `yas/trigger-key'. - -With optional UNBIND-KEY, try to unbind that key from -`yas/minor-mode-map'." - (when (and unbind-key - (stringp unbind-key) - (not (string= unbind-key ""))) - (define-key yas/minor-mode-map (read-kbd-macro unbind-key) nil)) - (when (and yas/trigger-key - (stringp yas/trigger-key) - (not (string= yas/trigger-key ""))) - (define-key yas/minor-mode-map (read-kbd-macro yas/trigger-key) 'yas/expand))) - -(defvar yas/tables (make-hash-table) - "A hash table of MAJOR-MODE symbols to `yas/table' objects.") - -(defvar yas/direct-keymaps (list) - "Keymap alist supporting direct snippet keybindings. - -This variable is is placed `emulation-mode-map-alists'. - -Its elements looks like (TABLE-NAME . KEYMAP) and are -calculated when loading snippets. TABLE-NAME is a variable -set buffer-locally when entering `yas/minor-mode'. KEYMAP binds -all defined direct keybindings to the command -`yas/expand-from-keymap', which acts similarly to `yas/expand'") - -(defun yas/direct-keymaps-reload () - "Force reload the direct keybinding for active snippet tables." - (interactive) - (setq yas/direct-keymaps nil) - (maphash #'(lambda (name table) - (mapc #'(lambda (table) - (push (cons (intern (format "yas//direct-%s" name)) - (yas/table-direct-keymap table)) - yas/direct-keymaps)) - (cons table (yas/table-get-all-parents table)))) - yas/tables)) - -(defun yas/direct-keymaps-set-vars () - (let ((modes-to-activate (list major-mode)) - (mode major-mode)) - (while (setq mode (get mode 'derived-mode-parent)) - (push mode modes-to-activate)) - (dolist (mode (yas/extra-modes)) - (push mode modes-to-activate)) - (dolist (mode modes-to-activate) - (let ((name (intern (format "yas//direct-%s" mode)))) - (set-default name nil) - (set (make-local-variable name) t))))) - -(defvar yas/minor-mode-hook nil - "Hook run when yas/minor-mode is turned on") - -;;;###autoload -(define-minor-mode yas/minor-mode - "Toggle YASnippet mode. - -When YASnippet mode is enabled, the `tas/trigger-key' key expands -snippets of code depending on the mode. - -With no argument, this command toggles the mode. -positive prefix argument turns on the mode. -Negative prefix argument turns off the mode. - -You can customize the key through `yas/trigger-key'. - -Key bindings: -\\{yas/minor-mode-map}" - nil - ;; The indicator for the mode line. - " yas" - :group 'yasnippet - (cond (yas/minor-mode - ;; Reload the trigger key - ;; - (yas/trigger-key-reload) - ;; Load all snippets definitions unless we still don't have a - ;; root-directory or some snippets have already been loaded. - ;; - (unless (or (null yas/snippet-dirs) - (> (hash-table-count yas/tables) 0)) - (yas/reload-all)) - ;; Install the direct keymaps in `emulation-mode-map-alists' - ;; (we use `add-hook' even though it's not technically a hook, - ;; but it works). Then define variables named after modes to - ;; index `yas/direct-keymaps'. - ;; - (add-hook 'emulation-mode-map-alists 'yas/direct-keymaps) - (add-hook 'yas/minor-mode-hook 'yas/direct-keymaps-set-vars-runonce 'append)) - (t - ;; Uninstall the direct keymaps. - ;; - (remove-hook 'emulation-mode-map-alists 'yas/direct-keymaps)))) - -(defun yas/direct-keymaps-set-vars-runonce () - (yas/direct-keymaps-set-vars) - (remove-hook 'yas/minor-mode-hook 'yas/direct-keymaps-set-vars-runonce)) - -(defvar yas/dont-activate #'(lambda () - (and yas/snippet-dirs - (null (yas/get-snippet-tables)))) - "If non-nil don't let `yas/minor-mode-on' active yas for this buffer. - -`yas/minor-mode-on' is usually called by `yas/global-mode' so -this effectively lets you define exceptions to the \"global\" -behaviour.") -(make-variable-buffer-local 'yas/dont-activate) - -(defun yas/minor-mode-on () - "Turn on YASnippet minor mode. - -Do this unless `yas/dont-activate' is t or the function -`yas/get-snippet-tables' (which see), returns an empty list." - (interactive) - (unless (or (and (functionp yas/dont-activate) - (funcall yas/dont-activate)) - (and (not (functionp yas/dont-activate)) - yas/dont-activate)) - (yas/minor-mode 1))) - -(defun yas/minor-mode-off () - "Turn off YASnippet minor mode." - (interactive) - (yas/minor-mode -1)) - -(define-globalized-minor-mode yas/global-mode yas/minor-mode yas/minor-mode-on - :group 'yasnippet - :require 'yasnippet) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Major mode stuff -;; -(defvar yas/font-lock-keywords - (append '(("^#.*$" . font-lock-comment-face)) - lisp-font-lock-keywords - lisp-font-lock-keywords-1 - lisp-font-lock-keywords-2 - '(("$\\([0-9]+\\)" - (0 font-lock-keyword-face) - (1 font-lock-string-face t)) - ("${\\([0-9]+\\):?" - (0 font-lock-keyword-face) - (1 font-lock-warning-face t)) - ("${" font-lock-keyword-face) - ("$[0-9]+?" font-lock-preprocessor-face) - ("\\(\\$(\\)" 1 font-lock-preprocessor-face) - ("}" - (0 font-lock-keyword-face))))) - -(defun yas/init-major-keymap () - (let ((map (make-sparse-keymap))) - (easy-menu-define nil - map - "Menu used when snippet-mode is active." - (cons "Snippet" - (mapcar #'(lambda (ent) - (when (third ent) - (define-key map (third ent) (second ent))) - (vector (first ent) (second ent) t)) - (list - (list "Load this snippet" 'yas/load-snippet-buffer "\C-c\C-c") - (list "Try out this snippet" 'yas/tryout-snippet "\C-c\C-t"))))) - map)) - -(defvar snippet-mode-map - (yas/init-major-keymap) - "The keymap used when `snippet-mode' is active") - - -(define-derived-mode snippet-mode text-mode "Snippet" - "A mode for editing yasnippets" - (set-syntax-table (standard-syntax-table)) - (setq font-lock-defaults '(yas/font-lock-keywords)) - (set (make-local-variable 'require-final-newline) nil) - (use-local-map snippet-mode-map)) - - - -;;; Internal structs for template management - -(defstruct (yas/template (:constructor yas/make-blank-template)) - "A template for a snippet." - table - key - content - name - condition - expand-env - file - keybinding - uuid - menu-binding-pair - group ;; as dictated by the #group: directive or .yas-make-groups - perm-group ;; as dictated by `yas/define-menu' - ) - -(defun yas/populate-template (template &rest args) - "Helper function to populate a template with properties" - (let (p v) - (while args - (aset template - (position (intern (substring (symbol-name (car args)) 1)) - (mapcar #'car (get 'yas/template 'cl-struct-slots))) - (second args)) - (setq args (cddr args))) - template)) - -(defstruct (yas/table (:constructor yas/make-snippet-table (name))) - "A table to store snippets for a particular mode. - -Has the following fields: - -`yas/table-name' - - A symbol name normally corresponding to a major mode, but can - also be a pseudo major-mode to be referenced in - `yas/extra-modes', for example. - -`yas/table-hash' - - A hash table (KEY . NAMEHASH), known as the \"keyhash\". KEY is - a string or a vector, where the former is the snippet's trigger - and the latter means it's a direct keybinding. NAMEHASH is yet - another hash of (NAME . TEMPLATE) where NAME is the snippet's - name and TEMPLATE is a `yas/template' object. - -`yas/table-parents' - - A list of tables considered parents of this table: i.e. when - searching for expansions they are searched as well. - -`yas/table-direct-keymap' - - A keymap for the snippets in this table that have direct - keybindings. This is kept in sync with the keyhash, i.e., all - the elements of the keyhash that are vectors appear here as - bindings to `yas/expand-from-keymap'. - -`yas/table-uuidhash' - - A hash table mapping snippets uuid's to the same `yas/template' - objects. A snippet uuid defaults to the snippet's name. -" - name - (hash (make-hash-table :test 'equal)) - (uuidhash (make-hash-table :test 'equal)) - (parents nil) - (direct-keymap (make-sparse-keymap))) - -(defun yas/get-template-by-uuid (mode uuid) - "Find the snippet template in MODE by its UUID." - (let* ((table (gethash mode yas/tables mode))) - (when table - (gethash uuid (yas/table-uuidhash table))))) - -;; Apropos storing/updating, this works with two steps: -;; -;; 1. `yas/remove-template-by-uuid' to remove any existing mappings by -;; snippet uuid -;; -;; 2. `yas/add-template' to add the mappings again: -;; -;; Create or index the entry in TABLES's `yas/table-hash' -;; linking KEY to a namehash. That namehash links NAME to -;; TEMPLATE, and is also created a new namehash inside that -;; entry. -;; -(defun yas/remove-template-by-uuid (table uuid) - "Remove from TABLE a template identified by UUID." - (let ((template (gethash uuid (yas/table-uuidhash table)))) - (when template - (let* ((name (yas/template-name template)) - (empty-keys nil)) - ;; Remove the name from each of the targeted namehashes - ;; - (maphash #'(lambda (k v) - (let ((template (gethash name v))) - (when (and template - (eq uuid (yas/template-uuid template))) - (remhash name v) - (when (zerop (hash-table-count v)) - (push k empty-keys))))) - (yas/table-hash table)) - ;; Remove the namehashed themselves if they've become empty - ;; - (dolist (key empty-keys) - (remhash key (yas/table-hash table))) - - ;; Finally, remove the uuid from the uuidhash - ;; - (remhash uuid (yas/table-uuidhash table)))))) - - -(defun yas/add-template (table template) - "Store in TABLE the snippet template TEMPLATE. - -KEY can be a string (trigger key) of a vector (direct -keybinding)." - (let ((name (yas/template-name template)) - (key (yas/template-key template)) - (keybinding (yas/template-keybinding template)) - (menu-binding (car (yas/template-menu-binding-pair template)))) - (dolist (k (remove nil (list key keybinding))) - (puthash name - template - (or (gethash k - (yas/table-hash table)) - (puthash k - (make-hash-table :test 'equal) - (yas/table-hash table)))) - (when (vectorp k) - (define-key (yas/table-direct-keymap table) k 'yas/expand-from-keymap))) - - (when menu-binding - (setf (getf (cdr menu-binding) :keys) - (or (and keybinding (key-description keybinding)) - (and key (concat key yas/trigger-symbol)))) - (setcar (cdr menu-binding) - name)) - - (puthash (yas/template-uuid template) template (yas/table-uuidhash table)))) - -(defun yas/update-template (snippet-table template) - "Add or update TEMPLATE in SNIPPET-TABLE. - -Also takes care of adding and updaring to the associated menu." - ;; Remove from table by uuid - ;; - (yas/remove-template-by-uuid snippet-table (yas/template-uuid template)) - ;; Add to table again - ;; - (yas/add-template snippet-table template) - ;; Take care of the menu - ;; - (let ((keymap (yas/menu-keymap-get-create snippet-table)) - (group (yas/template-group template))) - (when (and yas/use-menu - keymap - (not (cdr (yas/template-menu-binding-pair template)))) - ;; Remove from menu keymap - ;; - (yas/delete-from-keymap keymap (yas/template-uuid template)) - - ;; Add necessary subgroups as necessary. - ;; - (dolist (subgroup group) - (let ((subgroup-keymap (lookup-key keymap (vector (make-symbol subgroup))))) - (unless (and subgroup-keymap - (keymapp subgroup-keymap)) - (setq subgroup-keymap (make-sparse-keymap)) - (define-key keymap (vector (make-symbol subgroup)) - `(menu-item ,subgroup ,subgroup-keymap))) - (setq keymap subgroup-keymap))) - - ;; Add this entry to the keymap - ;; - (let ((menu-binding-pair (yas/snippet-menu-binding-pair-get-create template))) - (define-key keymap (vector (make-symbol (yas/template-uuid template))) (car menu-binding-pair)))))) - -(defun yas/fetch (table key) - "Fetch templates in TABLE by KEY. - -Return a list of cons (NAME . TEMPLATE) where NAME is a -string and TEMPLATE is a `yas/template' structure." - (let* ((keyhash (yas/table-hash table)) - (namehash (and keyhash (gethash key keyhash)))) - (when namehash - (yas/filter-templates-by-condition - (let (alist) - (maphash #'(lambda (k v) - (push (cons k v) alist)) - namehash) - alist))))) - - -;;; Filtering/condition logic - -(defun yas/eval-condition (condition) - (condition-case err - (save-excursion - (save-restriction - (save-match-data - (eval condition)))) - (error (progn - (message (format "[yas] error in condition evaluation: %s" - (error-message-string err))) - nil)))) - - -(defun yas/filter-templates-by-condition (templates) - "Filter the templates using the applicable condition. - -TEMPLATES is a list of cons (NAME . TEMPLATE) where NAME is a -string and TEMPLATE is a `yas/template' structure. - -This function implements the rules described in -`yas/buffer-local-condition'. See that variables documentation." - (let ((requirement (yas/require-template-specific-condition-p))) - (if (eq requirement 'always) - templates - (remove-if-not #'(lambda (pair) - (yas/template-can-expand-p - (yas/template-condition (cdr pair)) requirement)) - templates)))) - -(defun yas/require-template-specific-condition-p () - "Decides if this buffer requests/requires snippet-specific -conditions to filter out potential expansions." - (if (eq 'always yas/buffer-local-condition) - 'always - (let ((local-condition (or (and (consp yas/buffer-local-condition) - (yas/eval-condition yas/buffer-local-condition)) - yas/buffer-local-condition))) - (when local-condition - (if (eq local-condition t) - t - (and (consp local-condition) - (eq 'require-snippet-condition (car local-condition)) - (symbolp (cdr local-condition)) - (cdr local-condition))))))) - -(defun yas/template-can-expand-p (condition requirement) - "Evaluates CONDITION and REQUIREMENT and returns a boolean" - (let* ((result (or (null condition) - (yas/eval-condition condition)))) - (cond ((eq requirement t) - result) - (t - (eq requirement result))))) - -(defun yas/table-get-all-parents (table) - "Returns a list of all parent tables of TABLE" - (let ((parents (yas/table-parents table))) - (when parents - (append (copy-list parents) - (mapcan #'yas/table-get-all-parents parents))))) - -(defun yas/table-templates (table) - (when table - (let ((acc (list))) - (maphash #'(lambda (key namehash) - (maphash #'(lambda (name template) - (push (cons name template) acc)) - namehash)) - (yas/table-hash table)) - (yas/filter-templates-by-condition acc)))) - -(defun yas/current-key () - "Get the key under current position. A key is used to find -the template of a snippet in the current snippet-table." - (let ((start (point)) - (end (point)) - (syntaxes yas/key-syntaxes) - syntax - done - templates) - (while (and (not done) syntaxes) - (setq syntax (car syntaxes)) - (setq syntaxes (cdr syntaxes)) - (save-excursion - (skip-syntax-backward syntax) - (setq start (point))) - (setq templates - (mapcan #'(lambda (table) - (yas/fetch table (buffer-substring-no-properties start end))) - (yas/get-snippet-tables))) - (if templates - (setq done t) - (setq start end))) - (list templates - start - end))) - - -(defun yas/table-all-keys (table) - (when table - (let ((acc)) - (maphash #'(lambda (key templates) - (when (yas/filter-templates-by-condition templates) - (push key acc))) - (yas/table-hash table)) - acc))) - - -;;; Internal functions - -(defun yas/real-mode? (mode) - "Try to find out if MODE is a real mode. The MODE bound to -a function (like `c-mode') is considered real mode. Other well -known mode like `ruby-mode' which is not part of Emacs might -not bound to a function until it is loaded. So yasnippet keeps -a list of modes like this to help the judgement." - (or (fboundp mode) - (find mode yas/known-modes))) - -(defun yas/eval-lisp (form) - "Evaluate FORM and convert the result to string." - (let ((retval (catch 'yas/exception - (condition-case err - (save-excursion - (save-restriction - (save-match-data - (widen) - (let ((result (eval form))) - (when result - (format "%s" result)))))) - (error (if yas/good-grace - (format "[yas] elisp error! %s" (error-message-string err)) - (error (format "[yas] elisp error: %s" - (error-message-string err))))))))) - (when (and (consp retval) - (eq 'yas/exception (car retval))) - (error (cdr retval))) - retval)) - -(defun yas/eval-lisp-no-saves (form) - (condition-case err - (eval form) - (error (if yas/good-grace - (format "[yas] elisp error! %s" (error-message-string err)) - (error (format "[yas] elisp error: %s" - (error-message-string err))))))) - -(defun yas/read-lisp (string &optional nil-on-error) - "Read STRING as a elisp expression and return it. - -In case STRING in an invalid expression and NIL-ON-ERROR is nil, -return an expression that when evaluated will issue an error." - (condition-case err - (read string) - (error (and (not nil-on-error) - `(error (error-message-string err)))))) - -(defun yas/read-keybinding (keybinding) - "Read KEYBINDING as a snippet keybinding, return a vector." - (when (and keybinding - (not (string-match "keybinding" keybinding))) - (condition-case err - (let ((keybinding-string (or (and (string-match "\".*\"" keybinding) - (read keybinding)) - ;; "KEY-DESC" with quotes is deprecated..., but supported - keybinding))) - (read-kbd-macro keybinding-string 'need-vector)) - (error - (message "[yas] warning: keybinding \"%s\" invalid since %s." - keybinding (error-message-string err)) - nil)))) - -(defvar yas/extra-modes nil - "If non-nil, also lookup snippets for this/these modes. - -Can be a symbol or a list of symbols. - -This variable probably makes more sense as buffer-local, so -ensure your use `make-local-variable' when you set it.") -(defun yas/extra-modes () - (if (listp yas/extra-modes) yas/extra-modes (list yas/extra-modes))) -(defvaralias 'yas/mode-symbol 'yas/extra-modes) - -(defun yas/table-get-create (mode) - "Get the snippet table corresponding to MODE. - -Optional DIRECTORY gets recorded as the default directory to -search for snippet files if the retrieved/created table didn't -already have such a property." - (let ((table (gethash mode - yas/tables))) - (unless table - (setq table (yas/make-snippet-table (symbol-name mode))) - (puthash mode table yas/tables) - (aput 'yas/direct-keymaps (intern (format "yas//direct-%s" mode)) - (yas/table-direct-keymap table))) - table)) - -(defun yas/get-snippet-tables (&optional mode-symbol dont-search-parents) - "Get snippet tables for current buffer. - -Return a list of 'yas/table' objects indexed by mode. - -The modes are tried in this order: optional MODE-SYMBOL, then -`yas/extra-modes', then `major-mode' then, unless -DONT-SEARCH-PARENTS is non-nil, the guessed parent mode of either -MODE-SYMBOL or `major-mode'. - -Guessing is done by looking up the MODE-SYMBOL's -`derived-mode-parent' property, see also `derived-mode-p'." - (let ((mode-tables - (remove nil - (mapcar #'(lambda (mode) - (gethash mode yas/tables)) - (remove nil (append (list mode-symbol) - (yas/extra-modes) - (list major-mode - (and (not dont-search-parents) - (get major-mode - 'derived-mode-parent))))))))) - (remove-duplicates - (append mode-tables - (mapcan #'yas/table-get-all-parents mode-tables))))) - -(defun yas/menu-keymap-get-create (table) - "Get or create the main menu keymap correspondong to MODE. - -This may very well create a plethora of menu keymaps and arrange -them in all `yas/menu-table'" - (let* ((mode (intern (yas/table-name table))) - (menu-keymap (or (gethash mode yas/menu-table) - (puthash mode (make-sparse-keymap) yas/menu-table))) - (parents (yas/table-parents table))) - (mapc #'yas/menu-keymap-get-create parents) - (define-key yas/minor-mode-menu (vector mode) - `(menu-item ,(symbol-name mode) ,menu-keymap - :visible (yas/show-menu-p ',mode))) - menu-keymap)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Template-related and snippet loading functions - -(defun yas/parse-template (&optional file) - "Parse the template in the current buffer. - -Optional FILE is the absolute file name of the file being -parsed. - -Optional GROUP is the group where the template is to go, -otherwise we attempt to calculate it from FILE. - -Return a snippet-definition, i.e. a list - - (KEY TEMPLATE NAME CONDITION GROUP VARS FILE KEYBINDING UUID) - -If the buffer contains a line of \"# --\" then the contents above -this line are ignored. Directives can set most of these with the syntax: - -# directive-name : directive-value - -Here's a list of currently recognized directives: - - * type - * name - * contributor - * condition - * group - * key - * expand-env - * binding - * uuid" - (goto-char (point-min)) - (let* ((type 'snippet) - (name (and file - (file-name-nondirectory file))) - (key (unless yas/ignore-filenames-as-triggers - (and name - (file-name-sans-extension name)))) - template - bound - condition - (group (and file - (yas/calculate-group file))) - expand-env - binding - uuid) - (if (re-search-forward "^# --\n" nil t) - (progn (setq template - (buffer-substring-no-properties (point) - (point-max))) - (setq bound (point)) - (goto-char (point-min)) - (while (re-search-forward "^# *\\([^ ]+?\\) *: *\\(.*\\)$" bound t) - (when (string= "uuid" (match-string-no-properties 1)) - (setq uuid (match-string-no-properties 2))) - (when (string= "type" (match-string-no-properties 1)) - (setq type (if (string= "command" (match-string-no-properties 2)) - 'command - 'snippet))) - (when (string= "key" (match-string-no-properties 1)) - (setq key (match-string-no-properties 2))) - (when (string= "name" (match-string-no-properties 1)) - (setq name (match-string-no-properties 2))) - (when (string= "condition" (match-string-no-properties 1)) - (setq condition (yas/read-lisp (match-string-no-properties 2)))) - (when (string= "group" (match-string-no-properties 1)) - (setq group (match-string-no-properties 2))) - (when (string= "expand-env" (match-string-no-properties 1)) - (setq expand-env (yas/read-lisp (match-string-no-properties 2) - 'nil-on-error))) - (when (string= "binding" (match-string-no-properties 1)) - (setq binding (match-string-no-properties 2))))) - (setq template - (buffer-substring-no-properties (point-min) (point-max)))) - (when (eq type 'command) - (setq template (yas/read-lisp (concat "(progn" template ")")))) - (when group - (setq group (split-string group "\\."))) - (list key template name condition group expand-env file binding uuid))) - -(defun yas/calculate-group (file) - "Calculate the group for snippet file path FILE." - (let* ((dominating-dir (locate-dominating-file file - ".yas-make-groups")) - (extra-path (and dominating-dir - (replace-regexp-in-string (concat "^" - (expand-file-name dominating-dir)) - "" - (expand-file-name file)))) - (extra-dir (and extra-path - (file-name-directory extra-path))) - (group (and extra-dir - (replace-regexp-in-string "/" - "." - (directory-file-name extra-dir))))) - group)) - -(defun yas/subdirs (directory &optional file?) - "Return subdirs or files of DIRECTORY according to FILE?." - (remove-if (lambda (file) - (or (string-match "^\\." - (file-name-nondirectory file)) - (string-match "^#.*#$" - (file-name-nondirectory file)) - (string-match "~$" - (file-name-nondirectory file)) - (if file? - (file-directory-p file) - (not (file-directory-p file))))) - (directory-files directory t))) - -(defun yas/make-menu-binding (template) - (let ((mode (intern (yas/table-name (yas/template-table template))))) - `(lambda () (interactive) (yas/expand-or-visit-from-menu ',mode ,(yas/template-uuid template))))) - -(defun yas/expand-or-visit-from-menu (mode uuid) - (let* ((table (yas/table-get-create mode)) - (yas/current-template (and table - (gethash uuid (yas/table-uuidhash table))))) - (when yas/current-template - (if yas/visit-from-menu - (yas/visit-snippet-file-1 yas/current-template) - (let ((where (if (region-active-p) - (cons (region-beginning) (region-end)) - (cons (point) (point))))) - (yas/expand-snippet (yas/template-content yas/current-template) - (car where) - (cdr where))))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Popping up for keys and templates -;; -(defun yas/prompt-for-template (templates &optional prompt) - "Interactively choose a template from the list TEMPLATES. - -TEMPLATES is a list of `yas/template'." - (when templates - (setq templates - (sort templates #'(lambda (t1 t2) - (< (length (yas/template-name t1)) - (length (yas/template-name t2)))))) - (if yas/x-pretty-prompt-templates - (yas/x-pretty-prompt-templates "Choose a snippet" templates) - (some #'(lambda (fn) - (funcall fn (or prompt "Choose a snippet: ") - templates - #'yas/template-name)) - yas/prompt-functions)))) - -(defun yas/prompt-for-keys (keys &optional prompt) - "Interactively choose a template key from the list KEYS." - (when keys - (some #'(lambda (fn) - (funcall fn (or prompt "Choose a snippet key: ") keys)) - yas/prompt-functions))) - -(defun yas/prompt-for-table (tables &optional prompt) - (when tables - (some #'(lambda (fn) - (funcall fn (or prompt "Choose a snippet table: ") - tables - #'yas/table-name)) - yas/prompt-functions))) - -(defun yas/x-prompt (prompt choices &optional display-fn) - "Display choices in a x-window prompt." - ;; FIXME: HACK: if we notice that one of the objects in choices is - ;; actually a `yas/template', defer to `yas/x-prompt-pretty-templates' - ;; - ;; This would be better implemented by passing CHOICES as a - ;; strucutred tree rather than a list. Modifications would go as far - ;; up as `yas/all-templates' I think. - ;; - (when (and window-system choices) - (let ((chosen - (let (menu d) ;; d for display - (dolist (c choices) - (setq d (or (and display-fn (funcall display-fn c)) - c)) - (cond ((stringp d) - (push (cons (concat " " d) c) menu)) - ((listp d) - (push (car d) menu)))) - (setq menu (list prompt (push "title" menu))) - (x-popup-menu (if (fboundp 'posn-at-point) - (let ((x-y (posn-x-y (posn-at-point (point))))) - (list (list (+ (car x-y) 10) - (+ (cdr x-y) 20)) - (selected-window))) - t) - menu)))) - (or chosen - (keyboard-quit))))) - -(defvar yas/x-pretty-prompt-templates nil - "If non-nil, attempt to prompt for templates like TextMate.") -(defun yas/x-pretty-prompt-templates (prompt templates) - "Display TEMPLATES, grouping neatly by table name." - (let ((pretty-alist (list)) - menu - more-than-one-table - prefix) - (dolist (tl templates) - (aput 'pretty-alist (yas/template-table tl) (cons tl (aget pretty-alist (yas/template-table tl))))) - (setq more-than-one-table (> (length pretty-alist) 1)) - (setq prefix (if more-than-one-table - " " "")) - (dolist (table-and-templates pretty-alist) - (when (cdr table-and-templates) - (if more-than-one-table - (push (yas/table-name (car table-and-templates)) menu)) - (dolist (template (cdr table-and-templates)) - (push (cons (concat prefix (yas/template-name template)) - template) menu)))) - (setq menu (nreverse menu)) - (or (x-popup-menu (if (fboundp 'posn-at-point) - (let ((x-y (posn-x-y (posn-at-point (point))))) - (list (list (+ (car x-y) 10) - (+ (cdr x-y) 20)) - (selected-window))) - t) - (list prompt (push "title" menu))) - (keyboard-quit)))) - -(defun yas/ido-prompt (prompt choices &optional display-fn) - (when (and (featurep 'ido) - ido-mode) - (yas/completing-prompt prompt choices display-fn #'ido-completing-read))) - -(eval-when-compile (require 'dropdown-list nil t)) -(defun yas/dropdown-prompt (prompt choices &optional display-fn) - (when (featurep 'dropdown-list) - (let (formatted-choices - filtered-choices - d - n) - (dolist (choice choices) - (setq d (or (and display-fn (funcall display-fn choice)) - choice)) - (when (stringp d) - (push d formatted-choices) - (push choice filtered-choices))) - - (setq n (and formatted-choices (dropdown-list formatted-choices))) - (if n - (nth n filtered-choices) - (keyboard-quit))))) - -(defun yas/completing-prompt (prompt choices &optional display-fn completion-fn) - (let (formatted-choices - filtered-choices - chosen - d - (completion-fn (or completion-fn - #'completing-read))) - (dolist (choice choices) - (setq d (or (and display-fn (funcall display-fn choice)) - choice)) - (when (stringp d) - (push d formatted-choices) - (push choice filtered-choices))) - (setq chosen (and formatted-choices - (funcall completion-fn prompt - formatted-choices - nil - 'require-match - nil - nil))) - (when chosen - (nth (position chosen formatted-choices :test #'string=) filtered-choices)))) - -(defun yas/no-prompt (prompt choices &optional display-fn) - (first choices)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Loading snippets from files -;; -(defun yas/load-directory-1 (directory &optional mode-sym parents) - "Recursively load snippet templates from DIRECTORY." - - ;; Load .yas-setup.el files wherever we find them - ;; - (let ((file (concat directory "/" ".yas-setup"))) - (when (or (file-readable-p (concat file ".el")) - (file-readable-p (concat file ".elc"))) - (load file))) - - ;; - ;; - (unless (file-exists-p (concat directory "/" ".yas-skip")) - (let* ((major-mode-and-parents (if mode-sym - (cons mode-sym parents) - (yas/compute-major-mode-and-parents (concat directory - "/dummy")))) - (yas/ignore-filenames-as-triggers - (or yas/ignore-filenames-as-triggers - (file-exists-p (concat directory "/" - ".yas-ignore-filenames-as-triggers")))) - (snippet-defs nil)) - ;; load the snippet files - ;; - (with-temp-buffer - (dolist (file (yas/subdirs directory 'no-subdirs-just-files)) - (when (file-readable-p file) - (insert-file-contents file nil nil nil t) - (push (yas/parse-template file) - snippet-defs)))) - (when snippet-defs - (yas/define-snippets (car major-mode-and-parents) - snippet-defs - (cdr major-mode-and-parents))) - ;; now recurse to a lower level - ;; - (dolist (subdir (yas/subdirs directory)) - (yas/load-directory-1 subdir - (car major-mode-and-parents) - (cdr major-mode-and-parents)))))) - -(defun yas/load-directory (directory) - "Load snippet definition from a directory hierarchy. - -Below the top-level directory, each directory is a mode -name. And under each subdirectory, each file is a definition -of a snippet. The file name is the trigger key and the -content of the file is the template." - (interactive "DSelect the root directory: ") - (unless (file-directory-p directory) - (error "Error %s not a directory" directory)) - (unless yas/snippet-dirs - (setq yas/snippet-dirs directory)) - (dolist (dir (yas/subdirs directory)) - (yas/load-directory-1 dir)) - (when (interactive-p) - (message "[yas] Loaded snippets from %s." directory))) - -(defun yas/load-snippet-dirs () - "Reload the directories listed in `yas/snippet-dirs' or - prompt the user to select one." - (if yas/snippet-dirs - (dolist (directory (reverse (yas/snippet-dirs))) - (yas/load-directory directory)) - (call-interactively 'yas/load-directory))) - -(defun yas/reload-all (&optional reset-root-directory) - "Reload all snippets and rebuild the YASnippet menu. " - (interactive "P") - ;; Turn off global modes and minor modes, save their state though - ;; - (let ((restore-global-mode (prog1 yas/global-mode - (yas/global-mode -1))) - (restore-minor-mode (prog1 yas/minor-mode - (yas/minor-mode -1)))) - ;; Empty all snippet tables and all menu tables - ;; - (setq yas/tables (make-hash-table)) - (setq yas/menu-table (make-hash-table)) - - ;; Init the `yas/minor-mode-map', taking care not to break the - ;; menu.... - ;; - (setf (cdr yas/minor-mode-map) - (cdr (yas/init-minor-keymap))) - - (when reset-root-directory - (setq yas/snippet-dirs nil)) - - ;; Reload the directories listed in `yas/snippet-dirs' or prompt - ;; the user to select one. - ;; - (yas/load-snippet-dirs) - ;; Reload the direct keybindings - ;; - (yas/direct-keymaps-reload) - ;; Restore the mode configuration - ;; - (when restore-minor-mode - (yas/minor-mode 1)) - (when restore-global-mode - (yas/global-mode 1)) - - (message "[yas] Reloading everything... Done."))) - -(defun yas/quote-string (string) - "Escape and quote STRING. -foo\"bar\\! -> \"foo\\\"bar\\\\!\"" - (concat "\"" - (replace-regexp-in-string "[\\\"]" - "\\\\\\&" - string - t) - "\"")) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Yasnippet Bundle - -(defun yas/initialize () - "For backward compatibility, enable `yas/minor-mode' globally" - (yas/global-mode 1)) - -(defun yas/compile-bundle - (&optional yasnippet yasnippet-bundle snippet-roots code dropdown) - "Compile snippets in SNIPPET-ROOTS to a single bundle file. - -YASNIPPET is the yasnippet.el file path. - -YASNIPPET-BUNDLE is the output file of the compile result. - -SNIPPET-ROOTS is a list of root directories that contains the -snippets definition. - -CODE is the code to be placed at the end of the generated file -and that can initialize the YASnippet bundle. - -Last optional argument DROPDOWN is the filename of the -dropdown-list.el library. - -Here's the default value for all the parameters: - - (yas/compile-bundle \"yasnippet.el\" - \"yasnippet-bundle.el\" - \"snippets\") - \"(yas/initialize-bundle) - ### autoload - (require 'yasnippet-bundle)`\" - \"dropdown-list.el\") -" - (interactive (concat "ffind the yasnippet.el file: \nFTarget bundle file: " - "\nDSnippet directory to bundle: \nMExtra code? \nfdropdown-library: ")) - - (let* ((yasnippet (or yasnippet - "yasnippet.el")) - (yasnippet-bundle (or yasnippet-bundle - "./yasnippet-bundle.el")) - (snippet-roots (or snippet-roots - "snippets")) - (dropdown (or dropdown - "dropdown-list.el")) - (code (or (and code - (condition-case err (read code) (error nil)) - code) - (concat "(yas/initialize-bundle)" - "\n;;;###autoload" ; break through so that won't - "(require 'yasnippet-bundle)"))) - (dirs (or (and (listp snippet-roots) snippet-roots) - (list snippet-roots))) - (bundle-buffer nil)) - (with-temp-file yasnippet-bundle - (insert ";;; yasnippet-bundle.el --- " - "Yet another snippet extension (Auto compiled bundle)\n") - (insert-file-contents yasnippet) - (goto-char (point-max)) - (insert "\n") - (when dropdown - (insert-file-contents dropdown)) - (goto-char (point-max)) - (insert ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n") - (insert ";;;; Auto-generated code ;;;;\n") - (insert ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n") - (insert "(defun yas/initialize-bundle ()\n" - " \"Initialize YASnippet and load snippets in the bundle.\"") - (flet ((yas/define-snippets - (mode snippets &optional parent-or-parents) - (insert ";;; snippets for " (symbol-name mode) "\n") - (let ((literal-snippets (list))) - (dolist (snippet snippets) - (let ((key (first snippet)) - (template-content (second snippet)) - (name (third snippet)) - (condition (fourth snippet)) - (group (fifth snippet)) - (expand-env (sixth snippet)) - (file nil) ;; (seventh snippet)) ;; omit on purpose - (binding (eighth snippet)) - (uuid (ninth snippet))) - (push `(,key - ,template-content - ,name - ,condition - ,group - ,expand-env - ,file - ,binding - ,uuid) - literal-snippets))) - (insert (pp-to-string `(yas/define-snippets ',mode ',literal-snippets ',parent-or-parents))) - (insert "\n\n")))) - (dolist (dir dirs) - (dolist (subdir (yas/subdirs dir)) - (let ((file (concat subdir "/.yas-setup.el"))) - (when (file-readable-p file) - (insert ";; Supporting elisp for subdir " (file-name-nondirectory subdir) "\n\n") - (goto-char (+ (point) - (second (insert-file-contents file)))))) - (yas/load-directory-1 subdir nil)))) - - (insert (pp-to-string `(yas/global-mode 1))) - (insert ")\n\n" code "\n") - - ;; bundle-specific provide and value for yas/dont-activate - (let ((bundle-feature-name (file-name-nondirectory - (file-name-sans-extension - yasnippet-bundle)))) - (insert (pp-to-string `(set-default 'yas/dont-activate - #'(lambda () - (and (or yas/snippet-dirs - (featurep ',(make-symbol bundle-feature-name))) - (null (yas/get-snippet-tables))))))) - (insert (pp-to-string `(provide ',(make-symbol bundle-feature-name))))) - - (insert ";;; " - (file-name-nondirectory yasnippet-bundle) - " ends here\n")))) - -(defun yas/compile-textmate-bundle () - (interactive) - (yas/compile-bundle "yasnippet.el" - "./yasnippet-textmate-bundle.el" - "extras/imported/" - (concat "(yas/initialize-bundle)" - "\n;;;###autoload" ; break through so that won't - "(require 'yasnippet-textmate-bundle)") - "dropdown-list.el")) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Some user level functions -;;; - -(defun yas/about () - (interactive) - (message (concat "yasnippet (version " - yas/version - ") -- pluskid /joaotavora "))) - -(defun yas/define-snippets (mode snippets &optional parent-mode) - "Define SNIPPETS for MODE. - -SNIPPETS is a list of snippet definitions, each taking the -following form - - (KEY TEMPLATE NAME CONDITION GROUP EXPAND-ENV FILE KEYBINDING UUID) - -Within these, only KEY and TEMPLATE are actually mandatory. - -TEMPLATE might be a lisp form or a string, depending on whether -this is a snippet or a snippet-command. - -CONDITION, EXPAND-ENV and KEYBINDING are lisp forms, they have -been `yas/read-lisp'-ed and will eventually be -`yas/eval-lisp'-ed. - -The remaining elements are strings. - -FILE is probably of very little use if you're programatically -defining snippets. - -UUID is the snippets \"unique-id\". Loading a second snippet file -with the same uuid replaced the previous snippet. - -You can use `yas/parse-template' to return such lists based on -the current buffers contents. - -Optional PARENT-MODE can be used to specify the parent tables of -MODE. It can be a mode symbol of a list of mode symbols. It does -not need to be a real mode." - ;; X) `snippet-table' is created or retrieved for MODE, same goes - ;; for the list of snippet tables `parent-tables'. - ;; - (let ((snippet-table (yas/table-get-create mode)) - (parent-tables (mapcar #'yas/table-get-create - (if (listp parent-mode) - parent-mode - (list parent-mode)))) - (template nil)) - ;; X) Connect `snippet-table' with `parent-tables'. - ;; - ;; TODO: this should be a remove-duplicates of the concatenation - ;; of `snippet-table's existings parents with the new parents... - ;; - (dolist (parent parent-tables) - (unless (find parent (yas/table-parents snippet-table)) - (push parent - (yas/table-parents snippet-table)))) - - ;; X) Now, iterate for evey snippet def list - ;; - (dolist (snippet snippets) - (setq template (yas/define-snippets-1 snippet - snippet-table))) - template)) - -(defun yas/define-snippets-1 (snippet snippet-table) - "Helper for `yas/define-snippets'." - ;; X) Calculate some more defaults on the values returned by - ;; `yas/parse-template'. - ;; - (let* ((file (seventh snippet)) - (key (or (car snippet) - (unless yas/ignore-filenames-as-triggers - (and file - (file-name-sans-extension (file-name-nondirectory file)))))) - (name (or (third snippet) - (and file - (file-name-directory file)))) - (condition (fourth snippet)) - (group (fifth snippet)) - (keybinding (yas/read-keybinding (eighth snippet))) - (uuid (or (ninth snippet) - name)) - (template (or (gethash uuid (yas/table-uuidhash snippet-table)) - (yas/make-blank-template)))) - ;; X) populate the template object - ;; - (yas/populate-template template - :table snippet-table - :key key - :content (second snippet) - :name (or name key) - :group group - :condition condition - :expand-env (sixth snippet) - :file (seventh snippet) - :keybinding keybinding - :uuid uuid) - ;; X) Update this template in the appropriate table. This step - ;; also will take care of adding the key indicators in the - ;; templates menu entry, if any - ;; - (yas/update-template snippet-table template) - ;; X) Return the template - ;; - ;; - template)) - -(defun yas/snippet-menu-binding-pair-get-create (template &optional type) - "Get TEMPLATE's menu binding or assign it a new one." - (or (yas/template-menu-binding-pair template) - (let ((key (yas/template-key template)) - (keybinding (yas/template-keybinding template))) - (setf (yas/template-menu-binding-pair template) - (cons `(menu-item ,(or (yas/template-name template) - (yas/template-uuid template)) - ,(yas/make-menu-binding template) - :keys ,nil) - type))))) - -(defun yas/show-menu-p (mode) - (cond ((eq yas/use-menu 'abbreviate) - (find mode - (mapcar #'(lambda (table) - (intern (yas/table-name table))) - (yas/get-snippet-tables)))) - ((eq yas/use-menu 'real-modes) - (yas/real-mode? mode)) - (t - t))) - -(defun yas/delete-from-keymap (keymap uuid) - "Recursively delete items with UUID from KEYMAP and its submenus." - - ;; XXX: This used to skip any submenus named \"parent mode\" - ;; - ;; First of all, recursively enter submenus, i.e. the tree is - ;; searched depth first so that stale submenus can be found in the - ;; higher passes. - ;; - (mapc #'(lambda (item) - (when (and (listp (cdr item)) - (keymapp (third (cdr item)))) - (yas/delete-from-keymap (third (cdr item)) uuid))) - (rest keymap)) - ;; Set the uuid entry to nil - ;; - (define-key keymap (vector (make-symbol uuid)) nil) - ;; Destructively modify keymap - ;; - (setcdr keymap (delete-if #'(lambda (item) - (or (null (cdr item)) - (and (keymapp (third (cdr item))) - (null (cdr (third (cdr item))))))) - (rest keymap)))) - -(defun yas/define-menu (mode menu omit-items) - "Define a snippet menu for MODE according to MENU, ommitting OMIT-ITEMS. - -MENU is a list, its elements can be: - -- (yas/item UUID) : Creates an entry the snippet identified with - UUID. The menu entry for a snippet thus identified is - permanent, i.e. it will never move in the menu. - -- (yas/separator) : Creates a separator - -- (yas/submenu NAME SUBMENU) : Creates a submenu with NAME, - SUBMENU has the same form as MENU. NAME is also added to the - list of groups of the snippets defined thereafter. - -OMIT-ITEMS is a list of snippet uuid's that will always be -ommited from MODE's menu, even if they're manually loaded. -" - (let* ((table (yas/table-get-create mode)) - (hash (yas/table-uuidhash table))) - (yas/define-menu-1 table - (yas/menu-keymap-get-create table) - menu - hash) - (dolist (uuid omit-items) - (let ((template (or (gethash uuid hash) - (yas/populate-template (puthash uuid - (yas/make-blank-template) - hash) - :table table - :uuid uuid)))) - (setf (yas/template-menu-binding-pair template) (cons nil :none)))))) - -(defun yas/define-menu-1 (table keymap menu uuidhash &optional group-list) - (dolist (e (reverse menu)) - (cond ((eq (first e) 'yas/item) - (let ((template (or (gethash (second e) uuidhash) - (yas/populate-template (puthash (second e) - (yas/make-blank-template) - uuidhash) - :table table - :perm-group group-list - :uuid (second e))))) - (define-key keymap (vector (make-symbol (second e))) - (car (yas/snippet-menu-binding-pair-get-create template :stay))))) - ((eq (first e) 'yas/submenu) - (let ((subkeymap (make-sparse-keymap))) - (define-key keymap (vector (make-symbol(second e))) - `(menu-item ,(second e) ,subkeymap)) - (yas/define-menu-1 table - subkeymap - (third e) - uuidhash - (append group-list (list (second e)))))) - ((eq (first e) 'yas/separator) - (define-key keymap (vector (gensym)) - '(menu-item "----"))) - (t - (message "[yas] don't know anything about menu entry %s" (first e)))))) - -(defun yas/define (mode key template &optional name condition group) - "Define a snippet. Expanding KEY into TEMPLATE. - -NAME is a description to this template. Also update the menu if -`yas/use-menu' is `t'. CONDITION is the condition attached to -this snippet. If you attach a condition to a snippet, then it -will only be expanded when the condition evaluated to non-nil." - (yas/define-snippets mode - (list (list key template name condition group)))) - -(defun yas/hippie-try-expand (first-time?) - "Integrate with hippie expand. Just put this function in -`hippie-expand-try-functions-list'." - (if (not first-time?) - (let ((yas/fallback-behavior 'return-nil)) - (yas/expand)) - (undo 1) - nil)) - - -;;; Apropos condition-cache: -;;; -;;; -;;; -;;; -(defvar yas/condition-cache-timestamp nil) -(defmacro yas/define-condition-cache (func doc &rest body) - "Define a function FUNC with doc DOC and body BODY, BODY is -executed at most once every snippet expansion attempt, to check -expansion conditions. - -It doesn't make any sense to call FUNC programatically." - `(defun ,func () ,(if (and doc - (stringp doc)) - (concat doc -"\n\nFor use in snippets' conditions. Within each -snippet-expansion routine like `yas/expand', computes actual -value for the first time then always returns a cached value.") - (setq body (cons doc body)) - nil) - (let ((timestamp-and-value (get ',func 'yas/condition-cache))) - (if (equal (car timestamp-and-value) yas/condition-cache-timestamp) - (cdr timestamp-and-value) - (let ((new-value (progn - ,@body - ))) - (put ',func 'yas/condition-cache (cons yas/condition-cache-timestamp new-value)) - new-value))))) - -(defalias 'yas/expand 'yas/expand-from-trigger-key) -(defun yas/expand-from-trigger-key (&optional field) - "Expand a snippet before point. - -If no snippet expansion is possible, fall back to the behaviour -defined in `yas/fallback-behavior'. - -Optional argument FIELD is for non-interactive use and is an -object satisfying `yas/field-p' to restrict the expansion to." - (interactive) - (setq yas/condition-cache-timestamp (current-time)) - (let (templates-and-pos) - (unless (and yas/expand-only-for-last-commands - (not (member last-command yas/expand-only-for-last-commands))) - (setq templates-and-pos (if field - (save-restriction - (narrow-to-region (yas/field-start field) - (yas/field-end field)) - (yas/current-key)) - (yas/current-key)))) - (if (and templates-and-pos - (first templates-and-pos)) - (yas/expand-or-prompt-for-template (first templates-and-pos) - (second templates-and-pos) - (third templates-and-pos)) - (yas/fallback 'trigger-key)))) - -(defun yas/expand-from-keymap () - "Directly expand some snippets, searching `yas/direct-keymaps'. - -If expansion fails, execute the previous binding for this key" - (interactive) - (setq yas/condition-cache-timestamp (current-time)) - (let* ((vec (this-command-keys-vector)) - (templates (mapcan #'(lambda (table) - (yas/fetch table vec)) - (yas/get-snippet-tables)))) - (if templates - (yas/expand-or-prompt-for-template templates) - (let ((yas/fallback-behavior 'call-other-command)) - (yas/fallback))))) - -(defun yas/expand-or-prompt-for-template (templates &optional start end) - "Expand one of TEMPLATES from START to END. - -Prompt the user if TEMPLATES has more than one element, else -expand immediately. Common gateway for -`yas/expand-from-trigger-key' and `yas/expand-from-keymap'." - (let ((yas/current-template (or (and (rest templates) ;; more than one - (yas/prompt-for-template (mapcar #'cdr templates))) - (cdar templates)))) - (when yas/current-template - (yas/expand-snippet (yas/template-content yas/current-template) - start - end - (yas/template-expand-env yas/current-template))))) - -(defun yas/fallback (&optional from-trigger-key-p) - "Fallback after expansion has failed. - -Common gateway for `yas/expand-from-trigger-key' and -`yas/expand-from-keymap'." - (cond ((eq yas/fallback-behavior 'return-nil) - ;; return nil - nil) - ((eq yas/fallback-behavior 'call-other-command) - (let* ((yas/minor-mode nil) - (yas/direct-keymaps nil) - (keys-1 (this-command-keys-vector)) - (keys-2 (and yas/trigger-key - from-trigger-key-p - (stringp yas/trigger-key) - (read-kbd-macro yas/trigger-key))) - (command-1 (and keys-1 (key-binding keys-1))) - (command-2 (and keys-2 (key-binding keys-2))) - ;; An (ugly) safety: prevents infinite recursion of - ;; yas/expand* calls. - (command (or (and (symbolp command-1) - (not (string-match "yas/expand" (symbol-name command-1))) - command-1) - (and (symbolp command-2) - command-2)))) - (when (and (commandp command) - (not (string-match "yas/expand" (symbol-name command)))) - (setq this-command command) - (call-interactively command)))) - ((and (listp yas/fallback-behavior) - (cdr yas/fallback-behavior) - (eq 'apply (car yas/fallback-behavior))) - (if (cddr yas/fallback-behavior) - (apply (cadr yas/fallback-behavior) - (cddr yas/fallback-behavior)) - (when (commandp (cadr yas/fallback-behavior)) - (setq this-command (cadr yas/fallback-behavior)) - (call-interactively (cadr yas/fallback-behavior))))) - (t - ;; also return nil if all the other fallbacks have failed - nil))) - - - -;;; Snippet development - -(defun yas/all-templates (tables) - "Return all snippet tables applicable for the current buffer. - -Honours `yas/choose-tables-first', `yas/choose-keys-first' and -`yas/buffer-local-condition'" - (when yas/choose-tables-first - (setq tables (list (yas/prompt-for-table tables)))) - (mapcar #'cdr - (if yas/choose-keys-first - (let ((key (yas/prompt-for-keys - (mapcan #'yas/table-all-keys tables)))) - (when key - (mapcan #'(lambda (table) - (yas/fetch table key)) - tables))) - (remove-duplicates (mapcan #'yas/table-templates tables) - :test #'equal)))) - -(defun yas/insert-snippet (&optional no-condition) - "Choose a snippet to expand, pop-up a list of choices according -to `yas/prompt-function'. - -With prefix argument NO-CONDITION, bypass filtering of snippets -by condition." - (interactive "P") - (setq yas/condition-cache-timestamp (current-time)) - (let* ((yas/buffer-local-condition (or (and no-condition - 'always) - yas/buffer-local-condition)) - (templates (yas/all-templates (yas/get-snippet-tables))) - (yas/current-template (and templates - (or (and (rest templates) ;; more than one template for same key - (yas/prompt-for-template templates)) - (car templates)))) - (where (if (region-active-p) - (cons (region-beginning) (region-end)) - (cons (point) (point))))) - (if yas/current-template - (yas/expand-snippet (yas/template-content yas/current-template) - (car where) - (cdr where) - (yas/template-expand-env yas/current-template)) - (message "[yas] No snippets can be inserted here!")))) - -(defun yas/visit-snippet-file () - "Choose a snippet to edit, selection like `yas/insert-snippet'. - -Only success if selected snippet was loaded from a file. Put the -visited file in `snippet-mode'." - (interactive) - (let* ((yas/buffer-local-condition 'always) - (templates (yas/all-templates (yas/get-snippet-tables))) - (yas/prompt-functions '(yas/ido-prompt yas/completing-prompt)) - (template (and templates - (or (yas/prompt-for-template templates - "Choose a snippet template to edit: ") - (car templates))))) - - (if template - (yas/visit-snippet-file-1 template) - (message "No snippets tables active!")))) - -(defun yas/visit-snippet-file-1 (template) - (let ((file (yas/template-file template))) - (cond ((and file (file-readable-p file)) - (find-file-other-window file) - (snippet-mode) - (set (make-local-variable 'yas/editing-template) template)) - (file - (message "Original file %s no longer exists!" file)) - (t - (switch-to-buffer (format "*%s*"(yas/template-name template))) - (let ((type 'snippet)) - (when (listp (yas/template-content template)) - (insert (format "# type: command\n")) - (setq type 'command)) - (insert (format "# key: %s\n" (yas/template-key template))) - (insert (format "# name: %s\n" (yas/template-name template))) - (when (yas/template-keybinding template) - (insert (format "# binding: %s\n" (yas/template-keybinding template)))) - (when (yas/template-expand-env template) - (insert (format "# expand-env: %s\n" (yas/template-expand-env template)))) - (when (yas/template-condition template) - (insert (format "# condition: %s\n" (yas/template-condition template)))) - (insert "# --\n") - (insert (if (eq type 'command) - (pp-to-string (yas/template-content template)) - (yas/template-content template)))) - (snippet-mode) - (set (make-local-variable 'yas/editing-template) template))))) - -(defun yas/guess-snippet-directories-1 (table) - "Guesses possible snippet subdirectories for TABLE." - (cons (yas/table-name table) - (mapcan #'(lambda (parent) - (yas/guess-snippet-directories-1 - parent)) - (yas/table-parents table)))) - -(defun yas/guess-snippet-directories (&optional table) - "Try to guess suitable directories based on the current active -tables (or optional TABLE). - -Returns a list of elemts (TABLE . DIRS) where TABLE is a -`yas/table' object and DIRS is a list of all possible directories -where snippets of table might exist." - (let ((main-dir (replace-regexp-in-string - "/+$" "" - (or (first (or (yas/snippet-dirs) - (setq yas/snippet-dirs '("~/.emacs.d/snippets"))))))) - (tables (or (and table - (list table)) - (yas/get-snippet-tables)))) - ;; HACK! the snippet table created here is actually registered! - ;; - (unless (or table (gethash major-mode yas/tables)) - (push (yas/table-get-create major-mode) - tables)) - - (mapcar #'(lambda (table) - (cons table - (mapcar #'(lambda (subdir) - (concat main-dir "/" subdir)) - (yas/guess-snippet-directories-1 table)))) - tables))) - -(defun yas/make-directory-maybe (table-and-dirs &optional main-table-string) - "Returns a dir inside TABLE-AND-DIRS, prompts for creation if none exists." - (or (some #'(lambda (dir) (when (file-directory-p dir) dir)) (cdr table-and-dirs)) - (let ((candidate (first (cdr table-and-dirs)))) - (unless (file-writable-p (file-name-directory candidate)) - (error "[yas] %s is not writable." candidate)) - (if (y-or-n-p (format "Guessed directory (%s) for%s%s table \"%s\" does not exist! Create? " - candidate - (if (gethash (intern (yas/table-name (car table-and-dirs))) - yas/tables) - "" - " brand new") - (or main-table-string - "") - (yas/table-name (car table-and-dirs)))) - (progn - (make-directory candidate 'also-make-parents) - ;; create the .yas-parents file here... - candidate))))) - -(defun yas/new-snippet (&optional choose-instead-of-guess) - "" - (interactive "P") - (let ((guessed-directories (yas/guess-snippet-directories))) - - (switch-to-buffer "*new snippet*") - (erase-buffer) - (kill-all-local-variables) - (snippet-mode) - (set (make-local-variable 'yas/guessed-modes) (mapcar #'(lambda (d) - (intern (yas/table-name (car d)))) - guessed-directories)) - (unless (and choose-instead-of-guess - (not (y-or-n-p "Insert a snippet with useful headers? "))) - (yas/expand-snippet "\ -# -*- mode: snippet -*- -# name: $1 -# key: $2${3: -# binding: ${4:direct-keybinding}}${5: -# expand-env: ((${6:some-var} ${7:some-value}))}${8: -# type: command} -# -- -$0")))) - -(defun yas/find-snippets (&optional same-window ) - "Find snippet file in guessed current mode's directory. - -Calls `find-file' interactively in the guessed directory. - -With prefix arg SAME-WINDOW opens the buffer in the same window. - -Because snippets can be loaded from many different locations, -this has to guess the correct directory using -`yas/guess-snippet-directories', which returns a list of -options. - -If any one of these exists, it is taken and `find-file' is called -there, otherwise, proposes to create the first option returned by -`yas/guess-snippet-directories'." - (interactive "P") - (let* ((guessed-directories (yas/guess-snippet-directories)) - (chosen) - (buffer)) - (setq chosen (yas/make-directory-maybe (first guessed-directories) " main")) - (unless chosen - (if (y-or-n-p (format "Continue guessing for other active tables %s? " - (mapcar #'(lambda (table-and-dirs) - (yas/table-name (car table-and-dirs))) - (rest guessed-directories)))) - (setq chosen (some #'yas/make-directory-maybe - (rest guessed-directories))))) - (unless chosen - (when (y-or-n-p "Having trouble... go to snippet root dir? ") - (setq chosen (first (yas/snippet-dirs))))) - (if chosen - (let ((default-directory chosen)) - (setq buffer (call-interactively (if same-window - 'find-file - 'find-file-other-window))) - (when buffer - (save-excursion - (set-buffer buffer) - (when (eq major-mode 'fundamental-mode) - (snippet-mode))))) - (message "Could not guess snippet dir!")))) - -(defun yas/compute-major-mode-and-parents (file &optional prompt-if-failed) - (let* ((file-dir (and file - (directory-file-name (or (some #'(lambda (special) - (locate-dominating-file file special)) - '(".yas-setup.el" - ".yas-make-groups" - ".yas-parents")) - (directory-file-name (file-name-directory file)))))) - (parents-file-name (concat file-dir "/.yas-parents")) - (major-mode-name (and file-dir - (file-name-nondirectory file-dir))) - (major-mode-sym (or (and major-mode-name - (intern major-mode-name)) - (when prompt-if-failed - (read-from-minibuffer - "[yas] Cannot auto-detect major mode! Enter a major mode: ")))) - (parents (when (file-readable-p parents-file-name) - (mapcar #'intern - (split-string - (with-temp-buffer - (insert-file-contents parents-file-name) - (buffer-substring-no-properties (point-min) - (point-max)))))))) - (when major-mode-sym - (cons major-mode-sym parents)))) - -(defvar yas/editing-template nil - "Supporting variable for `yas/load-snippet-buffer' and `yas/visit-snippet'") - -(defvar yas/current-template nil - "Holds the current template being expanded into a snippet.") - -(defvar yas/guessed-modes nil - "List of guessed modes supporting `yas/load-snippet-buffer'.") - -(defun yas/load-snippet-buffer (&optional kill) - "Parse and load current buffer's snippet definition. - -With optional prefix argument KILL quit the window and buffer." - (interactive "P") - (let ((yas/ignore-filenames-as-triggers - (or yas/ignore-filenames-as-triggers - (and buffer-file-name - (locate-dominating-file - buffer-file-name - ".yas-ignore-filenames-as-triggers"))))) - (cond - ;; We have `yas/editing-template', this buffer's - ;; content comes from a template which is already loaded and - ;; neatly positioned,... - ;; - (yas/editing-template - (yas/define-snippets-1 (yas/parse-template (yas/template-file yas/editing-template)) - (yas/template-table yas/editing-template))) - ;; Try to use `yas/guessed-modes'. If we don't have that use the - ;; value from `yas/compute-major-mode-and-parents' - ;; - (t - (unless yas/guessed-modes - (set (make-local-variable 'yas/guessed-modes) (or (yas/compute-major-mode-and-parents buffer-file-name)))) - (let* ((prompt (if (and (featurep 'ido) - ido-mode) - 'ido-completing-read 'completing-read)) - (table (yas/table-get-create - (intern - (funcall prompt (format "Choose or enter a table (yas guesses %s): " - (if yas/guessed-modes - (first yas/guessed-modes) - "nothing")) - (mapcar #'symbol-name yas/guessed-modes) - nil - nil - nil - nil - (if (first yas/guessed-modes) - (symbol-name (first yas/guessed-modes)))))))) - (set (make-local-variable 'yas/editing-template) - (yas/define-snippets-1 (yas/parse-template buffer-file-name) - table)))))) - ;; Now, offer to save this shit - ;; - ;; 1) if `yas/snippet-dirs' is a list and its first element does not - ;; match this template's file (i.e. this is a library snippet, not - ;; a user snippet). - ;; - ;; 2) yas/editing-template comes from a file that we cannot write to... - ;; - (when (or (not (yas/template-file yas/editing-template)) - (not (file-writable-p (yas/template-file yas/editing-template))) - (and (listp yas/snippet-dirs) - (second yas/snippet-dirs) - (not (string-match (expand-file-name (first yas/snippet-dirs)) - (yas/template-file yas/editing-template))))) - - (when (y-or-n-p "[yas] Looks like a library or new snippet. Save to new file? ") - (let* ((option (first (yas/guess-snippet-directories (yas/template-table yas/editing-template)))) - (chosen (and option - (yas/make-directory-maybe option)))) - (when chosen - (let ((default-file-name (or (and (yas/template-file yas/editing-template) - (file-name-nondirectory (yas/template-file yas/editing-template))) - (yas/template-name yas/editing-template)))) - (write-file (concat chosen "/" - (read-from-minibuffer (format "File name to create in %s? " chosen) - default-file-name))) - (setf (yas/template-file yas/editing-template) buffer-file-name)))))) - (when kill - (quit-window kill)) - (message "[yas] Snippet \"%s\" loaded for %s." - (yas/template-name yas/editing-template) - (yas/table-name (yas/template-table yas/editing-template)))) - - -(defun yas/tryout-snippet (&optional debug) - "Test current buffers's snippet template in other buffer." - (interactive "P") - (let* ((major-mode-and-parent (yas/compute-major-mode-and-parents buffer-file-name)) - (parsed (yas/parse-template)) - (test-mode (or (and (car major-mode-and-parent) - (fboundp (car major-mode-and-parent)) - (car major-mode-and-parent)) - (first yas/guessed-modes) - (intern (read-from-minibuffer "[yas] please input a mode: ")))) - (yas/current-template - (and parsed - (fboundp test-mode) - (yas/populate-template (yas/make-blank-template) - :table nil ;; no tables for ephemeral snippets - :key (first parsed) - :content (second parsed) - :name (third parsed) - :expand-env (sixth parsed))))) - (cond (yas/current-template - (let ((buffer-name (format "*testing snippet: %s*" (yas/template-name yas/current-template)))) - (kill-buffer (get-buffer-create buffer-name)) - (switch-to-buffer (get-buffer-create buffer-name)) - (setq buffer-undo-list nil) - (condition-case nil (funcall test-mode) (error nil)) - (yas/expand-snippet (yas/template-content yas/current-template) - (point-min) - (point-max) - (yas/template-expand-env yas/current-template)) - (when (and debug - (require 'yasnippet-debug nil t)) - (add-hook 'post-command-hook 'yas/debug-snippet-vars 't 'local)))) - (t - (message "[yas] Cannot test snippet for unknown major mode"))))) - -(defun yas/template-fine-group (template) - (car (last (or (yas/template-group template) - (yas/template-perm-group template))))) - -(defun yas/describe-tables (&optional choose) - "Display snippets for each table." - (interactive "P") - (let* ((by-name-hash (and choose - (y-or-n-p "Show by namehash? "))) - (buffer (get-buffer-create "*YASnippet tables*")) - (active-tables (yas/get-snippet-tables)) - (remain-tables (let ((all)) - (maphash #'(lambda (k v) - (unless (find v active-tables) - (push v all))) - yas/tables) - all)) - (table-lists (list active-tables remain-tables)) - (original-buffer (current-buffer)) - (continue t) - (yas/condition-cache-timestamp (current-time))) - (with-current-buffer buffer - (setq buffer-read-only nil) - (erase-buffer) - (cond ((not by-name-hash) - (insert "YASnippet tables: \n") - (while (and table-lists - continue) - (dolist (table (car table-lists)) - (yas/describe-pretty-table table original-buffer)) - (setq table-lists (cdr table-lists)) - (when table-lists - (yas/create-snippet-xrefs) - (display-buffer buffer) - (setq continue (and choose (y-or-n-p "Show also non-active tables? "))))) - (yas/create-snippet-xrefs) - (help-mode) - (goto-char 1)) - (t - (insert "\n\nYASnippet tables by NAMEHASH: \n") - (dolist (table (append active-tables remain-tables)) - (insert (format "\nSnippet table `%s':\n\n" (yas/table-name table))) - (let ((keys)) - (maphash #'(lambda (k v) - (push k keys)) - (yas/table-hash table)) - (dolist (key keys) - (insert (format " key %s maps snippets: %s\n" key - (let ((names)) - (maphash #'(lambda (k v) - (push k names)) - (gethash key (yas/table-hash table))) - names)))))))) - (goto-char 1) - (setq buffer-read-only t)) - (display-buffer buffer))) - -(defun yas/describe-pretty-table (table &optional original-buffer) - (insert (format "\nSnippet table `%s'" - (yas/table-name table))) - (if (yas/table-parents table) - (insert (format " parents: %s\n" - (mapcar #'yas/table-name - (yas/table-parents table)))) - (insert "\n")) - (insert (make-string 100 ?-) "\n") - (insert "group state name key binding\n") - (let ((groups-alist (list)) - group) - (maphash #'(lambda (k v) - (setq group (or (yas/template-fine-group v) - "(top level)")) - (when (yas/template-name v) - - (aput 'groups-alist group (cons v (aget groups-alist group))))) - (yas/table-uuidhash table)) - (dolist (group-and-templates groups-alist) - (when (rest group-and-templates) - (setq group (truncate-string-to-width (car group-and-templates) 25 0 ? "...")) - (insert (make-string 100 ?-) "\n") - (dolist (p (cdr group-and-templates)) - (let ((name (truncate-string-to-width (propertize (format "\\\\snippet `%s'" (yas/template-name p)) - 'yasnippet p) - 50 0 ? "...")) - (group (prog1 group - (setq group (make-string (length group) ? )))) - (condition-string (let ((condition (yas/template-condition p))) - (if (and condition - original-buffer) - (with-current-buffer original-buffer - (if (yas/eval-condition condition) - "(y)" - "(s)")) - "(a)")))) - (insert group " ") - (insert condition-string " ") - (insert name - (if (string-match "\\.\\.\\.$" name) - "'" - " ") - " ") - (insert (truncate-string-to-width (or (yas/template-key p) "") - 15 0 ? "...") " ") - (insert (truncate-string-to-width (key-description (yas/template-keybinding p)) - 15 0 ? "...") " ") - (insert "\n"))))))) - - - - - -;;; User convenience functions, for using in snippet definitions - -(defvar yas/modified-p nil - "Non-nil if field has been modified by user or transformation.") - -(defvar yas/moving-away-p nil - "Non-nil if user is about to exit field.") - -(defvar yas/text nil - "Contains current field text.") - -(defun yas/substr (str pattern &optional subexp) - "Search PATTERN in STR and return SUBEXPth match. - -If found, the content of subexp group SUBEXP (default 0) is - returned, or else the original STR will be returned." - (let ((grp (or subexp 0))) - (save-match-data - (if (string-match pattern str) - (match-string-no-properties grp str) - str)))) - -(defun yas/choose-value (possibilities) - "Prompt for a string in the list POSSIBILITIES and return it." - (unless (or yas/moving-away-p - yas/modified-p) - (some #'(lambda (fn) - (funcall fn "Choose: " possibilities)) - yas/prompt-functions))) - -(defun yas/key-to-value (alist) - "Prompt for a string in the list POSSIBILITIES and return it." - (unless (or yas/moving-away-p - yas/modified-p) - (let ((key (read-key-sequence ""))) - (when (stringp key) - (or (cdr (find key alist :key #'car :test #'string=)) - key))))) - -(defun yas/throw (text) - "Throw a yas/exception with TEXT as the reason." - (throw 'yas/exception (cons 'yas/exception text))) - -(defun yas/verify-value (possibilities) - "Verify that the current field value is in POSSIBILITIES - -Otherwise throw exception." - (when (and yas/moving-away-p (notany #'(lambda (pos) (string= pos yas/text)) possibilities)) - (yas/throw (format "[yas] field only allows %s" possibilities)))) - -(defun yas/field-value (number) - "Get the string for field with NUMBER. - -Use this in primary and mirror transformations to tget." - (let* ((snippet (car (yas/snippets-at-point))) - (field (and snippet - (yas/snippet-find-field snippet number)))) - (when field - (yas/field-text-for-display field)))) - -(defun yas/text () - "Return `yas/text' if that exists and is non-empty, else nil." - (if (and yas/text - (not (string= "" yas/text))) - yas/text)) - -;; (defun yas/selected-text () -;; "Return `yas/selected-text' if that exists and is non-empty, else nil." -;; (if (and yas/selected-text -;; (not (string= "" yas/selected-text))) -;; yas/selected-text)) - -(defun yas/get-field-once (number &optional transform-fn) - (unless yas/modified-p - (if transform-fn - (funcall transform-fn (yas/field-value number)) - (yas/field-value number)))) - -(defun yas/default-from-field (number) - (unless yas/modified-p - (yas/field-value number))) - -(defun yas/inside-string () - (equal 'font-lock-string-face (get-char-property (1- (point)) 'face))) - -(defun yas/unimplemented () - (if yas/current-template - (if (y-or-n-p "This snippet is unimplemented. Visit the snippet definition? ") - (yas/visit-snippet-file-1 yas/current-template)) - (message "No implementation."))) - - -;;; Snippet expansion and field management - -(defvar yas/active-field-overlay nil - "Overlays the currently active field.") - -(defvar yas/field-protection-overlays nil - "Two overlays protect the current active field ") - -(defconst yas/prefix nil - "A prefix argument for expansion direct from keybindings") - -(defvar yas/deleted-text nil - "The text deleted in the last snippet expansion.") - -(defvar yas/selected-text nil - "The selected region deleted on the last snippet expansion.") - -(defvar yas/start-column nil - "The column where the snippet expansion started.") - -(make-variable-buffer-local 'yas/active-field-overlay) -(make-variable-buffer-local 'yas/field-protection-overlays) -(make-variable-buffer-local 'yas/deleted-text) - -(defstruct (yas/snippet (:constructor yas/make-snippet ())) - "A snippet. - -..." - (fields '()) - (exit nil) - (id (yas/snippet-next-id) :read-only t) - (control-overlay nil) - active-field - ;; stacked expansion: the `previous-active-field' slot saves the - ;; active field where the child expansion took place - previous-active-field - force-exit) - -(defstruct (yas/field (:constructor yas/make-field (number start end parent-field))) - "A field." - number - start end - parent-field - (mirrors '()) - (transform nil) - (modified-p nil) - next) - -(defstruct (yas/mirror (:constructor yas/make-mirror (start end transform))) - "A mirror." - start end - (transform nil) - parent-field - next) - -(defstruct (yas/exit (:constructor yas/make-exit (marker))) - marker - next) - -(defun yas/apply-transform (field-or-mirror field &optional empty-on-nil-p) - "Calculate transformed string for FIELD-OR-MIRROR from FIELD. - -If there is no transform for ht field, return nil. - -If there is a transform but it returns nil, return the empty -string iff EMPTY-ON-NIL-P is true." - (let* ((yas/text (yas/field-text-for-display field)) - (text yas/text) - (yas/modified-p (yas/field-modified-p field)) - (yas/moving-away-p nil) - (transform (if (yas/mirror-p field-or-mirror) - (yas/mirror-transform field-or-mirror) - (yas/field-transform field-or-mirror))) - (start-point (if (yas/mirror-p field-or-mirror) - (yas/mirror-start field-or-mirror) - (yas/field-start field-or-mirror))) - (transformed (and transform - (save-excursion - (goto-char start-point) - (let ((ret (yas/eval-lisp transform))) - (or ret (and empty-on-nil-p ""))))))) - transformed)) - -(defsubst yas/replace-all (from to &optional text) - "Replace all occurance from FROM to TO. - -With optional string TEXT do it in that string." - (if text - (replace-regexp-in-string (regexp-quote from) to text t t) - (goto-char (point-min)) - (while (search-forward from nil t) - (replace-match to t t text)))) - -(defun yas/snippet-find-field (snippet number) - (find-if #'(lambda (field) - (eq number (yas/field-number field))) - (yas/snippet-fields snippet))) - -(defun yas/snippet-sort-fields (snippet) - "Sort the fields of SNIPPET in navigation order." - (setf (yas/snippet-fields snippet) - (sort (yas/snippet-fields snippet) - #'yas/snippet-field-compare))) - -(defun yas/snippet-field-compare (field1 field2) - "Compare two fields. The field with a number is sorted first. -If they both have a number, compare through the number. If neither -have, compare through the field's start point" - (let ((n1 (yas/field-number field1)) - (n2 (yas/field-number field2))) - (if n1 - (if n2 - (or (zerop n2) (and (not (zerop n1)) - (< n1 n2))) - (not (zerop n1))) - (if n2 - (zerop n2) - (< (yas/field-start field1) - (yas/field-start field2)))))) - -(defun yas/field-probably-deleted-p (snippet field) - "Guess if SNIPPET's FIELD should be skipped." - (and (zerop (- (yas/field-start field) (yas/field-end field))) - (or (yas/field-parent-field field) - (and (eq field (car (last (yas/snippet-fields snippet)))) - (= (yas/field-start field) (overlay-end (yas/snippet-control-overlay snippet))))) - ;; the field numbered 0, just before the exit marker, should - ;; never be skipped - (not (zerop (yas/field-number field))))) - -(defun yas/snippets-at-point (&optional all-snippets) - "Return a sorted list of snippets at point, most recently -inserted first." - (sort - (remove nil (remove-duplicates (mapcar #'(lambda (ov) - (overlay-get ov 'yas/snippet)) - (if all-snippets - (overlays-in (point-min) (point-max)) - (overlays-at (point)))))) - #'(lambda (s1 s2) - (<= (yas/snippet-id s2) (yas/snippet-id s1))))) - -(defun yas/next-field-or-maybe-expand () - "Try to expand a snippet at a key before point, otherwise -delegate to `yas/next-field'." - (interactive) - (if yas/triggers-in-field - (let ((yas/fallback-behavior 'return-nil) - (active-field (overlay-get yas/active-field-overlay 'yas/field))) - (when active-field - (unless (yas/expand-from-trigger-key active-field) - (yas/next-field)))) - (yas/next-field))) - -(defun yas/next-field (&optional arg) - "Navigate to next field. If there's none, exit the snippet." - (interactive) - (let* ((arg (or arg - 1)) - (snippet (first (yas/snippets-at-point))) - (active-field (overlay-get yas/active-field-overlay 'yas/field)) - (live-fields (remove-if #'(lambda (field) - (and (not (eq field active-field)) - (yas/field-probably-deleted-p snippet field))) - (yas/snippet-fields snippet))) - (active-field-pos (position active-field live-fields)) - (target-pos (and active-field-pos (+ arg active-field-pos))) - (target-field (nth target-pos live-fields))) - ;; First check if we're moving out of a field with a transform - ;; - (when (and active-field - (yas/field-transform active-field)) - (let* ((yas/moving-away-p t) - (yas/text (yas/field-text-for-display active-field)) - (text yas/text) - (yas/modified-p (yas/field-modified-p active-field))) - ;; primary field transform: exit call to field-transform - (yas/eval-lisp (yas/field-transform active-field)))) - ;; Now actually move... - (cond ((>= target-pos (length live-fields)) - (yas/exit-snippet snippet)) - (target-field - (yas/move-to-field snippet target-field)) - (t - nil)))) - -(defun yas/place-overlays (snippet field) - "Correctly place overlays for SNIPPET's FIELD" - (yas/make-move-field-protection-overlays snippet field) - (yas/make-move-active-field-overlay snippet field)) - -(defun yas/move-to-field (snippet field) - "Update SNIPPET to move to field FIELD. - -Also create some protection overlays" - (goto-char (yas/field-start field)) - (yas/place-overlays snippet field) - (overlay-put yas/active-field-overlay 'yas/field field) - (let ((number (yas/field-number field))) - ;; check for the special ${0: ...} field - (if (and number (zerop number)) - (progn - (set-mark (yas/field-end field)) - (setf (yas/snippet-force-exit snippet) - (or (yas/field-transform field) - t))) - ;; make this field active - (setf (yas/snippet-active-field snippet) field) - ;; primary field transform: first call to snippet transform - (unless (yas/field-modified-p field) - (if (yas/field-update-display field snippet) - (let ((inhibit-modification-hooks t)) - (yas/update-mirrors snippet)) - (setf (yas/field-modified-p field) nil)))))) - -(defun yas/prev-field () - "Navigate to prev field. If there's none, exit the snippet." - (interactive) - (yas/next-field -1)) - -(defun yas/abort-snippet (&optional snippet) - (interactive) - (let ((snippet (or snippet - (car (yas/snippets-at-point))))) - (when snippet - (setf (yas/snippet-force-exit snippet) t)))) - -(defun yas/exit-snippet (snippet) - "Goto exit-marker of SNIPPET." - (interactive) - (setf (yas/snippet-force-exit snippet) t) - (goto-char (if (yas/snippet-exit snippet) - (yas/exit-marker (yas/snippet-exit snippet)) - (overlay-end (yas/snippet-control-overlay snippet))))) - -(defun yas/exit-all-snippets () - "Exit all snippets." - (interactive) - (mapc #'(lambda (snippet) - (yas/exit-snippet snippet) - (yas/check-commit-snippet)) - (yas/snippets-at-point))) - - -;;; Some low level snippet-routines - -(defun yas/commit-snippet (snippet) - "Commit SNIPPET, but leave point as it is. This renders the -snippet as ordinary text. - -Return a buffer position where the point should be placed if -exiting the snippet. - -NO-HOOKS means don't run the `yas/after-exit-snippet-hook' hooks." - - (let ((control-overlay (yas/snippet-control-overlay snippet)) - yas/snippet-beg - yas/snippet-end) - ;; - ;; Save the end of the moribund snippet in case we need to revive it - ;; its original expansion. - ;; - (when (and control-overlay - (overlay-buffer control-overlay)) - (setq yas/snippet-beg (overlay-start control-overlay)) - (setq yas/snippet-end (overlay-end control-overlay)) - (delete-overlay control-overlay)) - - (let ((inhibit-modification-hooks t)) - (when yas/active-field-overlay - (delete-overlay yas/active-field-overlay)) - (when yas/field-protection-overlays - (mapc #'delete-overlay yas/field-protection-overlays))) - - ;; stacked expansion: if the original expansion took place from a - ;; field, make sure we advance it here at least to - ;; `yas/snippet-end'... - ;; - (let ((previous-field (yas/snippet-previous-active-field snippet))) - (when (and yas/snippet-end previous-field) - (yas/advance-end-maybe previous-field yas/snippet-end))) - - ;; Convert all markers to points, - ;; - (yas/markers-to-points snippet) - - ;; Take care of snippet revival - ;; - (if yas/snippet-revival - (push `(apply yas/snippet-revive ,yas/snippet-beg ,yas/snippet-end ,snippet) - buffer-undo-list) - ;; Dismember the snippet... this is useful if we get called - ;; again from `yas/take-care-of-redo'.... - (setf (yas/snippet-fields snippet) nil))) - - (message "[yas] snippet %s exited." (yas/snippet-id snippet))) - -(defun yas/check-commit-snippet () - "Checks if point exited the currently active field of the -snippet, if so cleans up the whole snippet up." - (let* ((snippets (yas/snippets-at-point 'all-snippets)) - (snippets-left snippets) - (snippet-exit-transform)) - (dolist (snippet snippets) - (let ((active-field (yas/snippet-active-field snippet))) - (setq snippet-exit-transform (yas/snippet-force-exit snippet)) - (cond ((or snippet-exit-transform - (not (and active-field (yas/field-contains-point-p active-field)))) - (setq snippets-left (delete snippet snippets-left)) - (setf (yas/snippet-force-exit snippet) nil) - (yas/commit-snippet snippet)) - ((and active-field - (or (not yas/active-field-overlay) - (not (overlay-buffer yas/active-field-overlay)))) - ;; - ;; stacked expansion: this case is mainly for recent - ;; snippet exits that place us back int the field of - ;; another snippet - ;; - (save-excursion - (yas/move-to-field snippet active-field) - (yas/update-mirrors snippet))) - (t - nil)))) - (unless snippets-left - (remove-hook 'post-command-hook 'yas/post-command-handler 'local) - (remove-hook 'pre-command-hook 'yas/pre-command-handler 'local) - (if snippet-exit-transform - (yas/eval-lisp-no-saves snippet-exit-transform) - (run-hooks 'yas/after-exit-snippet-hook))))) - -;; Apropos markers-to-points: -;; -;; This was found useful for performance reasons, so that an -;; excessive number of live markers aren't kept around in the -;; `buffer-undo-list'. However, in `markers-to-points', the -;; set-to-nil markers can't simply be discarded and replaced with -;; fresh ones in `points-to-markers'. The original marker that was -;; just set to nil has to be reused. -;; -;; This shouldn't bring horrible problems with undo/redo, but it -;; you never know -;; -(defun yas/markers-to-points (snippet) - "Convert all markers in SNIPPET to a cons (POINT . MARKER) -where POINT is the original position of the marker and MARKER is -the original marker object with the position set to nil." - (dolist (field (yas/snippet-fields snippet)) - (let ((start (marker-position (yas/field-start field))) - (end (marker-position (yas/field-end field)))) - (set-marker (yas/field-start field) nil) - (set-marker (yas/field-end field) nil) - (setf (yas/field-start field) (cons start (yas/field-start field))) - (setf (yas/field-end field) (cons end (yas/field-end field)))) - (dolist (mirror (yas/field-mirrors field)) - (let ((start (marker-position (yas/mirror-start mirror))) - (end (marker-position (yas/mirror-end mirror)))) - (set-marker (yas/mirror-start mirror) nil) - (set-marker (yas/mirror-end mirror) nil) - (setf (yas/mirror-start mirror) (cons start (yas/mirror-start mirror))) - (setf (yas/mirror-end mirror) (cons end (yas/mirror-end mirror)))))) - (let ((snippet-exit (yas/snippet-exit snippet))) - (when snippet-exit - (let ((exit (marker-position (yas/exit-marker snippet-exit)))) - (set-marker (yas/exit-marker snippet-exit) nil) - (setf (yas/exit-marker snippet-exit) (cons exit (yas/exit-marker snippet-exit))))))) - -(defun yas/points-to-markers (snippet) - "Convert all cons (POINT . MARKER) in SNIPPET to markers. This -is done by setting MARKER to POINT with `set-marker'." - (dolist (field (yas/snippet-fields snippet)) - (setf (yas/field-start field) (set-marker (cdr (yas/field-start field)) - (car (yas/field-start field)))) - (setf (yas/field-end field) (set-marker (cdr (yas/field-end field)) - (car (yas/field-end field)))) - (dolist (mirror (yas/field-mirrors field)) - (setf (yas/mirror-start mirror) (set-marker (cdr (yas/mirror-start mirror)) - (car (yas/mirror-start mirror)))) - (setf (yas/mirror-end mirror) (set-marker (cdr (yas/mirror-end mirror)) - (car (yas/mirror-end mirror)))))) - (let ((snippet-exit (yas/snippet-exit snippet))) - (when snippet-exit - (setf (yas/exit-marker snippet-exit) (set-marker (cdr (yas/exit-marker snippet-exit)) - (car (yas/exit-marker snippet-exit))))))) - -(defun yas/field-contains-point-p (field &optional point) - (let ((point (or point - (point)))) - (and (>= point (yas/field-start field)) - (<= point (yas/field-end field))))) - -(defun yas/field-text-for-display (field) - "Return the propertized display text for field FIELD. " - (buffer-substring (yas/field-start field) (yas/field-end field))) - -(defun yas/undo-in-progress () - "True if some kind of undo is in progress" - (or undo-in-progress - (eq this-command 'undo) - (eq this-command 'redo))) - -(defun yas/make-control-overlay (snippet start end) - "Creates the control overlay that surrounds the snippet and -holds the keymap." - (let ((overlay (make-overlay start - end - nil - nil - t))) - (overlay-put overlay 'keymap yas/keymap) - (overlay-put overlay 'yas/snippet snippet) - overlay)) - -(defun yas/skip-and-clear-or-delete-char (&optional field) - "Clears unmodified field if at field start, skips to next tab. - -Otherwise deletes a character normally by calling `delete-char'." - (interactive) - (let ((field (or field - (and yas/active-field-overlay - (overlay-buffer yas/active-field-overlay) - (overlay-get yas/active-field-overlay 'yas/field))))) - (cond ((and field - (not (yas/field-modified-p field)) - (eq (point) (marker-position (yas/field-start field)))) - (yas/skip-and-clear field) - (yas/next-field 1)) - (t - (call-interactively 'delete-char))))) - -(defun yas/skip-and-clear (field) - "Deletes the region of FIELD and sets it modified state to t" - ;; Just before skipping-and-clearing the field, mark its children - ;; fields as modified, too. If the childen have mirrors-in-fields - ;; this prevents them from updating erroneously (we're skipping and - ;; deleting!). - ;; - (yas/mark-this-and-children-modified field) - (delete-region (yas/field-start field) (yas/field-end field))) - -(defun yas/mark-this-and-children-modified (field) - (setf (yas/field-modified-p field) t) - (let ((fom (yas/field-next field))) - (while (and fom - (yas/fom-parent-field fom)) - (when (and (eq (yas/fom-parent-field fom) field) - (yas/field-p fom)) - (yas/mark-this-and-children-modified fom)) - (setq fom (yas/fom-next fom))))) - -(defun yas/make-move-active-field-overlay (snippet field) - "Place the active field overlay in SNIPPET's FIELD. - -Move the overlay, or create it if it does not exit." - (if (and yas/active-field-overlay - (overlay-buffer yas/active-field-overlay)) - (move-overlay yas/active-field-overlay - (yas/field-start field) - (yas/field-end field)) - (setq yas/active-field-overlay - (make-overlay (yas/field-start field) - (yas/field-end field) - nil nil t)) - (overlay-put yas/active-field-overlay 'priority 100) - (overlay-put yas/active-field-overlay 'face 'yas/field-highlight-face) - (overlay-put yas/active-field-overlay 'yas/snippet snippet) - (overlay-put yas/active-field-overlay 'modification-hooks '(yas/on-field-overlay-modification)) - (overlay-put yas/active-field-overlay 'insert-in-front-hooks - '(yas/on-field-overlay-modification)) - (overlay-put yas/active-field-overlay 'insert-behind-hooks - '(yas/on-field-overlay-modification)))) - -(defun yas/on-field-overlay-modification (overlay after? beg end &optional length) - "Clears the field and updates mirrors, conditionally. - -Only clears the field if it hasn't been modified and it point it -at field start. This hook doesn't do anything if an undo is in -progress." - (unless (yas/undo-in-progress) - (let* ((field (overlay-get yas/active-field-overlay 'yas/field)) - (number (and field (yas/field-number field))) - (snippet (overlay-get yas/active-field-overlay 'yas/snippet))) - (cond (after? - (yas/advance-end-maybe field (overlay-end overlay)) - (let ((saved-point (point))) - (yas/field-update-display field (car (yas/snippets-at-point))) - (goto-char saved-point)) - (yas/update-mirrors (car (yas/snippets-at-point)))) - (field - (when (and (not after?) - (not (yas/field-modified-p field)) - (eq (point) (if (markerp (yas/field-start field)) - (marker-position (yas/field-start field)) - (yas/field-start field)))) - (yas/skip-and-clear field)) - (setf (yas/field-modified-p field) t)))))) - -;;; Apropos protection overlays: -;; -;; These exist for nasty users who will try to delete parts of the -;; snippet outside the active field. Actual protection happens in -;; `yas/on-protection-overlay-modification'. -;; -;; Currently this signals an error which inhibits the command. For -;; commands that move point (like `kill-line'), point is restored in -;; the `yas/post-command-handler' using a global -;; `yas/protection-violation' variable. -;; -;; Alternatively, I've experimented with an implementation that -;; commits the snippet before actually calling `this-command' -;; interactively, and then signals an eror, which is ignored. but -;; blocks all other million modification hooks. This presented some -;; problems with stacked expansion. -;; - -(defun yas/make-move-field-protection-overlays (snippet field) - "Place protection overlays surrounding SNIPPET's FIELD. - -Move the overlays, or create them if they do not exit." - (let ((start (yas/field-start field)) - (end (yas/field-end field))) - ;; First check if the (1+ end) is contained in the buffer, - ;; otherwise we'll have to do a bit of cheating and silently - ;; insert a newline. the `(1+ (buffer-size))' should prevent this - ;; when using stacked expansion - ;; - (when (< (buffer-size) end) - (save-excursion - (let ((inhibit-modification-hooks t)) - (goto-char (point-max)) - (newline)))) - ;; go on to normal overlay creation/moving - ;; - (cond ((and yas/field-protection-overlays - (every #'overlay-buffer yas/field-protection-overlays)) - (move-overlay (first yas/field-protection-overlays) (1- start) start) - (move-overlay (second yas/field-protection-overlays) end (1+ end))) - (t - (setq yas/field-protection-overlays - (list (make-overlay (1- start) start nil t nil) - (make-overlay end (1+ end) nil t nil))) - (dolist (ov yas/field-protection-overlays) - (overlay-put ov 'face 'yas/field-debug-face) - (overlay-put ov 'yas/snippet snippet) - ;; (overlay-put ov 'evaporate t) - (overlay-put ov 'modification-hooks '(yas/on-protection-overlay-modification))))))) - -(defvar yas/protection-violation nil - "When non-nil, signals attempts to erronesly exit or modify the snippet. - -Functions in the `post-command-hook', for example -`yas/post-command-handler' can check it and reset its value to -nil. The variables value is the point where the violation -originated") - -(defun yas/on-protection-overlay-modification (overlay after? beg end &optional length) - "Signals a snippet violation, then issues error. - -The error should be ignored in `debug-ignored-errors'" - (cond ((not (or after? - (yas/undo-in-progress))) - (setq yas/protection-violation (point)) - (error "Exit the snippet first!")))) - -(add-to-list 'debug-ignored-errors "^Exit the snippet first!$") - - -;;; Apropos stacked expansion: -;; -;; the parent snippet does not run its fields modification hooks -;; (`yas/on-field-overlay-modification' and -;; `yas/on-protection-overlay-modification') while the child snippet -;; is active. This means, among other things, that the mirrors of the -;; parent snippet are not updated, this only happening when one exits -;; the child snippet. -;; -;; Unfortunately, this also puts some ugly (and not fully-tested) -;; bits of code in `yas/expand-snippet' and -;; `yas/commit-snippet'. I've tried to mark them with "stacked -;; expansion:". -;; -;; This was thought to be safer in in an undo/redo perpective, but -;; maybe the correct implementation is to make the globals -;; `yas/active-field-overlay' and `yas/field-protection-overlays' be -;; snippet-local and be active even while the child snippet is -;; running. This would mean a lot of overlay modification hooks -;; running, but if managed correctly (including overlay priorities) -;; they should account for all situations... -;; - -(defun yas/expand-snippet (content &optional start end expand-env) - "Expand snippet CONTENT at current point. - -Text between START and END will be deleted before inserting -template. EXPAND-ENV is are let-style variable to value bindings -considered when expanding the snippet." - (run-hooks 'yas/before-expand-snippet-hook) - - ;; If a region is active, set `yas/selected-text' - (setq yas/selected-text - (when (region-active-p) - (prog1 (buffer-substring-no-properties (region-beginning) - (region-end)) - (unless start (setq start (region-beginning)) - (unless end (setq end (region-end))))))) - - (when start - (goto-char start)) - - ;; - (let ((to-delete (and start end (buffer-substring-no-properties start end))) - (start (or start (point))) - (end (or end (point))) - snippet) - (setq yas/indent-original-column (current-column)) - ;; Delete the region to delete, this *does* get undo-recorded. - ;; - (when (and to-delete - (> end start)) - (delete-region start end) - (setq yas/deleted-text to-delete)) - - (cond ((listp content) - ;; x) This is a snippet-command - ;; - (yas/eval-lisp-no-saves content)) - (t - ;; x) This is a snippet-snippet :-) - ;; - ;; Narrow the region down to the content, shoosh the - ;; `buffer-undo-list', and create the snippet, the new - ;; snippet updates its mirrors once, so we are left with - ;; some plain text. The undo action for deleting this - ;; plain text will get recorded at the end. - ;; - ;; stacked expansion: also shoosh the overlay modification hooks - (save-restriction - (narrow-to-region start start) - (let ((inhibit-modification-hooks t) - (buffer-undo-list t)) - ;; snippet creation might evaluate users elisp, which - ;; might generate errors, so we have to be ready to catch - ;; them mostly to make the undo information - ;; - (setq yas/start-column (save-restriction (widen) (current-column))) - - (setq snippet - (if expand-env - (eval `(let ,expand-env - (insert content) - (yas/snippet-create (point-min) (point-max)))) - (insert content) - (yas/snippet-create (point-min) (point-max)))))) - - ;; stacked-expansion: This checks for stacked expansion, save the - ;; `yas/previous-active-field' and advance its boudary. - ;; - (let ((existing-field (and yas/active-field-overlay - (overlay-buffer yas/active-field-overlay) - (overlay-get yas/active-field-overlay 'yas/field)))) - (when existing-field - (setf (yas/snippet-previous-active-field snippet) existing-field) - (yas/advance-end-maybe existing-field (overlay-end yas/active-field-overlay)))) - - ;; Exit the snippet immediately if no fields - ;; - (unless (yas/snippet-fields snippet) - (yas/exit-snippet snippet)) - - ;; Push two undo actions: the deletion of the inserted contents of - ;; the new snippet (without the "key") followed by an apply of - ;; `yas/take-care-of-redo' on the newly inserted snippet boundaries - ;; - ;; A small exception, if `yas/also-auto-indent-first-line' - ;; is t and `yas/indent' decides to indent the line to a - ;; point before the actual expansion point, undo would be - ;; messed up. We call the early point "newstart"". case, - ;; and attempt to fix undo. - ;; - (let ((newstart (overlay-start (yas/snippet-control-overlay snippet))) - (end (overlay-end (yas/snippet-control-overlay snippet)))) - (when (< newstart start) - (push (cons (make-string (- start newstart) ? ) newstart) buffer-undo-list)) - (push (cons newstart end) buffer-undo-list) - (push `(apply yas/take-care-of-redo ,start ,end ,snippet) - buffer-undo-list)) - ;; Now, schedule a move to the first field - ;; - (let ((first-field (car (yas/snippet-fields snippet)))) - (when first-field - (sit-for 0) ;; fix issue 125 - (yas/move-to-field snippet first-field))) - (message "[yas] snippet expanded.") - t)))) - -(defun yas/take-care-of-redo (beg end snippet) - "Commits SNIPPET, which in turn pushes an undo action for -reviving it. - -Meant to exit in the `buffer-undo-list'." - ;; slightly optimize: this action is only needed for snippets with - ;; at least one field - (when (yas/snippet-fields snippet) - (yas/commit-snippet snippet))) - -(defun yas/snippet-revive (beg end snippet) - "Revives the SNIPPET and creates a control overlay from BEG to -END. - -BEG and END are, we hope, the original snippets boudaries. All -the markers/points exiting existing inside SNIPPET should point -to their correct locations *at the time the snippet is revived*. - -After revival, push the `yas/take-care-of-redo' in the -`buffer-undo-list'" - ;; Reconvert all the points to markers - ;; - (yas/points-to-markers snippet) - ;; When at least one editable field existed in the zombie snippet, - ;; try to revive the whole thing... - ;; - (let ((target-field (or (yas/snippet-active-field snippet) - (car (yas/snippet-fields snippet))))) - (when target-field - (setf (yas/snippet-control-overlay snippet) (yas/make-control-overlay snippet beg end)) - (overlay-put (yas/snippet-control-overlay snippet) 'yas/snippet snippet) - - (yas/move-to-field snippet target-field) - - (add-hook 'post-command-hook 'yas/post-command-handler nil t) - (add-hook 'pre-command-hook 'yas/pre-command-handler t t) - - (push `(apply yas/take-care-of-redo ,beg ,end ,snippet) - buffer-undo-list)))) - -(defun yas/snippet-create (begin end) - "Creates a snippet from an template inserted between BEGIN and END. - -Returns the newly created snippet." - (let ((snippet (yas/make-snippet))) - (goto-char begin) - (yas/snippet-parse-create snippet) - - ;; Sort and link each field - (yas/snippet-sort-fields snippet) - - ;; Create keymap overlay for snippet - (setf (yas/snippet-control-overlay snippet) - (yas/make-control-overlay snippet (point-min) (point-max))) - - ;; Move to end - (goto-char (point-max)) - - ;; Setup hooks - (add-hook 'post-command-hook 'yas/post-command-handler nil t) - (add-hook 'pre-command-hook 'yas/pre-command-handler t t) - - snippet)) - - -;;; Apropos adjacencies and "fom's": -;; -;; Once the $-constructs bits like "$n" and "${:n" are deleted in the -;; recently expanded snippet, we might actually have many fields, -;; mirrors (and the snippet exit) in the very same position in the -;; buffer. Therefore we need to single-link the -;; fields-or-mirrors-or-exit, which I have called "fom", according to -;; their original positions in the buffer. -;; -;; Then we have operation `yas/advance-end-maybe' and -;; `yas/advance-start-maybe', which conditionally push the starts and -;; ends of these foms down the chain. -;; -;; This allows for like the printf with the magic ",": -;; -;; printf ("${1:%s}\\n"${1:$(if (string-match "%" text) "," "\);")} \ -;; $2${1:$(if (string-match "%" text) "\);" "")}$0 -;; -(defun yas/fom-start (fom) - (cond ((yas/field-p fom) - (yas/field-start fom)) - ((yas/mirror-p fom) - (yas/mirror-start fom)) - (t - (yas/exit-marker fom)))) - -(defun yas/fom-end (fom) - (cond ((yas/field-p fom) - (yas/field-end fom)) - ((yas/mirror-p fom) - (yas/mirror-end fom)) - (t - (yas/exit-marker fom)))) - -(defun yas/fom-next (fom) - (cond ((yas/field-p fom) - (yas/field-next fom)) - ((yas/mirror-p fom) - (yas/mirror-next fom)) - (t - (yas/exit-next fom)))) - -(defun yas/fom-parent-field (fom) - (cond ((yas/field-p fom) - (yas/field-parent-field fom)) - ((yas/mirror-p fom) - (yas/mirror-parent-field fom)) - (t - nil))) - -(defun yas/calculate-adjacencies (snippet) - "Calculate adjacencies for fields or mirrors of SNIPPET. - -This is according to their relative positions in the buffer, and -has to be called before the $-constructs are deleted." - (flet ((yas/fom-set-next-fom (fom nextfom) - (cond ((yas/field-p fom) - (setf (yas/field-next fom) nextfom)) - ((yas/mirror-p fom) - (setf (yas/mirror-next fom) nextfom)) - (t - (setf (yas/exit-next fom) nextfom)))) - (yas/compare-fom-begs (fom1 fom2) - (if (= (yas/fom-start fom2) (yas/fom-start fom1)) - (yas/mirror-p fom2) - (>= (yas/fom-start fom2) (yas/fom-start fom1)))) - (yas/link-foms (fom1 fom2) - (yas/fom-set-next-fom fom1 fom2))) - ;; make some yas/field, yas/mirror and yas/exit soup - (let ((soup)) - (when (yas/snippet-exit snippet) - (push (yas/snippet-exit snippet) soup)) - (dolist (field (yas/snippet-fields snippet)) - (push field soup) - (dolist (mirror (yas/field-mirrors field)) - (push mirror soup))) - (setq soup - (sort soup - #'yas/compare-fom-begs)) - (when soup - (reduce #'yas/link-foms soup))))) - -(defun yas/calculate-mirrors-in-fields (snippet mirror) - "Attempt to assign a parent field of SNIPPET to the mirror MIRROR. - -Use the tighest containing field if more than one field contains -the mirror. Intended to be called *before* the dollar-regions are -deleted." - (let ((min (point-min)) - (max (point-max))) - (dolist (field (yas/snippet-fields snippet)) - (when (and (<= (yas/field-start field) (yas/mirror-start mirror)) - (<= (yas/mirror-end mirror) (yas/field-end field)) - (< min (yas/field-start field)) - (< (yas/field-end field) max)) - (setq min (yas/field-start field) - max (yas/field-end field)) - (setf (yas/mirror-parent-field mirror) field))))) - -(defun yas/advance-end-maybe (fom newend) - "Maybe advance FOM's end to NEWEND if it needs it. - -If it does, also: - -* call `yas/advance-start-maybe' on FOM's next fom. - -* in case FOM is field call `yas/advance-end-maybe' on its parent - field - -Also, if FOM is an exit-marker, always call -`yas/advance-start-maybe' on its next fom. This is beacuse -exit-marker have identical start and end markers. - -" - (cond ((and fom (< (yas/fom-end fom) newend)) - (set-marker (yas/fom-end fom) newend) - (yas/advance-start-maybe (yas/fom-next fom) newend) - (let ((parent (yas/fom-parent-field fom))) - (when parent - (yas/advance-end-maybe parent newend)))) - ((yas/exit-p fom) - (yas/advance-start-maybe (yas/fom-next fom) newend)))) - -(defun yas/advance-start-maybe (fom newstart) - "Maybe advance FOM's start to NEWSTART if it needs it. - -If it does, also call `yas/advance-end-maybe' on FOM." - (when (and fom (< (yas/fom-start fom) newstart)) - (set-marker (yas/fom-start fom) newstart) - (yas/advance-end-maybe fom newstart))) - -(defun yas/advance-end-of-parents-maybe (field newend) - "Like `yas/advance-end-maybe' but for parents." - (when (and field - (< (yas/field-end field) newend)) - (set-marker (yas/field-end field) newend) - (yas/advance-end-of-parents-maybe (yas/field-parent-field field) newend))) - -(defvar yas/dollar-regions nil - "When expanding the snippet the \"parse-create\" functions add - cons cells to this var") - -(defun yas/snippet-parse-create (snippet) - "Parse a recently inserted snippet template, creating all -necessary fields, mirrors and exit points. - -Meant to be called in a narrowed buffer, does various passes" - (let ((parse-start (point))) - ;; Reset the yas/dollar-regions - ;; - (setq yas/dollar-regions nil) - ;; protect escaped quote, backquotes and backslashes - ;; - (yas/protect-escapes nil '(?\\ ?` ?')) - ;; replace all backquoted expressions - ;; - (goto-char parse-start) - (yas/replace-backquotes) - ;; protect escapes again since previous steps might have generated - ;; more characters needing escaping - ;; - (goto-char parse-start) - (yas/protect-escapes) - ;; parse fields with {} - ;; - (goto-char parse-start) - (yas/field-parse-create snippet) - ;; parse simple mirrors and fields - ;; - (goto-char parse-start) - (yas/simple-mirror-parse-create snippet) - ;; parse mirror transforms - ;; - (goto-char parse-start) - (yas/transform-mirror-parse-create snippet) - ;; calculate adjacencies of fields and mirrors - ;; - (yas/calculate-adjacencies snippet) - ;; Delete $-constructs - ;; - (yas/delete-regions yas/dollar-regions) - ;; restore escapes - ;; - (goto-char parse-start) - (yas/restore-escapes) - ;; update mirrors for the first time - ;; - (yas/update-mirrors snippet) - ;; indent the best we can - ;; - (goto-char parse-start) - (yas/indent snippet))) - -(defun yas/indent-according-to-mode (snippet-markers) - "Indent current line according to mode, preserving -SNIPPET-MARKERS." - ;;; Apropos indenting problems.... - ;; - ;; `indent-according-to-mode' uses whatever `indent-line-function' - ;; is available. Some implementations of these functions delete text - ;; before they insert. If there happens to be a marker just after - ;; the text being deleted, the insertion actually happens after the - ;; marker, which misplaces it. - ;; - ;; This would also happen if we had used overlays with the - ;; `front-advance' property set to nil. - ;; - ;; This is why I have these `trouble-markers', they are the ones at - ;; they are the ones at the first non-whitespace char at the line - ;; (i.e. at `yas/real-line-beginning'. After indentation takes place - ;; we should be at the correct to restore them to. All other - ;; non-trouble-markers have been *pushed* and don't need special - ;; attention. - ;; - (goto-char (yas/real-line-beginning)) - (let ((trouble-markers (remove-if-not #'(lambda (marker) - (= marker (point))) - snippet-markers))) - (save-restriction - (widen) - (condition-case err - (indent-according-to-mode) - (error (message "[yas] warning: yas/indent-according-to-mode habing problems running %s" indent-line-function) - nil))) - (mapc #'(lambda (marker) - (set-marker marker (point))) - trouble-markers))) - -(defvar yas/indent-original-column nil) -(defun yas/indent (snippet) - (let ((snippet-markers (yas/collect-snippet-markers snippet))) - ;; Look for those $> - (save-excursion - (while (re-search-forward "$>" nil t) - (delete-region (match-beginning 0) (match-end 0)) - (when (not (eq yas/indent-line 'auto)) - (yas/indent-according-to-mode snippet-markers)))) - ;; Now do stuff for 'fixed and 'auto - (save-excursion - (cond ((eq yas/indent-line 'fixed) - (while (and (zerop (forward-line)) - (zerop (current-column))) - (indent-to-column yas/indent-original-column))) - ((eq yas/indent-line 'auto) - (let ((end (set-marker (make-marker) (point-max))) - (indent-first-line-p yas/also-auto-indent-first-line)) - (while (and (zerop (if indent-first-line-p - (prog1 - (forward-line 0) - (setq indent-first-line-p nil)) - (forward-line 1))) - (not (eobp)) - (<= (point) end)) - (yas/indent-according-to-mode snippet-markers)))) - (t - nil))))) - -(defun yas/collect-snippet-markers (snippet) - "Make a list of all the markers used by SNIPPET." - (let (markers) - (dolist (field (yas/snippet-fields snippet)) - (push (yas/field-start field) markers) - (push (yas/field-end field) markers) - (dolist (mirror (yas/field-mirrors field)) - (push (yas/mirror-start mirror) markers) - (push (yas/mirror-end mirror) markers))) - (let ((snippet-exit (yas/snippet-exit snippet))) - (when (and snippet-exit - (marker-buffer (yas/exit-marker snippet-exit))) - (push (yas/exit-marker snippet-exit) markers))) - markers)) - -(defun yas/real-line-beginning () - (let ((c (char-after (line-beginning-position))) - (n (line-beginning-position))) - (while (or (eql c ?\ ) - (eql c ?\t)) - (incf n) - (setq c (char-after n))) - n)) - -(defun yas/escape-string (escaped) - (concat "YASESCAPE" (format "%d" escaped) "PROTECTGUARD")) - -(defun yas/protect-escapes (&optional text escaped) - "Protect all escaped characters with their numeric ASCII value. - -With optional string TEXT do it in string instead of buffer." - (let ((changed-text text) - (text-provided-p text)) - (mapc #'(lambda (escaped) - (setq changed-text - (yas/replace-all (concat "\\" (char-to-string escaped)) - (yas/escape-string escaped) - (when text-provided-p changed-text)))) - (or escaped yas/escaped-characters)) - changed-text)) - -(defun yas/restore-escapes (&optional text escaped) - "Restore all escaped characters from their numeric ASCII value. - -With optional string TEXT do it in string instead of the buffer." - (let ((changed-text text) - (text-provided-p text)) - (mapc #'(lambda (escaped) - (setq changed-text - (yas/replace-all (yas/escape-string escaped) - (char-to-string escaped) - (when text-provided-p changed-text)))) - (or escaped yas/escaped-characters)) - changed-text)) - -(defun yas/replace-backquotes () - "Replace all the \"`(lisp-expression)`\"-style expression - with their evaluated value" - (while (re-search-forward yas/backquote-lisp-expression-regexp nil t) - (let ((current-string (match-string 1)) transformed) - (delete-region (match-beginning 0) (match-end 0)) - (setq transformed (yas/eval-lisp (yas/read-lisp (yas/restore-escapes current-string)))) - (goto-char (match-beginning 0)) - (when transformed (insert transformed))))) - -(defun yas/scan-sexps (from count) - (condition-case err - (with-syntax-table (standard-syntax-table) - (scan-sexps from count)) - (error - nil))) - -(defun yas/make-marker (pos) - "Create a marker at POS with `nil' `marker-insertion-type'" - (let ((marker (set-marker (make-marker) pos))) - (set-marker-insertion-type marker nil) - marker)) - -(defun yas/field-parse-create (snippet &optional parent-field) - "Parse most field expressions, except for the simple one \"$n\". - -The following count as a field: - -* \"${n: text}\", for a numbered field with default text, as long as N is not 0; - -* \"${n: text$(expression)}, the same with a lisp expression; - this is caught with the curiously named `yas/multi-dollar-lisp-expression-regexp' - -* the same as above but unnumbered, (no N:) and number is calculated automatically. - -When multiple expressions are found, only the last one counts." - ;; - (save-excursion - (while (re-search-forward yas/field-regexp nil t) - (let* ((real-match-end-0 (yas/scan-sexps (1+ (match-beginning 0)) 1)) - (number (and (match-string-no-properties 1) - (string-to-number (match-string-no-properties 1)))) - (brand-new-field (and real-match-end-0 - ;; break if on "$(" immediately - ;; after the ":", this will be - ;; caught as a mirror with - ;; transform later. - (not (save-match-data - (eq (string-match "$[ \t\n]*(" - (match-string-no-properties 2)) 0))) - ;; allow ${0: some exit text} - ;; (not (and number (zerop number))) - (yas/make-field number - (yas/make-marker (match-beginning 2)) - (yas/make-marker (1- real-match-end-0)) - parent-field)))) - (when brand-new-field - (goto-char real-match-end-0) - (push (cons (1- real-match-end-0) real-match-end-0) - yas/dollar-regions) - (push (cons (match-beginning 0) (match-beginning 2)) - yas/dollar-regions) - (push brand-new-field (yas/snippet-fields snippet)) - (save-excursion - (save-restriction - (narrow-to-region (yas/field-start brand-new-field) (yas/field-end brand-new-field)) - (goto-char (point-min)) - (yas/field-parse-create snippet brand-new-field))))))) - ;; if we entered from a parent field, now search for the - ;; `yas/multi-dollar-lisp-expression-regexp'. THis is used for - ;; primary field transformations - ;; - (when parent-field - (save-excursion - (while (re-search-forward yas/multi-dollar-lisp-expression-regexp nil t) - (let* ((real-match-end-1 (yas/scan-sexps (match-beginning 1) 1))) - ;; commit the primary field transformation if: - ;; - ;; 1. we don't find it in yas/dollar-regions (a subnested - ;; field) might have already caught it. - ;; - ;; 2. we really make sure we have either two '$' or some - ;; text and a '$' after the colon ':'. This is a FIXME: work - ;; my regular expressions and end these ugly hacks. - ;; - (when (and real-match-end-1 - (not (member (cons (match-beginning 0) - real-match-end-1) - yas/dollar-regions)) - (not (eq ?: - (char-before (1- (match-beginning 1)))))) - (let ((lisp-expression-string (buffer-substring-no-properties (match-beginning 1) - real-match-end-1))) - (setf (yas/field-transform parent-field) - (yas/read-lisp (yas/restore-escapes lisp-expression-string)))) - (push (cons (match-beginning 0) real-match-end-1) - yas/dollar-regions))))))) - -(defun yas/transform-mirror-parse-create (snippet) - "Parse the \"${n:$(lisp-expression)}\" mirror transformations." - (while (re-search-forward yas/transform-mirror-regexp nil t) - (let* ((real-match-end-0 (yas/scan-sexps (1+ (match-beginning 0)) 1)) - (number (string-to-number (match-string-no-properties 1))) - (field (and number - (not (zerop number)) - (yas/snippet-find-field snippet number))) - (brand-new-mirror - (and real-match-end-0 - field - (yas/make-mirror (yas/make-marker (match-beginning 0)) - (yas/make-marker (match-beginning 0)) - (yas/read-lisp - (yas/restore-escapes - (buffer-substring-no-properties (match-beginning 2) - (1- real-match-end-0)))))))) - (when brand-new-mirror - (push brand-new-mirror - (yas/field-mirrors field)) - (yas/calculate-mirrors-in-fields snippet brand-new-mirror) - (push (cons (match-beginning 0) real-match-end-0) yas/dollar-regions))))) - -(defun yas/simple-mirror-parse-create (snippet) - "Parse the simple \"$n\" fields/mirrors/exitmarkers." - (while (re-search-forward yas/simple-mirror-regexp nil t) - (let ((number (string-to-number (match-string-no-properties 1)))) - (cond ((zerop number) - - (setf (yas/snippet-exit snippet) - (yas/make-exit (yas/make-marker (match-end 0)))) - (save-excursion - (goto-char (match-beginning 0)) - (when yas/wrap-around-region - (cond (yas/selected-text - (insert yas/selected-text)) - ((and (eq yas/wrap-around-region 'cua) - cua-mode - (get-register ?0)) - (insert (prog1 (get-register ?0) - (set-register ?0 nil)))))) - (push (cons (point) (yas/exit-marker (yas/snippet-exit snippet))) - yas/dollar-regions))) - (t - (let ((field (yas/snippet-find-field snippet number))) - (if field - (let ((brand-new-mirror (yas/make-mirror - (yas/make-marker (match-beginning 0)) - (yas/make-marker (match-beginning 0)) - nil))) - (push brand-new-mirror - (yas/field-mirrors field)) - (yas/calculate-mirrors-in-fields snippet brand-new-mirror)) - (push (yas/make-field number - (yas/make-marker (match-beginning 0)) - (yas/make-marker (match-beginning 0)) - nil) - (yas/snippet-fields snippet)))) - (push (cons (match-beginning 0) (match-end 0)) - yas/dollar-regions)))))) - -(defun yas/delete-regions (regions) - "Sort disjuct REGIONS by start point, then delete from the back." - (mapc #'(lambda (reg) - (delete-region (car reg) (cdr reg))) - (sort regions - #'(lambda (r1 r2) - (>= (car r1) (car r2)))))) - -(defun yas/update-mirrors (snippet) - "Updates all the mirrors of SNIPPET." - (save-excursion - (let* ((fields (copy-list (yas/snippet-fields snippet))) - (field (car fields))) - (while field - (dolist (mirror (yas/field-mirrors field)) - ;; stacked expansion: I added an `inhibit-modification-hooks' - ;; here, for safety, may need to remove if we the mechanism is - ;; altered. - ;; - (let ((inhibit-modification-hooks t) - (mirror-parent-field (yas/mirror-parent-field mirror))) - ;; updatte this mirror - ;; - (yas/mirror-update-display mirror field) - ;; for mirrors-in-fields: schedule a possible - ;; parent field for reupdting later on - ;; - (when mirror-parent-field - (add-to-list 'fields mirror-parent-field 'append #'eq)) - ;; `yas/place-overlays' is needed if the active field and - ;; protected overlays have been changed because of insertions - ;; in `yas/mirror-update-display' - ;; - (when (eq field (yas/snippet-active-field snippet)) - (yas/place-overlays snippet field)))) - (setq fields (cdr fields)) - (setq field (car fields)))))) - -(defun yas/mirror-update-display (mirror field) - "Update MIRROR according to FIELD (and mirror transform)." - - (let* ((mirror-parent-field (yas/mirror-parent-field mirror)) - (reflection (and (not (and mirror-parent-field - (yas/field-modified-p mirror-parent-field))) - (or (yas/apply-transform mirror field 'empty-on-nil) - (yas/field-text-for-display field))))) - (when (and reflection - (not (string= reflection (buffer-substring-no-properties (yas/mirror-start mirror) - (yas/mirror-end mirror))))) - (goto-char (yas/mirror-start mirror)) - (insert reflection) - (if (> (yas/mirror-end mirror) (point)) - (delete-region (point) (yas/mirror-end mirror)) - (set-marker (yas/mirror-end mirror) (point)) - (yas/advance-start-maybe (yas/mirror-next mirror) (point)) - ;; super-special advance - (yas/advance-end-of-parents-maybe mirror-parent-field (point)))))) - -(defun yas/field-update-display (field snippet) - "Much like `yas/mirror-update-display', but for fields" - (when (yas/field-transform field) - (let ((inhibit-modification-hooks t) - (transformed (and (not (eq (yas/field-number field) 0)) - (yas/apply-transform field field))) - (point (point))) - (when (and transformed - (not (string= transformed (buffer-substring-no-properties (yas/field-start field) - (yas/field-end field))))) - (setf (yas/field-modified-p field) t) - (goto-char (yas/field-start field)) - (insert transformed) - (if (> (yas/field-end field) (point)) - (delete-region (point) (yas/field-end field)) - (set-marker (yas/field-end field) (point)) - (yas/advance-start-maybe (yas/field-next field) (point))) - t)))) - - -;;; Pre- and post-command hooks: - -(defvar yas/post-command-runonce-actions nil - "List of actions to run once `post-command-hook'. - -Each element of this list looks like (FN . ARGS) where FN is -called with ARGS as its arguments after the currently executing -snippet command. - -After all actions have been run, this list is emptied, and after -that the rest of `yas/post-command-handler' runs.") - -(defun yas/pre-command-handler () ) - -(defun yas/post-command-handler () - "Handles various yasnippet conditions after each command." - (when yas/post-command-runonce-actions - (condition-case err - (mapc #'(lambda (fn-and-args) - (apply (car fn-and-args) - (cdr fn-and-args))) - yas/post-command-runonce-actions) - (error (message "[yas] problem running `yas/post-command-runonce-actions'!"))) - (setq yas/post-command-runonce-actions nil)) - (cond (yas/protection-violation - (goto-char yas/protection-violation) - (setq yas/protection-violation nil)) - ((eq 'undo this-command) - ;; - ;; After undo revival the correct field is sometimes not - ;; restored correctly, this condition handles that - ;; - (let* ((snippet (car (yas/snippets-at-point))) - (target-field (and snippet - (find-if-not #'(lambda (field) - (yas/field-probably-deleted-p snippet field)) - (remove nil - (cons (yas/snippet-active-field snippet) - (yas/snippet-fields snippet))))))) - (when target-field - (yas/move-to-field snippet target-field)))) - ((not (yas/undo-in-progress)) - ;; When not in an undo, check if we must commit the snippet - ;; (user exited it). - (yas/check-commit-snippet)))) - -;;; Fancy docs: - -(put 'yas/expand 'function-documentation - '(yas/expand-from-trigger-key-doc)) -(defun yas/expand-from-trigger-key-doc () - "A doc synthethizer for `yas/expand-from-trigger-key-doc'." - (let ((fallback-description - (cond ((eq yas/fallback-behavior 'call-other-command) - (let* ((yas/minor-mode nil) - (fallback (key-binding (read-kbd-macro yas/trigger-key)))) - (or (and fallback - (format " call command `%s'." (pp-to-string fallback))) - " do nothing."))) - ((eq yas/fallback-behavior 'return-nil) - ", do nothing.") - (t - ", defer to `yas/fallback-behaviour' :-)")))) - (concat "Expand a snippet before point. If no snippet -expansion is possible," - fallback-description - "\n\nOptional argument FIELD is for non-interactive use and is an -object satisfying `yas/field-p' to restrict the expansion to."))) - -(put 'yas/expand-from-keymap 'function-documentation '(yas/expand-from-keymap-doc)) -(defun yas/expand-from-keymap-doc () - "A doc synthethizer for `yas/expand-from-keymap-doc'." - (add-hook 'temp-buffer-show-hook 'yas/snippet-description-finish-runonce) - (concat "Expand/run snippets from keymaps, possibly falling back to original binding.\n" - (when (eq this-command 'describe-key) - (let* ((vec (this-single-command-keys)) - (templates (mapcan #'(lambda (table) - (yas/fetch table vec)) - (yas/get-snippet-tables))) - (yas/direct-keymaps nil) - (fallback (key-binding vec))) - (concat "In this case, " - (when templates - (concat "these snippets are bound to this key:\n" - (yas/template-pretty-list templates) - "\n\nIf none of these expands, ")) - (or (and fallback - (format "fallback `%s' will be called." (pp-to-string fallback))) - "no fallback keybinding is called.")))))) - -(defun yas/template-pretty-list (templates) - (let ((acc) - (yas/buffer-local-condition 'always)) - (dolist (plate templates) - (setq acc (concat acc "\n*) " - (propertize (concat "\\\\snippet `" (car plate) "'") - 'yasnippet (cdr plate))))) - acc)) - -(define-button-type 'help-snippet-def - :supertype 'help-xref - 'help-function (lambda (template) (yas/visit-snippet-file-1 template)) - 'help-echo (purecopy "mouse-2, RET: find snippets's definition")) - -(defun yas/snippet-description-finish-runonce () - "Final adjustments for the help buffer when snippets are concerned." - (yas/create-snippet-xrefs) - (remove-hook 'temp-buffer-show-hook 'yas/snippet-description-finish-runonce)) - -(defun yas/create-snippet-xrefs () - (save-excursion - (goto-char (point-min)) - (while (search-forward-regexp "\\\\\\\\snippet[ \s\t]+`\\([^']+\\)'" nil t) - (let ((template (get-text-property (match-beginning 1) - 'yasnippet))) - (when template - (help-xref-button 1 'help-snippet-def template) - (kill-region (match-end 1) (match-end 0)) - (kill-region (match-beginning 0) (match-beginning 1))))))) - -(defun yas/expand-uuid (mode-symbol uuid &optional start end expand-env) - "Expand a snippet registered in MODE-SYMBOL's table with UUID. - -Remaining args as in `yas/expand-snippet'." - (let* ((table (gethash mode-symbol yas/tables)) - (yas/current-template (and table - (gethash uuid (yas/table-uuidhash table))))) - (when yas/current-template - (yas/expand-snippet (yas/template-content yas/current-template))))) - - -;;; Some hacks: -;; `locate-dominating-file' is added for compatibility in emacs < 23 -(unless (or (eq emacs-major-version 23) - (fboundp 'locate-dominating-file)) - (defvar locate-dominating-stop-dir-regexp - "\\`\\(?:[\\/][\\/][^\\/]+[\\/]\\|/\\(?:net\\|afs\\|\\.\\.\\.\\)/\\)\\'" - "Regexp of directory names which stop the search in `locate-dominating-file'. -Any directory whose name matches this regexp will be treated like -a kind of root directory by `locate-dominating-file' which will stop its search -when it bumps into it. -The default regexp prevents fruitless and time-consuming attempts to find -special files in directories in which filenames are interpreted as hostnames, -or mount points potentially requiring authentication as a different user.") - - (defun locate-dominating-file (file name) - "Look up the directory hierarchy from FILE for a file named NAME. -Stop at the first parent directory containing a file NAME, -and return the directory. Return nil if not found." - ;; We used to use the above locate-dominating-files code, but the - ;; directory-files call is very costly, so we're much better off doing - ;; multiple calls using the code in here. - ;; - ;; Represent /home/luser/foo as ~/foo so that we don't try to look for - ;; `name' in /home or in /. - (setq file (abbreviate-file-name file)) - (let ((root nil) - (prev-file file) - ;; `user' is not initialized outside the loop because - ;; `file' may not exist, so we may have to walk up part of the - ;; hierarchy before we find the "initial UUID". - (user nil) - try) - (while (not (or root - (null file) - ;; FIXME: Disabled this heuristic because it is sometimes - ;; inappropriate. - ;; As a heuristic, we stop looking up the hierarchy of - ;; directories as soon as we find a directory belonging - ;; to another user. This should save us from looking in - ;; things like /net and /afs. This assumes that all the - ;; files inside a project belong to the same user. - ;; (let ((prev-user user)) - ;; (setq user (nth 2 (file-attributes file))) - ;; (and prev-user (not (equal user prev-user)))) - (string-match locate-dominating-stop-dir-regexp file))) - (setq try (file-exists-p (expand-file-name name file))) - (cond (try (setq root file)) - ((equal file (setq prev-file file - file (file-name-directory - (directory-file-name file)))) - (setq file nil)))) - root))) - -;; `c-neutralize-syntax-in-CPP` sometimes fires "End of Buffer" error -;; (when it execute forward-char) and interrupt the after change -;; hook. Thus prevent the insert-behind hook of yasnippet to be -;; invoked. Here's a way to reproduce it: - -;; # open a *new* Emacs. -;; # load yasnippet. -;; # open a *new* .cpp file. -;; # input "inc" and press TAB to expand the snippet. -;; # select the `#include <...>` snippet. -;; # type inside `<>` - -(defadvice c-neutralize-syntax-in-CPP - (around yas-mp/c-neutralize-syntax-in-CPP activate) - "Adviced `c-neutralize-syntax-in-CPP' to properly -handle the end-of-buffer error fired in it by calling -`forward-char' at the end of buffer." - (condition-case err - ad-do-it - (error (message (error-message-string err))))) - -;; disable c-electric-* serial command in YAS fields -(add-hook 'c-mode-common-hook - '(lambda () - (dolist (k '(":" ">" ";" "<" "{" "}")) - (define-key (symbol-value (make-local-variable 'yas/keymap)) - k 'self-insert-command)))) - -(provide 'yasnippet) - -;;; yasnippet.el ends here From 2f9ac28af3e4c7f84df305ef019e209bc1618fb3 Mon Sep 17 00:00:00 2001 From: Raghunandan Ramakrishna Rao Date: Tue, 1 Mar 2016 15:43:35 -0800 Subject: [PATCH 2/2] fixed file load issue --- epy-init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/epy-init.el b/epy-init.el index cbf8b3f..1bf92b3 100644 --- a/epy-init.el +++ b/epy-init.el @@ -11,6 +11,7 @@ (add-to-list 'load-path epy-install-dir) (require 'epy-setup) (require 'epy-python) +(load-file (concat epy-install-dir "epy-completion.el")) (require 'epy-completion) (require 'epy-editing) (require 'epy-nose)

    =fbtOz<41=;4ukJ6`(h|4 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 diff --git a/extensions/yasnippet/doc/images/menu-1.png b/extensions/yasnippet/doc/images/menu-1.png deleted file mode 100644 index d2e6a5180d31e22c4a2b43b87227db08c8c7160c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68953 zcmX7v2RK{b|Hp&S(9pyTHIf)j?9tjIB8X5W#@F5yMQyFUYgL07RcbV5t47VLRkLQ5 zmfAInqG+w6`uBVO_j%59?zzwXoaedsIp^H>`MlmY(Li6Dk%5Z=001!R;BiC%fU4}W zsDP+1ufV+(e_U4d-gt9A0N^Ui{|Xf#HxG7s$5%HE4Fdz$`~LU+TGX&v`id|-WQi%KPogjcW^$=)$h(TTC8z!=bfAtu6fy1sD&`kU6_UGs;{ zp+;<)J-4s?qiKRKf6^(pl(pu@LAQj9;dq~N4U(Vy6HL+Dlg_IJ$L0&iVKxTq&)RoU zky{@Meg71jzLcx4@GRBwBj4OC{d~+}YWljaI&hI6u<$*%eb+$wx81R>P^}yH=_Ies zgZ{-#u=^ohf+*<+?iEc%L&9x%fW|2^jstH#U&^@5L}DBsL?)DB>R9&KNmj`xY^1pw zMdqF>@ZGN}*T`;5dGkLk3pXO2kHt912)pK=Zy5*wv-|RkhW-cG`>pAH*YUxaG4Bid z^3k5waER<3_29r|=k~7s*1hF#J+lglfS$zJzk&8l0H0NW-sksw{rvcMvHQo8+|}{l zs_zzhb)oDTqaUk1q~GVd_^d6bt@18SYNy{&9I$FHPtDR?-0jFCt@dpi_IlH9K?BXY zoFol|8{QghDItz8sSO3t?St9m=YE;K>;y|LGKrfw{QTf7<5CGDf2hSJI-DCt{*qO` zV(0&FWpu&3F2IOd^z~U&v`v{v1MOmvg}LX~H=`~MEurl__rb8Z7H2-Hn*R*|M?CR1 z0C3L%0PvRu0FLwkfT)AZ_8S0T^B4e-Yy|)~S@-V8GXtm?PIYkV#t&w;t%LGdHIE{y zD_ifn@LwNL(EgwkU5KJiil&zoNuqyKoM6720y7+bPQ@k=Q&>n{92qOP-n?op`-pzt znMh$MZk+!5-^=~o&R2WnX${s-zfZ-YOao{ForLk_uuYWbUG=% z`qy$nGs6ANOV!^8$1v~81A^cf5qI}as|1@WUOd}5mkyeF=a5@_vLa*VmAOXA>gKzs zN?9c2$BoRV*5KXKx&}iXm69!|yfVJw;X(BBc}Hx32|=(YB==TD6}j>gLo)YRUAIZ# z>QH|509Q@4w!Y(?EI&DuBKFEX>im=g2;c_`go%hN#pEA_fRPm9p zuzb{V1RV6&*6T@km;=Pxq{3ZLMzvglVz)jTGkV6aEQsh&0CtzrdKr2gFod% zr3zu{n}mymQ+5^%Gin+irvg{N(#E_xJ4`-p?z z;ynbUE=&TZ0|4^W8W=!DbORzfs_Q>^e4u1h^wJ}gg9kPfc8WGlq64CpXzzi>c<ga=}Hbn}ArY-`2sWCOySYMQkr_z~9LO zFaw`bu2a+4iOMU2quzWJ!ojIaurJLu3j_d=d#oJaSvf*<_SN)#5^b$3$q7V9lM&Mua|@69T4EnuMKDqUKW4Kh{ZL@ohM=K1Y#PIe0-ZBl zr;w7K1nKJK{4MG2Cy6z_qp9~a+*;uC#LoC^HWUVyr=|kYf&?QJ8K~1)i+G*bzYmwM z4j|w<*mPqYAn!#Ngp))qsFPvaZ8wZrLbyYMm2{BwNhmYhnnyjH(y8V2e2#X$aKRE1 zZeUzeK353D=^=L2NChAo_NnHhdCscg`|Gu~g9a){y8*y*BwOSQcpr^G*S+jlzR|@< ziS^-?T7uuG8TJs==@~_~yDACmd8>}b0FirN+m|D~okCx=)+Jg#9|h)B{x;$U>zo6~%2NZnZUW{oswC-XX(WmI{W6x1 zy06(95k;$BxkSoR96Vq(?#y@OWJQNblS2RGC;dUX#hQ1ZboIff*u|YA3zK{lMHC78z&r81dAc3X+CI zB!C!cNGv~0YZKn+P@@H~c98=Fm)nL96v;?U{I>>NIlvrZju_o@H4X1%AK@~-f$V_@ zBHJu=LDGgjWQZ{BFkLBN{=6q`uA2Q-UhRXC_L!&Q*p8t(Qc_-ob)@Z-ERbN)xSR5 zk?ROo3K@AAW+^p_RY^T5D4fh*`dW;AXY-&OzHAO)nYur)7%_d93&!4+Nz8H!+?tC5 zB{3vZb@||4vfnn!NUy8&19VEJsH(JnZOkaJ?S!#l-&&ha>GPZ({TP4e#vcJE<>z;k zG6xQT7)Z^IIL~NO^5c<_5edQlg5^gE93}!x09574-}#H!j1@55MIcH zSU?G;T+H&x&-ox^kM1KK;)cfH?$z^^hTT-&kt;(dC%>JqsjA+ReI0CH+pv606G;k3 z-RsWcr$hnR{(5+S_@U-}qNKUV*{+U)FmPAgeeI7Z7+ZX)-IVs9m2e4bYC`hkw$sXQ zwY5@2VeJ9-+t(K#jF|ilK0f$EgT*6nd1L;mbL3f?nUV91tJK?q13S|Qn&CHPrb|td zPXo3#)Vlv^w|C4Xr~OAE0;b3m0g8!Z>x~5)?!$G zAbQi(nM1gOfuqJ4?$op8^npK^9Rkq!#7*rDpy>p7Bh0{7xl*yrvhvC?#-)FY#8##U zx3YV~4L4ZgY{~{i-l=ldlsJkAVq-KIFz6DBF&0%K5lwB}$tsC0&AIUY8wZJ*#GvDf z9BZ^ja$BE#-%-k|U{yfAyOsH!^@W=7iPpqY>oMQ;-*b19TG~UmDkK&;gA5m$?kqgq ztiSU-^k>>^$MdGsr-?F{4@-3^&qe9I{C>x`z1ThTK8WFi2L-rJDcj9v;+uO~((=+f z0ho&Q8&>wd(dS429g&Td!>?~nd}0+u1QgciJKTr&IdW#v6F2=NWMtHoTAS|_$l58{ zj+}&T6nZ^T3t~HY*FNU}aF$HjH=`K)sMq%2glQW9^P-C1Q>)3D=~;mR36b4;qw+L3 zG*BBzEW}Jlzkv+k5RgeBW}>j5iNJYm>#L@BbT%KDKI03wkv(qh{h*V``((CWRO|>@>}(!|i3C`Q z-~0Y!Lp!v5|3xd$;${$$9?;sTFJ4Z)N=q6hOE@d2X3r7mGFgXV~B0? zCkssx(b`z4$?Z%5l0AT_dvFM%3d8>Fo=K?@rGqZX)k5yE)1zXwnkl;_pXFinHjZe@ z6Ewhv!E6#KqggqAE0z8IA%IX@P$G#0`8BLGiCV}vvsZ1=f>@s0t>M(EGxt$0-a1x**)$=tVTcVlzQ~Wn+TOW6Zw0;V(tc& z(=4R4{O%~b;5j?md9Zt%gPoPN{de_d_Ow?njK7J(RTbyIy74|YJ)gvfB~@&zQ^5HY^(_Sn?n`1`E})aL9Opj6qDx`k9^L2 zu^|Iw&E>n=`F7Km9FLos+Mk_>)N)HTHg0-4%l)(G`gd=wT18gn-m3gNyKCupynVaU zdSu14FhS~o{p@0Y=KN2xT+@A%v$cK+-KuBCp~V}CiGC5M0og;+uiNU*=C4_wUR=2< z{f437;pwmKl=H3rQ16k5sws_$1nj=m|7E1dkr!(oXlDkPO_N z?{MBqrTTmJd|=RRqO$igM5IJO6Ro4exHXk8dv9T2NZjpHxw=*#ef3zjt-*Ai`NWS3 zH=FAJGTtCKY#>|v)2R~;6XuppyBEQIR@GBV%fEC}dB)Da^_T3-HvE`6+kV0MlxL