AnySwap
No description provided
Details
Installs
- Total 286
- Win 214
- Mac 47
- Linux 25
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 | Jan 28 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 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 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Mac | 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 |
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
Any Swap
A plugin of Sublime Text 3
that helps user to swap parameters, lines, and expressions from current cursor.
Behaves just like Move-Element-Left/Right
in IntelliJ's IDEs, but more intelligently.
It is based on a general abstract-syntax-tree analyzer that enables user to swap complicated expressions recursively while maintaining a correct operator precedence.
Usage
First of all, install package AnySwap
via Package Control
(not published yet) or clone this repo into your Sublime Text 3/Packages/
folder.
Bind command any_swap
with parameter forward
equals true
or false
to keys that you prefer. The command is set to alt+[
and alt+]
by default.
{ "keys": ["alt+["], "command": "any_swap", "args": {"forward": false} },
{ "keys": ["alt+]"], "command": "any_swap", "args": {"forward": true} },
Place your cursor (|) on the begin/end of a word/paren, then trigger the command.
Features
Parameters:
func(a|, b) => func(b, a|) => func(|a, b)
func(int a|, int b) => func(int b, int a|) => func(|int a, int b)
Lines:
a|, b => b, a| => c, d
c, d c, d b, a|
Math expressions:
a| * b + c => b * a| + c => c + b * a|
(a| + b) * c => (b + a|) * c => c * (b + a)|
Expressions with functions:
func(a| + b, c) * d => func(b + a|, c) * d => func(c, b + a|) * d => d * func(c, b + a)|
Expressions with nested functions:
func(a().b(c| + d), f) => func(a().b(d + c|), f) => func(f, a().b(d + c)|)
Logic expressions:
a| and b or c => b and a| or c => c or b and a|
if a| and b => if b and a|
Array expressions:
a[0|][1] => a[1][0|]
a[b[c| + 1]][0] => a[b[1 + c|]][0] => a[0][b[1 + c]|]
Statements:
a = 1|; b = 2; => b = 2; a = 1;|
return a|, b => return b, a|
Cross-line expressions:
func(a|, => func(b,
b) a|)