nvim-hs-0.0.1: Haskell plugin backend for neovim

Copyright(c) Sebastian Witte
LicenseApache-2.0
Maintainerwoozletoff@gmail.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Neovim.Plugin.Classes

Description

 

Synopsis

Documentation

newtype ExportedFunctionality r st Source

This data type is used in the plugin registration to properly register the functions.

Constructors

EF (FunctionalityDescription, [Object] -> Neovim r st Object) 

getFunction :: ExportedFunctionality r st -> [Object] -> Neovim r st Object Source

Extract the function of an ExportedFunctionality.

data FunctionalityDescription Source

Functionality specific functional description entries.

All fields which are directly specified in these constructors are not optional, but can partialy be generated via the Template Haskell functions. The last field is a data type that contains all relevant options with sensible defaults, hence def can be used as an argument.

Constructors

Function Text Synchronous

Exported function. Callable via call name(arg1,arg2).

  • Name of the function (must start with an uppercase letter)
  • Option to indicate how neovim should behave when calling this function
Command Text CommandOptions

Exported Command. Callable via :Name arg1 arg2.

  • Name of the command (must start with an uppercase letter)
  • Options to configure neovim's behavior for calling the command
Autocmd Text Text AutocmdOptions

Exported autocommand. Will call the given function if the type and filter match.

NB: Since we are registering this on the Haskell side of things, the number of accepted arguments should be 0. TODO Should this be enforced somehow? Possibly via the TH generator.

  • Type of the autocmd (e.g. "BufWritePost")
  • Name for the function to call

class FunctionName a where Source

Conveniennce class to extract a name from some value.

Methods

name :: a -> Text Source

data NeovimPlugin Source

Constructors

forall r st . NeovimPlugin (Plugin r st) 

data Plugin r st Source

This data type contains meta information for the plugin manager.

Constructors

Plugin 

Fields

exports :: [ExportedFunctionality () ()]
 
statefulExports :: [(r, st, [ExportedFunctionality r st])]
 

wrapPlugin :: Monad 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 Synchronous Source

This option detemines how neovim should behave when calling some functionality on a remote host.

Constructors

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. For comands it means that the GUI will (probably) not allow any user input until a reult is received. Functions run asynchronously inside neovim (or in one of its plugin providers) can use these functions concurrently.

data CommandOptions Source

Options that can be optionally set for commands.

TODO Determine which of these make sense, how they are transmitted back and which options are still missing. (see remoteCommandOnHost in runtime/autoload/remote/define.vim))

Constructors

CommandOptions 

Fields

cmdSync :: Synchronous

Option to indicate whether vim shuould block until the command has completed. (default: Sync)

cmdRange :: Maybe Text

Vim expression for the range (or count). (default: "")

cmdCount :: Bool

If true,

cmdNargs :: Int

Number of arguments. Note that all arguments have to be a string type.

TODO Check this in the Template Haskell functions.

If you're using the template haskell functions for registering commands, this field is overridden by it.

cmdBang :: Bool

Behavior changes when using a bang.

data AutocmdOptions Source

Constructors

AutocmdOptions 

Fields

acmdSync :: Synchronous

Option to indicate whether vim shuould block until the function has completed. (default: Sync)

acmdPattern :: Text

Pattern to match on. (default: "*")

acmdNested :: Bool

Nested autocmd. (default: False)

See :h autocmd-nested