h"WK*      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGNone 23>?aHIJNone 23>?KLMNOPQRSTUVWXYZ[\]^_`abcdefghiNone 23>? j haskelinereversedk haskeline1Used for commands which take an integer argument.l haskelineUsed by vi mode. Considers the cursor to be located over some specific character. The first list is reversed.m haskelineThe standard line state representation; considers the cursor to be located between two characters. The first list is reversed.n haskelineThe characters in the line (with the cursor in the middle). NOT in a zippered format; both lists are in the order left->right that appears on the screen.o haskelineThis class abstracts away the internal representations of the line state, for use by the drawing actions. Line state is generally stored in a zipper format.p haskelineA p is a fundamental unit of display for the UI. Several characters in sequence can represent one grapheme; for example, an a followed by the diacritic '\768' should be treated as one unit.q haskeline Create a p from a single base character.NOTE: Careful, don't use outside this module; and inside, make sure this is only ever called on non-combining characters.r haskeline'Add a combining character to the given p.s haskeline/Converts a string into a sequence of graphemes.9NOTE: Drops any initial, unattached combining characters.t haskeline+Accessor function for the various backends.u haskelineCompute the number of characters under and to the right of the cursor.v haskelineInsert one character, which may be combining, to the left of the cursor.w haskeline;Insert a sequence of characters to the left of the cursor. x haskelineThe input prefix. haskelineThe current line state. haskeline;The text to the left of the cursor (including the prefix).y haskeline.The text under and to the right of the cursor.z{j|}~klmnoxypstuvw None 23>? &666 None 23>?  haskelineSplit off the maximal list which is no more than the given width. returns the width of that list. None 23>? None 23>?!  haskelineText to insert in line. haskeline+Text to display when listing alternatives. haskelineWhether this word should be followed by a space, end quote, etc. haskeline/Performs completions from the given line state. The first  argument is the contents of the line to the left of the cursor, reversed. The second  argument is the contents of the line to the right of the cursor. The output > is the unused portion of the left half of the line, reversed. haskelineDisable completion altogether. haskeline A custom  which completes the word immediately to the left of the cursor.A word begins either at the start of the line or after an unescaped whitespace character. haskeline A custom  which completes the word immediately to the left of the cursor, and takes into account the line contents to the left of the word.A word begins either at the start of the line or after an unescaped whitespace character.  haskeline3Create a finished completion out of the given word.  haskeline:List all of the files or folders beginning with this path. haskelineIf the first completer produces no suggestions, fallback to the second completer's output. haskelineAn optional escape character haskeline$Characters which count as whitespace haskeline2Function to produce a list of possible completions haskelineAn optional escape character haskeline$Characters which count as whitespace haskelineFunction to produce a list of possible completions. The first argument is the line contents to the left of the word, reversed. The second argument is the word to be completed.  haskelineAn optional escape character haskelineCharacters which set off quotes haskeline2Function to produce a list of possible completions haskelineAlternate completion to perform if the cursor is not at a quoted word   None 23>?t  None 23>?None 23>?* haskeline allow the user to customize the terminal-style line-editing interface. They are read by default from  ~/.haskeline!; to override that behavior, use  and runInputTWithPrefs.Each line of a  .haskeline file defines one field of the  datatype; field names are case-insensitive and unparseable lines are ignored. For example: editMode: Vi completionType: MenuCompletion maxhistorysize: Just 40 haskelineWhen listing completion alternatives, only display one screen of possibilities at a time. haskelineIf more than this number of completion possibilities are found, then ask before listing them. haskelineIf , completions with multiple possibilities will ring the bell and only display them if the user presses TAB again. haskeline9The default preferences which may be overwritten in the  .haskeline file. haskelineRead  from a given file. If there is an error reading the file, the  will be returned.None 23>?None 23>? haskeline7The maximum number of lines stored in the history. If #, the history storage is unlimited. haskeline4The input lines stored in the history (newest first) haskeline?$None 23>? haskelineAn  is a handle which may or may not be in the correct mode for Unicode input/output. When the POSIX backend opens a file (or devtty) it sets it permanently to the correct mode. However, when it uses an existing handle like stdin, it only temporarily sets it to the correct mode (e.g., for the duration of getInputLine); otherwise, we might interfere with the rest of the Haskell program.The correct mode is the locale encoding, set to transliterate errors (rather than crashing, as is the base library's default). See Recover.hs. haskelineUse to ensure that an external handle is in the correct mode for the duration of the given action.None 23>?"C  haskeline-Operations needed for file-style interaction.Backends can assume that getLocaleLine, getLocaleChar and maybeReadNewline are "wrapped" by wrapFileInput. haskeline(Perform an action without echoing input. haskeline1Operations needed for terminal-style interaction. haskeline#Write unicode characters to stdout. haskeline(Are we using terminal-style interaction? haskeline>Utility function since we're not using the new IO library yet. haskelineUtility function for changing a property of a terminal for the duration of a computation. haskelineReturns one 8-bit word. Needs to be wrapped by hWithBinaryMode. haskelineUtility function to correctly get a line of input as an undecoded ByteString.9 !None 23>?"None 23>?#W haskeline Create a  for word completion.None 23>?# None 23>?%i haskelineThe length of each nonempty row haskelineThe last nonempty row, or zero if the entire line is empty. Note that when the cursor wraps to the first column of the next line, termRow > lastRow. haskeline8Keep track of all of the output capabilities we can use.*We'll be frequently using the (automatic)  instance for Actions -> TermOutput.None 23>?% haskeline$# of visible chars to left of cursorNone 23>?&6None 23>?4" haskeline4Haskeline has two ways of interacting with the user:"Terminal-style" interaction provides an rich user interface by connecting to the user's terminal (which may be different than  or ). "File-style" interaction treats the input as a simple stream of characters, for example when reading from a file or pipe. Input functions (e.g.,  getInputLine) print the prompt to .A " is a method for deciding at run-time which type of interaction to use. &For most applications (e.g., a REPL), 3 should have the correct effect.# haskelineA monad transformer which carries all of the state and settings relevant to a line-reading application.$ haskeline:Application-specific customizations to the user interface.& haskelineCustom tab completion.' haskelineWhere to read/write the history at the start and end of each line input session.( haskelineIf ", each nonblank line returned by  getInputLine, will be automatically added to the history.) haskelineBecause & is the only field of $ depending on m, the expression $defaultSettings {completionFunc = f} leads to a type error from being too general. This function works around that issue, and may become unnecessary if another field depending on m is added.* haskeline#Get the current line input history.+ haskelineSet the line input history., haskeline&Change the current line input history.- haskeline&Run a line-reading application. Uses 3( to determine the interaction behavior.. haskelineRun a line-reading application. This function should suffice for most applications.This function is equivalent to 0 3+. It uses terminal-style interaction if  is connected to a terminal and has echoing enabled. Otherwise (e.g., if , is a pipe), it uses file-style interaction.'If it uses terminal-style interaction,  will be read from the user's  ~/.haskeline9 file (if present). If it uses file-style interaction, ' are not relevant and will not be read./ haskelineReturns ? if the current session uses terminal-style interaction. (See ".) haskelineCreate and use a RunTerm, ensuring that it will be closed even if an async exception occurs during the creation or use.0 haskeline?Run a line-reading application according to the given behavior.'If it uses terminal-style interaction,  will be read from the user's  ~/.haskeline8 file (if present). If it uses file-style interaction, ' are not relevant and will not be read.1 haskelineRun a line-reading application. haskeline6Helper function to feed the parameters into an InputT.2 haskeline?Map a user interaction by modifying the base monad computation.3 haskelineRead input from '. Use terminal-style interaction if  is connected to a terminal and has echoing enabled. Otherwise (e.g., if ) is a pipe), use file-style interaction.5This behavior should suffice for most applications. 4 haskeline9Use file-style interaction, reading input from the given . 5 haskeline>Use file-style interaction, reading input from the given file.6 haskeline:Use terminal-style interaction whenever possible, even if  and/or  are not terminals.If it cannot open the user's terminal, use file-style interaction, reading input from . haskelineRead  from  ~/.haskeline./ If there is an error reading the file, the  will be returned."#$%('&)*+,-./0123456None 23>?4 None 23>?5@=None 23>?F- 7 haskeline!A useful default. In particular: defaultSettings = Settings { complete = completeFilename, historyFile = Nothing, autoAddHistory = True } 8 haskeline5Write a Unicode string to the user's standard output.9 haskelineWrite a string to the user's standard output, followed by a newline.: haskelineReads one line of input. The final newline (if any) is removed. When using terminal-style interaction, this function provides a rich line-editing user interface.If ( ==  and the line input is nonblank (i.e., is not all spaces), it will be automatically added to the history.; haskelineReads one line of input and fills the insertion space with initial text. When using terminal-style interaction, this function provides a rich line-editing user interface with the added ability to give the user default values.2This function behaves in the exact same manner as :, except that it pre-populates the input area. The text that resides in the input area is given as a 2-tuple with two >s. The string on the left of the tuple (obtained by calling ) is what will appear to the left of the cursor and the string on the right (obtained by calling 1) is what will appear to the right of the cursor..Some examples of calling of this function are: getInputLineWithInitial "prompt> " ("left", "") -- The cursor starts at the end of the line. getInputLineWithInitial "prompt> " ("left ", "right") -- The cursor starts before the second word.< haskelineReads one character of input. Ignores non-printable characters.When using terminal-style interaction, the character will be read without waiting for a newline.When using file-style interaction, a newline will be read if it is immediately available after the input character.= haskelineWaits for one key to be pressed, then returns. Ignores the value of the specific key.Returns / if it successfully accepted one key. Returns . if it encountered the end of input; i.e., an EOF! in file-style interaction, or a Ctrl-D in terminal-style interaction.When using file-style interaction, consumes a single character from the input which may be non-printable.> haskelineReads one line of input, without displaying the input while it is being typed. When using terminal-style interaction, the masking character (if given) will replace each typed character.When using file-style interaction, this function turns off echoing while reading the line of input.9Note that if Haskeline is built against a version of the Win32 library earlier than 2.5, > will incorrectly echo back input on MinTTY consoles (such as Cygwin or MSYS). haskelineWrapper for input functions. This is the function that calls "wrapFileInput" around file backend input functions (see Term.hs).? haskelineIf Ctrl-C is pressed during the given action, throw an exception of type  . For example: tryAction :: InputT IO () tryAction = handle (\Interrupt -> outputStrLn "Cancelled.") $ withInterrupt $ someLongAction2The action can handle the interrupt itself; a new  7 exception will be thrown every time Ctrl-C is pressed. tryAction :: InputT IO () tryAction = withInterrupt loop where loop = handle (\Interrupt -> outputStrLn "Cancelled; try again." >> loop) someLongActionThis behavior differs from GHC's built-in Ctrl-C handling, which may immediately terminate the program after the second time that the user presses Ctrl-C.@ haskeline&Catch and handle an exception of type  . ,handleInterrupt f = handle $ \Interrupt -> fA haskelineReturn a printing function, which in terminal-style interactions is thread-safe and may be run concurrently with user input without affecting the prompt. : haskelineThe input prompt; haskelineThe input prompt haskeline.The initial value left and right of the cursor< haskelineThe input prompt= haskelineThe input prompt> haskelineA masking character; e.g., Just '*'4  !"#$%&'()*+,-./0123456789:;<=>?@A%#./2"03456:;<>=89A$%&'(7)-1*+,? !@None 23>?H<B haskeline5This function may be used to debug Haskeline's input.It loops indefinitely; every time a key is pressed, it will print that key as it was recognized by Haskeline. Pressing Ctrl-C will stop the loop.5Haskeline's behavior may be modified by editing your  ~/.haskeline file. For details, see: 9https://github.com/judah/haskeline/wiki/CustomKeyBindingsBBNone 23>?KD haskeline7Initialize a session of line-oriented user interaction.E haskelineFinish and clean up the line-oriented user interaction session. Blocks on an existing call to G.F haskelineCancel and clean up the user interaction session. Does not block on an existing call to G.G haskelineRun one action (for example, :+) as part of a session of user interaction.For example, multiple calls to G using the same C will share the same input history. In constrast, multiple calls to . will use distinct histories unless they share the same history file.>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcabdabefghijklmnopqrstuvvwxyzz{|}~                                                                                     -<=haskeline-0.8.0.1#System.Console.Haskeline.CompletionSystem.Console.Haskeline System.Console.Haskeline.History!System.Console.Haskeline.InternalSystem.Console.Haskeline.IO"System.Console.Haskeline.DirectorySystem.Console.Haskeline.Key"System.Console.Haskeline.LineState System.Console.Haskeline.Command(System.Console.Haskeline.Backend.WCWidthSystem.Console.Haskeline.Monads%System.Console.Haskeline.Command.Undo)System.Console.Haskeline.Command.KillRingSystem.Console.Haskeline.Prefs System.Console.Haskeline.Recover(System.Console.Haskeline.Command.History.System.Console.Haskeline.Backend.Posix.EncoderSystem.Console.Haskeline.Term#System.Console.Haskeline.RunCommand+System.Console.Haskeline.Command.Completion&System.Console.Haskeline.Backend.Posix)System.Console.Haskeline.Backend.Terminfo)System.Console.Haskeline.Backend.DumbTerm System.Console.Haskeline.BackendSystem.Console.Haskeline.InputTSystem.Console.Haskeline.EmacsSystem.Console.Haskeline.Vi Completion replacementdisplay isFinishedCompletionFunc noCompletion completeWordcompleteWordWithPrevsimpleCompletionfilenameWordBreakCharscompleteFilenamecompleteQuotedWord listFilesfallbackCompletion$fEqCompletion$fOrdCompletion$fShowCompletionPrefs defaultPrefs readPrefsHistory stifleAmount emptyHistory historyLines readHistory writeHistory stifleHistory addHistoryaddHistoryUnlessConsecutiveDupeaddHistoryRemovingAllDupes $fShowHistory InterruptBehaviorInputTSettingscomplete historyFileautoAddHistory setComplete getHistory putHistory modifyHistoryrunInputTWithPrefs runInputThaveTerminalUIrunInputTBehaviorrunInputTBehaviorWithPrefs mapInputTdefaultBehavior useFileHandleuseFile preferTermdefaultSettings outputStr outputStrLn getInputLinegetInputLineWithInitial getInputChar waitForAnyKey getPassword withInterrupthandleInterruptgetExternalPrintdebugTerminalKeys InputStateinitializeInput closeInput cancelInput queryInputdirectory-1.3.6.0System.DirectorygetHomeDirectorydoesDirectoryExistgetDirectoryContentsBaseKeyKeyCharFunKeyLeftKeyRightKeyDownKeyUpKeyKillLineHomeEndPageDownPageUp BackspaceDelete SearchReverse SearchForwardModifier hasControlhasMetahasShiftKey noModifier simpleKeymetaKeyctrlKey simpleCharmetaCharctrlCharparseKey passwordStateArgMode CommandMode InsertMode LineChars LineStateGrapheme baseGrapheme addCombinerstringToGraphemes lineChars lengthToEnd insertChar insertString beforeCursor afterCursorPassword passwordCharMessage messageTextargargStateCModeCEmptyIModeMovegoLeftgoRight moveToStart moveToEndSaverestoresaveResulttoResultPrefixbaseCharmodifyBaseChar mapBaseCharsgraphemesToStringlistSave listRestoreemptyIM deleteNext deletePrevskipLeft skipRighttransposeCharsinsertGraphemes replaceCharIM deleteChar replaceCharpasteGraphemesBeforepasteGraphemesAfterenterCommandModeenterCommandModeRightinsertFromCommandModeappendFromCommandModewithCommandModestartArgaddNumapplyArg applyCmdArgaddPasswordChardeletePasswordCharatStartatEndoverChar beforeChar afterChar goRightUntil goLeftUntil KeyCommandCommandCmdMGetKeyDoEffect KeyConsumed NotConsumedConsumedKeyMaplookupKMEffect LineChange PrintLines ClearScreenRingBell keyCommanduseCharwithoutConsuming choiceCmd keyChoiceCmd keyChoiceCmdM>|>>+>try+>finishfailCmdeffectclearScreenCmd simpleCommand charCommandsetStatechangechangeFromChardoBefore splitAtWidthgsWidth takeWidthbaseControl.Monad.IO.ClassMonadIOliftIOtransformers-0.5.6.2Control.Monad.Trans.MaybeMaybeT runMaybeT Control.Monad.Trans.State.Strict mapStateTStateT runStateTControl.Monad.Trans.Reader mapReaderTReaderT runReaderTControl.Monad.Trans.Class MonadTranslift MonadStategetput MonadReaderaskasksgetsmodifyupdate runReaderT' evalStateT'orElseGHC.BaseStringUndoTUndo futureRedopastUndorunUndoT initialUndo saveToUndoundoPast redoFuture saveForUndo commandUndo commandRedo KillHelper GenericKill SimpleMoveKillRingStack emptyStackpeekrotatepush runKillRing pasteCommanddeleteFromDiff'killFromHelperkillFromArgHelpercopyFromArgHelperkillAll applyHelperapplyArgHelpercompletionPagingcompletionPromptLimitlistCompletionsImmediatelyghc-prim GHC.TypesFalseHistoryDuplicates AlwaysAddIgnoreConsecutive IgnoreAllEditModeViEmacs BellStyleNoBell VisualBell AudibleBellCompletionTypeListCompletionMenuCompletion bellStyleeditModemaxHistorySizehistoryDuplicatescompletionTypecustomBindingscustomKeySequenceslookupKeyBindingtransliterateFailure GHC.MaybeNothing DirectionForwardReverse SearchMode direction foundHistory searchTermHistLog futureHistory pastHistory prevHistoryM prevHistorieshistLogrunHistoryFromFile prevHistory firstHistory historyBackhistoryForward historyStart historyEnd histUpdate reverseHist directionNamesaveSMstartSearchModeaddCharsearchHistories findInLine prepSearchsearchBackwardsdoSearch searchHistorysearchForPrefix findFirstExternalHandlewithCodingModeeHexternalHandleopenInCodingModeFileOpswithoutInputEchoTermOps putStrOutisTerminalStylehWithBinaryMode bracketSethGetBytehGetLocaleLineLayoutheightwidthEvent ErrorEventKeyInput WindowResize ExternalPrint CommandMonad runCompletionEvalTermmaybeReadNewline getLocaleChar getLocaleLine wrapFileInput externalPrintsaveUnusedKeysevalTerm withGetEvent getLayoutRunTerm closeTerm wrapInterrupttermOpsTerm clearLayout drawLineDiff printLinesmoveToNextLine repositionringBelldrawLine clearLineflushEventQueue mapEvalTerm matchInit keyEventLoopsaveKeys guardedEOFhMaybeReadNewline returnOnEOFrunCommandLoop completionCmdPosixTHandlesehInehOut posixLayouts tryGetLayoutsmapLineswithPosixGetEventstdinTTYHandles ttyHandles posixRunTerm fileRunTerm rowLengthslastRowActionsMonoidDrawrunTerminfoDrawpos DumbTermMDumbTerm unDumbTermWindow initWindowevalDumb runDumbTerm printTextcrlfcrbacksspaces clearLayoutDmaxWidth drawLineDiff' refitLine clearDeadTextdefaultRunTermterminalRunTermstdinTTY directTTYrunDrawfileHandleRunTermGHC.IO.Handle.FDstdinstdoutTrue withBehavior execInputTGHC.IO.Handle.TypesHandlereadPrefsFromHome InputCmdTunInputT runInputCmdT InputKeyCmdInputCmd emacsCommandsenders simpleActionscontrolActions rotatePaste wordRightwordLeft bigWordLeft modifyWord capitalize SearchEntry searchChar entryStateViTViState lastSearch lastCommand SavedCommand EitherMode emptyViState viKeyCommands viCommandssimpleInsertions insertChars eofIfEmptyviCommandActionsexitingCommandssimpleCmdActions replaceOncerepeatedCommands pureMovementsuseMovementsForKillrepeatableCommandsrepeatableCmdModeflipCaserepeatableCmdToIMode deletionCmddeletionToInsertCmd yankCommand reinputArggoToWordDelEndgoToBigWordDelEnd movements isBigWordChar isWordChar isOtherChar.||. foreachDigit wordErasefindMatchingBracedeleteMatchingBrace scanBracesmatchingRightBracematchingLeftBrace braceList replaceLoop storeLastCmd storedActionstoredCmdAction storedIActionkillAndStoreCmd killAndStoreIkillAndStoreIEnoArg searchText viEnterSearch viSearchHist Data.Tuplefstsnd promptedInput