ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Reform

by Suor ST2/ST3

A Sublime Text plugin to move through and reform things

Labels formatting

Details

Installs

  • Total 611
  • Win 214
  • OS X 284
  • Linux 113
Oct 19 Oct 18 Oct 17 Oct 16 Oct 15 Oct 14 Oct 13 Oct 12 Oct 11 Oct 10 Oct 9 Oct 8 Oct 7 Oct 6 Oct 5 Oct 4 Oct 3 Oct 2 Oct 1 Sep 30 Sep 29 Sep 28 Sep 27 Sep 26 Sep 25 Sep 24 Sep 23 Sep 22 Sep 21 Sep 20 Sep 19 Sep 18 Sep 17 Sep 16 Sep 15 Sep 14 Sep 13 Sep 12 Sep 11 Sep 10 Sep 9 Sep 8 Sep 7 Sep 6 Sep 5
Windows 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 1 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0
OS X 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 1 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 1 0 0 0 0 0 0 0 0

Readme

Source
raw.​githubusercontent.​com

Reform

Join the chat at https://gitter.im/Suor/sublime-reform

This thing enables you to move through and reform your code like magic. At least it aims to do it :)

Here is a list of supported commands:

Command Key* Description
find_word_up ctrl+up Jump to previous occurrence of a word at cursor
find_word_down ctrl+down Jump to next occurrence of a word at cursor
def_up alt+up Jump to previous function or class declaration
def_down alt+down Jump to next function or class declaration
smart_up alt+[ Jump to previous declaration or block2
smart_down alt+] Jump to next declaration or block2
move_word_right ctrl+alt+/ Swap word at cursor with a next one
move_word_left ctrl+alt+. Swap word at cursor with a previous one
move_block_up ctrl+alt+; Swap block with a previous one
move_block_down ctrl+alt+' Swap block with a next one
expand_next_word alt+d Expand selection to next word matching one at cursor1
select_scope_words alt+shift+d Select words in function scope matching word at cursor1,3
select_scope_up ctrl+shift+; Select block2/function/class at cursor, select enclosing one on next hit3
select_scope_down ctrl+shift+' Undo last select_scope_up
delete_block ctrl+alt+d Delete block at cursor with appropriate adjusting empty lines
extract_expr alt+enter Extract selected expression into an assignment4
inline_expr alt+= Inline variable defined on line at cursor

* Current key bindings are very experimental, especially on OS X.
1 Matches only whole words, case-sensitive, comments and strings are skipped.
2 Block is a adjacent commented lines or a blob of text surrounded with empty lines.
3 Works for python, js, plain text. Tries to work for other languages.
4 Works for python, js, ruby, php (and any languages with no keyword to define var).

Installation

  • Install Package Control.
  • Bring up the Command Palette with Ctrl+Shift+p (Cmd+Shift+p on OS X).
  • Select “Package Control: Install Package” (it'll take a few seconds).
  • Select or type in “Reform” when the list appears.

TODO

I have plans. Here is a list if you want to help and looking where to start:

  • Move functions up and down.
  • Better select words in scope: expand to next scope on subsequent hit, autodetect name scope.
  • Break long lines.
  • Break long strings, several variants including switching to multiline separators.
  • Reform dicts (object literals) from one-line to multi-line and back.
  • Same for calls, calls with keyword arguments, array literals.
  • Reform multiline list, set, dict comprehensions and generator expressions.
  • Align =, =>, :, \ and other punctuation
  • Switch brackets, parentheses, whatever.
  • Move blocks respecting functions.

Also, support for more programming languages for language-dependent commands will help.