h$;|ѓ       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd e f ghijk l m n o p q r s t uvwxyz{ | } ~                                    !!!!!!!!!!""""""""""""#######################################################$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&'''''''''(((((())))))))))))))))))))) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * * * * * * * + + + + + + + + + + + + + + + + + + + + + + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - - - . . . . . . . / / / / / / / / / / / / / / / / / / / / / / / / / 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3                                     4 4 4 4 4 4 4 4 4 4 4 4            5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 : : : : : : : : : : : : : : : : : : : : : : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; < = = = = = = = = = = = = > > > > > > > > > > > > > > > > > > > > > > > > > > > ? ? ? ? @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A                                 B Safe-Inferred! yi-coreExecute IO (Maybe a) action replacing all exceptions with return value of Nothing. yi-core@?ABCDEFGHIJKLMNOP3NCDMLKJAHIFOE=>@?BP456789:;Returns absolute name of the file, which doesn't contain any /./, /../, // sequences or symlinks   Safe-Inferred%dyi-core!Canonicalize a user-friendly patheyi-coreTurn a user-friendly path into a computer-friendly path by expanding the leading tilda.fyi-core!Is a user-friendly path absolute?defdefEGPL-2yi-devel@googlegroups.com experimentalportableNone 38>?1vnyi-core2Mutation actions (also used the undo or redo list) For the undoredo, we use the partial checkpoint/ (Berlage, pg16) strategy to store just the components of the state that change.Note that the update direction is only a hint for moving the cursor (mainly for undo purposes); the insertions and deletions are always applied Forward.Note that keeping the text does not cost much: we keep the updates in the undo list; if it's a Delete it means we have just inserted the text in the buffer, so the update shares the data with the buffer. If it's an Insert" we have to keep the data any way. yi-core buffer text yi-coreMarks for this buffer yi-coresyntax highlighting state yi-core/set of (non overlapping) visual overlay regions yi-core9Lowest modified offset since last recomputation of syntax yi-coreNew FBuffer filled from string. yi-core Point of EOF yi-coreTODO: This guy is a pretty big bottleneck and only one function uses it which in turn is only seldom used and most of the output is thrown away anyway. We could probably get away with never converting this to String here. The old implementation did so because it worked over ByteString but we don't have to.~yi-core"Create an "overlay" for the style sty between points s and e yi-core,Obtain a style-update for a specific overlay yi-core/Add a style "overlay" between the given points. yi-core#Remove a previously added "overlay" yi-core'Return style information for the range (i,j) Style information is derived from syntax highlighting, active overlays and current regexp. The returned list contains tuples (l,s,r)> where every tuple is to be interpreted as apply the style s from position l to r in the buffer. In each list, the strokes are guaranteed to be ordered and non-overlapping. The lists of strokes are ordered by decreasing priority: the 1st layer should be "painted" on top. yi-coreChecks if an Update is valid yi-coreApply a valid update yi-coreReverse the given update yi-core3Line at the given point. (Lines are indexed from 1) yi-core;Point that starts the given line (Lines are indexed from 1) yi-corePoint that's at EOL. Notably, this puts you right before the newline character if one exists, and right at the end of the text if one does not. yi-core'Get begining of the line relatively to point. yi-coreReturn indices of all strings in buffer matching regex, inside the given region. yi-coreModify a mark value. yi-coreReturns the requested mark, creating a new mark with that name (at the supplied position) if needed yi-coreLine for which to grab EOL for yi-core4Point from which we take the line to find the EOL of#"!&+.ghijklmnopqrst u zwxvy{|} ~  None&86Tyi-core-A URList consists of an undo and a redo list.yi-core A new empty . Notice we must have a saved file point as this is when we assume we are opening the file so it is currently the same as the one on diskyi-coreAdd an action to the undo list. According to the restricted, linear undo model, if we add a command whilst the redo list is not empty, we will lose our redoable changes.yi-coreAdd a saved file point so that we can tell that the buffer has not been modified since the previous saved file point. Notice that we must be sure to remove the previous saved file points since they are now worthless.yi-core!This undoes one interaction step.yi-core This redoes one iteraction step.yi-coreundoIsAtSavedFilePoint. True if the undo list is at a SavedFilePoint indicating that the buffer has not been modified since we last saved the file. Note: that an empty undo list does NOT mean that the buffer is not modified since the last save. Because we may have saved the file and then undone actions done before the save.   GPL-2yi-devel@googlegroups.com experimentalportableNone =yi-core1A CompletionTree is a map of partial completions.Example:2fromList ["put","putStr","putStrLn","print","abc"]Gives the following tree:/ "p" "abc" / "ut" "rint" / Str "" / Ln ""(The empty strings are needed to denote the end of a word) (A CompletionTree is not limited to a binary tree)yi-coreThis function converts a list of completable elements to a CompletionTree It finds elements that share a common prefix and groups them.fromList . toList = idyi-core.Complete as much as possible without guessing. Examples:/complete $ fromList ["put","putStrLn","putStr"]$("put", fromList ["","Str","StrLn"])5complete $ fromList ["put","putStr","putStrLn","abc"]0("", fromList ["put","putStr","putStrLn","abc"])yi-coreUpdate the CompletionTree with new information. An empty list means that there is no completion left. A [mempty] means that the end of a word is reached. Examples:&update (fromList ["put","putStr"]) "p"fromList ["ut","utStr"](update (fromList ["put","putStr"]) "put"fromList ["","Str"])update (fromList ["put","putStr"]) "putS"fromList ["tr"] update (fromList ["put"]) "find" fromList []update (fromList ["put"]) "put" fromList [""]yi-core3Converts a CompletionTree to a list of completions.toList . fromList = sort . nub Examples: toList mempty[]toList (fromList ["a"])["a"]toList (fromList ["a","a","a"])["a"]toList (fromList ["z","x","y"]) ["x","y","z"]yi-coreFor debugging purposes.Example::putStrLn $ pretty $ fromList ["put", "putStr", "putStrLn"]["put"[""|"Str"[""|"Ln"]]]  Safe-Inferred=GPL-2yi-devel@googlegroups.com experimentalportableNone ??yi-coreSet the file to which debugging output should be written. Though this is called initDebug. Debugging output is not created by default (i.e., if this function is never called.) The target file can not be changed, nor debugging disabled.yi-core>Outputs the given string before returning the second argument.yi-coreTraces x and returns y.yi-coreLike traceM, but returns (). Safe-Inferred@yi-coreMap an Event to a Char. This is used in the emacs keymap for Ctrl-Q and vim keymap insertSpecialCharNoneA8 =>@?CDLMNNCDML=>@? GPL-2yi-devel@googlegroups.com experimentalportableNone '(>D yi-core#Abstraction of the automaton state.yi-core'Operational representation of a processyi-coreInteractive process descriptionyi-core,Abstraction of monadic interactive processesyi-coreOutputs a result.yi-coreConsumes and returns the next character. Fails if there is no input left, or outside the given bounds.yi-core Just like  but in prefix form. It s the second argument.yi-core+Parses and returns the specified character.yi-core9Parses and returns the specified list of events (lazily).yi-core+Combines all parsers in the specified list.yi-core option x p will either parse p or return x without consuming any input.3None8EQGPL-2yi-devel@googlegroups.com experimentalportableNoneFyi-coreFinish an atomic command, for the purpose of killring accumulation.yi-corePut some text in the killring. It's accumulated if the last command was a kill tooyi-coreSet the top of the killring. Never accumulate the previous content.yi-coreGet the top of the killring.   Safe-Inferred&35R"yi-core3A 'Layout a' wrapped in a state monad for tracking s. This type is not6 itself a monad, but should rather be thought of as a -free version of the  type.yi-coreSame as lm, but with all s d. See  for an example of its use.yi-core-Things with orientations which can be flippedyi-core4Used by the vty frontend to draw vertical separatorsyi-coreA general bounding boxyi-coreExistential wrapper for yi-core5The type of layout managers. See the layout managers ,  and " for some example implementations.yi-coreGiven the old layout and the new list of windows, construct a layout for the new list of windows.If the layout manager uses sliding dividers, then a user will expect that most of these dividers don't move when adding a new window. It is the layout manager's responsibility to ensure that this is the case, and this is the purpose of the Layout a argument.The old layout may come from a different layout manager, in which case the layout manager is free to ignore it.yi-core4Describe the layout in a form suitable for the user.yi-corebyi-coreDirect subtrees of a treeyi-coreGiven an approximate path to a leaf at the end of the region, return: (path to leaf at the end of the region,path from focused node to the leaf, small node encompassing the region)yi-coreSearch the tree in pre-order starting at a given node, until finding a leaf which is at or after the given point. An effort is also made to return a leaf as close as possible to p. TODO: rename to fromLeafToLeafAtyi-coreSearch the given list, and return the last tree before the given point; with path to the root. (Root is at the start of the path)yi-core+Return all subtrees in a tree, in preorder.yi-core"Return the 1st token of a subtree.yi-core#Return the last token of a subtree.GPL-2yi-devel@googlegroups.com experimentalportableNone567cNonec   Safe-Inferredmyi-core)Record presenting a frontend's interface.The functions  and  are both run by the editor's main loop, in response to user actions and so on. Their relation is a little subtle, and is discussed here:'to see some code, look at the function  refreshEditor in Yi.Core#. This is the only place where  and  are used. the function ! is responsible for updating the Editor with the width and height of the windows. Some frontends, such as Pango, need to modify their internal state to do this, and will consequently change their display. This is expected. the function  should cause the UI to update its display with the information given in the Editor.the functionalities of  and  overlap to some extent, in the sense that both may cause the frontend to update its display. The Yi core provides the following guarantees which the frontend may take advantage of:%in the main editor loop (i.e. in the  refreshEditor function), 0 will be run (possibly multiple times) and then  will be run. This guarantee will hold even in the case of threading (the function  refreshEditor& will always be run atomically, using MVars).between the last run of  and the run of $, some changes may be made to the Editor. However, the text, text attributes, and (displayed) window region of all windows will remain the same. However, the cursor location may change.This guarantee allows frontends which calculate rendering of the text during the 8 stage to avoid recalculating the render again during ). Pango is an example of such a frontend.The Yi core provides no guarantee about the OS thread from which the functions  and  are called from. In particular, subprocesses (e.g. compilation, ghci) will run  and  from new OS threads (see startSubprocessWatchers in Yi.Core). The frontend must be preparaed for this: for instance, Gtk-based frontends should wrap GUI updates in  postGUIAsync.yi-core Main loopyi-core3Clean up, and also terminate if given an exit code.yi-core!Suspend (or minimize) the programyi-core#Refresh the UI with the given stateyi-coreUser force-refresh (in case the screen has been messed up from outside)yi-coreSet window width and heightyi-coreReload cabal project views  GPL-2yi-devel@googlegroups.com experimentalportableNone3q yi-coreA window onto a buffer.yi-coreregular or mini window?yi-corethe buffer this window opens toyi-corelist of last accessed buffers (former bufKeys). Last accessed one is first elementyi-core;height of the window (in number of screen lines displayed)yi-core(width of the window (in number of chars)yi-coreview area. note that the top point is also available as a buffer mark.yi-coreidentifier for the window (for UI sync) This is required for accurate scrolling. Scrolling depends on the actual number of buffer lines displayed. Line wrapping changes that number relative to the height so we can't use height for that purpose.yi-coreThe actual number of buffer lines displayed. Taking into account line wrappingyi-core#Get the identification of a window.yi-core%Return a "fake" window onto a buffer.None3v yi-core*A tab, containing a collection of windows.yi-coreFor UI sync; fixes #304yi-core;Current layout. Invariant: must be the layout generated by  , up to changing the s.yi-coreReturns a list of all mini windows associated with the given tabyi-coreAccessor for the windows. If the windows (but not the focus) have changed when setting, then a relayout will be triggered to preserve the internal invariant.yi-coreAccessor for the layout manager. When setting, will trigger a relayout if the layout manager has changed.yi-coreGets / sets the position of the divider with the given reference. The caller must ensure that the DividerRef is valid, otherwise an error will (might!) occur.yi-core A specialised version of "fmap".yi-coreForces all windows in the tabyi-core!Folds over the windows in the tabyi-core Make a tab from multiple windowsyi-coreMake a tab from one windowyi-coreEquality on tab identity (the )GPL-2yi-devel@googlegroups.com experimentalportableNone 3567?yi-core3Configuration record. All Yi hooks can be set here.yi-core UI to use.yi-coreUI-specific configuration.yi-core*Actions to run when the editor is started.yi-coreUsed to specify the behaviour of the automatic indent command.yi-coreIncrease the indentation to the next higher indentation hint. If we are currently at the highest level of indentation then cycle back to the lowest.yi-coreDecrease the indentation to the next smaller indentation hint. If we are currently at the smallest level then cycle back to the largestyi-coreIncrease the indentation to the next higher hint if no such hint exists do nothing.yi-coreDecrease the indentation to the next smaller indentation hint, if no such hint exists do nothing.yi-coreA Mode customizes the Yi interface for editing a particular data format. It specifies when the mode should be used and controls file-specific syntax highlighting and command input, among other things.yi-core$so this can be serialized, debugged.yi-core+What type of files does this mode apply to?yi-coreSyntax highlighteryi-corePrettify current "paragraph"yi-core Buffer-local keymap modificationyi-coreemacs-style auto-indent lineyi-coreFollow a "link" in the file. (eg. go to location of error message)yi-coreStrokes that should be applied when displaying a syntax element should this be an Action instead?yi-core6An action that is to be executed when this mode is setyi-core'buffer-local modeline formatting methodyi-core.go to the point where the variable is declaredyi-coreimmutable unique keyyi-coreundo/redo listyi-coredynamic componentsyi-core;prefered column to arrive at when we do a lineDown / lineUpyi-core;prefered column to arrive at visually (ie, respecting wrap)yi-core6stick to the end of line (used by vim bindings mostly)yi-core/updates that haven't been synched in the UI yetyi-core*time of the last synchronization with diskyi-coreread-only flagyi-core2the keymap is ready for insertion into this bufferyi-core&does buffer contain directory contentsyi-coreHow many points (frontend-specific) to change the font by in this bufferyi-coreUpdates that we've seen in this buffer, basically "write-only". Work-around for broken WriterT.yi-coreCurrently duplicates some of Vim's indent settings. Allowing a buffer to specify settings that are more dynamic, perhaps via closures, could be useful.yi-core)Insert spaces instead of tabs as possibleyi-core Size of a Tabyi-coreIndent by so many columnsyi-core/The BufferM monad writes the updates performed.yi-coreContent of the top-level loop.yi-coreFor insertion-only modesyi-coreThe type of user-bindable functions TODO: doc how these are actually user-bindable are they?yi-core input streamyi-core output streamyi-core%The only mutable state in the programGPL-2yi-devel@googlegroups.com experimentalportableNone GPL-2yi-devel@googlegroups.com experimentalportableNone'!Nonedyi-core4Fields that can be modified with all lens machinery.yi-core%The configuration monad. Run it with  configMain.yi-coreAccessor for any !, to be used by modules defining s. Such modules should provide a custom-named field. For instance, take the following hypothetical :@newtype UserName = UserName { unUserName :: String } deriving(Typeable, Binary, Default) instance YiConfigVariable UserName8$(nameDeriveAccessors ''UserName (n -> Just (n ++ "A"))) userName ::    userName = unUserNameA   @7Here, the hypothetical library would provide the field userName to be used in preference to customVariable.GPL-2yi-devel@googlegroups.com experimentalportableNone 23567?^yi-core6Gets a short identifier of a buffer. If we're given a + then just wraps the buffer name like so: *name*. If we're given a ), it drops the number of path components.>let memBuf = newB (BufferRef 0) (MemBuffer "foo/bar/hello") ""shortIdentString 2 memBuf"*foo/bar/hello*"let fileBuf = newB (BufferRef 0) (FileBuffer "foo/bar/hello") ""shortIdentString 2 fileBuf"hello"yi-core5Gets the buffer's identifier string, emphasising the :>let memBuf = newB (BufferRef 0) (MemBuffer "foo/bar/hello") ""identString memBuf"*foo/bar/hello*"let fileBuf = newB (BufferRef 0) (FileBuffer "foo/bar/hello") ""identString fileBuf"foo/bar/hello"yi-core6update the syntax information (clear the dirty "flag")yi-coreIncreases the font size in the buffer by specified number. What this number actually means depends on the front-end.yi-coreDecreases the font size in the buffer by specified number. What this number actually means depends on the front-end.yi-core8Given a buffer, and some information update the modelineN.B. the contents of modelines should be specified by user, and not hardcoded.yi-core;Given a point, and the file size, gives us a percent stringyi-coreAdds an "overlay" to the bufferyi-coreRemove an existing "overlay"yi-core Execute a BufferM value on a given buffer and window. The new state of the buffer is returned alongside the result of the computation.yi-core Execute a BufferM value on a given buffer, using a dummy window. The new state of the buffer is discarded.yi-core9Mark the current point in the undo list as a saved state.yi-coreUndo all updates that happened since last save, perform a given action and redo all updates again. Given action must not modify undo history.yi-core/Mode applies function that always returns True.yi-core0Mode applies function that always returns False.yi-coreCreate buffer named nm with contents syi-core Point of eofyi-coreExtract the current pointyi-core'Move point in buffer to the given indexyi-core6Revert all the pending updates; don't touch the point.yi-core6Write an element into the buffer at the current point.yi-core0Write the list into the buffer at current point.yi-core Insert newline at current point.yi-core Insert given  3 at specified point, extending size of the buffer.yi-core Insert the  + at current point, extending size of bufferyi-core:Insert the char at current point, extending size of bufferImplementation note: This just s a  . This seems sub-optimal because we should be able to do much better without spewing chunks of size 1 everywhere. This approach is necessary however so an n can be recorded. A possible improvement for space would be to have @yi-rope@ package optimise for appends with length 1.yi-core deleteNAt n p deletes n# characters forwards from position pyi-coreReturn the current line numberyi-coreTop line of the screenyi-coreMiddle line of the screenyi-coreBottom line of the screenyi-coreReturn line numbers of marksyi-coreGo to line number n. n is indexed from 1. Returns the actual line we went to (which may be not be the requested line, if it was out of range)yi-core Set the modeyi-coreModify the modeyi-coreReturn indices of strings in buffer matched by regex in the given region.yi-coreReturn indices of next string in buffer matched by regex in the given directionyi-coreHighlight the selectionyi-core$Whether the selection is highlightedyi-coreMove point by the given number of characters. A negative offset moves backwards a positive one forward.yi-core Move point -1yi-coreMove cursor -nyi-coreMove cursor +1yi-coreMove cursor +nyi-coreMove point down by n lines. n can be negative. Returns the actual difference in lines which we moved which may be negative if the requested line difference is negative.yi-coreMoves to a visual column within the current line as shown on the editor (ie, moving within the current width of a single visual line)yi-coreMove point up one lineyi-coreMove point down one lineyi-core"Return the contents of the buffer.yi-core:Returns the contents of the buffer between the two points.If the startPoint >= endPoint, empty string is returned. If the points are out of bounds, as much of the content as possible is taken: you're not guaranteed to get endPoint - startPoint characters.yi-core'Read the character at the current pointyi-coreRead the character at the given index This is an unsafe operation: character NUL is returned when out of boundsyi-coreDelete n* characters forward from the current pointyi-core Gives the  for the current buffer.yi-coreCurrent column. Note that this is different from offset or number of chars from sol. (This takes into account tabs, unicode chars, etc.)yi-core.Returns start of line point for a given point pyi-core$Returns end of line for given point.yi-coreGo to line indexed from current point Returns the actual moved difference which of course may be negative if the requested difference was negative.yi-coreAccess to a value into the extensible state, keyed by its type. This allows you to retrieve inside a  monad, ie: value <- getBufferDynyi-coreAccess to a value into the extensible state, keyed by its type. This allows you to save inside a  monad, ie: putBufferDyn updatedvalueyi-core perform a  BufferM a4, and return to the current point. (by using a mark)yi-core Perform an  BufferM a", and return to the current point.yi-core Perform an  BufferM a, and return to the current line and column number. The difference between this and  is that here we attempt to return to the specific line and column number, rather than a specific number of characters from the beginning of the buffer.In case the column is further away than EOL, the point is left at EOL:  is used internally.yi-coreWhat would be the point after doing the given action? The argument must not modify the buffer.yi-coreJust stores the mode name.yi-core2Number of characters to drop from FileBuffer namesyi-coreBuffer to work withyi-corePoint to start atyi-corePoint to stop atghijuzwxvy~ghijuzwxvy~"GPL-2yi-devel@googlegroups.com experimentalportableNone] yi-core&Delete an arbitrary part of the bufferyi-core#Replace a region with a given rope.yi-core9Map the given function over the characters in the region.yi-coreSwap the content of two Regionsyi-coreModifies the given region according to the given string transformation functionyi-core1Extend the right bound of a region to include it.yi-coreSee a region as a block/rectangular region, since regions are represented by two point, this returns a list of small regions form this block region.yi-coreJoins lines in the region with a single space, skipping any empty lines.yi-coreConcatenates lines in the region preserving the trailing newline if any.yi-coreGets the lines of a region (as a region), preserving newlines. Thus the resulting list of regions is a partition of the original region.The direction of the region is preserved and all smaller regions will retain that direction.Note that regions should never be empty, so it would be odd for this to return an empty list...yi-core The string modification functionyi-coreThe region to modify  #GPL-2yi-devel@googlegroups.com experimentalportableNone3yi-core Boundary sideyi-core!Designate a given "unit" of text.yi-corea single characteryi-core!a line of text (between newlines)yi-corea "vertical" line of text (area of text between two characters at the same column number)yi-corethe whole documentyi-coreTurns a unit into its "negative" by inverting the boundaries. For example, outsideUnit unitViWord will be the unit of spaces between words. For units without boundaries (, ', ...), this is the identity function.yi-core,a word as in use in Emacs (fundamental mode)yi-coredelimited on the left and right by given characters, boolean argument tells if whether those are included.yi-coreSeparator characters (space, tab, unicode separators). Most of the units above attempt to identify "words" with various punctuation and symbols included or excluded. This set of units is a simple inverse: it is true for "whitespace" or "separators" and false for anything that is not (letters, numbers, symbols, punctuation, whatever).yi-core4unitSep is true for any kind of whitespace/separatoryi-coreunitSepThisLine is true for any kind of whitespace/separator on this line onlyyi-coreParagraph to implement emacs-like forward-paragraph/backward-paragraphyi-coreParagraph that begins and ends in the paragraph, not the empty lines surrounding it.yi-coreUnit that have its left and right boundaries at the left boundary of the argument unit.yi-coregenAtBoundaryB u d s2 returns whether the point is at a given boundary (d,s) . Boundary (d,s) , taking Word as example, means: Word ^^ ^^ 12 34 1: (Backward,OutsideBound) 2: (Backward,InsideBound) 3: (Forward,InsideBound) 4: (Forward,OutsideBound)rules: genAtBoundaryB u Backward InsideBound = atBoundaryB u Backward genAtBoundaryB u Forward OutsideBound = atBoundaryB u Forwardyi-coreRepeat an action until the condition is fulfilled or the cursor stops moving. The Action may be performed zero times.yi-coreDo an action if the current buffer character passes the predicateyi-coreGeneric move operation Warning: moving To the (OutsideBound, Backward) bound of Document is impossible (offset -1!) genMoveB u b d: move in direction d until encountering boundary b or unit u. See  for boundary explanation.yi-coreGeneric maybe move operation. As genMoveB, but don't move if we are at boundary already.yi-coreMove to the next unit boundaryyi-coreAs (, unless the point is at a unit boundaryyi-coreTransforms the region given by  in the # with user-supplied function.yi-coreDelete between point and next unit boundary, return the deleted region.yi-core8Region of the whole textunit where the current point is.yi-coreNon empty region of the whole textunit where the current point is.yi-coreRegion between the point and the next boundary. The region is empty if the point is at the boundary.yi-coreNon empty region between the point and the next boundary, In fact the region can be empty if we are at the end of file.yi-core6Non empty region at given point and the next boundary,66$Noneāyi-coreExtend the given region to boundaries of the text unit. For instance one can extend the selection to complete lines, or paragraphs.>>%GPL-2yi-devel@googlegroups.com experimentalportableNone vyi-coreMove point between the middle, top and bottom of the screen If the point stays at the middle, it'll be gone to the top else if the point stays at the top, it'll be gone to the bottom else it'll be gone to the middleyi-coreMove point to start of lineyi-coreMove point to end of lineyi-coreMove cursor to originyi-coreMove cursor to end of bufferyi-core*Move left if on eol, but not on blank lineyi-coreMove x- chars back, or to the sol, whichever is lessyi-coreMove x0 chars forward, or to the eol, whichever is lessyi-core(Move to first char of next word forwardsyi-core)Move to first char of next word backwardsyi-coreMove to the next occurence of cyi-core3Move to the character before the next occurence of cyi-core"Move to the previous occurence of cyi-core6Move to the character after the previous occurence of cyi-core.Move to first non-space character in this lineyi-core1Move to the last non-space character in this lineyi-coreGo to the first non space character in the line; if already there, then go to the beginning of the line.yi-core?True if current line consists of just a newline (no whitespace)yi-coreNote: Returns False if line doesn't have any characters besides a newlineyi-coreMove down next n paragraphsyi-core Move up prev n paragraphsyi-core Select next n paragraphsyi-core7Return true if the current point is the start of a lineyi-core5Return true if the current point is the end of a lineyi-coreTrue if point at start of fileyi-coreTrue if point at end of fileyi-coreTrue if point at the last lineyi-core&Get the current line and column numberyi-coreRead the line the point is onyi-coreReads in word at point.yi-coreReads in word before point.yi-coreDelete one character backwardyi-coreDelete forward whitespace or non-whitespace depending on the character under point.yi-coreDelete backward whitespace or non-whitespace depending on the character before point.yi-core4Delete backward to the sof or the new line characteryi-coreemacs' delete-horizontal-space with the optional argument.yi-core$capitalise the word under the cursoryi-corelowerise word under the cursoryi-core(capitalise the first letter of this wordyi-core(Delete to the end of line, excluding it.yi-core0Transpose two characters, (the Emacs C-t action)yi-core0Delete trailing whitespace from all lines. Uses  to get back to where it was.yi-coreMarks%Set the current buffer selection markyi-core%Get the current buffer selection markyi-coreExchange point & mark.yi-core=File info, size in chars, line no, col num, char num, percentyi-coreScroll up 1 screenyi-coreScroll down 1 screenyi-core%Scroll by n screens (negative for up)yi-core*Same as scrollB, but also moves the cursoryi-core,Same as scrollByB, but also moves the cursoryi-coreMove to middle line in screenyi-core$Move cursor to the top of the screenyi-core'Move cursor to the bottom of the screenyi-coreScroll by n lines.yi-core,Move the point to inside the viewable regionyi-core,Move the visible region to include the pointyi-coreMove to n lines down from top of screenyi-coreMove to n' lines up from the bottom of the screenyi-coreMove to middle line in screenyi-core(Return the region between point and markyi-coreGet the current region boundaries. Extended to the current selection unit.yi-core7Select the given region: set the selection mark at the  and the current point at the .yi-corepath to the tag file directory tags are relative to this path yi-coremap from tags to files yi-coretrie to speed up tag hinting yi-coreFind the location of a tag using the tag table. Returns a full path and line number yi-coreSuper simple parsing CTag format 1 parsing algorithm TODO: support search patterns in addition to lineno yi-core"Read in a tag file from the system yi-core>Gives all the possible expanded tags that could match a given prefix yi-core0Extends the string to the longest certain length yi-coreSet a new TagTable yi-coreReset the TagTable yi-core&Get the currently registered tag table  -GPL-2yi-devel@googlegroups.com experimentalportableNoneD yi-corePut regex into regex register yi-coreClear the regex register yi-core!Return contents of regex register  .GPL-2yi-devel@googlegroups.com experimentalportableNone  g yi-coreGet the selected region as a rectangle. Returns the region extended to lines, plus the start and end columns of the rectangle. yi-core"Split text at the boundaries given  /GPL-2yi-devel@googlegroups.com experimentalportableNone23>?  yi-corewrite a/ returns a keymap that just outputs the action a. yi-core withModeY f runs f on the current buffer's mode. As this runs in the YiM monad, we're able to do more than with just  withModeB such as prompt the user for something before running the action. yi-corePredicate to select exceptionsyi-coreComputation to runyi-coreHandler6 6     0GPL-2yi-devel@googlegroups.com experimentalportableNone ? yi-core5Parse any character that can be inserted in the text. yi-core optMod f ev produces a  that consumes ev or f ev yi-core#Convert a special key into an event yi-core p >>! act = p >> 'write' act yi-core  p >>=! act = p >>= 'write' . act yi-core  ev ?>> proc =  ev >> proc yi-core  ev ?>>! act =  ev >>   act yi-core  ev ?*>> proc =  ev >> proc yi-core  ev ?*>>! act =  ev >>   act   1 1 0 0 0 01None7 yi-coreThe class of "valid hooks". This class is exported abstractly, but the instances can be phrased quite simply: the functions (of arbitrarily many arguments, including zero) which run in either the  or  monads.)A typical example would be something likeInt -> String ->  String. yi-coreLooks up the configured value for the hook, and runs it. The argument to  + will typically be a record accessor. See   for the valid hook types.  2GPL-2yi-devel@googlegroups.com experimentalportableNone  yi-coreRemove anything starting with uppercase letter. These denote either module names or types. yi-coreHoogle's output includes a sort of type keyword, telling whether a hit is a package name, syntax, a module name, etc. But we care primarily about the function names, so we filter out anything containing the keywords. yi-coreQuery Hoogle, with given search and options. This errors out on no results or if the hoogle command is not on path. yi-coreFilter the output of   to leave just functions. yi-coreReturn module-function pairs. yi-core Call out to  , and overwrite the word at point with the first returned function. yi-core Call out to  , and print inside the Minibuffer the results of searching Hoogle with the word at point.  3GPL-2yi-devel@googlegroups.com experimentalportableNone 3>i yi-core#Start an input session with History yi-core.Finish the current input session with history. yi-core0Helper that sets the given history at ident and  s the result. yi-core identifieryi-coreHistory to setyi-coreMap of existing histories  GPL-2yi-devel@googlegroups.com experimentalportableNone 3"9 yi-coreGlobal searching. Search for regex and move point to that position. Nothing* means reuse the last regular expression. Just s means use s as the new regular expression. Direction of search can be specified as either Backward or Forward (forwards in the buffer). Arguments to modify the compiled regular expression can be supplied as well. yi-coreSet up a search. yi-coreDo a search, placing cursor at first char of pattern, if found. Keymaps may implement their own regex language. How do we provide for this? Also, what's happening with ^ not matching sol? yi-coreSearch and Replace all within the current region. Note the region is the final argument since we might perform the same search and replace over multiple regions however we are unlikely to perform several search and replaces over the same region since the first such may change the bounds of the region. yi-core,Peform a search and replace on the selection yi-core6Replace a string by another everywhere in the document yi-core'Search and replace in the given region.If the input boolean is True, then the replace is done globally, otherwise only the first match is replaced. Returns the number of replacements done. yi-coreSearch and replace in the region defined by the given unit. The rest is as in  . yi-core4Create a SearchExp that matches exactly its argument yi-core&Succesfully finish a search. Also see  . yi-coreCancel a search. Also see  . yi-core Wrapper over   that passes through the action and accepts the search as successful (i.e. when the user wants to stay at the result). yi-core Wrapper over   that passes through the action and marks the search as unsuccessful (i.e. when the user wants to jump back to where the search started). yi-coreFind the next match and select it. Point is end, mark is beginning. yi-core&Replace all the remaining occurrences. yi-coreExit from query/replace. yi-coreWe replace the currently selected match and then move to the next match. yi-coreNothing means used previous pattern, if any. Complain otherwise. Use getRegexE to check for previous patternsyi-core"Flags to modify the compiled regexyi-coreBackward or Forward yi-coreThe string to search foryi-coreThe string to replace it withyi-coreThe region to perform this over yi-coretext to search foryi-coretext to replace it with& &  4None38$ yi-coreHere is a persistent history saving part. We assume each command is a single line. To add new components, one has to:add new field in PersistentState structure,add write and read parts in loadPersistentState/savePersistentState,add a trimming code in savePersistentState) to prevent blowing up of save file. yi-coreLoads a persistent state, and sets Yi state variables accordingly.  GPL-2yi-devel@googlegroups.com experimentalportableNone )8 yi-core Like usual  - but user can specify case sensitivity. See   for exotic unicode gotchas. yi-core'Prefix matching function, for use with  yi-core0Text from the match up to the end, for use with  yi-core>A simple fuzzy match algorithm. Example: "abc" matches "a1b2c" yi-core>A simple fuzzy match algorithm. Example: "abc" matches "a1b2c" yi-coreTODO: this is a terrible function, isn't this just case-insensitive infix? @ Fzetsu yi-coreComplete a string given a user input string, a matching function and a list of possibilites. Matching function should return the part of the string that matches the user string. yi-coreSame as   , but maps  showFunction# on possible matches when printing yi-coreIs case-sensitive? yi-coreInput to match onyi-corematcher functionyi-coreitems to match against yi-core Show functionyi-coreInput to match onyi-corematcher functionyi-coreitems to match against 2 2 5GPL-2yi-devel@googlegroups.com experimentalportableNone 3* yi-coreSwitch out of completion mode. yi-coreTry to complete the current word with occurences found elsewhere in the editor. Further calls try other options. yi-coreExtract functionyi-coreSource functionyi-coreMessage functionyi-corePredicate matcher 6GPL-2yi-devel@googlegroups.com experimentalportableNone / yi-coreStart up the editor, setting any state with the user preferences and file names passed in, and turning on the UI yi-coreQuit. yi-coreQuit with an exit code. (This is used to implement vim's :cq command) yi-coreRedraw yi-coreSuspend the program yi-corePipe a string through an external command, returning the stdout chomp any trailing newline (is this desirable?)Todo: varients with marks? yi-core,Show an error on the status line and log it. yi-coreClose the current window. If this is the last window open, quit the program.CONSIDER: call quitEditor when there are no other window in the   function. (Not possible since the windowset type disallows it -- should it be relaxed?) yi-coreThis is a like   but with emacs behaviour of C-x 0: if we're trying to close the minibuffer or last buffer in the editor, then just print a message warning the user about it rather closing mini or quitting editor. yi-core8Start a subprocess with the given command and arguments.  7GPL-2yi-devel@googlegroups.com experimentalportableNone  3>8 yi-coreTag a type with a documentation yi-core+Prompts for a buffer name, turns it into a ( and passes it on to the handler function. Uses all known buffers for hinting. yi-corePrompts the user for comment syntax to use for the current mode. yi-coreOpen a minibuffer window with the given prompt and keymap The third argument is an action to perform after the minibuffer is opened such as move to the first occurence of a searched for string. If you don't need this just supply  return () yi-core#withMinibuffer prompt completer act: open a minibuffer with prompt. Once a string s is obtained, run act s.  completer can be used to complete functions: it returns a list of possible matches. yi-coreMakes a completion function. yi-core.Hint function that does nothing, for use with  yi-corewithMinibufferFree prompt act: Simple version of  yi-corewithMinibufferGen proposal getHint prompt completer onTyping act: open a minibuffer with prompt, and initial content proposal. Once a string s is obtained, run act s.  completer can be used to complete inputs by returning an incrementally better match, and getHint can give an immediate feedback to the user on the current input. on Typing is an extra action which will fire with every user key-press and receives minibuffer contents. Use something like const $ return () if you don't need this. yi-core8Open a minibuffer, given a finite number of suggestions. yi-coreReturns all the buffer names yi-corePromptyi-coreHandleryi-coreHint pre-processor. It takes the list of open buffers and a list of all buffers, and should spit out all the buffers to possibly hint, in the wanted order. Note the hinter uses name prefix for filtering regardless of what you do here. yi-coreList completion, such as  .yi-coreMatcher such as  yi-core.Function to fetch possibilites for completion.yi-core!Input to try and complete against  8GPL-2yi-devel@googlegroups.com experimentalportableNone @ yi-coreThe only built in mode of yi yi-coreSpecialised version of  * for the common case, wrapping up into a   with  . yi-coreDetermines if the file's extension is one of the extensions in the list. yi-core.When applied to an extensions list, creates a FG function. yi-coreWhen applied to an extensions list and regular expression pattern, creates a FG function. yi-coreGenerate a parser for shebang patterns the generated parser will match only if the shebang is at the start of a lineExamples shebangParser "runhaskell"generates a parser that matches "#!/usr/bin/env runhaskell\n" (but also "djsjfaj\n\n\n\r\n#! /usr/bin/env runhaskell \ndkasfkda\n\r\nkasfaj")Note: You can get ("runhaskell" :: Parser String)) by using the OverloadedStrings extension shebangParser "python"9generates a parser that matches "#!/usr/bin/env python\n"Note: it doesn't match "#!/usr/bin/env python2\n" (that's why the newline is required)0It is also possible to use more complex parsers: 0shebangParser ("python" *> ("2" <|> "3" <|> ""))'generates a parser that matches any of:"#!/usr/bin/env python\n""#!/usr/bin/env python2\n""#!/usr/bin/env python3\n" yi-core+Adds a hook to all matching hooks in a list yi-core0Apply a list of mode hooks to a list of AnyModes yi-coreCheck whether a mode of the same name is already in modeTable and returns the original mode, if it isn't the case. yi-coreStarting state yi-coreList of extensionsyi-corePath to compare againstyi-core)File contents. Currently unused but see  . 9GPL-2yi-devel@googlegroups.com experimentalportableNone G yi-coreGiven a possible starting path (which if not given defaults to the current directory) and a fragment of a path we find all files within the given (or current) directory which can complete the given path fragment. We return a pair of both directory plus the filenames on their own that is without their directories. The reason for this is that if we return all of the filenames then we get a hint1 which is way too long to be particularly useful. yi-coreGiven a path, trim the file name bit if it exists. If no path given, return current directory. yi-core?Given a possible path and a prefix, return matching file names. yi-corePlace mark at current point. If there's an existing mark at point already, deactivate mark. yi-core'Select the contents of the whole buffer yi-coreA simple wrapper to adjust the current indentation using the mode specific indentation function but according to the given indent behaviour. yi-core0Generic emacs style prompt file action. Takes a prompt and a continuation act& and prompts the user with file hints. yi-coreAs   but additionally allows the caller to transform the list of hints arbitrarily, such as only showing directories. yi-coreLike M-x cd, it changes the current working directory. Mighty useful when we don't start Yi from the project directory or want to switch projects, as many tools only use the current working directory. yi-core*Shows current working directory. Also see  . yi-core:Prints out the rope of the current buffer as-is to stdout.The only way to stop it is to close the buffer in question which should free up the (. yi-corePromptyi-core/Hint transformer: current path, generated hintsyi-coreAction over choice  :GPL-2yi-devel@googlegroups.com experimentalportableNone 38Jv yi-coreIf file exists, read contents of file into a new buffer, otherwise creating a new empty buffer. Replace the current window with a new window onto the new buffer.If the file is already open, just switch to the corresponding buffer.Need to clean up semantics for when buffers exist, and how to attach windows to buffers.Yi.File module re-exports this, you probably want to import that instead.In case of a decoding failure, failure message is returned instead of the (.  ;GPL-2yi-devel@googlegroups.com experimentalportableNone 3ON yi-core Tries to open a new buffer with   and runs the given action on the buffer handle if it succeeds.If the  , fails, just the failure message is printed. yi-coreSame as openingNewFile with no action to run after. yi-core*Revert to the contents of the file on disk yi-coreTry to write a file in the manner of vi/vim Need to catch any exception to avoid losing bindings yi-core4Try to write to a named file in the manner of vi/vim yi-coreTry to write to a named file if it doesn't exist. Error out if it does. yi-coreWrite current buffer to disk, if this buffer is associated with a file yi-core=Write a given buffer to disk if it is associated with a file. yi-core Write current buffer to disk as f. The file is also set to f. yi-coreWrite all open buffers yi-coreMake a backup copy of file yi-core=Associate buffer with file; canonicalize the given path name. yi-coreChecks if the given buffer deserves a save: whether it's a file buffer and whether it's pointing at a file rather than a directory.  <GPL-2yi-devel@googlegroups.com experimentalportableNone O  =GPL-2yi-devel@googlegroups.com experimentalportableNone Q yi-core1TODO: we're just converting back and forth here,  3 and friends need to migrate to YiString it seems. yi-core1Open a new buffer for interaction with a process. yi-coreopen a new buffer for interaction with a process, using any interactive-derived mode yi-core$Send the type command to the process yi-coreSend command, recieve reply >GPL-2yi-devel@googlegroups.com experimentalportableNone 3X yi-core2Config variable for customising the behaviour of   and  .Set this variable using  . See  ghciEvaluator and finiteListEvaluator for two implementation. yi-coreimplementation of  yi-coreimplementation of  yi-coredescribe named action (or at least its type.), simplest implementation is at least return. yi-core(Runs the action, as written by the user.The behaviour of this function can be customised by modifying the   variable. yi-core,Lists the action names in scope, for use by  , and help index.The behaviour of this function can be customised by modifying the   variable. yi-core0Describes the named action in scope, for use by help.The behaviour of this function can be customised by modifying the   variable. yi-coreThe evaluator to use for   and  . yi-core4Accessor for the published actions. Consider using  . yi-corePublish the given action, by the given name. This will overwrite any existing actions by the same name. yi-coreEvaluator based on a fixed list of published actions. Has a few differences from  ghciEvaluator:expressions can't be evaluated)all suggested actions are actually valued(related to the above) doesn't contain junk actions from Prelude1doesn't require GHCi backend, so uses less memory yi-core,Jumps to specified position in a given file. yi-core1Tries to jump to error at the current line. See  . yi-coreFilename to make the jump in.yi-coreLine to jump to.yi-coreColumn to jump to.   1?GPL-2yi-devel@googlegroups.com experimentalportableNone 3Y yi-coreDisplays help for a given name, or help index, if no name is given  @GPL-2yi-devel@googlegroups.com experimentalportableNone 3\ yi-coreChanging the buffer name quite useful if you have several the same. This also breaks the relation with the file. yi-core"shell-command with argument prompt yi-core#shell-command with a known argument yi-corecabal-configure yi-coreRun the given commands with args and pipe the ouput into the build buffer, which is shown in an other window. yi-core4Run the given command with args in interactive mode. yi-coreSelect   or  % based on stack or cabal command name yi-core cabal-build yi-core'Search the source files in the project. yi-corePerform a find+grep operation yi-core stack-build  ANone ]V  GPL-2yi-devel@googlegroups.com experimentalportableNonei yi-coreAdds the given key bindings to the `global keymap'. The bindings will override existing bindings in the case of a clash. yi-coremodeBindKeys mode keys adds the keybindings in keys% to all modes with the same name as mode.As with  , a mode by the given name must already be registered, or the function will have no effect, and issue a command-line warning. yi-coremodeBindKeysByName name keys adds the keybindings in keys to all modes with name name( (if it is registered). Consider using   instead. yi-coreRegister the given mode. It will be preferred over any modes already defined. yi-coremodifyMode mode f+ modifies all modes with the same name as mode, using the function f.Note that the mode argument is only used by its . In particular, a mode by the given name must already be registered, or this function will have no effect, and issue a command-line warning.   mode f =   ( mode) f yi-coremodifyModeByName name f modifies the mode with name name using the function f. Consider using   instead. yi-core  the font name, or   for default. yi-core  the font size, or   for default. yi-core6Amount to move the buffer when using the scroll wheel. yi-core  the scroll style, or   for default. yi-coreSee  for documentation. yi-core(Which side to display the scroll bar on. yi-coreShould the scroll bar autohide? yi-coreShould the tab bar autohide? yi-coreShould lines be wrapped? yi-coreThe character with which to fill empty window space. Usually '~' for vi-like editors, ' ' for everything else. yi-coreUI colour theme. yi-core Line numbers. yi-coreList of registered layout managers. When cycling through layouts, this list will be consulted. yi-core2Produce a .yi.dbg file with debugging information? yi-coreRun when the editor is started (this is run after all actions which have already been registered) yi-coreRun after the startup actions have completed, or on reload (this is run after all actions which have already been registered) yi-core;Actions to run when the editor is started. Consider using   or   instead. yi-core8Actions to run after startup or reload. Consider using   or   instead. yi-coreDefault keymap to use. yi-core? yi-core5List of modes by order of preference. Consider using  ,  , or   instead. yi-coreSet to 6 for an emacs-like behaviour. Consider starting with defaultEmacsConfig, defaultVimConfig, or defaultCuaConfig to instead. yi-coreSet to   for an emacs-like behaviour, where all deleted text is accumulated in a killring. Consider starting with defaultEmacsConfig, defaultVimConfig, or defaultCuaConfig instead. yi-core?  #"!&%$('+*).-,10/ ghijklmnoptsqruyvxzw{|}~      #"!&%$('+*).-,10/ghijklmnoptsqruyvxzw{|}~HGPL-2yi-devel@googlegroups.com experimentalportableNoneu  #"!&%$('+*).-,10/ ghijklmnoptsqruyvxzw{|}~ IJKLMNLMOLMPLMQLMRLSTLSULSVLSWLSWLXYLXZLX[LX\LX]LX^LX_LX`LXaLXbLXcLXdLXeLXfLXgLXhLXiLXjLXkLlmLlnLloLlpLlqLlrLlsLltLltLluLluLlvLlwLlwLlxLlyLlyLlzLl{Ll{L|}~   EEEEEEEEEEEEEEEEEEEEEEEE                                 FFGHH   !!!!!!!!!!""""""""""""#######################################################$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&& & & & & ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * * * * * * * + + + + + + + + + + + + + + +++ + + ++ + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - - - . . . . . . . / / // / / / / / / / / / / / / / / / / / / / / / 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3                                     4 4 4 4 4 4 4 4 4 4 4 4            5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 67 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 : : : : : : : : : : : : : : : : : : : : : : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; < = = = = = = = = = = = = > > > > > > > > > > > > > > > > > > > > > > > > > > > ? ? ? ? @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A                            B B B C C C   D D E E E E E E E E E E E E E E E E E E E E E E E E EE E E E E E E E E E E E       %  % & L  6 8 LS LS > >  LLLL L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L $yi-core-0.19.0-Zh7sCWG9vkJTDF5croJOHYi.MonadYi.Buffer.Misc Yi.SearchYi.IncrementalParseYi.Config.Simple Yi.CompletionParser.Incremental Paths_yi_coreSystem.FriendlyPath Yi.BufferYi.Buffer.UndoYi.CompletionTreeYi.Config.MiscYi.DebugYi.Event Yi.Interact Yi.JumpList Yi.KillRing Yi.LayoutYi.Paths Yi.Process Yi.StringYi.Syntax.LayoutYi.Syntax.TreeYi.Syntax.OnlineTreeYi.Syntax.Driver Yi.UI.Common Yi.WindowYi.TabYi.TypesYi.Config.Lens Yi.ConfigYi.Config.Simple.TypesYi.Buffer.RegionYi.Buffer.TextUnitYi.Buffer.NormalYi.Buffer.HighLevelYi.Buffer.Indent Yi.UI.UtilsYi.UI.LineNumbers Yi.Editor Yi.UI.TabBarYi.UI.SimpleLayoutYi.TagYi.Search.Internal Yi.Rectangle Yi.KeymapYi.Keymap.KeysYi.Hooks Yi.Hoogle Yi.HistoryYi.PersistentStateYi.TextCompletionYi.Core Yi.MiniBufferYi.Mode.CommonYi.MiscYi.DiredYi.FileYi.Mode.CompilationYi.Mode.InteractiveYi.EvalYi.Command.Help Yi.CommandYi.Config.Default Control.ExcData.DelayListSystem.CanonicalizePathYi.Buffer.ImplementationMode modeAppliesYi mtl-2.2.2Control.Monad.State.Classgets)yi-language-0.19.0-IdyJrIEoDq11Qjn5TopPkHYi.Regex SearchExp QuoteRegex NoNewLine IgnoreCase SearchOption Yi.Lexer.AlexstPosn lookedOffsetstLexer AlexState Yi.RegionregionsOverlap regionIsEmptyincludedRegion nearRegioninRegion emptyRegion mkSizeRegion mkRegion'mkRegion unionRegionintersectRegion regionSize fmapRegion regionLast regionFirst regionEnd regionStartregionDirectionRegionYi.Buffer.Basic directionElim mayReverse reverseDirForwardBackward DirectionmarkIdMark BufferRef fromPointPointfromSizeSize unWindowRef WindowRefYi.Utils commonPrefixProcessLogEntryLLogLEmptyLDislikeLShiftLDoneLFailLSuspLSParserLookYuckEnterprofile countWidthsymboleoffeedZevalLevalL'pushSymspushEof mkProcessruntestNextlookNext recoverWithevalRfullLog$fMonadFailParser $fMonadParser$fAlternativeParser$fApplicativeParser$fFunctorParser $fShowSteps $fShowRPolish $fShowZip$fShowLogEntry$fShowProfileF$fFunctorProfileFversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameuserToCanonPath expandTilda isAbsolute' MarkValue markPoint markGravityUIUpdate TextUpdate StyleUpdateUpdateInsertDelete updatePointupdateDirection_insertUpdateString_deleteUpdateStringOverlay overlayOwner overlayBegin overlayEnd overlayStyleoverlayAnnotation markGravityAA markPointAAupdateIsDelete mkOverlayURListChangeInteractivePoint AtomicChangeemptyU addChangeUdeleteInteractivePointsUsetSavedFilePointUundoUredoUisAtSavedFilePointU$fBinaryChange$fBinaryURList $fShowURList$fGenericURList $fShowChange$fGenericChangeCompletionTreeunCompletionTreefromListcompleteupdatetoListpretty$fShowCompletionTree$fSemigroupCompletionTree$fMonoidCompletionTree$fEqCompletionTree$fBinaryCompletionTree ScrollStyle SnapToCenter SingleLine initDebugtraceerror logPutStrLnlogError logStreamtraceMtraceM_EventKeyKEscKFunKPrtScrKPauseKASCIIKBSKInsKHomeKPageUpKDelKEnd KPageDownKNP5KUpKMenuKLeftKDownKRightKEnterKTabModifierMShiftMCtrlMMetaMSuperMHyper prettyEvent eventToChar $fShowEvent $fOrdEvent $fEqEvent$fEqKey $fShowKey$fOrdKey$fShowModifier $fEqModifier $fOrdModifierStatePscanner InteractState AmbiguousWaitingDeadRunningEndChainI MonadInteractwrite eventBoundsadjustPriority deprioritize<||||> importantacceptedrunWriteprocessOneEvent computeStateoneOfanyEvent eventBetweeneventeventschoiceoption mkAutomaton idAutomaton$fMonadInteractStateTwe$fMonadInteractIwevent $fMonadPlusI $fMonadFailI$fMonadI$fAlternativeI$fApplicativeI $fFunctorI$fShowP$fMonoidInteractState$fSemigroupInteractStateJumpjumpMark jumpBufferRefJumpListaddJumpjumpBack jumpForward $fShowJump $fBinaryJump $fGenericJumpKillring _krKilled _krContents$fBinaryKillring$fShowKillring $fEqKillring krContentskrKilled krLastYankkrEmptykrEndCmdkrPutkrSetkrGetLayoutM Transposed Transposable transposeHasNeighborWest RectanglerectXrectY rectWidth rectHeightAnyLayoutManager LayoutManager pureLayoutdescribeLayout nextVariantpreviousVariant RelativeSizeDividerPosition DividerRef Orientation HorizontalVerticalLayout SingleWindowStackPair orientationwinsdivPosdivRefpairFstpairSnddividerPositionA findDividerlayoutManagerSameTypetallwide slidyTall slidyWide hPairNStack vPairNStacklayoutToRectangles singleWindowpairstack evenStack runLayoutM$fDefaultLayout $fShowLayout$fDefaultAnyLayoutManager$fLayoutManagerAnyLayoutManager$fEqAnyLayoutManager$fLayoutManagerTall$fLayoutManagerWide$fLayoutManagerSlidyTall$fLayoutManagerHPairNStack$fTransposableLayout$fTransposableOrientation$fLayoutManagerTransposed$fLayoutManagerVPairNStack$fLayoutManagerSlidyWide $fEqSlidyWide$fEqVPairNStack$fEqTransposed $fEqRectangle$fShowRectangle$fEqHPairNStack $fEqSlidyTall$fEqWide$fEqTall $fEqLayout$fFunctorLayout$fEqOrientation$fShowOrientation getsAndModifywithwhenMmaybeM repeatUntilMassignuses getConfigDir getDataPath getConfigPathgetCustomConfigPathgetConfigFilenamegetConfigModulesgetPersistentStateFilenamegetEvaluatorContextFilenameSubprocessInfoprocCmdprocArgs procHandlehInhOuthErrbufRefseparateStdErr SubprocessIdrunProgCommand shellFileNamerunShellCommandcreateSubprocess readAvailableshowTlistify commonTPrefixcommonTPrefix' capitalizecapitalizeFirstchomp dropSpaceisBlankfillTextoverInitoverTailunlines'lines'mapLinesonLinespadLeftpadRight layoutHandler $fShowIState$fShowBlockOpenIsTreesubtreesuniplate emptyNode toksAfterallToks tokAtOrBefore toksInRegiontokenBasedAnnotstokenBasedStrokesfromNodeToFinalfromLeafToLeafAfter getLastPathgetAllSubTreesgetFirstElementgetLastElementgetFirstOffset getLastOffset subtreeRegionsepBysepBy1TreeBinLeafTipmanyToks $fIsTreeTree $fShowTree $fFunctorTree$fFoldableTree$fTraversableTreeCachepath cachedStatesrootfocusedPath mkHighlighterunzipFM zipWithFMUImainendsuspendrefreshuserForceRefreshlayout reloadProjectdummyUIWindowisMinibufkey bufAccessListheightwidth winRegionwkey actualLinesjumpList actualLinesAbufAccessListAbufkeyAheightAisMiniA jumpListAwidthA winRegionAwkeyAwinkey dummyWindow $fEqWindow $fShowWindow$fBinaryWindowTabtkey tabLayoutTabReftabFocustabMiniWindows tabWindowsAtabLayoutManagerAtabDividerPositionA mapWindowsforceTabtabFoldlmakeTabmakeTab1 $fShowTab$fEqTab $fBinaryTab RegionStyleLineWise Inclusive ExclusiveBlockConfig startFrontEndconfigUI startActionsinitialActions defaultKmconfigInputPreprocess modeTable debugModeconfigRegionStyleconfigKillringAccumulate%configCheckExternalChangesObsessivelybufferUpdateHandlerlayoutManagers configVars CursorStyle AlwaysFatNeverFatFatWhenFocusedFatWhenFocusedAndInsertingUIBootUIConfigconfigFontNameconfigFontSizeconfigScrollStyleconfigScrollWheelAmountconfigLeftSideScrollBarconfigAutoHideScrollBarconfigAutoHideTabBarconfigLineWrapconfigCursorStyleconfigWindowFill configThemeconfigLineNumbers MonadEditoraskCfg withEditor withEditor_EditorM fromEditorMEditor bufferStackbuffers refSupplytabs_dynamic statusLinesmaxStatusHeightkillring currentRegexsearchDirection pendingEventsonCloseActionsStatusesStatusIndentBehaviour IncreaseCycle DecreaseCycle IncreaseOnly DecreaseOnlymodeNamemodeHL modePrettify modeKeymap modeIndent modeFollowmodeIndentSettingsmodeToggleCommentSelectionmodeGetStrokes modeOnLoad modeModeLinemodeGotoDeclarationAnyModeSelectionStylehighlightSelectionrectangleSelectionBufferId MemBuffer FileBuffer Attributesidentbkey__undos bufferDynamic preferCol preferVisCol stickyEolpendingUpdatesselectionStyle keymapProcesswinMarkslastActiveWindow lastSyncTimereadOnly insertingdirectoryContentpointFollowsWindowupdateTransactionInFlightupdateTransactionAccumfontsizeVariation updateStreamMarkSetfromMarkinsMarkselMarkWinMarksFBufferbmoderawbuf attributesIndentSettings expandTabstabSize shiftWidthBufferM fromBufferM KeymapSet topKeymap insertKeymapYiMrunYiMYiVaryiEditoryiSubprocessIdSupplyyiSubprocessesyiUiyiInputyiOutputyiConfigyiVarIsRefreshNeeded MustRefreshNoNeedToRefresh KeymapProcess KeymapEndoKeymapKeymapMInteractYiConfigVariable YiVariableActionYiAEditorABufferA emptyActionunsafeWithEditorextractTopKeymap runEditor$fBinaryMarkSet$fBinaryBufferId$fBinarySelectionStyle$fYiVariableRegionStyle$fDefaultRegionStyle$fBinaryRegionStyle$fMonadFailEditorM$fBinaryAttributes $fEqFBuffer$fApplicativeBufferM$fMonadFailBufferM$fMonadStateEditorYiM $fShowAction $fEqAction$fMonadEditorEditorM$fMonadEditorYiM$fMonadEditorM$fApplicativeEditorM$fMonadStateEditorEditorM$fMonadReaderConfigEditorM$fFunctorEditorM$fMonadBufferM$fFunctorBufferM$fMonadStateFBufferBufferM$fMonadReaderWindowBufferM $fMonadYiM$fApplicativeYiM$fMonadReaderYiYiM$fMonadBaseIOYiM $fFunctorYiM$fMonadFailYiM$fEqRegionStyle$fShowRegionStyle$fEqIndentBehaviour$fShowIndentBehaviour$fShowSelectionStyle$fShowBufferId $fEqBufferId $fOrdBufferId$fTraversableMarkSet$fFoldableMarkSet$fFunctorMarkSet $fShowMarkSet$fEqIndentSettings$fShowIndentSettings$fShowIsRefreshNeeded$fEqIsRefreshNeededbufferUpdateHandlerA&configCheckExternalChangesObsessivelyAconfigInputPreprocessAconfigKillringAccumulateAconfigRegionStyleA configUIA configVarsA debugModeA defaultKmAinitialActionsAlayoutManagersA modeTableA startActionsAstartFrontEndAconfigAutoHideScrollBarAconfigAutoHideTabBarAconfigCursorStyleAconfigFontNameAconfigFontSizeAconfigLeftSideScrollBarAconfigLineNumbersAconfigLineWrapAconfigScrollStyleAconfigScrollWheelAmountA configThemeAconfigWindowFillAconfigVariable configStyleconfigFundamentalModeconfigTopLevelKeymapFieldConfigM runConfigMcustomVariable$fMonadConfigM$fFunctorConfigM$fApplicativeConfigM$fMonadStateConfigConfigM$fMonadBaseIOConfigMdirectoryContentAfontsizeVariationAidentA insertingAkeymapProcessAlastActiveWindowA lastSyncTimeApendingUpdatesApointFollowsWindowA preferColA readOnlyA stickyEolAundosAshortIdentString identStringminiIdentString clearSyntaxfilehighlightSelectionArectangleSelectionAincreaseFontSizedecreaseFontSize getModeLine getPercent queryBuffer addOverlayBgetOverlaysOfOwnerB delOverlayBdelOverlaysOfOwnerBisPointInsideOverlay runBuffergetMarks runBufferFull getMarkValueBnewMarkB deleteMarkBrunBufferDummyWindow markSavedBbkeyisUnchangedBufferstartUpdateTransactionBcommitUpdateTransactionBundoBredoBretroactivelyAtSavePointBmodeAlwaysAppliesmodeNeverApplies emptyModenewBsizeBpointBnelemsBstreamBindexedStreamBstrokesRangesBmoveTo setInserting applyUpdaterevertPendingUpdatesBwriteBwriteNnewlineB insertNAtinsertNinsertB deleteNAtcurLn screenTopLn screenMidLn screenBotLn markLinesgotoLnsetMode0 setAnyModesetMode modifyModeonMode withMode0 withModeB withSyntaxB focusSyntax withSyntaxB' regexRegionBregexB modifyMarkB setMarkHereBsetNamedMarkHereBsetVisibleSelectiongetVisibleSelectionaskMarksgetMarkB mayGetMarkBmoveNleftBleftNrightBrightN lineMoveRelmovingToPrefColmovingToPrefVisCol moveToColBmoveToLineColBpointOfLineColBforgetPreferCol savingPrefCollineUplineDownelemsBbetweenBreadBreadAtB replaceCharBreplaceCharWithBelowBreplaceCharWithAboveBinsertCharWithBelowBinsertCharWithAboveBdeleteNindentSettingsBcurColcolOflineOf lineCountB solPointB eolPointB gotoLnFrom getBufferDyn putBufferDynsavingExcursionB markPointA savingPointBsavingPositionBpointAtpointAfterCursorBdestinationOfMoveB askWindowwithEveryLineB $fBinaryMode$fBinaryFBuffer $fShowFBuffer$fHasAttributesFBuffer$fHasAttributesAttributes expandTabsA shiftWidthAtabSizeA modeAppliesA modeFollowAmodeGetStrokesAmodeGotoDeclarationAmodeHLA modeIndentAmodeIndentSettingsA modeKeymapA modeModeLineA modeNameA modeOnLoadA modePrettifyAmodeToggleCommentSelectionA winRegionB deleteRegionB readRegionBreplaceRegionB mapRegionB swapRegionsB modifyRegionBinclusiveRegionBblockifyRegion joinLinesB concatLinesBlinesOfRegionB BoundarySide InsideBound OutsideBoundTextUnit CharacterLineVLineDocumentGenUnitgenEnclosingUnitgenUnitBoundary outsideUnitunitWord unitDelimited isWordChar checkPeekB unitViWord unitViWORDunitViWordAnyBndunitViWORDAnyBndunitViWordOnLineunitViWORDOnLineisAnySepunitSepunitSepThisLine atBoundaryBunitEmacsParagraph unitParagraph unitSentenceleftBoundaryUnitgenAtBoundaryB numberOfBwhileBuntilB doUntilB_untilB_ doIfCharBgenMoveB genMaybeMoveBmoveB maybeMoveB transposeB transformBdeleteBregionWithTwoMovesB regionOfBregionOfNonEmptyB regionOfPartBregionOfPartNonEmptyBregionOfPartNonEmptyAtB readPrevUnitB readUnitBhalfUnit deleteUnitB$fEqBoundarySidegetRegionStyleputRegionStyleconvertRegionToStyleBmkRegionOfStyleBunitWiseRegionextendRegionToBoundariesBufferFileInfobufInfoFileName bufInfoSize bufInfoLineNo bufInfoColNo bufInfoCharNobufInfoPercentbufInfoModified moveToMTB moveToSol moveToEoltopBbotB leftOnEol moveXorSol moveXorEol nextWordB prevWordBgotoCharacterBnextCIncnextCInLineIncnextCExcnextCInLineExcprevCIncprevCInLineIncprevCExcprevCInLineExcfirstNonSpaceB lastNonSpaceBmoveNonspaceOrSolisCurrentLineEmptyBisCurrentLineAllWhiteSpaceBnextNParagraphsprevNParagraphsselectNParagraphsatSolatEolatSofatEof atLastLine getLineAndColgetLineAndColOfPointreadLnBhasWhiteSpaceBeforereadCurrentWordB readPrevWordBbdeleteB killWordB bkillWordB bdeleteLineBdeleteHorizontalSpaceBuppercaseWordBlowercaseWordBcapitaliseWordBswitchCaseChar deleteToEolswapBdeleteTrailingSpaceBsetSelectionMarkPointBgetSelectionMarkPointBexchangePointAndMarkB getBookmarkBbufInfoB upScreensB downScreensB upScreenB downScreenBscrollScreensB vimScrollB vimScrollByBscrollToCursorBscrollCursorToTopBscrollCursorToBottomBscrollBscrollToLineAboveWindowBscrollToLineBelowWindowBsnapInsB snapScreenB downFromTosB upFromBosBmiddleBgetRawestSelectRegionBgetSelectRegionBsetSelectRegionBdeleteBlankLinesB lineStreamB getNextLineBgetNextNonBlankLineBmodifyExtendedSelectionBlinePrefixSelectionBunLineCommentSelectionBtoggleCommentBreplaceBufferContent fillParagraph sortLinessortLinesWithRegionrevertBshapeOfBlockRegionBleftEdgesOfRegionBrightEdgesOfRegionB'splitBlockRegionToContiguousSubRegionsBdeleteRegionWithStyleBreadRegionRopeWithStyleBinsertRopeWithStyleBflipRectangleBmovePercentageFileBfindMatchingPairBincrementNextNumberByB isNumberB test3CharBtestHexBlineMoveVisRelmarkWord$fShowRelPositiontabB autoIndentB cycleIndentsB indentOfB indentToB modifyIndentBindentAsPreviousB indentAsNextB$indentAsTheMostIndentedNeighborLineBnewlineAndIndentBshiftIndentOfRegionBindentOfCurrentPosB applyHeights spliceAnnots strokePicture paintStrokes paintPictureattributesPictureBattributesPictureAndSelB arrangeItems arrangeItems'getDisplayLineNumbersLocalsetDisplayLineNumbersLocal#$fYiVariableDisplayLineNumbersLocal$fBinaryDisplayLineNumbersLocal $fDefaultDisplayLineNumbersLocal $fGenericDisplayLineNumbersLocal emptyEditor$fBinaryEditorbuffersA currentRegexA killringAmaxStatusHeightAonCloseActionsApendingEventsAsearchDirectionA statusLinesAwindowswindowsAtabsAaskConfigVariableAstringToNewBuffer deleteBuffer bufferSetcommonNamePrefixgetBufferStack findBufferfindBufferWithfindBufferWithNamedoesBufferNameExistgetBufferWithNamewithGivenBufferwithGivenBufferAndWindowwithCurrentBufferwithEveryBuffercurrentWindowA currentBufferprintMsg printMsgs printStatus setStatus clrStatus statusLinestatusLineInfosetRegEgetRegE getEditorDyn putEditorDyn newBufferEnewEmptyBufferEalternateBufferE newWindowEswitchToBufferEswitchToBufferWithNameE closeBufferEgetBufferWithNameOrCurrentcloseBufferAndWindowEnextWinEprevWinEswapWinWithFirstEpushWinToFirstE moveWinNextE moveWinPrevE withWindowEfindWindowWithwindowsOnBufferE focusWindowEsplitElayoutManagersPrintMsgElayoutManagersNextElayoutManagersPreviousElayoutManagerNextVariantElayoutManagerPreviousVariantEsetDividerPosEnewTabEnextTabE previousTabEmoveTabE deleteTabE tryCloseE closeOtherEshiftOtherWindowwithOtherWindowacceptedInputsOtherWindow addJumpHereE addJumpAtE jumpBackE jumpForwardEnewTempBufferE TabBarDescrTabDescrtabText tabInFocus tabBarDescrtabAbbrevTitle$fShowTabDescr $fEqTabDescrSize2D sizeWidth sizeHeightPoint2DpointColpointRowRectoffsetXoffsetYsizeXsizeY tabbarRect windowRects promptRectcoordsOfCharacterBverticalOffsetsForWindows$fYiConfigVariableTagsFileList$fDefaultTagsFileListTagTable tagFileName tagBaseDir tagFileMaptagCompletionTreeTag_unTag tagsFileListunTag' lookupTag readCTagsimportTagTablehintTags completeTagsetTags resetTagsgetTags$fBinaryTagTable$fYiVariableTags $fDefaultTags $fBinaryTags$fGenericTagTable $fShowTag$fEqTag$fOrdTag $fBinaryTag setRegexE resetRegexE getRegexE getRectangle multiSplit onRectangle openRectanglestringRectangle killRectangle yankRectangleYiAction makeActionwithUI readEditor catchDynE catchJustE handleJustE$fYiActionAction()$fYiActionBufferMx$fYiActionEditorMx$fYiActionYiMx $fYiActionIOx insertKeymapA topKeymapAmodelessKeymapSet withModeY yiEditorAyiSubprocessIdSupplyAyiSubprocessesA yiConfigAyiInputA yiOutputAyiUiAyiVarA printableChartextCharpStringcharOfshiftctrlmetasuperhypercharctrlChmetaChhyperChoptModspec>>!>>=!?>>?>>!?*>>?*>>!HookTyperunHook $fHookType-> $fHookTypeYiM$fHookTypeEditorM caseSensitizegv hoogleRawhoogleFunctionshoogleFunModulehoogle hoogleSearchHistory_historyCurrent_historyContents_historyPrefix HistoriesdynKeyA miniBuffer historyUp historyDown historyStarthistoryStartGen historyFinishhistoryFinishGen historyFind historyMovehistoryMoveGenhistoryPrefixSethistoryPrefixSet' setHistory$fBinaryHistory$fDefaultHistory$fYiVariableHistories$fDefaultHistories$fBinaryHistories$fShowHistories $fEqHistories $fShowHistory $fEqHistory SearchResult PatternFoundPatternNotFound SearchWrapped SearchMatchdoSearch searchInitcontinueSearchsearchReplaceRegionBsearchReplaceSelectionB replaceStringsearchAndRepRegion0searchAndRepRegionsearchAndRepUnit isearchInitEisearchIsEmpty isearchAddEmakeSimpleSearch isearchDelEisearchHistory isearchPrevE isearchNextE isearchWordEisearchFinishEisearchCancelEisearchFinishWithEisearchCancelWithEqrNext qrReplaceAllqrFinish qrReplaceOne$fYiVariableIsearch$fDefaultIsearch$fBinaryIsearch $fShowIsearch$fEqSearchResult$fBinaryPersistentState#$fYiConfigVariableMaxHistoryEntries$fDefaultMaxHistoryEntries$fBinaryMaxHistoryEntries$fGenericPersistentStatemaxHistoryEntries"$fYiConfigVariablePersistentSearch$fDefaultPersistentSearch$fBinaryPersistentSearchpersistentSearchsavePersistentStateloadPersistentStateisCasePrefixOf prefixMatchinfixUptoEndMatchsubsequenceMatchsubsequenceTextMatchcontainsMatch' containsMatchcontainsMatchCaseInsensitivecompleteInListcompleteInListCustomShowcompleteInList'CompletionScopeFromCurrentBufferFromAllBuffers resetCompletemkWordCompletewordCompleteString'wordCompleteString wordComplete' wordComplete completeWordB$fYiVariableCompletion$fDefaultCompletion$fBinaryCompletion$fEqCompletionScope$fShowCompletionScope$fShowCompletion$fEqCompletion startEditor quitEditorquitEditorWithExitCodefocusAllSyntax refreshEditor suspendEditorrunProcessWithInput runAction errorEditor closeWindowcloseWindowEmacsonYiVarstartSubprocess sendToProcess withSyntaxCommandArgumentsFilePatternTagRegexTagToKill LineNumber:::DocfromDocpromptingForBuffer commentRegionspawnMinibufferEwithMinibuffer mkCompleteFnsimpleCompleteinfixComplete' infixCompletenoHintnoPossibilitieswithMinibufferFreewithMinibufferGenwithMinibufferFin anyModeNameanyModeByNameM anyModeByNamegetAllModeNamesmatchingBufferNames $fYiAction->x$fPromptableBufferRef$fPromptableAnyMode$fPromptablePoint$fPromptableTextUnit$fPromptableDirection$fPromptableYiString$fPromptableText$fPromptableInt$fPromptableChar$fPromptable[] $fShow:::$fPromptable:::$fDocTypeLineNumber$fDocTypeToKill$fDocTypeRegexTag$fDocTypeFilePatternTag$fPromptableCommandArguments$fShowCommandArguments$fEqCommandArguments$fEq:::$fNum::: $fIsString:::TokenBasedModefundamentalModelinearSyntaxMode styleModeextensionMatches anyExtensionextensionOrContentsMatch shebangParser hookModesapplyModeHooks lookupModegetAppropriateFiles getFoldermatchingFileNames placeMark selectAll adjIndent promptFilepromptFileChangingHints matchFile completeFilecdpwd rot13CharprintFileInfoEdebugBufferContent$fYiVariableDiredOpState$fBinaryDiredOpState$fDefaultDiredOpState$fShowDiredOpState$fEqDiredOpState$fGenericDiredOpState$fShowDiredState$fEqDiredState$fGenericDiredState$fShowDiredEntry$fEqDiredEntry$fGenericDiredEntry$fShowDiredFileInfo$fEqDiredFileInfo$fGenericDiredFileInfoeditFiledireddiredDirdiredDirBuffer$fBinaryDiredFileInfo$fBinaryDiredEntry$fYiVariableDiredState$fDefaultDiredState$fBinaryDiredState$fYiConfigVariablePreSaveHooks$fDefaultPreSaveHooks preSaveHooksopeningNewFile openNewFilerevertEviWrite viWriteTo viSafeWriteTofwriteE fwriteBufferE fwriteToE fwriteAllYbackupE setFileName deservesSavemode interactIdinteractHistoryMoveinteractHistoryFinishinteractHistoryStartgetInputRegiongetInputsetInput spawnProcessspawnProcessMode feedCommand queryReply EvaluatorexecEditorActionImplgetAllNamesInScopeImpldescribeNamedActionImplexecEditorActiongetAllNamesInScopedescribeNamedAction evaluator$fYiVariableNamesCache$fDefaultNamesCache$fYiVariableHelpCache$fDefaultHelpCache$fDefaultPublishedActions$fSemigroupPublishedActions$fMonoidPublishedActions$fBinaryHelpCache$fBinaryNamesCachepublishedActions publishActionpublishedActionsEvaluatorjumpToE jumpToErrorE consoleKeymap$fYiConfigVariableEvaluator$fDefaultEvaluator"$fYiConfigVariablePublishedActionsdisplayHelpFor$fYiVariableHelpBuffer$fDefaultHelpBuffer$fBinaryHelpBuffer CabalBuffer cabalBufferchangeBufferNameE shellCommandE shellCommandVcabalConfigureE configureExitreloadProjectEbuildRuninteractiveRun selectRunner makeBuildcabalRunmakeRun cabalBuildE makeBuildEshell searchSourcesgrepFind stackCommandEstackRun$fYiVariableCabalBuffer$fDefaultCabalBuffer$fBinaryCabalBuffer defaultConfigSideLeftSide RightSideglobalBindKeys modeBindKeysmodeBindKeysByNameaddModemodifyModeByNamefontNamefontSizescrollWheelAmount scrollStyle cursorStyle scrollBarSideautoHideScrollBarautoHideTabBarlineWrap windowFilltheme lineNumbersdebug runOnStartuprunAfterStartupinputPreprocessmodes regionStylekillringAccumulateignoringExceptionprintingException orException DelayListinsertdecrease:<canonicalizePathreplaceShorthandsmemmarkshlCacheoverlays dirtyOffsetnewBIsizeBIgetIndexedStream overlayUpdate addOverlayBI delOverlayBIstrokesRangesBI isValidUpdate applyUpdateIreverseUpdateIlineAtsolPoint eolPoint' solPoint' regexRegionBI modifyMarkBIgetMarkDefaultPosBI BufferImpl markNames getStreamdelOverlaysOfOwnerBIgetOverlaysOfOwnerBIcharsFromSolBI newMarkBIgetMarkValueBIdeleteMarkValueBI getMarkBI setSyntaxBI updateSyntaxgetAstfocusAstbaseGHC.Baseid GHC.MaybeNothingGHC.Showshow text-1.2.3.2Data.Text.InternalText Text.Readread#yi-rope-0.11-84bTzDW0lZMJoUom7JG1Y8Yi.Ropeinitlasttailhead Data.OldListunlineslinestabLayoutManagerghc-prim GHC.TypesTrueString.YiString singletongetMaybeNextLineBMaybetoggleCommentSelectionBautoIndentHelperBYi.Style defaultStyleisearchEndWith Data.Text isPrefixOf toCaseFold interactivelinearSyntaxMode'Lexer commonLexerparseErrorMessageB<&>JustrunManyOnStartuprunManyAfterStartupYi.Style.Library darkBlueTheme defaultThemeTheme brightwhitewhitecyandarkcyanmagentapurplebluedarkblueyellowbrowngreen darkgreenreddarkred lightGreygreyblack colorToText withReverse withUnderlinewithItlcwithBdwithBgwithFgemptyAttributes underlineitalicbold reverseAttr foreground backgroundStyleUIStylemakeFileRuleHeadmakeFileAction quoteStyle operatorStyle variableStyle regexStyle builtinStyle importStyledataConstructorStyle typeStylelongStringStyle stringStylepreprocessorStyle numberStyle keywordStyleblockCommentStyle commentStylestrongHintStyle hintStyle errorStyleeofStyle selectedStylebaseAttributestabNotFocusedStyletabInFocusStyletabBarAttributesmodelineAttributesmodelineFocusStyle StyleNameColorDefaultRGB,oo-prototypes-0.1.0.0-7W0Ne5Dh95r7blLrgzHr0FData.Prototype.->override extractValueProto fromProto