SublimeMagic
A magic command for sublime. Manage multiple commands with the same hotkey based on advanced contexts.
Details
Installs
- Total 906
- Win 615
- Mac 176
- Linux 115
| Mar 14 | Mar 13 | Mar 12 | Mar 11 | Mar 10 | Mar 9 | Mar 8 | Mar 7 | Mar 6 | Mar 5 | Mar 4 | Mar 3 | Mar 2 | Mar 1 | Feb 28 | Feb 27 | Feb 26 | Feb 25 | Feb 24 | Feb 23 | Feb 22 | Feb 21 | Feb 20 | Feb 19 | Feb 18 | Feb 17 | Feb 16 | Feb 15 | Feb 14 | Feb 13 | Feb 12 | Feb 11 | Feb 10 | Feb 9 | Feb 8 | Feb 7 | Feb 6 | Feb 5 | Feb 4 | Feb 3 | Feb 2 | Feb 1 | Jan 31 | Jan 30 | Jan 29 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Windows | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Readme
- Source
- raw.githubusercontent.com
★ SublimeMagic
A magic command for sublime. Create a spellbook, cast spells on your code, make magic happen.
What?
SublimeMagic provides a sublime_magic command, which looks through user-defined actions and performs the first matching one.
Use the spell hotkey!
Default keybind is alt + spacebar but you can set your own. To use the plugin, you have to bind the sublime_magic command.
Regular example:
{
"keys": ["ctrl+,"],
"command": "sublime_magic"
}
Vintageous example:
{
"keys": [" ", " "],
"command": "sublime_magic",
"context": [{ "key": "vi_command_mode_aware" }]
}
Create your spellbook!
The spellbook (your sublime-settings file) consists of a single spells array containing the user-defined spells:
{
"spells": []
}
The spells are iterated one-by-one and the first one matching the context conditions is casted. When there's no spell matching, nothing happens. When there are multiple matching spells, only the top-most one is performed.
Spell
Each spell consists of the following required fields:
nameis the human readable name of your spellspellis the spell code, see “Available spells” for a list of spellsargsspecific to the selected spell
Spells can be limited by settings a context (similar to key bindings, though not using the same syntax). Known context keys:
scope- an array of required scope names (using regexp) - all patterns must matchline_matches- an array of patterns that the current line must matchselection_empty- whentrue, some text has to be selected; whenfalse, there must be no selectionselection_matches- an array of patterns that the currently selected text must match- need more? - make an issue, or even better a PR :)
Spell example
{
"name": "Replace single quoted content with clipboard",
"context": {
"scope": ["string\\.quoted\\.single"]
},
"spell": "replace_text",
"args": {
"where": "inside",
"delimiter": "'",
"replacement": "$clipboard"
}
}
Available spells
- replace_text
- perform_line_regex
- toggle_values
- sublime_command
- more to come - make a PR :)
Example spellbook
Have a nice spellbook? Create a pull request and let me add a link here!
Spellbooks: + mreq
A simple example:
{
"spells": [
{
"name": "Replace single quoted content with clipboard",
"context": {
"scope": ["string\\.quoted\\.single"]
},
"spell": "replace_text",
"args": {
"where": "inside",
"delimiter": "'",
"replacement": "$clipboard"
}
},
{
"name": "Replace double quoted content with clipboard",
"context": {
"scope": ["string\\.quoted\\.double"]
},
"spell": "replace_text",
"args": {
"where": "inside",
"delimiter": "\"",
"replacement": "$clipboard"
}
},
{
"name": "Replace content after colon with clipboard",
"context": {
"line_matches": [": "]
},
"spell": "replace_text",
"args": {
"where": "after",
"delimiter": ": ",
"replacement": "$clipboard"
}
}
]
}