Content ======= This manual is for tideq ver. 23-01-20 - READ THIS! - Introduction - Installation - Abbreviations used - Main menu and help - Loading & Saving files - Cursor movements - Copying, moving and deleting text - Find/replace words - Status bar, tabulator & margins - Text entry modes & reflow - Special functions for source code - Line sorting - Undo/Redo - Encrypted save/load - Macros - Special positioning commands - File menu and split views - Comparing texts - Bookmarks - Scrap buffer - Box drawing - Character chart - Keyboard Configuration - Color Configuration - Font Configuration - Print Configuration - File format and text for non-Linux machines - Printing - Working with a pointing device - List of all commands - Short command descriptions - Config file and technical details - Codepage files - Legal stuff - Bug reports or suggestions READ THIS! ========== Most parts of tideq has been tested for quite some time, but it's still a new and evolving software. Some functions are quite complex and will likely neéd more work. Therefore bug reports are very important. It's my intention to fix any problem ASAP, but to do that I must first know they are there. Please be observant for anomalies, in special for the undo/redo command. Introduction ============ tideq is a text editor for Linux computers with XWindows. The appearance resembles a text application in a terminal window, but it's a native X application. You preferably use the keyboard for everything, but clicking is available. All commands are available on drop-down menus and most of them as single- or multi-key functions. The key assignments are user configurable and so are screen colors and default settings. The internal text format is UTF-8. Text files on disk can be encoded in UTF-8(default), ISO-8859, or a DOS codepage. There are several special commands to handle program source code. You can have many files open at once and easily switch between them. The installation changes NO settings what so ever on Your computer. Installation ============ Independently of how tideq is installed, the following dependencies has to be met: libX11.so.6, libfreetype.so.6, libdl.so.2, libc.so.6 Those are "hard" dependencies that must be met unconditionally. You may also need: libfontconfig.so.1 For printing to work CUPS is needed: libcups.so tideq can be installed in two ways: For just try it: ---------------- Make a directory of Your own choise. Copy tideq into it and ensure it's marked as executable (chmode 755 tideq). Run it (./tideq). If You save config the file tideq.cfg is created in the same directory. To un-install, just remove the directory with it's content and all traces of tideq will be gone. Standard install: ----------------- Work as root or use sudo. Copy tideq into /usr/bin. chown root:root /usr/bin/tideq chmode 755 /usr/bin/tideq Create desktop or menu links to it if so wanted, or run as tideq When a user saves config the directory ~/.tideq will be created and the file tideq.cfg goes into it. To uninstall remove above mentioned files. Nothing else will be changed by tideq. Abbreviations used ================== The following abbreviation for keypresses and combinatons thereof are used in this manual and on tideq's main menu and help pages: ^ = Ctrl Ins = Insert @ = left Alt Del = Delete @g = right Alt-Gr Ent = Enter Sh = Shift Sp = Space bar Wn = left Windows key BkSp = BackSpace Tab = Tabulator key F# = Function key, # is a number Left / Right / Up / Down = arrows keys Examples: - ^T means hold down Ctrl while pressing the letter T - ^K+O means Hold down Ctrl while pressing K, then press O - Wn@Down means hold down both Windows and Alt at the same time while pressing Down Arrow Some commands are as default menu only. F.ex. "Settings/ClearAllTabs" means open main menu with WnSp and press Enter on ClearAllTabs at the Settings menu. Commands without key assignments are shown as n/a on the menus. Main menu and help ================== All functions are available from the main menu, that is both a reminder of key assignments and a way to execute seldom used functions and to view help texts. Bring up/down the main menu by pressing WnSp. Select menu and menu items with the arrow keys. Execute with Enter Exit menu doing nothing with Esc. Toggle settings with Sp. Exit with Esc. Or toggle/Exit at once with Enter. View a help texts for the hilited menu item by pressing the ? character. Close help with any key, except arrows. Loading & Saving files ====================== When tideq starts, it's directly ready for entering text or loading a file. Press ^K+O to open a file. Type a file name at the prompt or press Down arrow to open a file list to select a file from. Up/Down to move, Enter to pick. When list is shown, type part of a file name to search for a match. Press Right arrow to continue search. Left arrow clears the search word. Use the list to change directory. ".." goes to parent dir, "." sets a new current dir and returns to prompt. Title bar shows current dir and file name. Press ^K+S to save the currently viewed text. A prompt appears for the file name, already filled in with the files current name, if any. Optionally change the name. Press enter to do the save. If a new filename already exists, a Yes/No overwrite warning will be given. The load/save is open-do-close commands, the files are not locked while open. Press ^K+Q to close a text. When the last text is closed, tideq shuts down. If there are unsaved changes, a Yes/No warning is given. With ^K+D You can both save and close in a single command. You can have any number of files open. Press @gSp to show a menu of open files, Select the one to view by Up/Down arrows and Enter. A "*" before a file name means it has unsaved changes. All file operations are the type open-do-close. The files are nrver left open or locked. * * * Do NOT use the @ character in file names. * * * It has a special meaning for encryption of files. Cursor movements ================ In addition to the obvious arrows and page keys, there are a few other commands to move the cursor quick and easy. ^Left/^Right moves word by word. ^Q+S/^Q+D moves to beginning/end of a row. ^Q+R/^Q+C moves to the first/last text line. ^Up/^Down scrolls the text row by row. @Up/@Down moves both text and cursor, keeping curor on the same text row.. @Left/@Right, scrolls sideways ^J asks for a line number and jumps there. Copying, moving and deleting text ================================= To copy or move some part of Your text, mark it as a block by holding down one of the shift keys and drag a mark with the cursor keys. Place the cursor at the wanted new position and press ^K+C for copy or ^K+V for move. In case of move, that position must be outside of the marked block if not a column block. A block mark can also be set by marking start position with ^K+B and end position with ^K+K. ^A marks all the text at once. Alternatively use the clipboard. Press ^C to copy the block to clipboard and then paste it with ^V. Clippboard can exchange text with other applications. Use @C/@V for PRIMARY, f.ex. to paste from/to a terminal window. To delete a marked block, press ^K+Y. The last deleted block can be restored, at cursor position, with ^K+U. To delete complete rows one by one without marking them, press ^Y. The last deleted 250 rows are kept in a buffer and can be restored one by one with ^U. Those commands can of cource also be used to move rows to another place. When You delete text with Backspace, the last 1024 chars are kept in a buffer. Restore them with ^Backspace, one by one like if they was typed from the keyboard. Duplicate a row by pressing @N. Copy chars one by one from the row above with ^Space. Delete words one by one with ^T. Delete rest of the line with ^Q+Y. Text deleted by those commands are lost. Restore cursor row to how it was when the cursor entered it with ^Q+L. Find/replace words ================== To search in the text, press ^Q+F. Answer the prompt with the word to search for and pess enter. The next prompt will be for options about how the search will be done. Toggle them by pressing their respective capital letter. Then press enter to execute the search. The options are: Rev = Reverse direction Ign = Ignore case Nopmt = Noprompt, all at once All = All open texts Top = From top Mrk = Marked text only Wrd = match whole Word c1 = Column 1 Fir = First at row Beg = Beginning of word End = End of word fuZzy = approximate match To search and replace, press ^Q+A. An additional prompt for a word to replace with will appear. When found You will be given options of what to do. The options are: Yes = do replace and continue No = don't replace and continue Only = do replace and quit Rest = do all remaining at once Quit = don't replace and quit To repeat the last search (or replace) from cursor position, press ^L. Status bar, tabulator & margins =============================== The status bar shows cursor location and some some settings. Details about the settings are found elsewhere in this manual. ~~ pos: # row: # * Rec Ins Wrp Box Wst ##,### -- ---------------- | | | | | | ------ Codepoint under cursor | | | | | | | Word set in use Twokey Location | | | | Box draw is active or text in text | | | Word wrap at right margin num. if | | Insert mode split Unsaved changes Macro recording The tabulator shows tab stops and their type. It also shows the margins. There are standard, straight right column and decimal tabstops. v | , | | | < | | | v | | | | | | | Left margin | | | Right margin Decimal tab Straight right Standard tab stop To set a standard tab stop at cursor col. press ^O++ . ^O+< for a right tab or ^O+D for a decimal tab. Clear a tab with ^O+- Restore tabulator to default by menu command "Settings/ResetAllTabs". Clear tabulator with "Settings/ClearAllTabs" The tabulator does not affect placement of physical tab's in saved files. Those are always, if enabled, placed on every 8:th position. Margins are set with ^O+L for left and ^O+R for right margin. Text entry modes & reflow ========================= Toggle Insert mode with Ins and WordWrap with ^O+W. In addition to entered text, insert mode affects Copy or Move of column blocks. With insert off they overweites present text. With WordWrap on, lines breaks automatically when typing beyond the right margin. If inside a word, that word is moved to the next line. This also goes for inserted files or text pasted from the clipboard. There are two tabulator modes. If Settings/ToggleTabMode is checked then "typewriter mode" tabulator is enabled, Tab only moves cursor to the next tab stop. If off then spaces are inserted from cursor up to the next tab stop. Change with menu command "Settings/ToggleTabMode". To reflow a text, place cursor at the first line to be reflown and press ^K+Z. The reflow will stop at the next encountered blank line. Text are reflown between the left and right margin marks with one space between words. There is no hyphenation, only whole word line breaks are used. A reflow can not be undone. Special functions for source code ================================= To find matching parentesis, () [] {} <>, put cursor over a parentesis and press @gLeft/@gRight to move to the matching one. To move to a line with matching indentation level press @gUp/@gDown. Cursor column can be arbitrary. To adjust an indentation by two pos. press @I to add two spaces and scroll to the next line. @U deletes two spaces and scroll. No letters can be deleted. To insert or delete "//" comment marks, use WnI/WnU to insert/remove // and scroll to next line. Only // can be deleted. To arbitrary shift a portion of code sideways, preserving indentations, set cursor at the wanted column of the first line to shift. then press WnM once for every line. To line up comments to the right of the instructions place cursor in the wanted column and press WnL, once for each line. For this to work a few thngs must be satisfied: 1. Two or more spaces between code and comment. 2. No more than 1 consecutive space in the comments. 3. Cursor column must intersect or be to the left of comments before adjustment. For comments starting with // there is WnC to line up those comments at current cursor column. Does not do anything if there are no // found on the line, or cursor is placed within text to the left of the //. To f.ex. view an updated assembly listing, use the ^KL command to discard the current text and load the same filename again. It also tries to stay at the same line number. A Yes/No question is asked. C source can be viewed with color emphasizing code elements. Toggle on/off with @gS. Line sorting ============ To f.ex. sorting a table, place a column block covering the column to sort the lines on. Then press ShF3 to execute. Sorting are done with Unicode codepoints in ascending order. Undo/Redo ========= You can undo, step by step, most, but not all, editing by pressing ^Z. Redo the changes with WnZ. When jumping to a new position, no change is made until the next ^Z/WnZ. It never jumps and make a change You can't follow. The undo command is complex and still evolving, so watch what happens. If a command to be undone has f.ex. hit a limit, then undo will fail. Using these functions voids the undo: ^Q+L UndoCursorLine, @gSp FileMenu, using RightTab or DecimalTab, Loading text, Switching text, ^KL ReloadText. The undo has some limitations that are important to remember. There are NO WARNING if those are violated! * Using overwrite mode most likely messes up undo. * Using decimal tabs or right tabs messes up undo. * Copy/Move block from another text will mess up undo. * Delete block can only be undone in 1 level. * Redo of search/replace only for the last used replace to word. * No redo, only undo, for pastes from buffer or clipboard. * Undo/Redo is an evolving function. May mess up or even segfault. Encrypted save/load =================== tideq can save and load texts encrypted with either AES or ArcFour. An encryped file can most likely only be opened and decrypted with tideq. There are no compatibility sith f.ex. OpenSSL. To encrypt, end the file name with "@@" followed by a keyword to use AES. One "@" for ArcFour. Open the file the same way. F.ex. "filename.txt@@keyword" will save/load a file called "filename.txt" encrypted with AES and the keyword "keyword". To secure a text when tideq is terminated, used RAM is scrubbed when tideq is closed. That is always done, even if no encryption was used. How any buffers inside the operating system are handled is beyond the program's control. Using the clipboard exposes the text block to arbitrary programs. Direct copy/move or using tideq's buffer does not. The keyword is not like a key to a lock that can be picked. As its character sequence is part of the encryption, there is no way to decrypt without it. ArcFour may be broken, but it's not trivial. AES has never been broken. That goes for the author of tideq too, no backdoors, so don't ask. Please remember this, and Your keywords... For AES the number of chars in the keyword decides what variant of the algorithm to be used. <=16, <=24 or >24 chars in Your key selects 128, 192 or 256 bit respectively. The missing chars up to the next of these points will be filled in by a key stretcher. With 32 chars the crypto will be of military strength and is beleived to resist quantum computers. More chars will be truncated. It's the UTF-8 encoded length of the key that counts. AES was added as ArcFour has been deemed to be a little bit weak. ArcFour is kept for backward compatibilit. Loss of texts or security breach is entirely Your own responsibility, even if tideq will be found to be defective in any way. Macros ====== You can record macros as a sequence of keypresses to be repeated with a single command. Press ^M immediately followed by a F-key of Your choice. "Rec" on status bar indicates record is on. The following keypresses, both commands and litterals (not prompt lines), will be recorded. Press ^M again to stop record. Then presing the choosed F-key will automatically repeat the recorded sequence. This function is very helpful when formatting data in tables to include in a program. Everything repetitive can be wastly simplified. Take the time to try it out, You will likely find it very helpful. Special positioning commands ============================ There are a few more cursor movements not mentioned before. Some are specially helpful in macros. Move cursor to the leftmost char by menu command "Move1/LeftOfLine". Press ^ShLeft/^ShRight to move word by word, stopping right _after_ he words. ^Q+P returns to the pos. where the last change was made. File menu and split views ========================= You can from the file menu, apart from just switching texts, view more than one text at once. Also a 2:nd portion of a text can be simultaneously viewed. Bring up the file menu with @gSp. Close it the same way, or by Esc. It will show a list of all the open files. If the file has unsaved changes, it will be preceeded by a *. If a file is unchanged, it can be closed by pressing C. This way of closing a text does not work whe split view is active. Jump to a file with Enter. This will work both for single or split views. To get a split view of two files, move to the file to split with and press H for a horizontal split. You can have as many horizontal splits as You concider there are room for. Press V for a vertical split. There can only be one vertical split, but horizontal and vertical splits can be combined. Un-split a text by pressing U. Open a duplicate view with D. It can then be used for either split view or to quickly jump between two locations by the file menu. The text can be edited as usual from the duplicate, but must be saved from its main view. To close the duplicate, use ^K+Q. A duplicate closes automatically when the main is closed. To toggle between showing split- or single view press @Z. Comparing texts =============== Two texts viewed in parallel as a vertical split (see above under FileMenu) can be compared and the differences highlighted with a colored backgrond. Use the "Extras/Compare command to scan the two files for differecs and show those on a red background. Where needed blank lines with a blue background will be inserted. The "Extras/UnCompare" command will remove the colored markings and delete the blue lines if they are left blank. The coloring will not be saved with the text. The inserted blue lines are saved if they have not been deleted. If there are large differences and in special blocks that has been moved around this function will performs badly. Transposed blocks will for sure be marked as different even if they are the same, as it's impossible to sync the files then. When a verical split is viewed, the "Settings/ToggleSyncScroll" can be enabled to allow ScrollUp/Down/Left/Right and PgUp/PrDn to act on both texts together. Bookmarks ========= Press @gB to place a "bookmark" on the current line. Jump between bookmarked lines with @gLeft/@gRight. Remove bookmarks with menu commands on "Bookmark". The bookmarks are not indicated in the text. Bookmarks are volatile, not saved with the file. Scrap buffer ============ Sometimes there are needs for collecting something here and something there to finally be placed together. Instead of jumping back and forth, collect the text into the scrap buffer and insert it all at once. ^B+C/^B+X copies/cuts a marked block to the buffer, replacing its current content. ^B+A/^B+Q copies/cuts a marked block, appending it to the buffer. ^B+L appends the (not marked) cursor line to the buffer. ^B+V inserts the buffer at curren cursor position. Text remains in buffer. ^B+D deletes the buffers content. Box drawing =========== The Unicode charset include glyphs intended for box drawing. There are three line types available. Fine, Wide and Double. Not all fonts include those glyphs, showing squares or blanks instead. Linux fontconfig does often pick an inferior font from the given font description. Explicitly selecting a font is often better. F.ex. DejaVuSansMono.ttf is a good choise. Press WnB to toggle box draw. Status bar indicates when on. The command cycles between Fine/Wide/Double/Off. Draw by holding Shift while moving with arrows. Unfortunately Unicode does not include all 256 glyphs required for a full set of three line types for box drawing. Thin and Wide lines are fully compatible. Double and Thin lines have some compatibility. Double and wide does not at all connect properly. To minimize the impact of the missing line endings, try to start/end at a straight section when drawing double lines. Also try to draw double line corners in a continuous sweep to get the correct corner glyphs. A little tip, turn off Insert mode while drawing and use Space as an eraser. Character chart =============== Press ^O+O to open a pop-up chart where You can pick glyphs not on the keyboard for insertion into the text. To insert chars, first place the cursor at the wanted position. Press ^O+O. Browse code pages with Left/Right arrows. Pick by clicking with Your pointing device. Erase with BkSp. Fill in chars from the keyboard. Press Enter to insert the assembled line at cursor position, or Esc to discard. Pages where the font has no glyphs are not shown. They are skipped in steps of up to 256 codepages. Keyboard Configuration ====================== Almost all key assignments are easily user configurable. The defaults can also be deleted. Use menu command "Config/KeyConfig" to open a pop-up window. Close it with Esc when done and, if so wanted, save with "Config/SaveConfig". To change an assignment, browse the list with Up/Down arrows to highlite the actual command. Press Del to erase the current assignment. Press Ins to make a new assignment. Then press the wanted key combination. If You want a key as first of a twokey that is not already set for that, it must first be assigned under "Twokey" at end of the list. Select the header "Twokey" and assign it to that. It will be added to the list of twokey's. Deleting a twokey will also delete all the 2:nd key assignments that follows it. Key Config is keyboard only, no pointing device. Color Configuration =================== The color of most everyting in the editor are configurable. Use menu command "Config/ColorConfig" to open a pop-up window. Close it with Esc when done and, if so wanted, save with "Config/SaveConfig". To the left are sample rows that shows all objects that can be configured. To the right are a list of objects. Select with Up/Down arrows. The list is in two columns, but works like a continous list. Under the list are three bars for red/gren/blue and a squared color sample. Underneath the bars is a triangle showing wich to change. Use Left/Right arrows to change intensity, Spacebar to step through Red, Green, Blue. Press Enter to set the selected objects color. To restore an object to it's default color, press BackSpace. To pick an objects currently set color, press the Ins key. Color Config is keyboard only, no pointing device. Font Configuration ================== The menu font must be a monospace font. In the current version text font must also be monospace, or the pitch forced to a suitable value. Forced pitch can look fair on some propfonts, but generally it's not recommended. If the font is set to something unsuitable, strange effects may appear. The settings are: MenuFont, font family for the menus and help texts. MenuFontFile, the exacy font file for MenuFont. MenuSize, size of MenuFont. TextFont, name of a font family/style for the text window and print. TextFontFile, the exact font file for text window and print. TextSize, the approximate height of the chars. Default is 18. TextWidth, the horizontal char spacing. 0 = auto. TextBaseline, vertical alignment at the line. 0 = auto. TextLine Space, vertical line distance. 0 = auto. Font family and style must begin with and be separated by a colon. F.ex. ":Mono:Courier" (without the ""). A suitable font file will be automatically selected, but can be changed manually. To do this, press Enter at the FontFile line and select a font in the list by pressing Enter. To change the numeric items, step the numbers with Left/Right arrows. Default font is :Mono:Courier. If the fontconfig lib is nissing a list with a few pathts/names are tried. If all fails, tideq will fail. If so, check that the fontconfig lib is installed. Alternatively try to enter lines like those below into tideq.cfg : Font TextFontFile /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf Font MenuFontFile /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf Of cource changed to actual paths/fontfiles existing on Your computer. Font Config is keyboard only, no pointing device. Print Configuration =================== With those settings You can adapt the printed pages to give the most suitable result on Your printer. The settings controls print quality and text density. Select line with Up/Duwn arrows. Change value with Left/Right arrows. Esc closec the window. PaperType selects the paper size. A4, US Letter or US Legal. FontSize and Density interacts and controls the amount of text on a page. FontSize sets the quality and Density how tight packed the characters shoul be. Aspect is the ratio between high and width. A higher value compresses the height and allows more lines to fit on the page. The margin setting controls how much the printable are will be reduced at the edges. Print drivers have built-in clipping margins. If those are narrower than Your set margins, the text will be clipped and You must increase Your set margins. LineNum is the default setting for printing out line numbering. This can be changed on the print page. Font Config is keyboard only, no pointing device. Text file format and text for non-Linux machines ================================================ The internal format of tideq is always UTF-8. Line ends are not applicable as lines in memory are organised in a double linked list. The default file format on disk is UTF-8 and a single LineFeed, the standard text format for Linux. Not all computers uses this format. Therefore there are some settings for this to accept/create files compatible with Microsoft Windows or Apple Mac. Files from Windows can be both UTF-8 or ISO-8859. Line ends are CRLF. Files from Mac are UTF-8 or ISO-8859, line ends are CR only. Old files from DOS are in location dependent codepages, Line ends are CRLF. Text files loads properly regardless of line ends. LF, CR or CRLF are all ok. To load a file that is in ISO or DOS encoding, use menu commands "File/OpenTextISO" or "File/OpenTextDOS". To save in one of those formats, switch the menu toggles "Format/ISO-8859" or "Format/DosCodepage". Also set the line endings correctly on that menu. For CRLF, set both on. Then use the normal Save commands. These settings will be automatically done when opening a file in one of those formats. For DOS files the default is codepage 437. This can be changed by adding a codepage file. See more under "Technical details" in this manual. This way any one-byte:one-char charsets can be used. Not just DOS codepages. Printing ======== tideq has a simple print command. It prints a marked block, or the whole text if there is no block marked. CUPS must be installed on the computer for printing to work. Open the print pop-up window with ^P. In the window is a list of available printers, preceeded with a number. Press the number on the keyboard to select a printer and start printing. Close the window with Esc. Press Spacebar to interrupt printing. Printers often have a quite large buffer. Even if tideq commands CUPS to stop immediately, there is no guarantee the printer instantly stops feeding out papers... The same font as for display is used for the printer. The same glyphs that can be shown on screen can also be printed. Line numbering can be printed, Toggle by pressing N. Printing is keyboard only, no pointing device. Workinw with a pointing device ============================== To work with a pointing device, check the EnablePointing on the Settings menu. To make the double clicks into single clicks, check also SingleClick. For a track pad the double click is a lot more reliable. Click the status bar to view the main menu. Click the headers to select a sub menu. Double click an item to perform its action. Toggles can be changed with single click without closing the menu if SingleClick is off. Right click a menu item to view a help text for it. Click the very left of the status bar to show the files menu. Double click a file to switch to it. Right click into the text for a pop-up menu with a few block commands. Double click in the text window to set the cursor position. The double click allows selecting the window without disturbing cursor position. Drag a new block mark as usual. Adjust a block by dragging begin/end positions. The right end of a block is in the position next to where the block marking ends. Scroll text with the scroll wheel. List of all commands ==================== The commands are grouped as they are placed on the drop-down menus. Commands not on menu and permanent assigned ------------------------------------------- WnSp = Show/hide main menu @gSp = Show/hide text menu @Number key = Switch to that text number F# = Macro key File Move1 Move2 ---- ----- ----- ^K+O OpenText Left OneLeft ^Q+S BegOfLine ^K+D SaveExit Rght OneRight ^Q+D EndOfLine ^K+S SavveStay ^Left WordLeft ^Q+R FirstLine ^K+Q DiscarExit ^Rght WordRight ^Q+C LastLine ^K+L ReloadText ^ShLeft WordEndLeft FirstPos ^O+C OpenBlockCopy ^ShRght WordEndRight LastPos ^O+V OpenBlockMove LeftOfLine @gUp IndentUp ^O+B OpenBuffer @Left ScrollLeft @gDown IndentDown ^O+X OpenClip @Rght ScrollRight ^Q+E TopOfScrn Print ^Up ScrollUp ^Q+X BottomOfScrn NextText ^Down ScrollDown MakeTopOfScrn PrevText @PgUp PageLeft ^Q+M MakeMiddleOfScrn OpenTextISO @PgDw PageRight MakeBottomOfScrn OpenTextDOS Up OneUp ^J GotoLine n Down OneDown ^Q+P PrevPos @Up AllUp ^Q+H MarkPos @Down AllDown ^Q+J JumpToPos PgUp PageUp ^Q+Z Zap PgDw PageDown Edit1 Edit2 Find ----- ----- ---- BkSp BackSpace ^Q+L UndoCursorLine ^Q+F Search ^BkSp UnBackSpace ^O+T CenterLine ^Q+A SearchReplace @BkSp BackSpaceNoSave Tab TabRt ^L RepeatSearch @gBkSp BackOnlySave! ^Tab TabLt WnLeft MatchBack Del DelChr @I Indent WnRght MatchForw ^Y DelLine @U UnIndent ^U UnDelLine WnI CommentOut Ent NewLine WnU UnComment ^Ent NewLineColumn ShEnt ToggleSoftCr ^N AddLine @WnUp DraglLineUp @N DupLine @WnDown DragLineDown JoinLine ^Z Undo ^Sp CopyChr WnZ Redo @M InsLine ^T DelRtWord DelLtWord ^QY DelToEol Mark Block Buffer ---- ----- ------ ^K+B MarkBlockBegin ^K+C CopyBlock ^B+C CopyToBuf ^K+K MarkBlockEnd ^K+V MoveBlock ^B+X CutToBuf ^A MarkAll ! ^K+Y DeleteBlock ^B+A AppendCopyToBuf @D MarkAll ! ^K+U UnDeleteBlock ^B+Q AppendCutToBuf ^E MarkToEol FillBlock ^B+L AppendCopyLineToBuf ^W MarkWord ^K+R ReadBlock AppendCutLineToBuf MarkParagraph ^K+W WriteBlock ^B+P PasteFromBuf @K+B MarkColumnUpLeft ^C CopyToClip ^B+V PasteCopyFromBuf @K+K MarkColumnDownRight @C CopyToPrimary BufToClip ShLeft DragBlockLeft ^V PasteFromClip ClipToBuf ShRght DragBlockRight @V PasteFromPrimary ^B+D ClearBuf ShUp DragBlockUp ShDown DragBlockDown ShPgUp DragBlockPageUp ShPgDw DragBlockPageDown @B ToggleColumn ^K+H UnmarkBlock ^Q+B GotoBlockBeg ^Q+K GotoBlockEnd Special Extras Misc. ------- ------ ----- @L LineupLeft ^B+3 Rot13 InsertLitteral @R LineupRight ShF3 SortLines ^O+O AsciiChart WnL LineupColumn ShF4 SumLines @Z ZoomText WnC LineupComment BoxDraw WnM MoveColumn Lix ^K+Z WrapPara CharCount @gU UpperCase Compare @gL LowerCase UnCompare BlockToUpperCase BlockToLowerCase Macro Bookmrk Settings ----- ------- -------- ^M MacroRecord @gB SetBookMark Ins ToggleInsert ClearBookMark ^o+W ToggleWordWrap ClearAllBookMarks ToggleWordSet @gLeft PrevBookMark ToggleTabMode @gRght NextBookMark ^O+R SetRmargin ^O+L SetLmargin @Z ZoomText @gS ToggleSourceView ToggleSyncScroll ^O++ SetTab ^O+< SetLeftTab ^O+D SetDecimalTab ^O+- ClearTab ClearAllTabs ResetAllTabs ToggleNoKeyRepeat TogglePointing Toggle1Click Format Config Help ------ ------ ---- UTF-8 KeyConfig About ISO-8859 ColorConfig HelpOnHelp DosCodepage FontConfig HelpFileMenu ToggleCR SetDefaults ToggleLF SaveConfig ToggleTabsOut LoadConfig ToggleFormatOut ResetConfig Short command descriptions ========================== File ==== OpenText ^KO ----------------------------------------------------------------------- Prompts for a file name and opens the file as a new text. Save&Exit ^KD ----------------------------------------------------------------------- Saves the current file to disk and closes it. Prompts for file name filled in with current name (editable) if it exist. After save the text is closed. Closing the last text terminates tideq. Warns if an existing file is to be overwritten with a new name. Save&Stay ^KS ----------------------------------------------------------------------- Saves the current file to disk without closing it. Prompts for file name filled in with current name (editable) if it exist. Warns if an existing file is to be overwritten with a new name. DiscardExit ^KQ ----------------------------------------------------------------------- Closes the current text without save. Prompts for Yes/No if there are unsaved changes. Closing the last text terminates tideq. ReloadText ^KL ----------------------------------------------------------------------- Discards current text and loads the same file again. Stays at the same line#, if possible. Prompts for Yes/No. OpenBlockCopy ^OC OpenBlockMove ^OV ----------------------------------------------------------------------- Opens a marked block as a separate text. If OpenBlockMove the block is deleted from the original text. OpenBuffer ^OB ----------------------------------------------------------------------- Opens the scrap buffer as a separate text. The buffer is emptied. OpenClip ^OX ----------------------------------------------------------------------- Opens the clipboard as a new text. Print ^P ----------------------------------------------------------------------- Opens a pop-up window with a list of available printers. Press its number to print. If a block mark exists only that text is printed. Space bar stops printing. Esc closes the window. OpenTextISO Not assigned OpenTextDOS Not assigned ----------------------------------------------------------------------- Open a text assuming charset to be ISO-8859 or a DOS Codepage. Default codepage is CP437. Any codepage can be selected by placing a codepage file in the config directory. See Technical details in this manual. Move1 ===== OneLeft Left OneRight Rght ----------------------------------------------------------------------- Moves cursor one position. Stops at end of line. WordLeft ^Left WordRight ^Rght ----------------------------------------------------------------------- Moves cursor one word. Jumps to previous/next line at end of line. Cursor stops at the first char of the word. WordEndLeft ^Left WordEndRight ^Rght ----------------------------------------------------------------------- Moves cursor one word. Jumps to previous/next line at end of line. Cursor stops right of the last char of the word. LeftOfLine Not assigned ----------------------------------------------------------------------- Moves cursor to the leftmost char of the line. ScrollLeft @Left ScrollRight @Rght ----------------------------------------------------------------------- Scroll horizontally one position. Cursor steady on screen. ScrollUp ^Up ScrollDown ^Down ----------------------------------------------------------------------- Scroll vertically one line. Cursor steady on screen. PageLeft @PgUp PageRight @PgDn ----------------------------------------------------------------------- Shifts text horizontally one screen width. Cursor steady on screen. OneUp Up OneDown Down ----------------------------------------------------------------------- Moves cursor one line. Scrolls at top/bottom of screen. AllUp @Up AllDown @Down ----------------------------------------------------------------------- Moves cursor and text together one line. PageUp PgUp PageDown PgDn ----------------------------------------------------------------------- Scroll vertically one screen page. Cursor steady on screen. Move2 ===== BegOfLine ^Q+S EndOfLine ^Q+D ----------------------------------------------------------------------- Position cursor at the beginning/end of current line. FirstLine ^Q+R LastLine ^Q+C ----------------------------------------------------------------------- Position cursor at the very first/last line of text. Column does not change. FirstPos Not assigned LastPos Not assigned ----------------------------------------------------------------------- Position cursor at the very first/last line of text. Column is set to leftmost/rightmost position at the line. IndentUp @gUp IndentDown @gDown ----------------------------------------------------------------------- Jumps to the previous/next line at the same indentation level as current line. Cursor pos. is disregarded and does not change. TopOfScrn ^Q+E BottomOfScrn ^Q+X ----------------------------------------------------------------------- Position cursor at the first/last line on screen. Text does not move. MakeTopOfScrn x MakeMiddleOfScrn ^Q+M MakeBottomOfScrn x ----------------------------------------------------------------------- Current line becomes top/middle/bottom of screen. Cursor stays at the same character in the text. GotoLine ^J ----------------------------------------------------------------------- Prompts for a line numer and jumps to that line. Cursor steady on screen if possible. Line numbers beyond E.O.T. jumps to the last line. PrevPos ^Q+P ----------------------------------------------------------------------- Jumps to position of last edit. MarkPos ^Q+H ----------------------------------------------------------------------- Marks posposition for later return to. JumpToPos ^Q+J ----------------------------------------------------------------------- Returns to previosly, with ^Q+H, marked position. Zap ^Q+Z ----------------------------------------------------------------------- Toggles between current position and marked position. Edit1 ===== Backspace BkSp ----------------------------------------------------------------------- Moves cursor one pos. to the left and deletes the character in the new position. If insert mode is on, the text to the right follows the cursor. Used at beginning of line it concatenates the current line with the line above if insert mode is on. The last 1024 characters deleted are saved and can be restored with UnBackspace. UnBackspace ^BkSp ----------------------------------------------------------------------- Insert characters previously deleted with Backspace as if they was typed from the keyboard. BackspaceNoSave @BkSp ----------------------------------------------------------------------- Same as Backspace, except deleted chars are not saved. BackOnlySave @gBkSp ----------------------------------------------------------------------- Like Backspace, except no deletion. Only saves chars to buffer. DelChr Del ----------------------------------------------------------------------- Deletes the character under the cursor. The char. will be lost. Text to the right of cursor is shifted left one position. If there are no chars to the right of cursor, next line is concatenated. Insert mode does not affect this function. DelLine ^Y ----------------------------------------------------------------------- Deletes current line. The line below becomes the new current line. Cursor stays in it's position on screen. The last 250 deleted lines are saved in a buffer if they are not blank. UnDelLine ^U ----------------------------------------------------------------------- The last 250 lines deleted with DelLine are saved in a buffer. This command inserts lines from that buffer, one by one, replacing the current cursor line, pushing the text one line down and making the inserted line the new cursor line. NewLine Ent ----------------------------------------------------------------------- Inserts a new line after the cursor line and makes it the cursor line. In insert mode it breaks the cursor line at cursor position and moves the right part to the new line. The cursor is placed in the same column as the first word at the line above. If this line is blank, it searches up to 128 lines upwards after a non-blank line. NewLineColumn ^Ent ----------------------------------------------------------------------- Moves down one line and places cursor to the first pos. of current column. A column is found by serching backwards for two consecutive spaces. Intended to f.ex. help when adding comments to a source code. AddLine ^N ----------------------------------------------------------------------- Adds a new blank line below current line and makes it new cursor line. Cursor keeps current pos. DupLine @N ----------------------------------------------------------------------- Duplicates current line and moves down to the new line. Cursor keeps current pos. JoinLine Not assigned ----------------------------------------------------------------------- Concatenates the next line to the end of cursor line, independent of cursor position. If there are whitespacec at the cursor line, EOL is located where those ends. CopyChr ^Sp ----------------------------------------------------------------------- Copies chars from the line above as if they was typed from the keyboard. InsLine @M ----------------------------------------------------------------------- Inserts a new blank line above current line and makes it new cursor line. Cursor keeps current pos. DelRtWord ^T ----------------------------------------------------------------------- The characters from and including the cursor position and up to the beginning of next word are deleted. If there are no characters, the next line is joined to the cursor line. DelLtWord ^G ----------------------------------------------------------------------- The characters from the left of the cursor position and back to the beginning of the previous word are deleted. If there are no characters, the line is merged with the line above. Cursor moves to end of that line. DelToEol ^Q+Y ----------------------------------------------------------------------- Deletes all characters from and incl. the cursor up to end of line. Edit2 ===== UndoCursorline ^Q+L ----------------------------------------------------------------------- Undoes changes at the cursor line if the cursor has not left the line or certine commands have been used. CenterLine ^O+T ----------------------------------------------------------------------- Centers the text on a line between the margins. TabRt Tab ----------------------------------------------------------------------- Moves cursor up to the next tab stop. If "typewriter mode" is enabled just a move. Otherwise pushing text to the right. If a < or , tab mark is encountered then typed chars are shifted to the left until cursor is moved or for decimal tabs a . or , is typed. TabLt ^Tab ----------------------------------------------------------------------- Moves to the next tab stop to the left. Drags text back and deletes chars to the left. When tabs are in "typewriter mode" just moves the cursor. Indent @I ----------------------------------------------------------------------- Types two spaces, backs two pos. and scrolls to next line. Intended for making an indentation in a source code. UnIndent @U ----------------------------------------------------------------------- Deletes two spaces, never any chars, and scrolls to next line. Intended for un-indentation in a source code. CommentOut WnI ----------------------------------------------------------------------- Types two //, backs two pos. and scrolls to next line. Intended for commenting out lines in a source code. UnComment WnU ----------------------------------------------------------------------- Deletes two //, never any other chars, and scrolls to next line. Intended for re-activation of commented out lines in a source code. ToggleSoftCr ShEnt ----------------------------------------------------------------------- Toggles soft cr and scrolls to the next line. Undo ^Z ----------------------------------------------------------------------- Undo simple edits, not having used any complex funcions STILL EXPERIMENTAL, MAY SCRAMBLE TEXT OR EVEN SEGFAULT. Redo WnZ ----------------------------------------------------------------------- Redo editing undone with the Undo function. STILL EXPERIMENTAL, MAY SCRAMBLE TEXT OR EVEN SEGFAULT. Find ==== Search ^Q+F SearchReplace ^Q+A ----------------------------------------------------------------------- Prompts for a string to search for, an eventual replace string and last some options. Press it's uppercase letter to toggle options, Enter to start the search or Esc to cancel. When there is a hit the cursor is moved to the match, that is hilited. This mark is _not_ a block. The options are: Rev Search in reverse direction (back and upwads) Ign Ignores upper-/lower-case letters Nopmt No effect on search. Replaces are done without prompting. All All open texts are scanned Top Whole text scanned independent of cursor position. Mrk Scans only within a marked block, if any. Wrd Match only whole words. c1 Match only against column 1 at a line. Fir Match only against the beginning of a line. Beg Match only against beginning of words. End Match only against ending of words. fuZzy Match words allowing minor differeces. When SearchReplace the search is stopped at every hit and the program prompts for the wanted action. The alternatives are: Yes Replace and continue search. No No replace, search continues. Only Replace and stop search. Rest Replace and continue as if Noprompt was selected. Quit No replace, stop search. RepeatSearch ^L ----------------------------------------------------------------------- Repeats the last Search/SearchReplace with the same string and option. MatchBack WnLeft MatchForw WnRght ----------------------------------------------------------------------- If placed over a parenthesis then cutsor moves to the matching opposit one. Text commented out by // or /* */ are ignored. The parentesis are () [] {} <>. Mark ==== MarkBlockBegin ^K+B MarkBlockEnd ^K+K MarkColumnUpLeft @K+B MarkColumnDownRight @K+K ----------------------------------------------------------------------- Marks the current cursor position as block begin/end. The block is not indicated on the screen until both begin/end are marked. The positions are easily changed by marking at a different position. For column block the marked area will be a rectangle with the marks in upper left and lower right corners. The start is marked including the cursor position and ends not including it. To include a whole line in a non-column block, mark its end in column 1 at the next line. DragBlock ShLeft ShRght ShUp ShDown ShPgup ShPgdn ----------------------------------------------------------------------- Hold down shift, drag block with arrows. The marks can be adjusted by placing the cursor over a mark and just resume dragging the block. If it is a column block, all four corners and edges that can be dragged. Remember that the actual marks for the right side of a column block or the end of a standard block are in the position next to the rightmost marked position, that is not included in the block. ToggleColumn @B ----------------------------------------------------------------------- Makes a column block a standard one or vice versa. UnmarkBlock ^K+H ----------------------------------------------------------------------- Removes the block marks. GotoBlockBeg ^Q+B GotoBlockEnd ^Q+K ----------------------------------------------------------------------- Moves the cursor to the beginning/end of a block. Does nothing if there is no block marked in the current text. MarkAll ^A ----------------------------------------------------------------------- Marks the whole text. From Pos1 Row1 to the last char at the last line. MarkToEOL ^E ----------------------------------------------------------------------- Marks from and including cursor pos, to end of line. MarkWord ^W ----------------------------------------------------------------------- Marks current word. Whole word even if cursor points to the middle of if. Next press adds the next word an so on. MarkParagraph Not assigned ----------------------------------------------------------------------- NOT Implemented. Marks the text block where the cursor is placed. A text block is defined with a blank line above and after. Block ===== CopyBlock ^K+C MoveBlock ^K+V ----------------------------------------------------------------------- Copies/moves a marked block to the cursor position. The marks follows the copied/moved text. Works between different text files. In case of a move, the to position must be outside of the block if not a column block. If column block the inserted column text makes a "hole" for the block where the text is inserted. If overwrite mode is selected, column blocks will ovewrite text. The overvritten text is lost. The move from area is blanked. DeleteBlock ^K+Y ----------------------------------------------------------------------- Deletes a marked block. The deleted block is saved and can be restored with UnDeleteBlock. If a block exists in another of the open text it will not be deleted. UnDeleteBlock ^K+U ----------------------------------------------------------------------- Inserts the last deleted block at the current cursor position. FillBlock Not assigned ----------------------------------------------------------------------- Fills a column block with a char or repeating string. ReadBlock ^K+R ----------------------------------------------------------------------- Prompts for a file name and inserts the file at the cursor position. The inserted text is marked as a block. WriteBlock ^K+W ----------------------------------------------------------------------- Prompts for a file name and writes a marked block to the file. If the file already exists, it prompts for overwrite Yes/No. If there is no marked block, the whole text is saved. CopyToClip ^C CopyToPrimary @C ----------------------------------------------------------------------- Copies marked block to clipboard/primary. PasteFromClip ^V PasteFromPrimary @V ----------------------------------------------------------------------- Insert a block from clipboard/primary to the cursor position. The inserted text is marked as a block- Buffer ====== CopyToBuf ^B+C CutToBuf ^B+V AppendCopyToBuf ^B+A AppendCutToBuf ^B+Q ----------------------------------------------------------------------- These commands do not work with column blocks. Copy/move the marked text to the scratch buffer. If copy the text stays marked. Text already in the buffer is deleted by Copy/Cut. Append adds the new text to what already (if any) is in the buffer. AppendCopyLineToBuf ^B+L AppendCutLineToBuf Not assigned ----------------------------------------------------------------------- Copies/Cuts current line and appends it to buffer. PasteFromBuf ^B+P ----------------------------------------------------------------------- Insert the text in the buffer at the cursor position. The text does not remain in the buffer. THIS COMMAND MAY BE DELETED. Use PasteCopyFromBuf instead. PasteCopyFromBuf ^B+V ----------------------------------------------------------------------- Insert the text in the buffer at the cursor position. The text remains in the buffer. ClearBuf ^B+D ----------------------------------------------------------------------- Clears the buffer. Special ======= Lineup @L ----------------------------------------------------------------------- Lines up beginning of lines. Adjust spaces to the left, placing the leftmost char at the cursor pos. Then scrolls down one line. LineupRight @R ----------------------------------------------------------------------- Lines up end of lines. Adjust spaces to the left, placing the rightmost char at the cursor pos. Then scrolls down one line. LineupColumn WnL ----------------------------------------------------------------------- Lines up comments in code, Adjust spaces to the left of the rightmost column, making it start at the cursor position. Column is delimited by two cosecutive spaces. The cursor position must intersect with the text to be moved or begin to the right of the cursor. LineupComment WnL ----------------------------------------------------------------------- Lines up // comments in code, Adjust spaces to the left of // making the // be at cursor position. MoveColumn WnM ----------------------------------------------------------------------- Move a section of indented code. Adjust spaces to the left to shift text sideways. The first line moved sets the distance, keeping existing indentations intact. WrapPara ^K+Z ----------------------------------------------------------------------- Reflows the text between the margins from cursor position down to the end of the paragraph. Text to the left of the left margin is deleted.. UpperCase @gU ----------------------------------------------------------------------- Changes char under cursor into uppercase. Moves one to the right. LowerCase @gL ----------------------------------------------------------------------- Changes char under cursor into lowercase. Moves one to the right.  DragLineUp @WnUp DragLineDown @WnDown ----------------------------------------------------------------------- Drags current line up/down rippling through the text. BlockToUpperCase Not assigned BlockToLowerCase Not assigned ----------------------------------------------------------------------- Converts a marked block, or whole tex if no block exists, to upper-/lowercase. Extras ====== Rot13 ^B+3 ----------------------------------------------------------------------- ROT-13 encodes a marked block or the entire text if no block exists. SortLines ShF3 ----------------------------------------------------------------------- Sorts the lines spanned by a column block. The characters inside the block are used for the sorting. Sorts in ascending order according to charset. EXPERIMENTAL. SumLines ShF4 ----------------------------------------------------------------------- Calculates the sum of numbers in a column block. Inserts the result at current cursor pos. EXPERIMENTAL. BoxDraw Not assigned ----------------------------------------------------------------------- Togglex BoxDraw on/off. While active draws lines with box graphics by the cursor keys. Hold down Shift to draw. Command toggles between Fine/Widee/Double/Off. "Box" on status bar indicates when on. Drag block becomes unavailable when on. Lix Not assigned ----------------------------------------------------------------------- Calculates a Lix algorithm readability index from marked block or all text if there is no block marked. Result is displayed as an alert message. CharCount Not assigned ----------------------------------------------------------------------- Coundts the #chars in a marked block, or text down to the cursor if no block exists. Line endings are included in the count. Compare Not assigned ----------------------------------------------------------------------- Compares two texts in a vertical split view. Differences are shown with red background. Blank lines with blue background are inserted where needed to keep the two texts in sync. Those are removed with UnCompare. UnCompare Not assigned ----------------------------------------------------------------------- Removes coloring and deletes blue lines, if still empty, that was inserted by the Compare command. SendMorse ^O+M ----------------------------------------------------------------------- Sends text as morse code. Starts at cursor, ends with paragraph or when any key is pressed. Pressing command at a special line beginning with an ampersand sets volume, tone and signaling parameters, See manual for details Mich ==== InsertLiteral Not assigned ----------------------------------------------------------------------- Inserts the next typed character in the text even if its key normally performs a command. A "L" to the left on the status bar indicates when the editor is waiting for a litteral. If CR/LF is inserted they will be acted on the next time the text is loaded from disk. If a tab is inserted, it ill be expanded when cursor leaves the line. AsciiChart ^O+O ----------------------------------------------------------------------- Shows a window with a page of 256 codepoints. Exit by pressing Esc. Glyphs can be picked by left clicking them with Your pointinng device. Those appears on a line above the chart. Chars and spaces can be added from the keyboard. BkSp deletes. Enter exits and insert the line at the cursor position. Left/Right arrow browses codepages. Only pages where the font has defined glyphs are shown. Each press skips as most 256 blank pages. ZoomText @Z ----------------------------------------------------------------------- When more than one texts are opened, this command toggles between one text using the whole screen or selected texts in separate fields. Macro ===== MacroRecord ^M ----------------------------------------------------------------------- Press command, then the wanted macro key F1 to F12. Now all key presses will be recorded into the macro. End by pressing command a 2:nd time. Pressing the F key now will issue the stored sequence. Both commands, litterals and other macros can be used in a macro. Bookmarks ========= SetBookMark @gB ClearBookMark Not assigned ClearAllBookMarks Not assigned ----------------------------------------------------------------------- Inserts/removes bookmarks at the cursor line, or the whole text. Only the line is tagged. not the column. PrevBookMark @gUp NextBookMark @gDown ----------------------------------------------------------------------- Searches backward/forward for a line with a book mark. If found this becomes the new cursor line. If not found nothing is done. Settings ======== ToggleInsert Ins ----------------------------------------------------------------------- Toggles between insert/overwrite mode. This is indicated at the status bar by 'Ins'. ToggleWordwrap ^OW ----------------------------------------------------------------------- Toggles between an automatic jump to a new line when the right margin is reached, or continue on the same line beyond the margin. This is indicated on the status bar by "Wrp". Text inserted from clipboard or read from file is also wrapped if this is on. ToggleWordSet @W ----------------------------------------------------------------------- Toggles between using a word set or just space to define end of words for the cursor move abd delete word functions. This is indicated on status bar by "Wst" when word set is used. The search for word function always uses word set. ToggleTabMode Not assigned ----------------------------------------------------------------------- Togles between tab inserting spaces from cursor position to the next tab stop, or (when set) "typewriter mode" where cursor is just moved. SetLmargin ^OL SetRmargin ^OR ----------------------------------------------------------------------- Sets the left/right margin at the current cursor column. The margins are used by automatic word wrap and centering text. Margins are indicated on the tabulator. ToggleSourceView @gS ----------------------------------------------------------------------- Hilite by color the code elements of a C source. ToggleSyncScroll Not assigned ----------------------------------------------------------------------- When a verical split is active and this setting enabled, the following commands are connected between the two views: ScrollUp/Down, PgUp/PgDn and ScrollLeft/Right SetTab ^O++ SetLeftTab ^O+< SetDecimalTab ^O+D ClearTab ^O+- ----------------------------------------------------------------------- Sets or clears a tab stop at current cursor column. Tab stops are indicated at the tabulator. ResetAllTabs Not assigned ----------------------------------------------------------------------- Clears all tab stops and fill taulator with standard mod-8 tabs. ClearAllTabs Not assigned ----------------------------------------------------------------------- Clears (removes) all tab stops. ToggleNoKeyRepeat Not assigned ----------------------------------------------------------------------- Toggles key repeat off/on. EXPERIMENTAL, uses special method that may not work on all computers. TogglePointing Not Assigned ----------------------------------------------------------------------- Enables a pointing device. Toggle1Click Not Assigned ----------------------------------------------------------------------- All double clicks becomes single clicks. Format ====== SetUTF-8 Not assigned SetISO-8859 Not assigned SetDosCodepage Not assigned ----------------------------------------------------------------------- Those ettings are for saving, not loading. Look under File for that. Sets the character coding used on disk when the file is saved. Every open file has its own charset. Only UTF-8 is guaranteed to acommodate every codepoint used in the text. When an unsupported codepoint is encountered, a warning is shown and a ? inserted to replace the missing char. ToggleCR Not assigned ToggleLF Not assigned ----------------------------------------------------------------------- Toggles use of CR or LF at line end. Set both ON for a CRLF line end. If none is selected, LF will ne inserted as default to protect against saving a clobbered text. When loading a text, any line end is accepted. ToggleTabsOut Not assigned ----------------------------------------------------------------------- Output tabs at even 8:th position, or expand to spaces in stored files. ToggleFormatOut Not assigned ----------------------------------------------------------------------- NOT IMPLEMENTED. Future versions may save more than plain text. Config ====== KeyConfig Not assigned ----------------------------------------------------------------------- Assign custom keys, or removing defaults, to nearly all functions. ColorConfig Not assigned ----------------------------------------------------------------------- Assign custom colors to all editor elements. FontConfig Not assigned ----------------------------------------------------------------------- Set font and text parameters. For menus only Linux bitmap fonts can be used. For the edited text, any font FreeType2 handles can be used. SetDefaults Not assigned ----------------------------------------------------------------------- Copies the current settings and window size to be saved in the config as defaults. SaveConfig Not assigned ----------------------------------------------------------------------- Save current config. Autoloaded when editor starts. LoadConfig Not assigned ----------------------------------------------------------------------- Loads last saved config. ResetConfig Not assigned ----------------------------------------------------------------------- Resets cnfig to the default state, without any customisation. Two command line parameters also reset defaults. -R does the same as this command. -F only restores the font settings, that can make program not start if clobbered. Help ==== About Not assigned ----------------------------------------------------------------------- NOT IMPLEMENTED. Displays version information. Config file and technical details ================================= The config file is in text format and holds the differences to the default config. If You want to manually edit it and remove an item, always remove the whole line. Never leave a line incomplete. If messed up, delete the whole file and start over at the config menus. The format is as follows: For key assignments: -------------------- Key+ or Key- tells if it is a command to add or remove. Next follows the function name, same as on the main menu. Last comes the key or key sequence, also same format as on the menu. For colors: ----------- First the word Color. Then a designator for where to use that color. Last the color value as a hex number in the formt 0xuurrggbb uu is unused. Then follows Red, Green, Blue. For defaults: ------------- Numerical items: First the word Default. Then the designator. Last the value as a hexnumber 0x########. For toggles: ------------ First the word Default. Then Set/Reset Last designator For fonts. ---------- First the word Font. Then the designator. Last the value, that is either a font/file name or numeric. Those are not a diff list, all of them are always specified. If one line are erased, a default will replace it. The menu font is in X11 XLoadQueryFont format. The text font is either a complete file path or a font request that Linux FontConfig can handle. Fonts must be compatible ith FreeType2. Preferrably .ttf or .otf monospace font. The numeric items are for the text font. Fonts intended to be proportional can be used as fixed width by setting the forced width field to the wanted number of pixels. When a broad glyph appears it will merge into the next position. By putting a space there it looks much better, but cursor in that pos will obscure it. Internal details ---------------- Knowing something about the internal format may explain limitations and some of the program's behaviour under certain conditions. The text is stored line-by-line in a double linked list. Each line has a link to the previous and next lines, a length, status flags and the actual text. The first and last lines are linked to a special "line" that is never shown. The address of that line is a handle for the text chain. For each open text, there are a text control block. Those also forms a double linked ring. They contains all settings that are text specific, the file name and path and the handle for it's text chain and the pointers for editing the text. When doing block operations text is copied or unlinked into a "free" text chain that is then inserted at the wanted position, or deleted. Block marks are addressed with line numbers, that are converted to links when the block is to be used. Deleted text lines are linked into a special chain that fills up until a limit, then lines are removed from the other end when new ones are added. Also the chain of the last deleted block is kept and can be inserted. A text chain is encoded in UTF-8 and uses tab's at every 8:th pos. to compress spaces. The edit line is expanded to 32-bit/char and if changed converted back and stored when cursor line moves or commands require it. All functions operate on expanded lines. The undo/redo function works by storing performed actions and from that reconstruct text step by step when the undo is used. This is a somewhat complex process and therefore also error prone. For each problem brought to my knowledge it will improve a little bit. The compare algorithm consists of three parts that are repeated through the files. The first "swwps" through the lines until a difference is found. The second searches after a point in both thxts to resync on. The third resyncs the texts and sets the colored backgrounds. The resync is the difficult part and may change for improvements. The ArcFour encryption uses the recommended key sheduler and then "idles" ArcFour for 1536 times before start using the key stream for an exor with the stored bytes. For AES an unspecified "pre-extender" is used if needed to fill up to the next of 16, 24 or 32 bytes. n = #bytes entered as key. Then the standard key sheduler is run and overwrites the unneeded bytes from the pre-extender. for (i=0, j=n; j<32; i++, j++) ek[j]=ek[i]^(ek[i+3]<<4)^(ek[i+5]>>4); AES is then applied 16 bytes in each chunc. At end zero padding is applied to fill up the last block. After decryption up to 15 trailing zeroes are removed. Memory is allocated to the lines in steps of 16 bytes. When written back and length falls outside a lines allowed span, it is discarded into a repository. A new line with suitable length is taken from the repository, or newly allocated if none is available. Normally this works fine, but can bind up lots of memory if many of lines are changed to a new length. As UTF-8 is a variable length encoding and the maximum stored length is 1024 bytes of text, lines with over 255 chars can be "busted". If that happens, a warning is shown and the oversized lines are truncated. Most UTF-8 codes are 1 or two bytes, so the limit is usually over 512 bytes for nostly ASCII texts. For other supported encodings, text is converted to/from UTF-8 when loaded or saved. ISO-8859 is the same as the first 256 codepoints of Unicode, t herefore this conversion is easy and straightforward. DOS codepages has no regularity and a conversion table must be used. Loading a DOS file is a quick and easy indexing. Saving it requires a slowing table search. It's done as a binary search taking up to 9 compares per char. For very long files, there might be a noticeable delay. The codepage table is a built-in cp437 or loaded from a binary file You can make Yourself for any wanted codepage or other 8-bit charset. See under "Codepage files". The reverse conversion is built automatically when the codepage is loaded. Printing uses CUPS to connect to the printer. The print pages are rendered by tideq as a graphic PDF stream. The same glyphs that can be viewed on screen can therefore always also be printed. No printer fonts are needed. The size of print font sets with how many pixels the text is rendered. Density and Aspect controls the size of the rendered raster matrix. CUPS then maps the raster matrix to the printers resolution according to paper format and margin settings. This process involves interpolation of pixels. A higher setting of print resolution at CUPS printer administration page makes this work better. Codepage files ============== For loading and saving text in DOS codepage format, an inernal default codepage table for CP437 is used. By inserting a file named "codepage" (without "") in the directory ~/.tideq any codepage can be used. Some such files may be available at tideq's home page. See help/about for URL. This file is just a simple binary file with the exact size of 1024 bytes, 4 for each glyph. The first four bytes holds the Unicode codepoint for charset code 00, the next four bytes are for code 01 and so on. The address of a glyph becomes its 8-bit value * 4. The stored values are the Unicode codepoints in little-endian format. That is begins with the lowest byte first. The ending byte has all bits set to zeroes for all valid codepoints A new codepage file can be created by a hex editor, or by using an assembler that can output 32-bit data, or even 16- or 8-bit by placing two or four values for each glyph. Legal stuff =========== Licence. tideq is copyrighted freeware. It is NOT free software. The source code is not available. You may not decompile or reverse engineer this work and share any information from such activities. © 2015 - 2022 Marta Karlsson, Landskrona, Sweden. You are entitled to use tideq for any purposes free of charge. You are also entitled to redistribute verbatim copies of release versions of the program provided this manual in unmodified condition is distributed along with the software. You must not charge any fee exept for the self costs of eventual physical distribution media. You are EXPLICITLY PROHIBITED from redistribution of test versions or copies that has been modified in any way. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Bug reports or suggestions ========================== If You find a bug, check on the URL fond at help/about if the problem is listed as already known. If so, please don't report it again. If not listed please submit a report including a list of keypresses, one by one, and all settings necessay to replicate the misbehaviour. Including Your mail address will be advantageous. It will under no circumstanced be shared with others or used for any other purpose than, if needed, requesting additional information regarding the reported bug. If You have suggestions for improvements, please submit them at the URL found at help/about. I cannot promise they will be implemented, but I will concider everything recéived for future versions. -- End of text --