aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/vim-snipmate/doc/SnipMate.txt
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/vim-snipmate/doc/SnipMate.txt')
m---------vim/bundle/vim-snipmate0
-rw-r--r--vim/bundle/vim-snipmate/doc/SnipMate.txt646
2 files changed, 0 insertions, 646 deletions
diff --git a/vim/bundle/vim-snipmate b/vim/bundle/vim-snipmate
new file mode 160000
+Subproject ee433e43c76c768c95ad6d9af67c4cd4b40f7ea
diff --git a/vim/bundle/vim-snipmate/doc/SnipMate.txt b/vim/bundle/vim-snipmate/doc/SnipMate.txt
deleted file mode 100644
index 230fe68..0000000
--- a/vim/bundle/vim-snipmate/doc/SnipMate.txt
+++ /dev/null
@@ -1,646 +0,0 @@
-*SnipMate.txt* Plugin for using TextMate-style snippets in Vim.
-
-SnipMate *snippet* *snippets* *SnipMate*
-
-1. Description |SnipMate-description|
-2. Usage |SnipMate-usage|
-3. Interface and Settings |SnipMate-interface| |SnipMate-settings|
-4. Snippets |SnipMate-snippets|
- - Snippet files |SnipMate-snippet-files|
- - Snippet syntax |SnipMate-syntax|
-5. Snippet sources |SnipMate-snippet-sources|
-6. Disadvantages to TextMate |SnipMate-disadvantages|
-7. Contact |SnipMate-contact|
-8. License |SnipMate-license|
-
-For Vim version 7.0 or later.
-This plugin only works if 'compatible' is not set.
-{Vi does not have any of these features.}
-
-SnipMate depends on vim-addon-mw-utils and tlib.
-
-==============================================================================
-DESCRIPTION *SnipMate-description*
-
-SnipMate implements snippet features in Vim. A snippet is like a template,
-reducing repetitive insertion of pieces of text. Snippets can contain
-placeholders for modifying the text if necessary or interpolated code for
-evaluation. For example, in C, typing "for" then pushing <Tab> could expand
-to: >
-
- for (i = 0; i < count; i++) {
- /* code */
- }
-
-SnipMate is inspired by TextMate's snippet features.
-
-==============================================================================
-USAGE *SnipMate-usage*
-
-Every snippet consists of an expansion and a trigger. Typing a trigger into
-your buffer and then hitting your trigger key (<Tab> by default, see
-|SnipMate-mappings|) will replace the trigger with the expansion text.
-
-The expansion text can optionally include tab stops. When it does, upon
-expansion of the snippet, the cursor is placed at the first one, and the user
-can jump between each tab stop. Each of these tab stops can be represented by
-default placeholder text. If such a placeholder is provided, then the text of
-the placeholder can be repeated in the snippet at specified mirrors. Any edits
-to the placeholder are instantly updated at every mirror.
-
-SnipMate allows multiple snippets to use the same trigger. When triggered,
-a list of all snippets with that trigger is provided and prompts for which
-snippet to use.
-
- *SnipMate-scopes*
-SnipMate searches for snippets inside a directory named "snippets" inside each
-entry in 'runtimepath'. Which files are loaded depends on 'filetype' and
-'syntax'; see |SnipMate-syntax| for more information. Snippets are loaded and
-refreshed automatically on demand.
-
-Note: SnipMate does not ship with any snippets. In order to use it, the user
-must either write their own snippets or obtain some from a repository like
-https://github.com/honza/vim-snippets
-
-==============================================================================
-INTERFACE AND SETTINGS *SnipMate-interface* *SnipMate-settings*
-
- *SnipMate-commands*
-Commands~
-
- *:SnipMateOpenSnippetFiles*
-:SnipMateOpenSnippetFiles Opens a list of all valid snippet locations
- based on the current scope |SnipMate-scopes|.
- Only existing files and non-existing .snippets
- files will be shown, with the existing files
- shown first.
-
-:SnipMateLoadScope[!] scope [scope ...]
- Load snippets from additional scopes. Without
- [!] the additional scopes are loaded only in
- the current buffer. For example >
- :SnipMateLoadScopes rails
-< will load all rails.snippets in the current
- buffer.
-
- *SnipMate-options*
-Options~
-
-g:snips_author A variable used in some snippets in place of
- the author's (your) name. Similar to
- $TM_FULLNAME in TextMate. For example, >
- snippet name
- `g:snips_author`
-< creates a snippet "name" that expands to your
- name.
-
-g:snipMate This |Dictionary| contains other SnipMate
- options. In short add >
- let g:snipMate = {}
-< to your .vimrc before setting other SnipMate
- options.
-
-g:snipMate.scope_aliases A |Dictionary| associating certain filetypes
- with other scopes |SnipMate-scopes|. The
- entries consist of a filetype as the key and
- a comma-separated list of aliases as the
- value. For example, >
- let g:snipMate.scope_aliases = {}
- let g:snipMate.scope_aliases['ruby']
- \ = 'ruby,ruby-rails'
-< tells SnipMate that "ruby-rails" snippets in
- addition to "ruby" snippets should be loaded
- when editing files with 'filetype' set to
- "ruby" or contains "ruby" as an entry in the
- case of dotted filetypes. A buffer local
- variant b:snipMate_scope_aliases is merged
- with the global variant.
-
-g:snipMate_no_default_aliases Note: This has been renamed to the following.
-
-g:snipMate.no_default_aliases
- When set to 1, prevents SnipMate from loading
- default scope aliases. The defaults are:
- Filetype Alias ~
- cpp c
- cu c
- eruby eruby-rails,html
- html javascript
- mxml actionscript
- objc c
- php php,html,javascript
- ur html,javascript
- xhtml html
- Individual defaults can be disabled by setting
- them to an empty value: >
- let g:snipMate.scope_aliases.php = ''
-< will disable the default PHP alias.
- Note: Setting this option does not disable
- scope aliases entirely, only those made by
- SnipMate itself. Any scope aliases created by
- the user or someone else will still be in
- effect.
-
-g:snipMate.snippet_version
- The snippet parser version to use. The
- possible values are:
- 0 Use the older parser
- 1 Use the newer parser
- If unset, SnipMate defaults to version 0. The
- value of this option is also used for all
- .snippet files.
-
-g:snipMate.override
- As detailed below, when two snippets with the
- same name and description are loaded, both are
- kept and differentiated by the location of the
- file they were in. When this option is enabled
- (set to 1), the snippet originating in the
- last loaded file is kept, similar to how Vim
- maps and other settings work. Note: Load order
- is determined by 'runtimepath'.
-
-g:snipMate['no_match_completion_feedkeys_chars']
- A string inserted when no match for a trigger
- is found. By default a tab is inserted
- according to 'expandtab', 'tabstop', and
- 'softtabstop'. Set it to the empty string to
- prevent anything from being inserted.
-
- *SnipMate-mappings*
-Mappings~
-
-The mappings SnipMate uses can be customized with the |:map| commands. For
-example, to change the key that triggers snippets and moves to the next
-tab stop, >
-
- :imap <C-J> <Plug>snipMateNextOrTrigger
- :smap <C-J> <Plug>snipMateNextOrTrigger
-
-Note: The noremap variants of the map commands must NOT be used.
-
-The list of possible <Plug> mappings is as follows:
-
-<Plug>snipMateNextOrTrigger Default: <Tab> Mode: Insert, Select
- Jumps to the next tab stop or, if none exists,
- try to expand a snippet. Use in both insert
- and select modes.
-
-<Plug>snipMateTrigger Default: unmapped Mode: Insert
- Try to expand a snippet regardless of any
- existing snippet expansion. If done within an
- expanded snippet, the outer snippet's tab
- stops are lost, unless expansion failed.
-
-<Plug>snipMateBack Default: <S-Tab> Mode: Insert, Select
- Jump to the previous tab stop, if it exists.
- Use in both insert and select modes.
-
-<Plug>snipMateShow Default: <C-R><Tab> Mode: Insert
- Show all available snippets (that start with
- the previous text, if it exists). Use in
- insert mode.
-
-<Plug>snipMateVisual Default: <Tab> Mode: Visual
- See |SnipMate-visual|.
-
-Additionally, <CR> is mapped in visual mode in .snippets files for retabbing
-snippets.
-
-==============================================================================
-SNIPPETS *SnipMate-snippets*
-
- *SnipMate-snippet-files*
-Snippet Files ~
-
-Note: SnipMate does not ship with any snippets.
-
-SnipMate looks inside of each entry of 'rtp' (or |SnipMate-snippet-sources|)
-for a directory named /snippets/. Based on the 'filetype' and 'syntax'
-settings (dotted filetypes are parsed), the following files are read for
-snippets: >
-
- .../snippets/<scope>.snippets
- .../snippets/<scope>_<name>.snippets
- .../snippets/<scope>/<name>.snippets
- .../snippets/<scope>/<trigger>.snippet
- .../snippets/<scope>/<trigger>/<description>.snippet
-
-where <scope> is a scope or 'filetype' or 'syntax', <name> is an arbitrary
-name, <trigger> is the trigger for a snippet, and <description> is
-a description used for |SnipMate-multisnip|.
-
-A .snippet file defines a single snippet with the trigger (and description)
-determined by the filename. The entire contents of the file are used as the
-snippet expansion text.
-
-Multiple snippets can be defined in *.snippets files. Each snippet definition
-looks something like: >
-
- snippet trigger optional description
- expanded text
- more expanded text
-
-< *SnipMate-multisnip*
-The description is optional. If it is left out, the description "default" is
-used. When two snippets in the same scope have the same name and the same
-description, SnipMate will try to preserve both. The g:snipMate.override
-option disables this, in favor of keeping the last-loaded snippet. This can be
-overridden on a per-snippet basis by defining the snippet with a bang (!): >
-
- snippet! trigger optional description
- expanded text
- more expanded text
-
-Two bangs will remove the trigger entirely from SnipMate's lookup. In this
-case any snippet text is unused.
-
-Note: Hard tabs in the expansion text are required. When the snippet is
-expanded in the text and 'expandtab' is set, each tab will be replaced with
-spaces based on 'softtabstop' if nonzero or 'shiftwidth' otherwise.
-
-Which version parser the snippets in a file should be used with can be
-specified with a version line, e.g.: >
-
- version 1
-
-Specification of a version applies to the snippets following it. Multiple
-version specifications can appear in a single file to intermix version 0 and
-version 1 snippets.
-
-Comments can be made in .snippets files by starting a line with a # character.
-However these can't be used inside of snippet definitions: >
-
- # this is a correct comment
- snippet trigger
- expanded text
- snippet another_trigger
- # this isn't a comment!
- expanded text
-
-This should hopefully be clear with the included syntax highlighting.
-
- *snipMate-extends*
-Borrowing from UltiSnips, .snippets files can also contain an extends
-directive, for example: >
-
- extends html, javascript, css
-
-will tell SnipMate to also read html, javascript, and css snippets.
-
-SNIPPET SYNTAX *snippet-syntax* *SnipMate-syntax*
-
-Anywhere in a snippet, a backslash escapes the character following it,
-regardless of whether that character is special or not. That is, '\a' will
-always result in an 'a' in the output. A single backslash can be output by
-using '\\'.
-
- *SnipMate-tabstops*
-Tab stops~
-
-When triggering a snippet, SnipMate will by default jump to the very end of
-the snippet text. This can be changed through the use of tab stops: $1, $2,
-and so on. After expansion, SnipMate will jump to the first tab stop. From
-then on, the <Plug>snipMateNextOrTrigger map will jump to the next higher
-numbered tabs top.
-
-In the case of an ambiguity, for example if a stop occurs just before
-a literal number, braces may be placed around the stop number to resolve it:
-${3}79 is the third tab stop followed by the string "79".
-
-NOTE: In the version 0 snippet parser, the braces are mandatory.
-
- *SnipMate-zero-tabstop*
-SnipMate will always stop at the special zero tab stop $0. Once it jumps to
-the zero tab stop, snippet expansion is finished. If the zero tab stop is not
-present in a definition, it will be put at the end.
-
-For example, to place the cursor first on the id of a <div> tag, then on its
-class, and finally end editing its contents: >
-
- snippet div
- <div id="$1" class="$2">
- $0
- </div>
-
-< *SnipMate-placeholders*
-In addition to being simply a location, each tab stop contains a placeholder,
-or some default text. The placeholder can be specified for every tab stop
-(including the zero tab stop) with a colon after the stop ID, as in
-${1:default text}. The braces are required only when specifying a placeholder.
-Once a tab stop with a placeholder is reached, the placeholder will be
-selected in |Select-mode|. For example, >
-
- snippet div
- <div id="${1:id}" class="${2:class}">
- $0
- </div>
-
-Finally, placeholders can contain mirrors and evaluations (detailed below) and
-even entire other tab stops. If the placeholder is edited, then these nested
-tab stops are removed and skipped entirely. For example, >
-
- snippet div
- <div${1: id="${2:id}"}${3: class="${4:class}"}>
- $0
- </div>
-
-When expanded, this snippet selects the entirety of the id attribute. If this
-stop is edited, then the second tab stop is removed and the third tab stop
-becomes the next one. If the first tab stop is left unedited, then SnipMate
-jumps to the second tab stop. This allows the user to use a single div snippet
-that can be used for instances where the id or class attributes are desired
-and those where they are not.
-
- *SnipMate-mirrors*
-Mirrors~
-
-A mirror is simply a copy of a tab stop's text, updated as the tab stop is
-edited. These look like a tab stop without a placeholder; $1 for example. In
-the event that no placeholder is specified for a certain tab stop--say $1--the
-first instance becomes the tab stop and the rest become mirrors.
-
-Additionally substitutions similar to |:substitute| can be performed. For
-instance ${1/foo/bar/g} will replace all instances of "foo" in the $1 mirror
-with "bar". This uses |substitute()| behind the scenes.
-
-Note: Just like with tab stops, braces can be used to avoid ambiguities: ${1}2
-is a mirror of the first tab stop followed by a 2. Version 0 of the snippet
-parser offers no way to resolve such ambiguities.
-
-As an example, >
-
- snippet for
- for ($1 = ${2:start}; ${1:i} < ${3:end}; $1${4:++}) {
- ${0:/* code */}
- }
-
-< *SnipMate-eval*
-Expression Evaluation~
-
-Snippets can contain Vim script expressions that are evaluated as the snippet
-is expanded. Expressions are specified inside backticks: >
-
- snippet date
- `strftime("%Y-%m-%d")`
-
-If the expression results in any Vim error, the error will be displayed (or
-found in :messages) and the result of the expression will be the empty string.
-
-Filename([{expr}] [, {defaultText}]) *SnipMate-Filename()*
-
-Since the current filename is used often in snippets, a default function
-has been defined for it in SnipMate.vim, appropriately called Filename().
-
-With no arguments, the default filename without an extension is returned;
-the first argument specifies what to place before or after the filename,
-and the second argument supplies the default text to be used if the file
-has not been named. "$1" in the first argument is replaced with the filename;
-if you only want the filename to be returned, the first argument can be left
-blank. Examples: >
-
- snippet filename
- `Filename()`
- snippet filename_with_default
- `Filename('', 'name')`
- snippet filename_foo
- `Filename('$1_foo')`
-
-The first example returns the filename if it the file has been named, and an
-empty string if it hasn't. The second returns the filename if it's been named,
-and "name" if it hasn't. The third returns the filename followed by "_foo" if
-it has been named, and an empty string if it hasn't.
-
- *SnipMate-visual*
-The VISUAL Stop~
-
-While tab stops have numeric IDs, a special one exists with the ID 'VISUAL'.
-When a snippet is expanded, if any text had been grabbed with the
-snipMateVisual mapping (see |SnipMate-mappings|), all instances of the VISUAL
-stop will be replaced with it. Both transformations as well as a default
-placeholder can be used with the VISUAL stop.
-
-Note: Both $VISUAL and ${VISUAL} are valid in version 1 of the snippet parser.
-In version 0, only {VISUAL} is valid (without the $), and neither
-transformations nor a default placeholder can be used.
-
-Example: >
-
- snippet div
- <div>
- ${0:${VISUAL:<!-- content -->}}
- </div>
-
-==============================================================================
-SNIPPET SOURCES *SnipMate-snippet-sources*
-
-SnipMate is configurable.
-
-plugin/SnipMate.vim assigns a couple important keys: >
-
- " default implementation collecting snippets by handlers
- let g:SnipMate['get_snippets'] = SnipMate#GetSnippets
- " default handler:
- let g:SnipMateSources['default'] = SnipMate#DefaultPool
-
-You can override both of those settings.
-
-You can see that the default set of snippets is determined by Vim's 'rtp'.
-
-Example 1:~
-autoload/SnipMate_python_demo.vim shows how you can register additional
-sources such as creating snippets on the fly representing python function
-definitions found in the current file.
-
-Example 2:~
-Add to your ~/.vimrc: For each know snippet add a second version ending in _
-adding folding markers >
-
- let g:commentChar = {
- \ 'vim': '"',
- \ 'c': '//',
- \ 'cpp': '//',
- \ 'sh': '#',
- \ 'python': '#'
- \ }
- " url https://github.com/garbas/vim-snipmate/issues/49
- fun! AddFolding(text)
- return substitute(a:text,'\n'," ".g:commentChar[&ft]." {{{\n",1)."\n".g:commentChar[&ft]." }}}"
- endf
-
- fun! SnippetsWithFolding(scopes, trigger, result)
- " hacky: temporarely remove this function to prevent infinite recursion:
- call remove(g:SnipMateSources, 'with_folding')
- " get list of snippets:
- let result = SnipMate#GetSnippets(a:scopes, substitute(a:trigger,'_\(\*\)\?$','\1',''))
- let g:SnipMateSources['with_folding'] = funcref#Function('SnippetsWithFolding')
-
- " add folding:
- for k in keys(result)
- let a:result[k.'_'] = map(result[k],'AddFolding(v:val)')
- endfor
- endf
-
- " force setting default:
- runtime plugin/SnipMate.vim
- " add our own source
- let g:SnipMateSources['with_folding'] = funcref#Function('SnippetsWithFolding')
-
-See |SnipMate-syntax| for more details about all possible relative locations
-to 'rtp' can be found in.
-
-==============================================================================
-KNOWN ISSUES *SnipMate-known-issues*
-
-SnipMate.vim currently has the following disadvantages to TextMate's snippets:
- - Placeholders cannot span multiple lines.
- - Activating snippets in different scopes of the same file is
- not possible.
- - Vim formatting with fo=t or fo=a can mess up SnipMate.
-
-Perhaps some of these features will be added in a later release.
-
-==============================================================================
-CHANGELOG *SnipMate-changelog*
-
-0.89 - 2016-05-29
------------------
-
-* Various regex updates to legacy parser Addition of double bang syntax to
-* completely remove a snippet from lookup Group various SnipMate autocommands
-* Support setting 'shiftwidth' to 0 Parser now operates linewise, adding some
-* flexibility Mirror substitutions are more literal Mirror length is
-* calculated correctly when substitutions occur
-
-0.88 - 2015-04-04
------------------
-
-* Implement simple caching
-* Remove expansion guards
-* Add `:SnipMateLoadScope` command and buffer-local scope aliases
-* Load `<scope>_*.snippets` files
-* Use CursorMoved autocmd events entirely
-
-* The nested branch has been merged
- * A new snippet parser has been added. The g:snipmate.version as well as
- version lines in snippet files determines which is used
- * The new parser supports tab stops placed within placeholders,
- substitutions, non-consecutive stop numbers, and fewer ambiguities
- * The stop jumping code has been updated
- * Tests have been added for the jumping code and the new parser
-
-* The override branch has been merged
- * The g:snipMate.override option is added. When enabled, if two snippets
- share the same name, the later-loaded one is kept and the other discarded
- * Override behavior can be enabled on a per-snippet basis with a bang (!) in
- the snippet file
- * Otherwise, SnipMate tries to preserve all snippets loaded
-
-* Fix bug with mirrors in the first column
-* Fix bug with tabs in indents
- <http://github.com/garbas/vim-snipmate/issues/143>
-* Fix bug with mirrors in placeholders
-* Fix reading single snippet files
-* Fix the use of the visual map at the end of a line
-* Fix expansion of stops containing only the zero tab stop
-* Remove select mode mappings
-* Indent visual placeholder expansions and remove extraneous lines
- <http://github.com/garbas/vim-snipmate/issues/177>
- <http://github.com/garbas/vim-snipmate/issues/178>
-
-0.87 - 2014-01-04
------------------
-
-* Stop indenting empty lines when expanding snippets
-* Support extends keyword in .snippets files
-* Fix visual placeholder support
-* Add zero tabstop support
-* Support negative 'softtabstop'
-* Add g:snipMate_no_default_aliases option
-* Add <Plug>snipMateTrigger for triggering an expansion inside a snippet
-* Add snipMate#CanBeTriggered() function
-
-0.86 - 2013-06-15
------------------
-* Use more idiomatic <Plug> maps
-* Remove most select mode mappings
-
-* Fix disappearing variables bug (hpesoj)
-* Fix cursor position bug when a variable is on the same line as the stop
-* Fix undo point creation causing problems with Supertab
-* Fix bug where SnipMate would use a typed trigger as a regular expression
-
-0.85 - 2013-04-03
------------------
-
-* Allow trigger key customization
-* Enable undoing of snippet expansion
-* Support backslash escaping in snippets
-* Add support for {VISUAL}
-* Expand filetype extension with scope_aliases
-* Add expansion guards
-* Enable per-buffer expansion of snippets
-* Fix 'cpo' compatibility
-* Update supertab compatibility
-* Enable customization of various things through g:SnipMate
-
-* Disable spelling in snippet files
-* Highlight trigger names in .snippets files
-
-* Update many snippets
-* Separate sample snippets into separate repository
-
-0.84
-----
-
-* Unreleased version by Michael Sanders, available on his GitHub,
- <https://github.com/msanders/snipmate.vim>
-
-0.83 - 2009-07-13
------------------
-
-* Last release done by Michael Sanders, available at
- <http://www.vim.org/scripts/script.php?script_id=2540>
-
-==============================================================================
-CONTACT *SnipMate-contact* *SnipMate-author*
-
-SnipMate is currently maintained by:
- - Rok Garbas
- - Marc Weber (marco-oweber@gmx.de)
- - Adnan Zafar
-
-For bug reports, issues, or questions, check out the Issues page on GitHub:
-https://github.com/garbas/vim-snipmate/issues
-
-The original author, Michael Sanders, can be reached at:
-msanders42+snipmate <at> gmail <dot> com
-
-
-==============================================================================
-LICENSE *SnipMate-license*
-
-SnipMate is released under the MIT license:
-
-Copyright 2009-2010 Michael Sanders. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-The software is provided "as is", without warranty of any kind, express or
-implied, including but not limited to the warranties of merchantability,
-fitness for a particular purpose and noninfringement. In no event shall the
-authors or copyright holders be liable for any claim, damages or other
-liability, whether in an action of contract, tort or otherwise, arising from,
-out of or in connection with the software or the use or other dealings in the
-software.
-
-==============================================================================
- vim:tw=78:ts=8:ft=help:norl: