úÎ!uël_z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy 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 Ø 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-R(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<šEWEditor"Line parser for fixed-width fonts.FWEditor4Type used to differentiate between line-break types.GWEditornChange the max line width used for parsing. A width of zero must result in breakLines skipping line breaks.HWEditorBreak 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.IWEditor)A place-holder line for empty paragraphs.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.LWEditor+Split the line to create a paragraph break.LWEditorIndex to split at.WEditorLine to split.WEditor:End of original paragraph and beginning of next paragraph.EFGHIJKLEFGHIJKLSafe@ACSXHı MWEditorAny action that updates a Q.NWEditor7Actions that modify the view without affecting editing.OWEditor4Shift the vertical offset. Negative values shift up.PWEditor$Attempt to fill the entire viewport.QWEditor.Generic editor viewport for fixed-width fonts.RWEditorˆSet the (width,height) size of the viewport. A width < 0 must disable line wrapping, and a height < 0 must disable vertical bounding.SWEditor,Get the (width,height) size of the viewport.TWEditor}Get the visible lines in the viewport. This does not need to completely fill the viewport area, but it must not exceed it.UWEditorApply a view change.VWEditorAction to resize the viewport.WWEditor Action to shift the view upward.XWEditor"Action to shift the view downward. MNOPQRSTUVWXY QRSTUNOPMYVWX SafeI›K  !"#$%&'()*+,-./0123456789:;<=>EFGHIJKLMNOPQRSTUVWXY SafeJız{|}~€‚ƒ„…†‡ Safe>Kt%ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬Safe=>?@AEXQs\WEditor0Generic document editor with a dynamic viewport.0This editor bounds vertical view scrolling (see N$) to keep the cursor within view.]WEditor Create an editor for a document.]WEditor+Parser used to break paragraphs into lines.WEditor)List of unparsed paragraphs to be edited.WEditorDocument editor.8 !"#$%&'()*+,-./0123456789:;<=>EMQRSTUVWXY\]8\]$%&!"#'()*+,-./0EQRSTU M4128<3;59>=:67YVWXSafe =?@ACEHVXkëaWEditor6Wrapping policy that breaks lines based on words. Use l to construct a new value.bWEditor'Word-splitting operations for use with a.cWEditor 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 f extends the line.#Once the word has been split up by a-, 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.dWEditorDPredicate for characters that should be treated as a part of a word.eWEditor1Predicate for detecting whitespace between words.fWEditor:Append the canonical hyphen character to show word breaks.gWEditor,Line break type for a single paragraph line.hWEditor(The line is at the end of the paragraph.iWEditorThe line is nothing special.jWEditor%The line ends with a hyphenated word.kWEditor8Wrapping policy that breaks at exactly the viewer width.lWEditor1Wrapping policy that breaks lines based on words.mWEditorAAvoids splitting words unless they are longer than a single line.nWEditorGHyphenates words using simple aesthetics, without dictionary awareness.cWEditor"Space available on the first line.WEditorSpace available on new lines.WEditorThe word to break.WEditorList of segment sizes.abcdefghijklmnagbcdefklnhjim®   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ „ … † ‡ ˆ ‰ Š ‹ Œ ‘ ’ “ ” • – — ˜ ™ š › œ Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶·¸¹º&WEditor-0.2.0.1-JM62KD2Ja8X8mPy7usTGIkWEditor.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 setLineWidth breakLines emptyLine renderLine tweakCursor splitLine ViewerAction ViewAction ShiftVerticalFillViewFixedFontViewer setViewSize getViewSize getVisible updateViewviewerResizeActionviewerShiftUpActionviewerShiftDownActionviewerFillAction$fEqViewAction$fShowViewActionEditingDocument 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 EditingLineeditLineviewLine joinLines getLineCursor setLineCursorsplitLineAtCursorlineCursorMovablemoveLineCursor atLineFront atLineBack appendToLine prependToLine modifyLine EditingParaVisibleParaAfterVisibleParaBeforeviewBeforeLinesviewAfterLinesparseParaBeforeparseParaAfterunparseParaBeforeunparseParaAftereditPara unparsePara reparseParaviewParaBefore viewParaAftergetBeforeLinesgetCurrentLine getAfterLinestakeLinesBeforetakeLinesAftercountLinesBeforecountLinesAftergetParaCursorLinegetParaCursorCharsetParaCursorChargetParaCharCountgetParaEditCharsetParaEditChar splitParaparaCursorMovablemoveParaCursor atParaFront atParaBack seekParaFront seekParaBack appendToPara prependToPara modifyParabase GHC.MaybeNothing