SublimeMagic
A magic command for sublime. Manage multiple commands with the same hotkey based on advanced contexts.
Details
Installs
- Total 887
- Win 603
- Mac 174
- Linux 110
Mar 26 | Mar 25 | Mar 24 | Mar 23 | Mar 22 | Mar 21 | Mar 20 | Mar 19 | Mar 18 | Mar 17 | Mar 16 | Mar 15 | 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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 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 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
Mac | 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 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 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 | 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:
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"
}
}
]
}