Copyright | (c) Sebastian Witte |
---|---|
License | Apache-2.0 |
Maintainer | woozletoff@gmail.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
- startPluginThreads :: Config StartupConfig () -> [Neovim StartupConfig () NeovimPlugin] -> IO (Either Doc ([FunctionMapEntry], [ThreadId]))
- type StartupConfig = StartupConfig NeovimConfig
- wrapPlugin :: Applicative m => Plugin r st -> m NeovimPlugin
- data NeovimPlugin
- data Plugin r st = Plugin {
- exports :: [ExportedFunctionality () ()]
- statefulExports :: [StatefulFunctionality r st]
- data Synchronous
- data CommandOption
- addAutocmd :: ByteString -> AutocmdOptions -> Neovim r st () -> Neovim r st (Maybe (Either (Neovim anyR anySt ()) ReleaseKey))
- addAutocmd' :: ByteString -> AutocmdOptions -> Neovim' () -> Neovim r st (Maybe ReleaseKey)
- registerInStatelessContext :: (FunctionMapEntry -> Neovim r st ()) -> FunctionalityDescription -> ([Object] -> Neovim' Object) -> Neovim r st (Maybe FunctionMapEntry)
- registerInStatefulContext :: (FunctionMapEntry -> Neovim r st ()) -> FunctionalityDescription -> ([Object] -> Neovim r st Object) -> TQueue SomeMessage -> TVar (Map FunctionName ([Object] -> Neovim r st Object)) -> Neovim r st (Maybe FunctionMapEntry)
Documentation
startPluginThreads :: Config StartupConfig () -> [Neovim StartupConfig () NeovimPlugin] -> IO (Either Doc ([FunctionMapEntry], [ThreadId])) Source #
wrapPlugin :: Applicative m => Plugin r st -> m NeovimPlugin Source #
Wrap a Plugin
in some nice blankets, so that we can put them in a simple
list.
data NeovimPlugin Source #
Plugin
values are wraped inside this data type via wrapPlugin
so that
we can put plugins in an ordinary list.
This data type contains meta information for the plugin manager.
Plugin | |
|
data Synchronous Source #
This option detemines how neovim should behave when calling some functionality on a remote host.
Async | Call the functionality entirely for its side effects and do not wait for it to finish. Calling a functionality with this flag set is completely asynchronous and nothing is really expected to happen. This is why a call like this is called notification on the neovim side of things. |
Sync | Call the function and wait for its result. This is only synchronous on the neovim side. This means that the GUI will (probably) not allow any user input until a reult is received. |
data CommandOption Source #
Options for commands.
Some command can also be described by using the OverloadedString extensions.
This means that you can write a literal String
inside your source file in
place for a CommandOption
value. See the documentation for each value on
how these strings should look like (Both versions are compile time checked.)
CmdSync Synchronous | Stringliteral "sync" or "async" |
CmdRegister | Register passed to the command. Stringliteral: |
CmdNargs String | Command takes a specific amount of arguments Automatically set via template haskell functions. You really shouldn't use this option yourself unless you have to. |
CmdRange RangeSpecification | Determines how neovim passes the range. Stringliterals: "%" for |
CmdCount Word | Command handles a count. The argument defines the default count. Stringliteral: string of numbers (e.g. "132") |
CmdBang | Command handles a bang Stringliteral: "!" |
:: ByteString | The event to register to (e.g. BufWritePost) |
-> AutocmdOptions | |
-> Neovim r st () | Fully applied function to register |
-> Neovim r st (Maybe (Either (Neovim anyR anySt ()) ReleaseKey)) | A |
Register an autocmd in the current context. This means that, if you are
currently in a stateful plugin, the function will be called in the current
thread and has access to the configuration and state of this thread. If you
need that information, but do not want to block the other functions in this
thread, you have to manually fork a thread and make the state you need
available there. If you don't care abou the state (or your function has been
appield to all the necessary state (e.g. a TVar
to share the rusult), then
you can also call addAutocmd'
which will register a stateless function that
only interacts with other threads by means of concurrency abstractions.
Note that the function you pass must be fully applied.
Note beside: This function is equivalent to addAutocmd'
if called from a
stateless plugin thread.
addAutocmd' :: ByteString -> AutocmdOptions -> Neovim' () -> Neovim r st (Maybe ReleaseKey) Source #
Add a stateless autocmd.
See addAutocmd
for more details.
registerInStatelessContext :: (FunctionMapEntry -> Neovim r st ()) -> FunctionalityDescription -> ([Object] -> Neovim' Object) -> Neovim r st (Maybe FunctionMapEntry) Source #
Register a functoinality in a stateless context.
registerInStatefulContext :: (FunctionMapEntry -> Neovim r st ()) -> FunctionalityDescription -> ([Object] -> Neovim r st Object) -> TQueue SomeMessage -> TVar (Map FunctionName ([Object] -> Neovim r st Object)) -> Neovim r st (Maybe FunctionMapEntry) Source #