Commit Graph

924 Commits

Author SHA1 Message Date
Corey Johnson & Nathan Sobo
1db0935447 Use _.multiplyString in building a tab token 2012-10-26 12:20:37 -06:00
Corey Johnson & Nathan Sobo
adf00b60f3 Detect softTabs/hardTabs when an EditSession is created 2012-10-26 12:20:14 -06:00
Corey Johnson & Nathan Sobo
3a067bcd71 Add editor:toggle-soft-tabs event 2012-10-26 11:52:53 -06:00
Corey Johnson & Nathan Sobo
487245311e EditSession#indentLevelForLine detects tabs/spaces for each line
This allows folding, auto-indent, etc to work in a file in which *both* tabs and spaces are used to indent. Not that this is a good idea, but at least we handle it gracefully.
2012-10-26 11:52:37 -06:00
Corey Johnson & Nathan Sobo
4c24f4ea65 indentSelectedRows works with hard tabs 2012-10-26 11:15:55 -06:00
Corey Johnson & Nathan Sobo
0aa9f8de57 Indent works with hard tabs 2012-10-26 11:15:55 -06:00
Corey Johnson & Nathan Sobo
29351ee5fc Move setIndentationForBufferRow and indentationForBufferRow to EditSession 2012-10-26 11:15:55 -06:00
Nathan Sobo
d89979fc61 Merge pull request #86 from github/outline-view
Jump to method declaration
2012-10-25 17:54:27 -07:00
Corey Johnson & Nathan Sobo
1bb2531f31 Tab can auto-indent at the beginning of a line 2012-10-25 16:27:28 -06:00
Nathan Sobo
d310297fe7 Radically simplify the definition of "modified" for buffers
Now, we maintain md5 signatures for the on-disk and in-memory contents of the buffer. Whenever either contents change, we recompute the signature and store it on the buffer. We can tell if the buffer is modified by comparing these signatures. When the disk contents change, we compare the memory and disk signatures *before* recomputing the disk signature to determine whether to update the buffer or mark it as a conflict.
2012-10-25 13:08:38 -06:00
Corey Johnson
0c83ee3db0 💩 Remove vim-mode from root-view 2012-10-25 11:53:07 -07:00
Corey Johnson
79476bbc8c do not reraise errors from loading extensions 2012-10-25 11:49:36 -07:00
Corey Johnson
2af29c9934 Extensions have a src and specs directory now. Move existing extension specs.
Move the extensions spec code inside of the extension's spec directory. Move source code to the extension's src directory
2012-10-25 11:48:13 -07:00
Corey Johnson
6870f21ca5 Better error reporting when an extension cannot be found. 2012-10-25 11:48:12 -07:00
Nathan Sobo
031da13316 Remove unused methods from native OnigRegExp
`OnigScanner` takes over these duties
2012-10-25 12:23:37 -06:00
Nathan Sobo
33c6fe8009 Remove regex from TextMateGrammar's Pattern class
We build a native `OnigScanner` object at the `Rule` level which tries to match every regex for the entire rule, rather than using an individual regex for each pattern from the JS side.
2012-10-25 12:07:13 -06:00
Nathan Sobo
b1e8e2391f Merge branch 'paste-indentation' 2012-10-25 10:50:05 -06:00
Nathan Sobo
e53410b5fd Add indentBasis metadata to pasteboard when copying text
This allows indent to be normalized properly even if the leading whitespace isn't copied from the first line.
2012-10-25 10:44:54 -06:00
Corey Johnson & Nathan Sobo
d3b7fbb37b Use window.pasteboard in cut/copy/paste 2012-10-24 18:35:55 -06:00
Corey Johnson & Nathan Sobo
6f353fda62 Add indentBasis option to insertText
We will use this to normalize indentation on paste even when we didn't copy all the leading whitespace on the first line.
2012-10-24 18:29:09 -06:00
Nathan Sobo
9fc439b30d Use ? to avoid a bug caused by falsy zeroes 2012-10-24 17:54:15 -06:00
Nathan Sobo
fd4b6c85ce Add a global pasteboard object which supports metadata
This metadata will be used to record the indentation level of the first line when copying multiple lines of text to the pasteboard. The pasteboard takes the md5 of the pasted content when writing, then when reading it associates the last written metadata only when the signature matches the previously written value.
2012-10-24 17:42:58 -06:00
Corey Johnson & Nathan Sobo
7f9992d624 Optimize bracket matching 2012-10-24 16:28:00 -07:00
Kevin Sawicki
f995cbb45c 💄 2012-10-24 14:36:46 -07:00
Corey Johnson
e02b8f8eec Add support for brackets with the same begin/end character 2012-10-24 14:24:19 -07:00
Corey Johnson
ebbb39f50e Improve brackets auto closing.
When an open bracket is inserted, an anchorRange is created. When a closing bracket is inserted, and its position matches the end of one of the anchorRanges, the closing bracket is not inserted and the cursor moves right.
2012-10-24 14:24:19 -07:00
Corey Johnson
1ad6fcc2d3 :lipstick 2012-10-24 14:24:19 -07:00
Nathan Sobo
ee09c20214 Merge branch 'master' into paste-indentation 2012-10-24 12:37:50 -06:00
Nathan Sobo
ca2527f4b8 Meta-w closes spec windows again.
This adds a 'core:close' event to meta-w in the default bindings, and modifies window to listen for it.
2012-10-24 12:35:31 -06:00
Nathan Sobo
b71fa308a3 Always run window.startup when window.coffee is required
When we actually want to attach the root view in window-bootstrap.coffee, we call `window.attachRootView(path)` instead of calling `window.startup(path)`. Having `startup` called automatically means we can be sure any code we add there runs in every environment (including benchmark and specs). This is where we do things like setup the global keymap, parse text mate bundles and themes, and establish the window close handler. Any globals other than the root view that we want to be available in all environments should be established here. Right now that's just the keymap, but soon I want to add a global pasteboard.
2012-10-24 12:34:45 -06:00
Nathan Sobo
4d9b777350 Fix LanguageMode.proto.suggestedIndentationForBufferRow exception for row 0 2012-10-23 16:50:00 -06:00
Nathan Sobo
b5b552737d Enable indent normalization on paste 2012-10-23 16:30:49 -06:00
Nathan Sobo
d1999b91ff Base first line delta on the cursor column, not the existing line's indent 2012-10-23 16:30:38 -06:00
Nathan Sobo
839d57d819 Use existing line's indentation level if inserting normalized lines within it
If we're pasting multiple lines starting inside an already existing line, we never want to auto indent. We should just take its existing indentation level. Also, we strip the leading whitespace off the first line we're inserting, assuming it's already being represented by the indentation of the line we're onto which we're appending it.
2012-10-23 16:17:26 -06:00
Nathan Sobo
3b18c6a42d With autoIndent disabled, don't use suggested first line indent when normalizing
Also, when some lines are *less* indented than the first line, it might not be possible to outdent them as far as they originally were relative to the first line, so we do as much as possible.
2012-10-23 14:27:26 -06:00
Corey Johnson
e20832aa50 Tree View uses core:close core:confirm core:cancel and adds tool-pane:unfocus 2012-10-23 13:21:34 -07:00
Corey Johnson
72a64b8e8b Add core:cancel and core:confirm to atom keymap
Also 💄
2012-10-23 13:21:33 -07:00
Nathan Sobo
7bd4e8801f If inserting on a line that is longer than the suggested indent, preserve indent 2012-10-23 14:13:51 -06:00
Nathan Sobo
0e5c76b474 Start adding the normalizeIndent option to EditSession.proto.insertText
This will be used by the paste command to ensure that indentation is normalized.
2012-10-23 14:07:00 -06:00
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
Kevin Sawicki
ab8c22825c Support outdenting when indent is < 1 tab length 2012-10-23 09:57:39 -07:00
Corey Johnson & Nathan Sobo
9303aaa8fd Rename root-view: event prefix to window: 2012-10-19 12:51:36 -06:00
Corey Johnson & Nathan Sobo
e6d541438d Editor uses @command to register command handlers 2012-10-19 12:48:19 -06:00
Corey Johnson & Nathan Sobo
191164ed4c Add $.fn.command method which ensures event is documented
For now, we auto-generate the documentation string by humanizing the event name. In the future, we may provide the option to provide more documentation, such as info about any arguments to the event, extended documentation, etc.
2012-10-19 12:14:02 -06:00
Corey Johnson & Nathan Sobo
de3bbce29f Only show events w/ descriptions in EventPalette
Also, auto-generate human readable event name in editor. This is a good example of how we could do this automatically for some kind of `onCommand`, `command`, `onInteractiveEvent` method that combines the event name, documentation string, and handler in one shot.
2012-10-19 11:24:40 -06:00
Nathan Sobo
2b8c946a65 Merge branch 'master' into event-palette
Conflicts:
	spec/extensions/fuzzy-finder-spec.coffee
	src/extensions/fuzzy-finder/fuzzy-finder.coffee
2012-10-18 16:33:44 -06:00
Corey Johnson & Nathan Sobo
33b1b66ee4 Merge branch 'invisibles' 2012-10-18 14:44:48 -07:00
Corey Johnson & Nathan Sobo
93cbe2bb22 Create root-view:toggle-invisibles event 2012-10-18 14:44:21 -07:00
Corey Johnson & Nathan Sobo
a72d0399f7 Add Editor.setShowInvisibles and remove showInvisibles from EditSession 2012-10-18 14:10:36 -07:00
Corey Johnson & Nathan Sobo
ae0a60f4a9 Eliminate unused showInvisibles parameter. 2012-10-18 11:52:51 -07:00