úÎÜrÑ$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á NoneOTAn iso which converts to/from  -> TextAn iso which converts to/from  -> StringAn iso which converts to/from  -> [Â]SafeAT0A map of extension types to their current value.DA wrapper around an extension of any type so it can be stored in an None /9;AIOT[A buffer, holds the text in the buffer and any extension states that are set on the buffer.UThis allows creation of polymorphic lenses over any type which has access to a Buffer 2This lens focuses the text of the in-scope buffer.ÃCThis lens focuses the Extensions States map of the in-scope buffer.  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. )Creates a new buffer from the given text.ÅÆÇ ÈÉ Ã    ÅÆÇ ÈÉ Ã NoneAOT(This is the primary state of the editor.ØAn opaque reference to a buffer (The contained Int is not meant to be altered). It is possible for references to become stale if buffers are deleted. Operations over invalid BufRef's are simply ignored and return Ê if a value was expected.QThis allows polymorphic lenses over anything that has access to an Editor context(A lens over the map of available buffers,A lens over the exiting status of the editorË#A lens over the extension state of  level extensions.A lens over the next buffer id to be allocatedÔ 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.ÌÍÎÏÐÑÒÓÔË   ÌÍÎÏÐÑÒÓÔËNoneAT IThis represents each modifier key that could be pressed along with a key."}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.,bThis event is dispatched after adding a new buffer. The contained BufRef refers to the new buffer..lThis event is dispatched before exiting the editor, listen for this to do any clean-up (saving files, etc.)07This event is dispatched immediately after dispatching 2.2KThis event is dispatched when it's time for extensions to render to screen.4=This event is dispatched immediately before dispatching the 2 event.6kThis event is dispatched immediately before dispatching any events from asyncronous event listeners (like "s)8÷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 !"#$%&'()*+,-./01234567898967452301./,-"#$%&'()*+ !  !" #$%&'()*+,-./0123456789None2OTÕ-A Helper only used when combining many spans.L8A span which maps a piece of Monoidal data over a range.PAn PQ represents an exact position in a file as a number of characters from the start.R¯(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 rowT1This represents a range between two coordinates (R)VMoves a T by a given Rq It may be unintuitive, but for (Coord row col) a given range will be moved down by row and to the right by col.W)Moves a range forward by the given amountXMoves a R' forward by the given amount of columnsY+Adds the rows and columns of the given two Rs.Z=Given the text you're operating over, creates an iso from an P to a R.Ö1Given the text you're operating over, converts a R to an P.×2Given the text you're operating over, converts an P to a R.[This will restrict a given R1 to a valid one which lies within the given text.\This will restrict a given T1 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 T spans as a R`GReturns the number of rows and columns that a chunk of text spans as a Ra A lens over text before a given RbA lens over text after a given Rc+A lens over text which is encompassed by a T!ØÕÙÚLMNOPQRSTUVWXYZÖ×[\]^_`abcdefLMNOPQRSTUVWXYZ[\]^_`abcRSPQZ[\TUc`_VWXYLMNO]^abØÕÙÚLMNOPQRSTUVWXYZÖ×[\]^_`abcdefNone /9;<=AIT rbThis contains all data representing the editor's state. It acts as the state object for an 'Actiony‰This 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 ys exported other extensionsEmbed buffer actions using  or DAdd/Edit/Focus buffers and a few other Editor-level things, see the  module.|:A map of Event types to a list of listeners for that event:A wrapper around event listeners so they can be stored in |..Execute an Action (returning the editor state)‚(Evaluate an Action (returning the value)‰DContains all data about the editor; as well as a buffer which is in focus1. We keep the full ActionState here too so that ys may be lifted inside a –GAllows polymorphic lenses which need to access something in ActionState–XThis is a monad-transformer stack for performing actions on a specific buffer. You run –s by embedding them in a y via bufferDo or  buffersDoWithin a BufAction you can:Use œ to run an y6; It is your responsibility to ensure that any nested y0s don't edit the Buffer which the current –3 is editing; behaviour is undefined if this occurs.Use liftIO for IOAccess/Edit the buffer's  #Access/edit buffer extensions; see  Embed and sequence –s from other extensions›<This lifts up a bufAction into an Action which performs the –K over the referenced buffer and returns the result (if the buffer existed)œThis lifts up an y to be run inside a –4it is your responsibility to ensure that any nested y+s don't edit the Buffer which the current –3 is editing; behaviour is undefined if this occurs.)rstuvwxyz{|}~€‚ƒ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ"rstuvwxyz{|}~€‚‰Š‹ŒŽ‘’–—˜™š›œ)€}~ƒ|yz{‚xrstuvw’‘Ž•”“‰Š‹Œš™Ÿ–—˜ž›œrstuvwxyz{|}~€‚ƒ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸNoneAT ¥ž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 X and add have the user add it to their config. It returns an ID which may be used with ¨¨KThis removes a listener and prevents it from responding to any more events.©DRegisters an action to be performed during the Initialization phase.ÿThis phase occurs exactly ONCE when the editor starts up. Though arbitrary actions may be performed in the configuration block; it's recommended to embed such actions in the onInit event listener so that all event listeners are registered before anything Actions occur.ª<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.¯@Registers an action to be performed after a new buffer is added.,The supplied function will be called with a & to the new buffer, and the resulting y will be run. ¥Ûܦ§¨©ª«¬­®¯ |¥¦§¨©ª«¬­®¯ |­ª«¥§¨¦©®¬¯ ¥Ûܦ§¨©ª«¬­®¯ None°ÿThis function takes an IO which results in some Event, it runs the IO asynchronously and dispatches the event, then repeats the process all over again. Use this inside the onInit scheduler to register an event listener for some event (e.g. keypresses or network activity)±SdoAsync allows you to perform a task asynchronously and then apply the result. In doAsync asyncAction,  asyncActionÿk is an IO which resolves to an Action, note that the context in which the second action is executed is NOT the same context in which doAsync is called; it is likely that text and other state have changed while the IO executed, so it's a good idea to check (inside the applying Action) that things are in a good state before making changes. Here's an example: ÿ>asyncCapitalize :: Action () asyncCapitalize = do txt <- focusDo $ use text -- We give doAsync an IO which resolves in an action doAsync $ ioPart txt ioPart :: Text -> IO (Action ()) ioPart txt = do result <- longAsyncronousCapitalizationProgram txt -- Note that this returns an Action, but it's still wrapped in IO return $ maybeApplyResult txt result maybeApplyResult :: Text -> Text -> Action () maybeApplyResult oldTxt capitalized = do -- We get the current buffer's text, which may have changed since we started newTxt <- focusDo (use text) if newTxt == oldTxt -- If the text is the same as it was, we can apply the transformation then focusDo (text .= capitalized) -- Otherwise we can choose to re-queue the whole action and try again -- Or we could just give up. else asyncCapitalize°±°±±°°± NoneOT ² This lifts a   to an  which performs the  ; on every buffer and collects the return values as a list.´ This lifts a   to an  which performs the  " on the buffer referred to by the : If the buffer referred to no longer exists this returns Action Nothing.¶+This adds a new buffer with the given text.·"Returns an up-to-date list of all s¸ Returns the • for a BufRef if it still exists. This is read-only; altering the buffer has no effect on the stored buffer. This function is useful for renderers.¹"Returns an up-to-date list of all „s, returned values are read-only; altering them has no effect on the actual stored buffers. This function is useful for renderers.ºGets " that comes after the one provided»Gets # that comes before the one provided¼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.½4Deletes 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.²³´µ¶·¸¹º»¼½¾¿À`²³´µ¶·¸¹º»¼½¾¿À´µ²³¼¶·¹¸º»À¾½¿`²³´µ¶·¸¹º»¼½¾¿À(C) 2016 Chris PennerMIT+Chris Penner <christopher.penner@gmail.com>None:OTP  !"#$%&'()*+LMNOPQRSTUVWXZ[\]^_`abcy|}–œ¥§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀPy±¼¶º»·¹¸–œ´µ²³À¾½¿`  "#$%&'()*+ !|}¥§¨°ª«¬­©®¯TURSPQLMNO]Z[\c_baVWX^ NoneAOTÁThe main function to run rasa. rasa eventProviders extensions@This should be imported by a user-config with and called with a  Scheduler7 containing any extensions which have event listeners.  rasa $ do cursor vim slateÝOThis is the main event loop, it runs recursively forever until something sets z. It runs the pre-event hooks, then checks if any async events have finished, then runs the post event hooks and repeats.ÁÝÁÁÁÝÞ  !"#$%&'()*++,-./0123456789:;;<=>?@ABCDDEEFFGGHHIIJJKLMNOPQRSTUVWXYZ[\]]^_``aabbcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡‡ˆˆ‰Š‹ŒŽ‘‘’“”•–—˜™š›œ  žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±² ³ ´  µ  ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á ÂÃÄÅÆÇÈÉ"ÊËÌÍÎÏÐÑ*ÒÓÔÕÖרÙÚÛÜÝÞßàá âã!rasa-0.1.6-4d4G3kpoIxmAJEOKfBtOI4Rasa.Internal.TextRasa.Internal.ExtensionsRasa.Internal.BufferRasa.Internal.EditorRasa.Internal.EventsRasa.Internal.RangeRasa.Internal.ActionRasa.Internal.SchedulerRasa.Internal.AsyncRasa.Internal.DirectiveRasa Data.Action BufAction eventListenerRasa.Internal.Ext.DirectivebufDo buffersDoRasa.Internal.Ext Directive Scheduler Rasa.ActionActionRasa.Ext.ScheduleronExitRasa.Ext Rasa.EditorexitingasTextasStringasLinesExtMapExt $fShowExtBuffer HasBufferbuffertextbufExtmkBuffer$fHasBufferBuffer $fShowBufferEditorBufRef $fShowBufRef $fEqBufRef $fOrdBufRef HasEditoreditorbuffers nextBufIdext$fDefaultEditor$fHasEditorEditor $fShowEditorModCtrlAltShiftKeypressKEscKBSKEnterKUnknownKLeftKRightKUpKDownBufAddedExit AfterRenderOnRender BeforeRender BeforeEventInit $fShowInit$fEqInit$fShowBeforeEvent$fEqBeforeEvent$fShowBeforeRender$fEqBeforeRender$fShowOnRender $fEqOnRender$fShowAfterRender$fEqAfterRender $fShowExit$fEqExit$fShowBufAdded $fEqBufAdded $fShowMod$fEqMod$fShowKeypress $fEqKeypressSpan _getRange_dataOffsetCoordRange moveRange moveRangeByN moveCursorByN moveCursorasCoord clampCoord clampRange combineSpansclampsizeOfRsizeOfbeforeCafterCrange $fNumCoord $fOrdCoord $fOrdRange $fShowCoord $fEqCoord $fShowRange $fEqRange $fShowOffset $fEqOffset $fShowSpan$fEqSpan $fFunctorSpan $fShowMarker $fEqMarker ActionState_ed_asyncs_hooks _nextHook AsyncActionrunActHooksHookIdHook execAction evalAction $fEqHookId$fFunctorAction$fApplicativeAction $fMonadAction$fMonadStateAction$fMonadIOActionBufActionState _actState_bufHasActionState actionStateasyncsedhooksnextHook$fDefaultActionState$fHasEditorActionState$fHasActionStateActionState runBufActactStatebufliftBuf liftAction$fHasActionStateBufActionState$fHasBufferBufActionState$fShowActionState$fFunctorBufAction$fApplicativeBufAction$fMonadBufAction$fMonadStateBufAction$fMonadIOBufAction dispatchEvent matchingHooksremoveListeneronInit beforeEvent beforeRenderonRender afterRender onBufAdded eventProviderdoAsync buffersDo_bufDo_ newBuffer getBufRefs getBuffer getBuffers nextBufRef prevBufRefexit deleteRange replaceRangeinsertAt overRangerasa$yi-rope-0.7.0.2-4e29TpEi6l7hStEfnaGSYi.RopeYiStringbufExts1data-default-class-0.1.2.0-FYQpjIylblBDctdkHAFeXAData.Default.ClassDefault_text' _bufExts'bufExts'text'baseGHC.BaseNothingextState _buffers' _exiting' _extState' _nextBufId'buffers'exiting' extState' nextBufId'MarkertoOffsettoCoordIDStartEndgetHookmakeHook eventLoop