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

Parinfer

by oakmac ALL

Parinfer plugin for Sublime Text

Details

Installs

  • Total 3K
  • Win 546
  • Mac 1K
  • Linux 658
Apr 21 Apr 20 Apr 19 Apr 18 Apr 17 Apr 16 Apr 15 Apr 14 Apr 13 Apr 12 Apr 11 Apr 10 Apr 9 Apr 8 Apr 7 Apr 6 Apr 5 Apr 4 Apr 3 Apr 2 Apr 1 Mar 31 Mar 30 Mar 29 Mar 28 Mar 27 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
Windows 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0
Linux 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 3 0 2 0 0 0 0 0 0 0 0 0

Readme

Source
raw.​githubusercontent.​com

Parinfer for Sublime Text

A Parinfer package for Sublime Text.

What is Parinfer?

Parinfer is a text editing mode that can infer Lisp code structure from indentation (and vice versa). A detailed explanation of Parinfer can be found here.

Put simply: the goal of Parinfer is to make it so you never have to think about “balancing your parens” when writing or editing Lisp code. Just indent your code as normal and Parinfer will infer the intended paren structure.

Installation

Package Control

If you have Package Control installed, you can easily install the Parinfer package:

  1. In Sublime Text, open the Command Palette by typing Ctrl+Shift+p (Cmd+Shift+p on Mac)
  2. Type install and select Package Control: Install Package
  3. A text prompt should appear shortly after Package Control loads a list of packages from the Internet.
  4. Type parinfer and press Enter
  5. That's it! Parinfer is now installed.

Linux / OSX

You can symlink this repo to the Sublime Text Packages directory:

cd ~
git clone git@github.com:oakmac/sublime-text-parinfer.git
ln -s ~/sublime-text-parinfer ~/Library/Application\ Support/Sublime\ Text/Packages/Parinfer

Windows

cd %APPDATA%\Sublime Text 2\Packages
git clone https://github.com/oakmac/sublime-text-parinfer.git Parinfer

Usage

File Extensions

Once installed, Parinfer will automatically activate when you open a file with a known file extension.

You can change the list of watched file extensions by going to Preferences –> Package Settings –> Parinfer –> Settings.

Opening a File

When a file with a recognized extension is opened, Parinfer will enter Parinfer: Waiting mode and wait for the first edit to the buffer. When the first edit occurs, Parinfer will enter Parinfer: Indent mode and begin controlling closing parenthesis based on indentation.

Behavior Change for v1.0.0

Before v1.0.0, when a file was opened Parinfer would run Paren Mode on the entire file first before entering Indent Mode (see Fixing existing files for more details). This was not a problem for regular users of Parinfer because running Paren Mode on a file written using Parinfer will not result in any changes.

However, this behavior was sometimes confusing for users new to Parinfer when they would open a file not written using Parinfer and see edits in places they did not intend to make.

Starting with v1.0.0, Parinfer will first enter “Waiting” mode and only begin controlling closing parens after the first modification to the buffer. If you desire the pre-v1.0.0 behavior, set the config setting run_paren_mode_when_file_opened to true.

Additionally, there is a new Parinfer: Run Paren Mode on Current Buffer command that can be executed at anytime and will run Paren Mode over the entire active buffer.

Hotkeys and Status Bar

Command Windows/Linux Mac
Turn on / Toggle Mode Ctrl+( Cmd+(
Turn off Ctrl+) Cmd+)

The status bar will indicate which mode you are in or show nothing if Parinfer is turned off.

The “parent expression” hack

This extension uses a hack for performance reasons that may result in odd behavior in rare cases. It assumes that an open paren followed by an alpha character - ie: regex ^\([a-zA-Z] - at the start of a line is the beginning of a new “parent expression” and tells the Parinfer algorithm to start analyzing from there until the next line that matches the same regex. Most of the time this is probably a correct assumption, but might break inside multi-line strings or other non-standard circumstances. This is tracked at Issue #23; please add to that if you experience problems.

License

ISC license