diff --git a/lib/ex.coffee b/lib/ex.coffee index f998b2f..ca0ca0e 100644 --- a/lib/ex.coffee +++ b/lib/ex.coffee @@ -107,7 +107,7 @@ class Ex @singleton()[name] = func @registerAlias: (alias, name) => - @singleton()[alias] = @singleton()[name] + @singleton()[alias] = (args) => @singleton()[name](args) quit: -> atom.workspace.getActivePane().destroyActiveItem() diff --git a/spec/ex-commands-spec.coffee b/spec/ex-commands-spec.coffee index 89420f9..35bfd22 100644 --- a/spec/ex-commands-spec.coffee +++ b/spec/ex-commands-spec.coffee @@ -4,7 +4,8 @@ os = require 'os' uuid = require 'node-uuid' helpers = require './spec-helper' -Ex = require('../lib/ex').singleton() +ExClass = require('../lib/ex') +Ex = ExClass.singleton() describe "the commands", -> [editor, editorElement, vimState, exState, dir, dir2] = [] @@ -732,3 +733,21 @@ describe "the commands", -> atom.commands.dispatch(editorElement, 'ex-mode:open') submitNormalModeInputText(':set nonumber') expect(atom.config.get('editor.showLineNumbers')).toBe(false) + + describe "aliases", -> + it "calls the aliased function without arguments", -> + ExClass.registerAlias('W', 'w') + spyOn(Ex, 'write') + keydown(':') + submitNormalModeInputText('W') + expect(Ex.write).toHaveBeenCalled() + + it "calls the aliased function with arguments", -> + ExClass.registerAlias('W', 'write') + spyOn(Ex, 'W').andCallThrough() + spyOn(Ex, 'write') + keydown(':') + submitNormalModeInputText('W') + WArgs = Ex.W.calls[0].args[0] + writeArgs = Ex.write.calls[0].args[0] + expect(WArgs).toBe writeArgs