extensibility via services
This commit is contained in:
parent
d2bf0c5502
commit
4f2e9d6fd7
5 changed files with 30 additions and 2 deletions
12
README.md
12
README.md
|
|
@ -8,7 +8,17 @@ Install both [vim-mode](https://github.com/atom/vim-mode) and ex-mode. Type `:`
|
|||
|
||||
## Extend
|
||||
|
||||
See `lib/ex.coffee` to add more commands. Contributions are very welcome!
|
||||
Use the service to register commands, from your own package, or straight from `init.coffee`:
|
||||
|
||||
```coffee
|
||||
# in Atom's init.coffee
|
||||
atom.packages.onDidActivatePackage (pack) ->
|
||||
if pack.name == 'ex-mode'
|
||||
Ex = pack.mainModule.provideEx()
|
||||
Ex.registerCommand 'z', -> console.log("Zzzzzz...")
|
||||
```
|
||||
|
||||
See `lib/ex.coffee` for some examples commands. Contributions are very welcome!
|
||||
|
||||
## Status
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class Command
|
|||
return unless input.characters.length > 0
|
||||
[command, args...] = input.characters.split(" ")
|
||||
|
||||
func = (new Ex)[command]
|
||||
func = Ex.singleton()[command]
|
||||
if func?
|
||||
func(args...)
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
GlobalExState = require './global-ex-state'
|
||||
ExState = require './ex-state'
|
||||
Ex = require './ex'
|
||||
{Disposable, CompositeDisposable} = require 'event-kit'
|
||||
|
||||
module.exports = ExMode =
|
||||
|
|
@ -26,3 +27,6 @@ module.exports = ExMode =
|
|||
|
||||
deactivate: ->
|
||||
@disposables.dispose()
|
||||
|
||||
provideEx: ->
|
||||
registerCommand: Ex.registerCommand.bind(Ex)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
path = require 'path'
|
||||
|
||||
class Ex
|
||||
@singleton: =>
|
||||
@ex ||= new Ex
|
||||
|
||||
@registerCommand: (name, func) =>
|
||||
@singleton()[name] = func
|
||||
|
||||
quit: ->
|
||||
atom.workspace.getActivePane().destroyActiveItem()
|
||||
|
||||
|
|
|
|||
|
|
@ -14,5 +14,13 @@
|
|||
"dependencies": {
|
||||
"underscore-plus": "1.x",
|
||||
"event-kit": "^0.7.2"
|
||||
},
|
||||
"providedServices": {
|
||||
"ex-mode": {
|
||||
"description": "Ex commands",
|
||||
"versions": {
|
||||
"0.20.0": "provideEx"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue