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                                 B0.19.4C Safe-Inferred! yi-coreExecute IO (Maybe a) action replacing all exceptions with return value of Nothing. yi-core@?BP456789:;@?BP456789:;Returns absolute name of the file, which doesn't contain any /./, /../, // sequences or symlinks yi-core/Dereferences symbolic links until regular file directorysomething_else appears yi-coreMake a path absolute. yi-core,Combines two paths, moves up one level on .. yi-core(Splits path into parts by path separatorText version would look like FG (not . T.null) . T.split (  pathSeparators)But we should move to system-filepath package anyway.   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?defdefHGPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred 7<5nyi-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-coreWrite string into buffer. yi-coreWrite string into buffer. yi-coreShift a mark position, supposing an update at a given point, by a given amount. Negative amount represent deletions. yi-core Point of EOF yi-coreReturn n Chars starting at i of the buffer. 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 ofklmnopqrst} ghij u zwxvy~ 2|{  Safe-Inferred(<< yi-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 interaction step. yi-corePrepare undo by moving one interaction point from undoes to redoes. yi-core4Remove an initial interactive point, if there is one yi-core5Insert an initial interactive point, if there is none yi-coreRepeatedly undo actions, storing away the inverse operations in the redo list. yi-coreRun the undo-function f on a swapped URList making it operate in a redo fashion instead of undo.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 experimentalportable Safe-Inferred"DYyi-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 = id yi-coreThe largest element of a non-empty structure with respect to the given comparison function, Nothing if there are multiple largest elements.yi-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-InferredDGPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"Fyi-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-InferredGyi-coreMap an Event to a Char. This is used in the emacs keymap for Ctrl-Q and vim keymap insertSpecialChar Safe-InferredH%NCDML=>@?)*+,-NCDML=>@?)*+,-GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred")*LSyi-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-core9Convert a process description to an "executable" process. yi-corePush an event in the automaton yi-core(find all the writes that are accessible.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.3 Safe-Inferred<LGPL-2yi-devel@googlegroups.com experimentalportable Safe-InferredNyi-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 too yi-corePush a string in the killring.yi-coreSet the top of the killring. Never accumulate the previous content.yi-coreGet the top of the killring.   Safe-Inferred(79\$'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 box yi-coreFixed number of "main" windows on the left; stack of windows on the right yi-coreTransposed version of  yi-coreTall windows, with arranged in a balanced binary tree with sliders in between them yi-coreWide windows (windows placed on top of one another, equally spaced) yi-core?Tall windows (i.e. places windows side-by-side, equally spaced)yi-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-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 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 experimentalportable Safe-Inferred"679:;iyi-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-coreAnalogous to const, but returns a function that takes two parameters, rather than one.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 screen yi-coreAmount of lines in 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-coreCurrent column, visually.yi-core?Decides which column we should be on after the given character.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~2ghijuzwxvy~2"GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred 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-coreGiven some text and the previous region, finds the next region (used for implementing linesOfRegionB, not generally useful)yi-core The string modification functionyi-coreThe region to modify !"#$%&'( #GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred7#yi-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-core8Common boundary checking function: run the condition on len characters in specified direction shifted by specified offset.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-core$Tells if a char can end a sentence ( , !, ?).yi-coreVerifies that the string matches all the predicates, pairwise. If the string is "too small", then return 2. Note the length of predicates has to be finite.yi-coreHelper that takes first two characters of YiString. Faster than take 2 and string conversion.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-coreIs the point at a Unit boundary in the specified  Direction?yi-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-coreRepeat an action until the condition is fulfilled or the cursor stops moving. The Action is performed at least once.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,yi-coreOffset from current positionyi-core Look-aheadyi-core predicateyi-coreDirection to look in66$ Safe-Inferredؓ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 experimentalportable Safe-Inferred"yi-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 occurrence of cyi-core4Move to the character before the next occurrence of cyi-core#Move to the previous occurrence of cyi-core7Move to the character after the previous occurrence 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-core$Read from point to beginning of lineyi-core;Get the previous point, unless at the beginning of the fileyi-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-corereturn index of Sol on line n above current lineyi-core&return relative position of the point p/ relative to the region defined by the points rs and reyi-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-core8Return the empty region if the selection is not visible.yi-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 experimentalportable Safe-Inferred, yi-corePut regex into regex register yi-coreClear the regex register yi-core!Return contents of regex register  .GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"- 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 experimentalportable Safe-Inferred67/ 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 experimentalportable Safe-Inferred"3 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 01 Safe-Inferred6 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 experimentalportable Safe-Inferred":= 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 experimentalportable Safe-Inferred"7; 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 experimentalportable Safe-Inferred"7H 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'Successfully 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-coreEditor action describing how to end finish incremental search. The act parameter allows us to specify an extra action to run before finishing up the search. For Vim, we don't want to do anything so we use  which just does nothing. For emacs, we want to cancel highlighting and stay where we are.yi-core Specialised  to do nothing as the action. 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-coreThis may actually be a bit more general it replaces the current selection with the given replacement string in the given window and buffer. 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& ./01 & ./01 4 Safe-Inferred7<L"yi-coreTrims per-command histories to contain at most N completions each. 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-coreReads and decodes a persistent state in both strict, and exception robust way. yi-coreLoads a persistent state, and sets Yi state variables accordingly.  GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"S 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 printingyi-coreThis function attempts to provide a better tab completion result in cases where more than one file matches our prefix. Consider directory with following files: 5["Main.hs", "Main.hi", "Main.o", "Test.py", "Foo.hs"].After inserting Mai into the minibuffer and attempting to complete, the possible matches will be filtered in   to  ["Main.hs", "Main.hi", "Main.o"] however because of multiple matches, the buffer will not be updated to say Main. but will instead stay at Mai.This is extremely tedious when trying to complete filenames in directories with many files so here we try to catch common prefixes of filtered files and if the result is longer than what we have, we use it instead. 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   5GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"7Uyi-coreWord completionwhen doing keyword completion, we need to keep track of the word we're trying to complete. yi-coreSwitch out of completion mode. yi-coreTry to complete the current word with occurrences found elsewhere in the editor. Further calls try other options. yi-coreExtract functionyi-coreSource functionyi-coreMessage functionyi-corePredicate matcher 6GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"]yi-coreMake an action suitable for an interactive run. UI will be refreshed. yi-coreStart up the editor, setting any state with the user preferences and file names passed in, and turning on the UIyi-core=Display the errors buffer in a new split window if it exists.yi-coreProcess events by advancing the current keymap automaton and executing the generated actions. yi-coreQuit. yi-coreQuit with an exit code. (This is used to implement vim's :cq command)yi-coreUpdate (visible) buffers if they have changed on disk. FIXME: since we do IO here we must catch exceptions!yi-core;Hide selection, clear "syntax dirty" flag (as appropriate). 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: variants with marks?yi-coreSame as  %, but do nothing instead of printing () 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-coreKill a given subprocess yi-core8Start a subprocess with the given command and arguments.yi-core Appends a   to the given buffer.TODO: Figure out and document the Bool here. Probably to do with .yi-coreBuffer to append toyi-coreText to append  7GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred "7gW yi-core-What to prompt the user when asked this type? 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 occurrence 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-core*TODO: decide whether we should be keeping   here or moving to YiString. 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 experimentalportable Safe-Inferred"o5 yi-coreThe only built in mode of yiyi-core Creates a   from a ( and a function that turns tokens into . 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 JK function. yi-coreWhen applied to an extensions list and regular expression pattern, creates a JK 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 experimentalportable Safe-Inferred"| 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-coreFor use as the hint when opening a file using the minibuffer. We essentially return all the files in the given directory which have the given prefix. 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-coreRuns a  action in a separate thread.Notes:%It seems to work but I don't know whyMaybe deadlocks?If you're outputting into the Yi window, you should really limit the rate at which you do so: for example, the Pango front-end will quite happily segfault/double-free if you output too fast.I am exporting this for those adventurous to play with but I have only discovered how to do this a night before the release so it's rather experimental. A simple function that prints a message once a second, 5 times, could be written like this: printer :: YiM ThreadId printer = do mv <- io $ newMVar (0 :: Int) forkAction (suicide mv) MustRefresh $ do c <- io $ do modifyMVar_ mv (return . succ) tryReadMVar mv case c of Nothing -> printMsg "messaging unknown time" Just x -> printMsg $ "message #" <> showT x where suicide mv = tryReadMVar mv >>= case Just i | i >= 5 -> return True _ -> threadDelay 1000000 >> return False 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 choiceyi-coreruns after we insert the action: this may be a thread delay or a thread suicide or whatever else; when delay returns False, that's our signal to terminate the thread.yi-core#should we refresh after each actionyi-coreThe action to actually run  :GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"7<"yi-core.keep track of the num of successful operationsyi-core"if True, DOChoice will be bypassedyi-coreThe full path to the directory being viewed FIXME Choose better data structure for Marks...yi-core-Map values are just leafnames, not full pathsyi-core'keys are just leafnames, not full pathsyi-core(position in the buffer where filename isyi-coreGPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"7yi-core&Cached dictionary for describeNameImplyi-core*Cached variable for getAllNamesInScopeImpl 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-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-core'Regex parsing the error message format.yi-coreParses an error message. Fails if it can't parse out the needed information, namely filename, line number and column number.yi-core7Tries to parse an error message at current line using . yi-core1Tries to jump to error at the current line. See .yi-coreTries to strip the  from the front of the given  ?. If the prompt is not found, returns the input command as-is. 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-coreFilename to make the jump in.yi-coreLine to jump to.yi-coreColumn to jump to.  1?GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"7yi-core6Dynamic YiVariable to store the help buffer reference. yi-coreDisplays help for a given name, or help index, if no name is givenyi-core4Finds help text to display, given a command argumentyi-core(Display help buffer with a given text...  @GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred"7 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 output 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  A Safe-Inferred"@yi-coreList of published Actions  GPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred 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-coreList version of  . yi-coreRun after the startup actions have completed, or on reload (this is run after all actions which have already been registered)yi-coreList version of  . 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?    2klmnopqrstghijuzwxvy !"#$%&'(}{|~                         ./01      2klmnopqrstghijuzwxvy !"#$%&'(}{|~LGPL-2yi-devel@googlegroups.com experimentalportable Safe-Inferred 2klmnopqrstghijuzwxvy !"#$%&'(}{|~                       ./01 MNOPQRPSTPSTPSUPSVPSVPSWPSXPSXPSYPSZPSZPS[PS[PS\PS]PS^PS_PS`PSaPSbPcdPcePcfPcgPchPciPcjPckPclPcmPcnPcoPcpPcqPcrPcsPctPcuPcvPwxPwxPwyPwzPw{P|}P|~P|P|P|   HHHHHHHHHHHHHHHHHHHHHHHH                                 IJJKLL   !!!!!!!!!!""""""""""""#######################################################$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&& & & & & & & & ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * * * * * * * + + + + + + + + + + + + + + +++ + + ++ + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - - - . . . . . . . / / // / / / / / / / / / / / / / / / / / / / / / 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                            C C C D D D D        E E E E E E H H H H H H H H H H H H H H H H H H H H H H H H H H H H HH H H H H H H H H H H H                    "######%%%%%% %%%%%&&&&&& &P)))44  5666666666778PwPPw99::::::::::::::::::::::::::::::::::;>>>>>>>>???A PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP%yi-core-0.19.4-J3b4W1rrtzsIycE9BgrKGWYi.Monad Yi.CompletionYi.Config.SimpleYi.IncrementalParse Yi.SearchYi.Buffer.MiscParser.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.Defaultyi-core Control.ExcData.DelayListSystem.CanonicalizePathTfilterYi.Buffer.ImplementationIndentBehaviourMode modeAppliesYi mtl-2.3.1Control.Monad.State.Classgets(yi-language-0.19.1-7yURWM7ILZ1cLAgM9JSB0Yi.Utils commonPrefixYi.Buffer.Basic WindowRef unWindowRefSizefromSizePoint fromPoint BufferRefMarkmarkId DirectionBackwardForward reverseDir mayReverse directionElim Yi.RegionRegionregionDirection regionStart regionEnd regionFirst regionLast fmapRegion regionSizeintersectRegion unionRegionmkRegion mkRegion' mkSizeRegion emptyRegioninRegion nearRegionincludedRegion regionIsEmptyregionsOverlap Yi.Lexer.Alex AlexStatestLexer lookedOffsetstPosnYi.Regex SearchOption IgnoreCase NoNewLine QuoteRegex SearchExpProcessLogEntryLLogLEmptyLDislikeLShiftLDoneLFailLSuspLSParserLookYuckEnterprofile countWidthsymboleoffeedZevalLevalL'pushSymspushEof mkProcessruntestNextlookNext recoverWithevalRfullLog$fMonadFailParser $fMonadParser$fAlternativeParser$fApplicativeParser$fFunctorParser $fShowSteps $fShowRPolish $fShowZip$fShowLogEntry$fShowProfileF$fFunctorProfileFversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDiruserToCanonPath 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 pendingEventsonCloseActionsStatusesStatus 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 $fHookTypeFUN $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$fYiActionFUNx$fPromptableBufferRef$fPromptableAnyMode$fPromptablePoint$fPromptableTextUnit$fPromptableDirection$fPromptableYiString$fPromptableText$fPromptableInt$fPromptableChar$fPromptableList $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 EvaluatorexecEditorActionImplgetAllNamesInScopeImpldescribeNamedActionImpl$fYiVariableNamesCache$fDefaultNamesCache$fYiVariableHelpCache$fDefaultHelpCache$fDefaultPublishedActions$fSemigroupPublishedActions$fMonoidPublishedActions$fBinaryHelpCache$fBinaryNamesCachepublishedActions publishActionpublishedActionsEvaluatorjumpToE jumpToErrorE consoleKeymapexecEditorActiongetAllNamesInScopedescribeNamedAction evaluator$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-?insertdecrease DelayListStepsbetterevalR'iBestfeed:<canonicalizePath expandSym makeAbsolute combinePath splitPathbase Data.FoldableelemreplaceShorthandsmemmarkshlCacheoverlays dirtyOffsetnewBI insertChars deleteCharsshiftMarkValuesizeBInelemsBIgetIndexedStream overlayUpdate addOverlayBI delOverlayBIstrokesRangesBI isValidUpdate applyUpdateIreverseUpdateIlineAtsolPoint eolPoint' solPoint' regexRegionBI modifyMarkBIgetMarkDefaultPosBI BufferImpl markNamescharsFromSolBIgetMarkValueBI getMarkBI newMarkBIdeleteMarkValueBI setSyntaxBIdelOverlaysOfOwnerBIgetOverlaysOfOwnerBI updateSyntaxgetAstfocusAst getStreamundoInteractiveremIPaddIPundoUntilInteractiveasRedo maximumBy' pushEvent findWritespush HPairNStack SlidyWide SlidyTallWideTallGHC.Baseid GHC.MaybeNothingGHC.Showshow text-2.0.2Data.Text.InternalText Text.Readread#yi-rope-0.11-AUQjTlHAsmeG5y54BTfqtaYi.Ropeinitlasttailhead Data.OldListunlineslinespruneNodesBefore firstThatlastThatfromLeafAfterToFinalallLeavesRelative'nodesAndChildIndexallLeavesRelativeChild allLeavesIn getAllPathsgetSubtreeSpan tabWindowstabLayoutManager buildLayoutghc-prim GHC.TypesTrue~String.const2YiString singleton screenLines curVisColcolMove nextRegion genBoundaryisEndOfSentencechecksFalsefirstTwo atBoundarydoUntilBreadPreviousOfLnB prevPointBindexOfSolAbovepointScreenRelPositiongetRawSelectRegionBgetMaybeNextLineBMaybegetNextLineWhichBtoggleCommentSelectionB fillRegionmodifyExtendedLRegion incrementautoIndentHelperBfetchPreviousIndentsBlastOpenBracketHint spacingOfB rePadString countIndent GHC.UnicodeisSpace indentStringYi.Style defaultStylenewZeroSizeWindowfixCurrentBufferA_ withLMStackEisearchEndWith isearchEndqrReplaceCurrent trimHistoriesreadPersistentState Data.Text isPrefixOf toCaseFold bestMatch Completion interactive showErrorsdispatchcheckFileChangesclearAllSyntaxAndHideSelection msgEditorterminateSubprocessesappendToBufferstartSubprocessWatchers typeGetPromptcompletionFunctionlinearSyntaxMode'Lexer StyleName commonLexer findFileHint forkAction_diredOpSucCnt_diredOpForAll diredPath diredMarks diredEntriesdiredFilePoints diredNameCol diredCurrFile DiredEntries DiredEntry DiredFilePathDiredOpDORemoveBuffer DOConfirmDOCheck DOCkOverwriteDOInputDOChoice DOFeedbackDONoOp procDiredOp askDelFiles diredRefreshinsertDiredLinelinesToDisplay diredScanDir scanForUid scanForGid diredMarkKind deleteKeys diredUnmarkaskRenameFiles askCopyFiles fileFromPoint isFileBuffer HelpCache NamesCache errorRegexparseErrorMessageparseErrorMessageB takeCommandprompt<&> HelpBufferhelpFordisplayHelpBufferdefaultPublishedActionsJustrunManyOnStartuprunManyAfterStartupStyleColorDefaultRGBUIStylemodelineAttributesmodelineFocusStyletabBarAttributestabInFocusStyletabNotFocusedStylebaseAttributes selectedStyleeofStyle errorStyle hintStylestrongHintStyle commentStyleblockCommentStyle keywordStyle numberStylepreprocessorStyle stringStylelongStringStyle typeStyledataConstructorStyle importStyle builtinStyle regexStyle variableStyle operatorStyle quoteStylemakeFileActionmakeFileRuleHead foreground background reverseAttrbolditalic underlineemptyAttributeswithFgwithBgwithBdwithItlc withUnderline withReverse colorToTextblackgrey lightGreydarkredred darkgreengreenbrownyellowdarkbluebluepurplemagentadarkcyancyanwhite brightwhiteYi.Style.LibraryTheme defaultTheme darkBlueTheme,oo-prototypes-0.1.0.0-DzNuZdkCPtpG1NKEd94gSgData.PrototypeProto fromProto extractValueoverride.->