MCPcopy Index your code
hub / github.com/Suor/sublime-reform

github.com/Suor/sublime-reform @1.6.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.6.0 ↗ · + Follow
144 symbols 373 edges 5 files 6 documented · 4% updated 2mo ago★ 1791 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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 assignment3
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, Cython, JavaScript, Lua, Squirrel. Does best effort for other languages.

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.

Core symbols most depended-on inside this repo

first
called by 12
funcy.py
cursor_pos
called by 9
viewtools.py
list_blocks
called by 9
viewtools.py
set_selection
called by 7
viewtools.py
region_b
called by 7
viewtools.py
source
called by 7
viewtools.py
is_escaped
called by 7
viewtools.py
word_at
called by 6
viewtools.py

Shape

Function 101
Class 22
Method 21

Languages

Python100%

Modules by API surface

viewtools.py48 symbols
scopes.py45 symbols
funcy.py23 symbols
reform.py18 symbols
css_reform.py10 symbols

For agents

$ claude mcp add sublime-reform \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact