mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
Invoke onEditor on each extension sub-class
This commit is contained in:
@@ -22,13 +22,12 @@ describe "EditorCommand", ->
|
||||
transformed = false
|
||||
edited = false
|
||||
class CustomCommand extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'custom'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
edited = @replaceSelectedText editor, (text) ->
|
||||
transformed = true
|
||||
'new'
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-V', 'custom', =>
|
||||
edited = @replaceSelectedText editor, (text) ->
|
||||
transformed = true
|
||||
'new'
|
||||
|
||||
CustomCommand.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
@@ -41,13 +40,12 @@ describe "EditorCommand", ->
|
||||
transformed = false
|
||||
edited = false
|
||||
class CustomCommand extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'custom'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
edited = @replaceSelectedText editor, (text) ->
|
||||
transformed = true
|
||||
null
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-V', 'custom', =>
|
||||
edited = @replaceSelectedText editor, (text) ->
|
||||
transformed = true
|
||||
null
|
||||
|
||||
CustomCommand.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
@@ -60,13 +58,12 @@ describe "EditorCommand", ->
|
||||
transformed = false
|
||||
edited = false
|
||||
class CustomCommand extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'custom'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
edited = @replaceSelectedText editor, (text) ->
|
||||
transformed = true
|
||||
undefined
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-V', 'custom', =>
|
||||
edited = @replaceSelectedText editor, (text) ->
|
||||
transformed = true
|
||||
undefined
|
||||
|
||||
CustomCommand.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
@@ -78,12 +75,11 @@ describe "EditorCommand", ->
|
||||
describe "custom sub-class", ->
|
||||
it "removes vowels from selected text", ->
|
||||
class VowelRemover extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'devowel'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.replace(/[aeiouy]/gi, '')
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-V', 'devowel', =>
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.replace(/[aeiouy]/gi, '')
|
||||
|
||||
VowelRemover.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
@@ -95,12 +91,10 @@ describe "EditorCommand", ->
|
||||
|
||||
it "maintains reversed selections", ->
|
||||
class VowelRemover extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'devowel'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.replace(/[aeiouy]/gi, '')
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-V', 'devowel', =>
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.replace(/[aeiouy]/gi, '')
|
||||
|
||||
VowelRemover.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
@@ -114,13 +108,11 @@ describe "EditorCommand", ->
|
||||
it "doesn't transform empty selections", ->
|
||||
callbackCount = 0
|
||||
class CustomCommand extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'custom'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
@replaceSelectedText editor, (text) ->
|
||||
callbackCount++
|
||||
text
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-V', 'custom', =>
|
||||
@replaceSelectedText editor, (text) ->
|
||||
callbackCount++
|
||||
text
|
||||
|
||||
CustomCommand.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
@@ -131,30 +123,6 @@ describe "EditorCommand", ->
|
||||
editor.trigger 'custom'
|
||||
expect(callbackCount).toBe 1
|
||||
|
||||
it "registers all keymaps", ->
|
||||
callbackCount = 0
|
||||
eventName = null
|
||||
class CustomCommand extends EditorCommand
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-V': 'custom1'
|
||||
'meta-B': 'custom2'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
eventName = event
|
||||
@replaceSelectedText editor, (text) ->
|
||||
callbackCount++
|
||||
text
|
||||
|
||||
CustomCommand.activate(rootView)
|
||||
editor.moveCursorToTop()
|
||||
editor.selectToEndOfLine()
|
||||
editor.trigger 'custom1'
|
||||
expect(callbackCount).toBe 1
|
||||
expect(eventName).toBe 'custom1'
|
||||
editor.trigger 'custom2'
|
||||
expect(eventName).toBe 'custom2'
|
||||
expect(callbackCount).toBe 2
|
||||
|
||||
describe "LowerCaseCommand", ->
|
||||
it "replaces the selected text with all lower case characters", ->
|
||||
LowerCaseCommand.activate(rootView)
|
||||
@@ -163,7 +131,6 @@ describe "EditorCommand", ->
|
||||
editor.trigger 'lowercase'
|
||||
expect(editor.getTextInRange(editor.getSelection().getBufferRange())).toBe 'array'
|
||||
|
||||
|
||||
describe "UpperCaseCommand", ->
|
||||
it "replaces the selected text with all upper case characters", ->
|
||||
UpperCaseCommand.activate(rootView)
|
||||
|
||||
@@ -2,25 +2,18 @@ module.exports =
|
||||
class EditorCommand
|
||||
|
||||
@activate: (rootView) ->
|
||||
keymaps = @getKeymaps()
|
||||
return unless keymaps
|
||||
|
||||
window.keymap.bindKeys '.editor', keymaps
|
||||
|
||||
for editor in rootView.getEditors()
|
||||
@subscribeToEditor(rootView, editor)
|
||||
@onEditor(editor)
|
||||
|
||||
rootView.on 'editor-open', (e, editor) =>
|
||||
@subscribeToEditor(rootView, editor)
|
||||
@onEditor(editor)
|
||||
|
||||
@subscribeToEditor: (rootView, editor) ->
|
||||
keymaps = @getKeymaps(rootView, editor)
|
||||
return unless keymaps
|
||||
|
||||
for key, event of keymaps
|
||||
do (event) =>
|
||||
editor.on event, =>
|
||||
@execute(editor, event)
|
||||
@register: (editor, key, event, callback) ->
|
||||
binding = {}
|
||||
binding[key] = event
|
||||
window.keymap.bindKeys '.editor', binding
|
||||
editor.on event, =>
|
||||
callback(editor, event)
|
||||
|
||||
@replaceSelectedText: (editor, replace) ->
|
||||
selection = editor.getSelection()
|
||||
|
||||
@@ -3,9 +3,7 @@ EditorCommand = require 'editor-command'
|
||||
module.exports =
|
||||
class LowerCaseCommand extends EditorCommand
|
||||
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-Y': 'lowercase'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.toLowerCase()
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-Y', 'lowercase', =>
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.toLowerCase()
|
||||
|
||||
@@ -3,9 +3,7 @@ EditorCommand = require 'editor-command'
|
||||
module.exports =
|
||||
class UpperCaseCommand extends EditorCommand
|
||||
|
||||
@getKeymaps: (editor) ->
|
||||
'meta-X': 'uppercase'
|
||||
|
||||
@execute: (editor, event) ->
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.toUpperCase()
|
||||
@onEditor: (editor) ->
|
||||
@register editor, 'meta-X', 'uppercase', =>
|
||||
@replaceSelectedText editor, (text) ->
|
||||
text.toUpperCase()
|
||||
|
||||
Reference in New Issue
Block a user