Commit Graph

422 Commits

Author SHA1 Message Date
Kevin Sawicki
31690d16ec Remove unused import 2013-03-04 21:43:33 -08:00
Kevin Sawicki
4fe6db240b Consolidate Git status checking
Now the status bar and tree view both listen for
status change events and use the cached information
available from the git object to update their views.
2013-03-04 21:43:33 -08:00
Kevin Sawicki
2ec4d558ba Make project's Git repository a window global
This allows it to operate independently of the
project and mirror the availability of the root view
and project.
2013-03-04 21:43:33 -08:00
probablycorey
30d4cb81b8 Use Courier as the default font for specs
Fixes #323
2013-03-04 16:40:02 -08:00
Corey Johnson
44680ad50c Revert "💄"
This reverts commit c2c4d03c2d.
2013-02-27 10:11:02 -08:00
Corey Johnson
c2c4d03c2d 💄 2013-02-27 08:51:51 -08:00
Kevin Sawicki
2f331b4377 Set font-size of fold marker to .8em
This keeps the line height of the gutter the same
as the line height of the editor for folded lines.

Closes #304
2013-02-25 09:49:53 -08:00
Corey Johnson & Kevin Sawicki
2c986fdbfc Fix race condition in spec 2013-02-22 16:31:50 -08:00
Kevin Sawicki & Nathan Sobo
5da5bf94b6 Add 'editor:save-debug-snapshot' command. Closes #191.
This saves the state of the rendered lines, the display buffer, the
tokenized buffer, and the buffer to a file. If a problem arises with
rendering, hopefully we can use it to diagnose in which layer things
went awry.
2013-02-22 14:28:04 -07:00
Kevin Sawicki
df3c00ac9c Remove console log call in spec 2013-02-20 15:50:31 -08:00
Kevin Sawicki
2457e7f5b2 Add indent guide to whitespace lines
The whitespace in lines that have no non-whitespace
text is treated as trailing whitespace so add the
indent guide to the trailing whitespace tokens when the
line is 100% whitespace.
2013-02-20 15:40:44 -08:00
Kevin Sawicki
27f44fbfd7 Invalidate empty lines proceeding a change event
The indent guide on empty lines will now be updated when
the non-empty line preceeding the empty lines is updated.
2013-02-20 12:20:15 -08:00
Kevin Sawicki
101b1aba12 Add indent guide to editor
The guide displays a continuous vertical line across lines with
the same indent levels.

Closes #50
2013-02-20 12:20:15 -08:00
Kevin Sawicki
2f797bfc7a 💄 the spec indentation 2013-02-20 12:20:15 -08:00
Kevin Sawicki
dedde7b222 Only add newline when insert row exceeds last row
Previously if the line before a trailing newline was
duplicated an extra newline would inserted with the
duplicated line.
2013-02-19 21:02:25 -08:00
Kevin Sawicki
d27bbee37d Support selecting editor lines from the gutter
Mouse events that occur in the gutter are forwarded to the
rendered lines with the y-coordinate translated to be the
leftmost pixel of the editor to simulate the event originating
from column 0 of the current line row.

Closes #287
2013-02-19 18:16:29 -08:00
Corey Johnson & Nathan Sobo
9e8831f710 RootView.initialize no longer assigns window.rootView or calls open 2013-02-19 18:26:50 -07:00
Corey Johnson & Nathan Sobo
0b5ea8578f Eliminate rootView.project references. 2013-02-19 18:26:50 -07:00
Kevin Sawicki
ee3f5a3c14 Remove unused repo variable 2013-02-15 09:56:04 -08:00
Kevin Sawicki
25e56b9967 Remove unneeded rootView variable in editor spec 2013-02-15 09:56:04 -08:00
Corey Johnson & Nathan Sobo
da59459197 Autoscroll the last cursor when it inserts text
Normally, we don't autoscroll to a cursor when the buffer changes. But
this is a change caused by the cursor itself, so it makes sense to
keep it in view.
2013-02-14 13:21:39 -07:00
Corey Johnson & Nathan Sobo
52cbf5e367 Correctly translate clicks to screen positions w/ var-width fonts
Closes #267
2013-02-14 12:04:18 -07:00
Nathan Sobo
65bf13e211 Remove unneeded 'resize' event trigger. It's triggered by the helper. 2013-02-12 17:09:05 -07:00
Nathan Sobo
97988eb62e Clear font style in afterEach so it doesn't cause test pollution 2013-02-12 17:07:14 -07:00
Nathan Sobo
13db9169e9 Don't simulate DOM attachment. Pixel translation needs the real thing. 2013-02-12 17:07:14 -07:00
Nathan Sobo
405a918280 Never redraw when the font size changes on a detached editor
When the font size changes and the editor is detached, it schedules
itself to be redrawn the next time we're reattached rather than
updating the display in a detached state.

Detached display updates worked in the past because we didn't need to
be on the DOM to determine horizontal and vertical positions once we
had calculated dimensions once. So it worked to temporarily attach
the editor when calculating new dimensions, and then continue updates
even when it was detached. That now breaks because we can't ask for
pixel positions if we aren't on the DOM.
2013-02-12 17:07:14 -07:00
Nathan Sobo
81145eb35f Initial support for variable width fonts
When translating a logical screen position (columns/rows) to a pixel
position, the editor now builds a temporary version of the line for the
given row. It then uses the DOM range API to insert an empty range
at the correct text node and offset for the given column and determines
the left position based on its clientRect.

Depending on the speed impact, we may want to optimize this by
recycling the existing line node if it exists on screen rather than
building a new one every time. We will still have to build one if the
line we're moving to isn't on screen yet. We could also increase the
chances of the line being on screen by autoscrolling to the vertical
position first, and *then* calculating the horizontal position. Lots
to explore here.
2013-02-12 17:07:14 -07:00
Kevin Sawicki
5f84ec711b Add class to hard tabs and leading/trailing spaces
This allows whitespace to be still be styled when invisibles
are disabled.
2013-02-12 13:25:22 -08:00
Kevin Sawicki
d234c8fdce Don't track closed sessions with no path 2013-02-12 11:20:21 -08:00
Kevin Sawicki
eceabf0e31 Add spec for clearing opened session from undo stack 2013-02-12 11:17:43 -08:00
Kevin Sawicki
5ecbda0aac Restore closed tab at previous index 2013-02-12 09:41:32 -08:00
Jon Rohan
c43a1e5ce5 Undo last closed tab 2013-02-12 08:56:39 -08:00
Kevin Sawicki
9057f044bf Add specs for Editor.moveEditSessionToEditor 2013-02-11 21:01:21 -08:00
Kevin Sawicki
9eae796be3 Add move edit session specs 2013-02-11 20:54:04 -08:00
Kevin Sawicki
c9fae85375 Rename moveEditSessionAtIndex to moveEditSessionToIndex 2013-02-11 20:29:48 -08:00
Kevin Sawicki
a104e67acd Support moving an edit session's editor index 2013-02-11 18:36:50 -08:00
Nathan Sobo
0bd98bf8f8 Do a better job cleaning up after Editors and EditSessions
- EditSessions destroy their Selections when they are destroyed
- Editors destroy their EditSessions when they are destroyed
- Editors unsubscribe from the document and window when they are
  removed from the DOM.
- When an EditSession is destroyed via any code path, the Editor with
  that EditSession removes it.
- Selections no longer trigger 'destroyed' events if their parent
  EditSession has already been destroyed.

These are all really intertwined, so I'm doing them as one commit
since that was the only way to keep the specs green.
2013-02-06 16:54:19 -07:00
Kevin Sawicki & Nathan Sobo
59d0742c17 Remove Anchor and AnchorRange. They're fully replaced by markers.
We're still leaking markers for selections and cursors. We need to
clean that up before merging.
2013-02-05 18:15:48 -07:00
Kevin Sawicki & Nathan Sobo
85111748ec Reset spy in spec before making next assertion 2013-02-05 16:34:36 -07:00
Kevin Sawicki & Nathan Sobo
75e040b73b Merge remote-tracking branch 'origin/dev' into markers
Conflicts:
	src/app/editor.coffee
2013-02-05 16:07:05 -07:00
Nathan Sobo
1d30605f7f Convert selection and cursor fully over to markers. 2013-02-05 13:39:00 -07:00
Kevin Sawicki
8de45ccc21 Bind meta-D to duplicate line below
Refs #134
2013-02-05 12:16:50 -08:00
Nathan Sobo
852b4c2f8a Merge remote-tracking branch 'origin/dev' into markers 2013-02-04 20:04:01 -07:00
Justin Palmer
4350be62c6 💀 is-focused.
targeting blurred state instead so normal state styles don't need a
special prefix
2013-02-04 16:02:09 -08:00
Kevin Sawicki
bef965d863 Add line number padding to expected width 2013-02-04 15:35:40 -08:00
Nathan Sobo
abafb541df Merge remote-tracking branch 'origin/dev' into better-anchors 2013-02-02 16:47:09 -07:00
Nathan Sobo
aa076a0bf2 Remove focused specs 2013-02-02 16:45:15 -07:00
Nathan Sobo
12425b796c Tweak specs now that buffer changes don't autoscroll the cursor 2013-02-02 16:34:28 -07:00
Nathan Sobo
c865b9f53a Update selection autoscroll specs with 3-valued logic
If autoscroll is true, we center the view on the selection. If false,
we do no autoscrolling at all. And if undefined we autoscroll to the
cursor.
2013-02-02 15:58:35 -07:00
Jon Rohan
0d2a328dcc making the editor .focused .is-focused for symmetry 2013-02-01 19:23:52 -05:00