SublimeMagic
A magic command for sublime. Manage multiple commands with the same hotkey based on advanced contexts.
Details
Installs
- Total 882
- Win 600
- Mac 173
- Linux 109
Jan 21 | Jan 20 | Jan 19 | Jan 18 | Jan 17 | Jan 16 | Jan 15 | Jan 14 | Jan 13 | Jan 12 | Jan 11 | Jan 10 | Jan 9 | Jan 8 | Jan 7 | Jan 6 | Jan 5 | Jan 4 | Jan 3 | Jan 2 | Jan 1 | Dec 31 | Dec 30 | Dec 29 | Dec 28 | Dec 27 | Dec 26 | Dec 25 | Dec 24 | Dec 23 | Dec 22 | Dec 21 | Dec 20 | Dec 19 | Dec 18 | Dec 17 | Dec 16 | Dec 15 | Dec 14 | Dec 13 | Dec 12 | Dec 11 | Dec 10 | Dec 9 | Dec 8 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 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 | 0 | 0 | 0 | 0 | 0 |
Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 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 |
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 | 0 | 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:
name
is the human readable name of your spellspell
is the spell code, see “Available spells” for a list of spellsargs
specific 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"
}
}
]
}