From 759fe2dd5bfce6579a46ba5b55649b0a9f74ed20 Mon Sep 17 00:00:00 2001 From: Andy Delcambre Date: Thu, 17 Jan 2013 16:15:20 -0800 Subject: [PATCH] Bind meta-= to autoindent currently selected rows Closes #142 --- spec/app/edit-session-spec.coffee | 11 +++++++++++ src/app/edit-session.coffee | 3 +++ src/app/editor.coffee | 2 ++ src/app/keymaps/editor.cson | 1 + src/app/selection.coffee | 4 ++++ 5 files changed, 21 insertions(+) diff --git a/spec/app/edit-session-spec.coffee b/spec/app/edit-session-spec.coffee index 2adf7feb4..c74a6605e 100644 --- a/spec/app/edit-session-spec.coffee +++ b/spec/app/edit-session-spec.coffee @@ -1973,6 +1973,17 @@ describe "EditSession", -> editSession.indent() expect(editSession.lineForBufferRow(2)).toBe " " + it "auto-indents selection when autoIndent is called", -> + editSession.setCursorBufferPosition([2, 0]) + editSession.insertText(" 0\n 2\n4\n") + + editSession.setSelectedBufferRange([[2, 0], [4, 0]]) + editSession.autoIndentSelectedRows() + + expect(editSession.lineForBufferRow(2)).toBe " 0" + expect(editSession.lineForBufferRow(3)).toBe " 2" + expect(editSession.lineForBufferRow(4)).toBe "4" + describe "editor.autoIndentOnPaste", -> it "does not auto-indent pasted text by default", -> editSession.setCursorBufferPosition([2, 0]) diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index 36bec76ca..7e7791963 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -208,6 +208,9 @@ class EditSession toggleLineCommentsInSelection: -> @mutateSelectedText (selection) -> selection.toggleLineComments() + autoIndentSelectedRows: -> + @mutateSelectedText (selection) -> selection.autoIndentSelectedRows() + cutToEndOfLine: -> maintainPasteboard = false @mutateSelectedText (selection) -> diff --git a/src/app/editor.coffee b/src/app/editor.coffee index d0be64e3f..649d8afbd 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -117,6 +117,7 @@ class Editor extends View 'editor:select-word': @selectWord 'editor:newline': @insertNewline 'editor:indent': @indent + 'editor:auto-indent': @autoIndent 'editor:indent-selected-rows': @indentSelectedRows 'editor:outdent-selected-rows': @outdentSelectedRows 'editor:backspace-to-beginning-of-word': @backspaceToBeginningOfWord @@ -248,6 +249,7 @@ class Editor extends View insertNewline: -> @activeEditSession.insertNewline() insertNewlineBelow: -> @activeEditSession.insertNewlineBelow() indent: (options) -> @activeEditSession.indent(options) + autoIndent: (options) -> @activeEditSession.autoIndentSelectedRows(options) indentSelectedRows: -> @activeEditSession.indentSelectedRows() outdentSelectedRows: -> @activeEditSession.outdentSelectedRows() cutSelection: -> @activeEditSession.cutSelectedText() diff --git a/src/app/keymaps/editor.cson b/src/app/keymaps/editor.cson index 7232af732..2f48d27bb 100644 --- a/src/app/keymaps/editor.cson +++ b/src/app/keymaps/editor.cson @@ -4,6 +4,7 @@ 'enter': 'editor:newline' 'meta-enter': 'editor:newline-below' 'tab': 'editor:indent' + 'meta-=': 'editor:auto-indent' 'meta-d': 'editor:delete-line' 'ctrl-[': 'editor:fold-current-row' 'ctrl-]': 'editor:unfold-current-row' diff --git a/src/app/selection.coffee b/src/app/selection.coffee index dce6f1b3e..f30eea09a 100644 --- a/src/app/selection.coffee +++ b/src/app/selection.coffee @@ -307,6 +307,10 @@ class Selection if matchLength = buffer.lineForRow(row).match(leadingTabRegex)?[0].length buffer.delete [[row, 0], [row, matchLength]] + autoIndentSelectedRows: -> + [start, end] = @getBufferRowRange() + @editSession.autoIndentBufferRows(start, end) + toggleLineComments: -> @modifySelection => @editSession.toggleLineCommentsForBufferRows(@getBufferRowRange()...)