f      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ NoneOTAn iso which converts to/from  -> TextAn iso which converts to/from  -> StringAn iso which converts to/from  -> []None2OT-A Helper only used when combining many spans.8A span which maps a piece of Monoidal data over a range.An Q represents an exact position in a file as a number of characters from the start. (Coord Row Column) represents a char in a block of text. (zero indexed) e.g. Coord 0 0 is the first character in the text, Coord 2 1 is the second character of the third row 1This represents a range between two coordinates ( ) Moves a   by a given  q It may be unintuitive, but for (Coord row col) a given range will be moved down by row and to the right by col.)Moves a range forward by the given amountMoves a  ' forward by the given amount of columns+Adds the rows and columns of the given two  s.=Given the text you're operating over, creates an iso from an  to a  .1Given the text you're operating over, converts a   to an .2Given the text you're operating over, converts an  to a  .This will restrict a given  1 to a valid one which lies within the given text.This will restrict a given  1 to a valid one which lies within the given text.Combines a list of spans containing some monoidal data into a list of offsets with with the data that applies from each Offset forwards.clamp min max val3 restricts val to be within min and max (inclusive).Returns the number of rows and columns that a   spans as a  GReturns the number of rows and columns that a chunk of text spans as a   A lens over text before a given  A lens over text after a given          SafeAT(0A map of extension types to their current value.)DA wrapper around an extension of any type so it can be stored in an (()*+()*)*(()*+SafeAT,IThis represents each modifier key that could be pressed along with a key.0}This event is dispatched in response to keyboard key presses. It contains both the char that was pressed and any modifiers (,+) that where held when the key was pressed.5lThis event is dispatched before exiting the editor, listen for this to do any clean-up (saving files, etc.)77This event is dispatched immediately after dispatching 9.9KThis event is dispatched when it's time for extensions to render to screen.;=This event is dispatched immediately before dispatching the 9 event.=kThis event is dispatched immediately before dispatching any events from asyncronous event listeners (like 0s)?The Event type represents a common denominator for all actions that could occur Event transmitters express events that have occured as a member of this type. At the moment it's quite sparse, but it will expand as new types of events are needed.@This event is dispatched exactly once when the editor starts up.,-./0123456789:;<=>?@,./-0123456789:;<=>?@?@=>;<9:785601234,-./,-./0123456789:;<=>?@None /9;AIOTQzA buffer, holds the text in the buffer and any extension states that are set on the buffer. A buffer is the State of the  c monad transformer stack, so the type may be useful in defining lenses over your extension states.TAA lens into the text of the given buffer. Use within a BufAction.U*Creates a new buffer from the givven text. QRSTUV)*QRSTUQ)*RTSUQRSTUVNoneAOTW(This is the primary state of the editor.[A lens over the extensions of all buffers. This is useful for setting defaults or altering extension state across all buffers.\\Q is a lens which will focus a given extension's state within a buffer (within a   ). The lens will automagically focus the required extension by using type inference. It's a little bit of magic, if you treat the focus as a member of your extension state it should just work out.(This lens falls back on the extension's 9 instance (when getting) if nothing has yet been stored.]] is a lens which will focus the extension state that matches the type inferred as the focal point. It's a little bit of magic, if you treat the focus as a member of your extension state it should just work out.(This lens falls back on the extension's 9 instance (when getting) if nothing has yet been stored.^^7 is a lens which focuses the currently selected buffer._+A lens over text which is encompassed by a  WXYZ[\]^_`a WXYZ[\]^_ WZXY][\^_ WXYZ[\]^_`aNoneAITb:A map of Event types to a list of listeners for that eventc:A wrapper around event listeners so they can be stored in b.eThis is a monad-transformer stack for performing actions on a specific buffer. You register BufActions to be run by embedding them in a scheduled h via bufferDo or focusDoWithin a BufAction you can:Use liftIO for IO#Access/edit buffer extensions; see \Embed and sequence any es from other extensionsAccess/Edit the buffer's ThThis is a monad-transformer stack for performing actions against the editor. You register Actions to be run in response to events using  Within an Action you can:Use liftIO for IO5Access/edit extensions that are stored globally, see ] Embed any hs exported other extensionsEmbed buffer actions using  and DAdd/Edit/Focus buffers and a few other Editor-level things, see the  module.k9Unwrap and execute an Action (returning the editor state)l3Unwrap and evaluate an Action (returning the value) bcdefghijkl bcdefghijkl hijklefgcdbbcdefghijklNoneOT y This lifts a   to an  which performs the   on the focused buffer.z This lifts a   to an  which performs the  5 on every buffer and collects the return values via {+This adds a new buffer with the given text.|DThis adds a new buffer with the given text then performs the given   agains that buffer.}mThis signals to the editor that you'd like to shutdown. The current events will finish processing, then the + hook will run, then the editor will exit.~!Switches focus to the next buffer%Switches focus to the previous buffer4Deletes the text in the given range from the buffer.5Replaces the text in the given range from the buffer.0Inserts text into the buffer at the given Coord.RRuns the given function over the text in the range, replacing it with the results. yz{|}~ yz{|}~ zy}{|~ yz{|}~ None2AIT wThe Scheduler is how you can register your extension's actions to run at different points in the editor's event cycle.$The event cycle proceeds as follows:  Init (Runs ONCE) -- The following loops until an exit is triggered: BeforeEvent -> (any event) -> BeforeRender -> OnRender -> AfterRender Exit (Runs ONCE) 9Each extension which wishes to perform actions exports a  (). which the user inserts in their config file.Use this to dispatch an event of any type, any hooks which are listening for this event will be triggered with the provided event. Use this within an Action.lThis is a helper which extracts and coerces a hook from its wrapper back into the proper event handler type.fThis extracts all event listener hooks from a map of hooks which match the type of the provided event.]This registers an event listener hook, as long as the listener is well-typed similar to this:MyEventType -> Action ()Z then it will be registered to listen for dispatched events of that type. Use within the . and add have the user add it to their config. Transform a  monad into a b map.DRegisters an action to be performed during the Initialization phase.9This phase occurs exactly ONCE when the editor starts up.<Registers an action to be performed BEFORE each event phase.=Registers an action to be performed BEFORE each render phase.This is a good spot to add information useful to the renderer since all actions have been performed. Only cosmetic changes should occur during this phase.=Registers an action to be performed during each render phase.MThis phase should only be used by extensions which actually render something.<Registers an action to be performed AFTER each render phase.This is useful for cleaning up extension state that was registered for the renderer, but needs to be cleared before the next iteration.:Registers an action to be performed during the exit phase.This is only triggered exactly once when the editor is shutting down. It allows an opportunity to do clean-up, kill any processes you've started, or save any data before the editor terminates.bccb (C) 2016 Chris PennerMIT+Chris Penner <christopher.penner@gmail.com>None:OTA ,./-01234QSTY\]_bcehyz{|}~Ah}{|~ezy]\QTY01234,-./bc _ S NoneAOTThe main function to run rasa. rasa eventProviders extensionsThis should be imported by a user-config and called with extension event providers and extension event hooks as arguments. e.g.: %rasa [slateEvent] $ do cursor vimOThis is the main event loop, it runs recursively forever until something sets . It runs the pre-event hooks, then listens for an event from the event providers, then runs the post event hooks and repeats.  !!""#$%&'()*+,-./0123456789:;<=>??@ABCDEEFGHIIJJKKLLMMNNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopp  qrstuvwxyz{|}~    _e !rasa-0.1.1-DB8Y1OUqRk6EFdgoWhur5uRasa.Internal.TextRasa.Internal.RangeRasa.Internal.ExtensionsRasa.Internal.EventsRasa.Internal.BufferRasa.Internal.EditorRasa.Internal.ActionRasa.Internal.DirectiveRasa.Internal.SchedulerRasa BufAction Data.Action eventListenerRasa.Internal.Ext.DirectivebufDofocusDoRasa.Internal.Ext Directive Rasa.ActionActionRasa.Ext.ScheduleronExitRasa.Ext Rasa.EditorexitingasTextasStringasLinesSpan _getRange_dataOffsetCoordRange moveRange moveRangeByN moveCursorByN moveCursorasCoord clampCoord clampRange combineSpansclampsizeOfRsizeOfbeforeCafterC $fNumCoord $fOrdCoord $fOrdRange $fShowCoord $fEqCoord $fShowRange $fEqRange $fShowOffset $fEqOffset $fShowSpan$fEqSpan $fFunctorSpan $fShowMarker $fEqMarkerExtMapExt $fShowExtModCtrlAltShiftKeypressEscBSEnterExit AfterRenderOnRender BeforeRender BeforeEventInit $fShowInit$fEqInit$fShowBeforeEvent$fEqBeforeEvent$fShowBeforeRender$fEqBeforeRender$fShowOnRender $fEqOnRender$fShowAfterRender$fEqAfterRender $fShowExit$fEqExit $fShowMod$fEqMod$fShowKeypress $fEqKeypressBufferbufExtsropetext newBuffer $fShowBufferEditorbuffersfocused allBufExtbufExtext focusedBufrange$fDefaultEditor $fShowEditorHooksHook getBufActionrunAct execAction evalAction$fFunctorBufAction$fApplicativeBufAction$fMonadBufAction$fMonadStateBufAction$fMonadReaderBufAction$fMonadIOBufAction$fFunctorAction$fApplicativeAction $fMonadAction$fMonadStateAction$fMonadReaderAction$fMonadIOAction addBuffer addBufferThenexitnextBufprevBuf deleteRange replaceRangeinsertAt overRange SchedulerrunSched dispatchEvent matchingHooksgetHooksonInit beforeEvent beforeRenderonRender afterRender$fFunctorScheduler$fApplicativeScheduler$fMonadScheduler$fMonadStateSchedulerrasa"yi-rope-0.8-Cy0klrhfj2iCJ0NdtRXYfcYi.RopeYiStringMarkertoOffsettoCoordIDStartEnd_rope_bufExts1data-default-class-0.1.2.0-FYQpjIylblBDctdkHAFeXAData.Default.ClassDefault_buffers_focused_exiting _extStateextStatebaseGHC.BasemappendgetHook eventLoop