# WrapIt
Sublime Text 3 plugin to easily wrap a text selection in predefined code blocks.
## WhatFor?
- Want to surround a selection with brackets? Easy. __Just WrapIt!__
- Need to have these few lines inside an if-else block. It's fun. __Just WrapIt!__
- Like to join several functions into a class declaration? No problem. __Just WrapIt!__
- Want to ... I think you get it! __Just WrapIt!__ ;-)
## Installation
Just use PackageControl. I am not going to explain here how to use it.
## Usage
### Wrapping
1. Put your cursor anywhere, or select some text then hit alt+w.
2. The quick panel will open giving you a range of code structure for wrapping your text with.
3. Once you chose one, your text will rapidly get embedded into the selcted code structure.
4. _Like in any snippets you can use tab to move between different regions of that code to successively fill it._
### Defining custom wrappers
By default WrapIt comes with templates for PHP, Python, JavaScript and JSON. You can extend the user settings file with custom templates for any syntax. Like so:
"definitions":[
{
"name":"Python",
"syntaxes": [
"Packages/Python/Python.sublime-syntax",
"Packages/Python 3/Python3.tmLanguage",
"Packages/Python Improved/PythonImproved.tmLanguage",
"Packages/MagicPython/grammars/MagicPython.tmLanguage"
],
"wrappers": [
{
"name": "if / else",
"description": "Wrap with: if - else block",
template":"\nif ${1}:\n\t\nelse:\n\t${2}"
}
]
}
]
1. Copy definitions from to default to user settings file of the WrapIt package.
2. Either extend an existing language or define a new one.
3. "name" - name of language e.g. PYthon
4. "syntaxed" - array of paths to .tmLanguage files for that language
5. "wrappers" - array of objects for defining code blocks
- code block -
6. "name" - name code block (label for quick panel)
7. "descriptions" - one sentence descriptin of code block (sublabl for quick panel)
8. "template" - template definition
Note: Both "name" and "template" must be filled or the respective code block will not be listed in the quick panel.
#### templating
- `` - where your selection should be placed
- `\n` - new line
- `\t` - indent for line, if preceeding tag, all lines of a multiline selection will get indented
- `${x}` - regions for tab navigation, just like in snippets
## Custom keybinding
As an alternative to the qick panel, commonly used wrapping can be bound to own key combination.
In your user keybindings file, do:
{"keys": [ YOUR KEY COMBINATION ],
"command": "wrap_it",
"args": { NAME OF CODE BLOCK},
"context": [SPECIFY SYNTAX HERE]},
## Contributors
- lattespirit: original idea, primordial version called sublime-wrapper.