From d04d4e22a2feba03318f1e8c53f9a579254eeb4a Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 13 Jun 2012 18:08:08 -0600 Subject: [PATCH] Move autoOutdent code to LanguageMode --- src/app/ace-outdent-adaptor.coffee | 9 ++------- src/app/edit-session.coffee | 4 ++-- src/app/language-mode.coffee | 6 ++++++ src/app/selection.coffee | 9 +++------ 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/app/ace-outdent-adaptor.coffee b/src/app/ace-outdent-adaptor.coffee index 795d2a066..35b313e20 100644 --- a/src/app/ace-outdent-adaptor.coffee +++ b/src/app/ace-outdent-adaptor.coffee @@ -1,5 +1,3 @@ -Range = require 'range' - module.exports = class AceOutdentAdaptor constructor: (@editSession) -> @@ -12,11 +10,8 @@ class AceOutdentAdaptor findMatchingBracket: ({row, column}) -> {row: 0, column: 0} - # Does not actually replace text, just line at range.start outdents one level + # Does not actually replace text; always outdents one level replace: (range, text) -> - {row, column} = @editSession.getCursorBufferPosition() start = range.start end = {row: range.start.row, column: range.start.column + @editSession.tabText.length} - @buffer.change(new Range(start, end), "") - @editSession.setCursorBufferPosition({row, column: column - @editSession.tabText.length}) - + @buffer.change([start, end], "") diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index 3460aecd4..3d66aec06 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -214,8 +214,8 @@ class EditSession return { text } unless @autoIndent @languageMode.autoIndentTextAfterBufferPosition(text, bufferPosition) - autoOutdent: -> - @languageMode.autoOutdentText() + autoOutdentBufferRow: (bufferRow) -> + @languageMode.autoOutdentBufferRow(bufferRow) toggleLineCommentsInRange: (range) -> @languageMode.toggleLineCommentsInRange(range) diff --git a/src/app/language-mode.coffee b/src/app/language-mode.coffee index 313e2cc95..28a485670 100644 --- a/src/app/language-mode.coffee +++ b/src/app/language-mode.coffee @@ -6,6 +6,7 @@ Range = require 'range' Point = require 'point' AceLineCommentAdaptor = require 'ace-line-comment-adaptor' AceFoldAdaptor = require 'ace-fold-adaptor' +AceOutdentAdaptor = require 'ace-outdent-adaptor' module.exports = class LanguageMode @@ -20,6 +21,7 @@ class LanguageMode @buffer.on "change.languageMode#{@id}", (e) => @handleBufferChange(e) @aceLineCommentAdaptor = new AceLineCommentAdaptor(@buffer) @aceFoldAdaptor = new AceFoldAdaptor(this) + @aceOutdentAdaptor = new AceOutdentAdaptor(this) requireAceMode: -> extension = if @buffer.getPath() then @buffer.getPath().split('/').pop().split('.').pop() else null @@ -60,6 +62,10 @@ class LanguageMode {text, shouldOutdent} + autoOutdentBufferRow: (bufferRow) -> + state = @stateForRow(bufferRow) + @aceMode.autoOutdent(state, @aceOutdentAdaptor, bufferRow) + handleBufferChange: (e) -> oldRange = e.oldRange.copy() newRange = e.newRange.copy() diff --git a/src/app/selection.coffee b/src/app/selection.coffee index 673e305d3..5574b7dcb 100644 --- a/src/app/selection.coffee +++ b/src/app/selection.coffee @@ -130,7 +130,7 @@ class Selection @clear() newBufferRange = @editSession.buffer.change(oldBufferRange, text) @cursor.setBufferPosition(newBufferRange.end, skipAtomicTokens: true) if wasReversed - @autoOutdentText() if shouldOutdent + @autoOutdent() if shouldOutdent backspace: -> @editSession.destroyFoldsContainingBufferRow(@getBufferRange().end.row) @@ -199,11 +199,8 @@ class Selection autoIndentText: (text) -> @editSession.autoIndentTextAfterBufferPosition(text, @cursor.getBufferPosition()) - autoOutdentText: -> - screenRow = @cursor.getCurrentScreenRow() - bufferRow = @cursor.getCurrentBufferRow() - state = @editSession.stateForScreenRow(screenRow) - @editSession.getCurrentMode().autoOutdent(state, new AceOutdentAdaptor(@editSession), bufferRow) + autoOutdent: -> + @editSession.autoOutdentBufferRow(@cursor.getCurrentBufferRow()) handleBufferChange: (e) -> @modifyScreenRange =>