From 2a0ee6268534c788d06ffa5431317658b74a8e15 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 7 Jan 2013 09:21:41 -0800 Subject: [PATCH] Uppercase current word/selection with meta-u --- spec/app/edit-session-spec.coffee | 17 +++++++++++++++++ src/app/edit-session.coffee | 10 ++++++++++ src/app/editor.coffee | 2 ++ src/app/keymaps/editor.cson | 1 + 4 files changed, 30 insertions(+) diff --git a/spec/app/edit-session-spec.coffee b/spec/app/edit-session-spec.coffee index 977f4e2ac..047b052b6 100644 --- a/spec/app/edit-session-spec.coffee +++ b/spec/app/edit-session-spec.coffee @@ -1854,6 +1854,23 @@ describe "EditSession", -> editSession.transpose() expect(editSession.lineForBufferRow(0)).toBe 'xcbaz' + describe ".upperCase()", -> + describe "when there is no selection", -> + it "upper cases the current word", -> + editSession.buffer.setText("aBc") + editSession.setCursorScreenPosition([0, 1]) + editSession.upperCase() + expect(editSession.lineForBufferRow(0)).toBe 'ABC' + expect(editSession.getSelectedBufferRange()).toEqual [[0, 1], [0, 1]] + + describe "when there is a selection", -> + it "upper cases the current selection", -> + editSession.buffer.setText("abc") + editSession.setSelectedBufferRange([[0,0], [0,2]]) + editSession.upperCase() + expect(editSession.lineForBufferRow(0)).toBe 'ABc' + expect(editSession.getSelectedBufferRange()).toEqual [[0, 0], [0, 2]] + describe "soft-tabs detection", -> it "assign soft / hard tabs based on the contents of the buffer, or uses the default if unknown", -> editSession = fixturesProject.buildEditSessionForPath('sample.js', softTabs: false) diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index fb21db23b..55bd0fdcd 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -552,6 +552,16 @@ class EditSession else selection.insertText selection.getText().split('').reverse().join('') + upperCase: -> + @mutateSelectedText (selection) => + range = selection.getBufferRange() + if selection.isEmpty() + selection.selectWord() + text = selection.getText() + selection.delete() + selection.insertText text.toUpperCase() + selection.setBufferRange(range) if range + expandLastSelectionOverLine: -> @getLastSelection().expandOverLine() diff --git a/src/app/editor.coffee b/src/app/editor.coffee index bac155751..e25a7cc8b 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -133,6 +133,7 @@ class Editor extends View 'editor:select-to-end-of-word': @selectToEndOfWord 'editor:select-to-beginning-of-word': @selectToBeginningOfWord 'editor:transpose': @transpose + 'editor:upper-case': @upperCase unless @mini _.extend editorBindings, @@ -226,6 +227,7 @@ class Editor extends View selectWord: -> @activeEditSession.selectWord() selectToScreenPosition: (position) -> @activeEditSession.selectToScreenPosition(position) transpose: -> @activeEditSession.transpose() + upperCase: -> @activeEditSession.upperCase() clearSelections: -> @activeEditSession.clearSelections() backspace: -> @activeEditSession.backspace() diff --git a/src/app/keymaps/editor.cson b/src/app/keymaps/editor.cson index 76c6afe9b..b2106ca59 100644 --- a/src/app/keymaps/editor.cson +++ b/src/app/keymaps/editor.cson @@ -31,3 +31,4 @@ 'meta-/': 'editor:toggle-line-comments' 'ctrl-W': 'editor:select-word' 'meta-alt-p': 'editor:log-cursor-scope' + 'meta-u': 'editor:upper-case'