A Community-led Hyper-Hackable Text Editor
Go to file
Nathan Sobo 7be3c55765 Only auto-indent when typing, not when pasting or programmatically inserting
This paves the way for using a different strategy to normalize indentation when pasting, without it getting tangled in auto-indent.
2012-10-23 11:59:54 -06:00
.atom Load event-palette extension in defaultConfig 2012-10-19 14:12:43 -06:00
benchmark Change tabText to tabLength 2012-10-18 11:31:39 -07:00
bundles Remove TextMate bundles from Atom source 2012-10-09 10:44:07 -07:00
cef Update CEF to CEF3 trunk 2012-09-18 15:01:09 -07:00
docs Doc how line highlighting can be tweaked 2012-10-01 15:59:41 -07:00
native Do not use cached results for regexes that contain \G. 2012-10-22 11:04:20 -07:00
notes Move old wiki page to notes folder 2012-09-30 15:00:45 -07:00
script Remove brew check 2012-10-18 16:04:43 -07:00
spec Only auto-indent when typing, not when pasting or programmatically inserting 2012-10-23 11:59:54 -06:00
src Only auto-indent when typing, not when pasting or programmatically inserting 2012-10-23 11:59:54 -06:00
static Only show events w/ descriptions in EventPalette 2012-10-19 11:24:40 -06:00
themes Add bundles and themes 2012-08-27 13:20:22 -07:00
tools/mac no more custom gyp 2012-10-18 16:00:14 -07:00
vendor If a TextMate syntax/preference fails to parse, catch error and log warning 2012-10-17 13:53:55 -07:00
.github Doc how line highlighting can be tweaked 2012-10-01 15:59:41 -07:00
.gitignore Remove duplicate atom-build line 2012-10-12 09:48:18 -07:00
.pairs Start on SelectList, a common base class for filterable lists 2012-10-04 10:26:06 -10:00
atom.gyp Add native OnigScanner, which handles matching multiple regexes on a line 2012-09-27 13:04:14 -06:00
package.json Make npm and rake play nicely 2012-09-13 11:41:35 -07:00
Rakefile Fix 'rake nof' 2012-10-19 12:59:22 -06:00
README.md More 💄 2012-09-25 09:26:11 -07:00

Atom — Futuristic Text Editing

atomic

Building from source

Be forwarned: Atom is pre-alpha software!

Requirements

Mountain Lion

The Setup™

Xcode (Get Xcode from the App Store (ugh, I know))

  1. gh-setup atom

  2. cd ~/github/atom && rake install

Atom is installed! Type atom [path] from the commmand line or find it in /Applications/Atom.app

Your ~/.atom Directory

A basic ~/.atom directory is installed when you run rake install. Take a look at ~/.atom/atom.coffee for more information.

Basic Keyboard shortcuts

Atom doesn't have much in the way of menus yet. Use these keyboard shortcuts to explore features.

cmd-o : open file/directory

cmd-n : new window

cmd-t : open fuzzy file finder

cmd-: : open command prompt

cmd-f : open command prompt with /

cmd-g : repeat the last search

cmd-r : reload the current window

cmd-alt-ctrl-s : run specs

cmd-alt-arrows : split screen in direction of arrow

cmd-alt-w : toggle word wrap

cmd-alt-f : fold selected lines

Most default OS X keybindings also work.

Init Script

Atom will require ~/.atom/atom.coffee whenever a window is opened or reloaded if it is present in your home directory. This is a rudimentary jumping off point for your own customizations.

Command Panel

A partial implementation of the Sam command language

Examples

, selects entire file

1,4 selects lines 1-4

/pattern selects the first match after the cursor/selection

s/pattern/replacement replace first text matching pattern in current selection

s/pattern/replacement/g replace all text matching pattern in current selection

,s/pattern/replacement/g replace all text matching pattern in file

1,4s/pattern/replacement replace all text matching pattern in lines 1-4

x/pattern selects all matches in the current selections

,x/pattern selects all matches in the file

,x/pattern1/ x/pattern2 "structural regex" - selects all matches of pattern2 inside matches of pattern1

Key Bindings

Atom has a CSS based key binding scheme. We will add a nicer loading mechanism, but for now you can bind keys by calling window.keymap.bindKeys with a CSS selector and a hash of key-pattern -> event mappings.

window.keymap.bindKeys '.editor'
  'ctrl-p': 'party-time'
  'ctrl-q': 'open-dialog-q'

When a keypress matches a pattern on an element that matches the selector, it will be translated to the named event, which will bubble up the DOM from the site of the keypress. Extension code can listen for the named event and react to it.