Sublime Forum

Increasing indent before cut

#1

Here’s something that happens fairly often in my workflow:

<span class="syntaxdefault">function stuff</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code ...<br /></span><span class="syntaxdefault">    init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    run</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

Then I realize that those calls need to be conditional, so I add an if statement:

<span class="syntaxdefault">function stuff</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$okay</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        <br />    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    run</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

Then I select the calls (selection indicated with angle brackets):

<span class="syntaxdefault">function stuff</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$okay</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        <br />    </span><span class="syntaxkeyword">}<br /><</span><span class="syntaxdefault">   init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    run</span><span class="syntaxkeyword">();<br />></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

When I increase the indent, my selection gets wonky:

<span class="syntaxdefault">function stuff</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$okay</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        <br />    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword"><</span><span class="syntaxdefault">   init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">        run</span><span class="syntaxkeyword">();<br />></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

Now I want to cut the lines and paste them into the then-body, but before I can do that, I need to re-select so that I get the whole line.

<span class="syntaxdefault">function stuff</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$okay</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        <br />    </span><span class="syntaxkeyword">}<br /><</span><span class="syntaxdefault">       init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">        run</span><span class="syntaxkeyword">();<br />></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

Now I can cut and paste:

<span class="syntaxdefault">function stuff</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$okay</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        init</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">        run</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//code...<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

Is there any way to do this without that extra step? Like, maybe a setting I can change? Alternatively, can I do something totally different with fewer steps?

0 Likes

#2

Usually, indent after pasting your code, not before.

But you can use Past and Indent command (ctrl+shift+v) to indent it automatically:
-Cut your code
-Put the cursor where you want to past it (On the correct column if needed like your example. If you want to simply past it with the same indent as the previous line, it doesn’t matter).
-ctrl+shift+v

0 Likes

#3

Thanks, bizoo! Unfortunately, indenting after I paste is the same number of steps as I outlined above. However, it looks like Paste and Indent will usually do what I want. My main concern now is with Python, which accounts for about half of my daily programming. Because of Python’s indentation rules, I will often disagree with Sublime about how indented my code should be.

I guess this has turned into a feature request—Paste and Select—so I’ll put that in the appropriate forum.

0 Likes