úÎ!mädşq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop Safe #WEditorSupporting hyphenation.WEditorThe canonical hyphen character.WEditorDealing with word characters.WEditor*Predicate for identifying word characters.WEditor#Dealing with whitespace characters.WEditor0Predicate for identifying whitespace characters.Safe ťqWEditorBreak type that has a default.rWEditor%The default break for the break type. WEditorLine meant for viewing. WEditor%The type of line break for this line. WEditorThe complete data of the line.  Safe_WEditor5Single paragraph that has not been parsed into lines.WEditor(The complete and uparsed paragraph data.WEditorCreate an empty paragraph.Safe@ACSX.5(WEditorAny action that updates a '.WEditor>Actions that change the cursor position without changing data.WEditorMove up one line.WEditorMove down one line.WEditorMove backward one character.WEditorMove forward one character.WEditor&Implementation-defined home operation.WEditor%Implementation-defined end operation.WEditor)Implementation-defined page-up operation. WEditor+Implementation-defined page-down operation.!WEditor/Modification direction, relative to the cursor."WEditor!Apply the edit before the cursor.#WEditor Apply the edit after the cursor.$WEditorActions that modify data.%WEditorInsert a block of characters.&WEditorDelete a single character.'WEditor*Generic text editor for fixed-width fonts.(WEditorApply an edit action.)WEditor*Break the current paragraph at the cursor.*WEditorApply a cursor movement.+WEditor;Get the (row,col) cursor position relative to the viewport.,WEditor0Get the absolute (paragraph,char) edit position.BThe position can be restored after cursor movements by calling -; however, calling ( or ) invalidates this position.-WEditor0Set the absolute (paragraph,char) edit position..WEditor6Get the number of characters in the current paragraph./WEditor-Get the number of paragraphs in the document.0WEditorExport the modified data.1WEditorAction for the Backspace key.2WEditorAction for the Delete key.3WEditorAction for the Enter key.4WEditor&Action for normal character insertion.5WEditor"Action to insert after the cursor.6WEditor:Action to set the absolute (paragraph,char) edit position.7WEditorAction for the up-arrow key.8WEditorAction for the down-arrow key.9WEditorAction for the left-arrow key.:WEditorAction for the right-arrow key.;WEditorAction for the Home key.<WEditorAction for the End key.=WEditorAction for the PageUp key.>WEditorAction for the PageDown key.( !"#$%&'()*+,-./0123456789:;<=>($%&!"# '()*+,-./04128<3;59>=:67Safe @ACHSVX;2EWEditor"Line parser for fixed-width fonts.FWEditor4Type used to differentiate between line-break types.GWEditor'An acceptable fallback line-break type.HWEditornChange the max line width used for parsing. A width of zero must result in breakLines skipping line breaks.IWEditorBreak the sequence into lines.5The following must hold for all possible inputs to a E p:/concat (map vlText (breakLines p line)) == line Implement J and KT to make visual adjustments (such as adding hyphens or indentation) if necessary.JWEditor'Render the line for viewing. Implement K if J8 changes the positions of any characters on the line.KWEditor&Adjust the horizontal cursor position.LWEditorCreate an empty line.EFGHIJKLEFGHIJKLSafe@ACSXC)MWEditorAny action that updates a N.NWEditor.Generic editor viewport for fixed-width fonts.OWEditor‰Sets the (width,height) size of the viewport. A width < 0 must disable line wrapping, and a height < 0 must disable vertical bounding.PWEditor-Gets the (width,height) size of the viewport.QWEditor~Gets the visible lines in the viewport. This does not need to completely fill the viewport area, but it must not exceed it.RWEditorAction to resize the viewport.MNOPQRNOPQMR SafeCD  !"#$%&'()*+,-./0123456789:;<=>EFGHIJKLMNOPQR SafeDŐstuvwxyz{|}~€ Safe>EL%‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽSafe=>?@AEXIîSWEditor0Generic document editor with a dynamic viewport.TWEditor Create an editor for a document.TWEditor+Parser used to break paragraphs into lines.WEditor)List of unparsed paragraphs to be edited.WEditorDocument editor.4 !"#$%&'()*+,-./0123456789:;<=>EMNOPQRST4ST$%&!"#'()*+,-./0ENOPQ M4128<3;59>=:67RSafe =?@ACEHVXdFXWEditor6Wrapping policy that breaks lines based on words. Use c to construct a new value.YWEditor'Word-splitting operations for use with X.ZWEditor Determine where to break a word.9The splitter can refuse to process the word by returning Ś.5The segment sizes must provide space for a hyphen if ] extends the line.#Once the word has been split up by X-, the segments are processed as follows: The last segment is prepended to the next line to be parsed. This means that if the word is not split, it gets deferred to the next line.VIf there are more segments, the first is appended to the current line being parsed.WAll remaining segments are put on separate lines between the current and next lines.[WEditorDPredicate for characters that should be treated as a part of a word.\WEditor1Predicate for detecting whitespace between words.]WEditor:Append the canonical hyphen character to show word breaks.^WEditor,Line break type for a single paragraph line._WEditor(The line is at the end of the paragraph.`WEditorThe line is nothing special.aWEditor%The line ends with a hyphenated word.bWEditor8Wrapping policy that breaks at exactly the viewer width.cWEditor1Wrapping policy that breaks lines based on words.dWEditorAAvoids splitting words unless they are longer than a single line.eWEditorGHyphenates words using simple aesthetics, without dictionary awareness.ZWEditor"Space available on the first line.WEditorSpace available on new lines.WEditorThe word to break.WEditorList of segment sizes.XYZ[\]^_`abcdeX^YZ[\]bce_a`d§   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{Q | } ~  €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   Ą ˘ Ł ¤ Ľ Ś § ¨ Š Ş Ť Ź ­ ŽŻ°ą˛&WEditor-0.1.0.0-9EV4M5QpF3W7zqKSkHDwZzWEditor.Base.CharWEditor.Base.LineWEditor.Base.ParaWEditor.Base.EditorWEditor.Base.ParserWEditor.Base.ViewerWEditor.DocumentWEditor.LineWrap WEditor.BaseWEditor.Internal.LineWEditor.Internal.Para HyphenChar defaultHyphenWordChardefaultIsWordCharWhitespaceChardefaultIsWhitespace$fWhitespaceCharChar$fWordCharChar$fHyphenCharChar VisibleLinevlBreakvlText$fEqVisibleLine$fOrdVisibleLine$fShowVisibleLine UnparsedParaupText emptyPara$fEqUnparsedPara$fOrdUnparsedPara$fShowUnparsedPara EditorAction MoveDirectionMoveUpMoveDownMovePrevMoveNextMoveHomeMoveEnd MovePageUp MovePageDown EditDirection EditBefore EditAfter EditAction InsertText DeleteTextFixedFontEditoreditText breakPara moveCursor getCursor getEditPoint setEditPoint getParaSize getParaCount exportDataeditorBackspaceActioneditorDeleteActioneditorEnterActioneditorAppendActioneditorInsertActioneditorSetPositionActioneditorUpActioneditorDownActioneditorLeftActioneditorRightActioneditorHomeActioneditorEndActioneditorPageUpActioneditorPageDownAction$fEqEditAction$fShowEditAction$fEqEditDirection$fShowEditDirection$fEqMoveDirection$fShowMoveDirectionFixedFontParser BreakType defaultBreak setLineWidth breakLines renderLine tweakCursor emptyLine ViewerActionFixedFontViewer setViewSize getViewSize getVisibleviewerResizeActionEditingDocument editDocument!$fFixedFontEditorEditingDocumentc!$fFixedFontViewerEditingDocumentc$fShowEditingDocument BreakWords WordSplitter splitWord isWordChar isWhitespace appendHyphen LineBreak lineBreakEndlineBreakSimplelineBreakHyphen breakExact breakWordsnoHyphen lazyHyphen$fShowLineBreak$fWordSplitterNoSplitc$fFixedFontParserBreakWordsc$fShowBreakWords$fWordSplitterNoHyphenc$fWordSplitterLazyHyphenc $fEqLineBreak$fOrdLineBreak $fShowNoSplit$fShowNoHyphen$fShowLazyHyphen DefaultBreak EditingLineeditLineviewLine joinLines getLineCursor setLineCursor splitLinelineCursorMovablemoveLineCursor atLineFront atLineBack appendToLine prependToLine modifyLine EditingParaVisibleParaAfterVisibleParaBeforeviewBeforeLinesviewAfterLinesparseParaBeforeparseParaAfterunparseParaBeforeunparseParaAftereditPara unparsePara reparseParaviewParaBefore viewParaAftergetBeforeLinesgetCurrentLine getAfterLinestakeLinesBeforetakeLinesAftercountLinesBeforecountLinesAftergetParaCursorLinegetParaCursorCharsetParaCursorChargetParaCharCountgetParaEditCharsetParaEditChar splitParaparaCursorMovablemoveParaCursor atParaFront atParaBack seekParaFront seekParaBack appendToPara prependToPara modifyParabase GHC.MaybeNothing