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
|
## 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
|
## Status
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class Command
|
||||||
return unless input.characters.length > 0
|
return unless input.characters.length > 0
|
||||||
[command, args...] = input.characters.split(" ")
|
[command, args...] = input.characters.split(" ")
|
||||||
|
|
||||||
func = (new Ex)[command]
|
func = Ex.singleton()[command]
|
||||||
if func?
|
if func?
|
||||||
func(args...)
|
func(args...)
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
GlobalExState = require './global-ex-state'
|
GlobalExState = require './global-ex-state'
|
||||||
ExState = require './ex-state'
|
ExState = require './ex-state'
|
||||||
|
Ex = require './ex'
|
||||||
{Disposable, CompositeDisposable} = require 'event-kit'
|
{Disposable, CompositeDisposable} = require 'event-kit'
|
||||||
|
|
||||||
module.exports = ExMode =
|
module.exports = ExMode =
|
||||||
|
|
@ -26,3 +27,6 @@ module.exports = ExMode =
|
||||||
|
|
||||||
deactivate: ->
|
deactivate: ->
|
||||||
@disposables.dispose()
|
@disposables.dispose()
|
||||||
|
|
||||||
|
provideEx: ->
|
||||||
|
registerCommand: Ex.registerCommand.bind(Ex)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
path = require 'path'
|
path = require 'path'
|
||||||
|
|
||||||
class Ex
|
class Ex
|
||||||
|
@singleton: =>
|
||||||
|
@ex ||= new Ex
|
||||||
|
|
||||||
|
@registerCommand: (name, func) =>
|
||||||
|
@singleton()[name] = func
|
||||||
|
|
||||||
quit: ->
|
quit: ->
|
||||||
atom.workspace.getActivePane().destroyActiveItem()
|
atom.workspace.getActivePane().destroyActiveItem()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,13 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"underscore-plus": "1.x",
|
"underscore-plus": "1.x",
|
||||||
"event-kit": "^0.7.2"
|
"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