Typing Modes: overtype, insert, flex insert.
-
Overtype and Insert are the standard modes offered by all editors
-
Flex insert works like insert but lets you edit column formatted plain text without tabs and without messing up the column formatting.
-
-
Line Number display: absolute, relative and tagged
-
Absolute is the line number display offered by other editors. Displays the absolute line number from the top of file.
-
Relative displays line number as an offset from a previous line with "Reset Relative Number" flag set. This mode is useful for reconciling line numbers reported in error logs that are offsets from a particular point in the file. Language templates automatically flag lines as resetting relative line number according to the rules used for that language or you can manually toggle this flag on any line or lines.
-
Tagged mode displays a line number tag assigned to the line. This tag number is not affected by insertions or deletions of lines and can be any arbitrary number. The tag number is set equal to the absolute line number when the file is first opened. Thereafter it will only be changed through a user request, which is also an undoable operation.
This mode is useful when you have to reconcile line numbers from an error log after you have made changes to the file. Since tagged line numbers reflect the line number as it was when the file is first opened, you can see or go to the line number as it was when the error log was generated. Tags are preserved by move operations so that moving a function up or down in the file will still enable you to reconcile the error log line number correctly.
-
-
Full complement of text selection types: character (a.k.a. stream), line and block (a.k.a. column or rectangular) and all the possible operations on these selections:
-
cut, copy to clipboard, paste, delete, or you can by pass the clipboard and copy, move, shift left, shift right, move up, move down, rotate up or down, reflow, left justify, right justify, center, left and right justify, etc.
-
Block selections can also be filled with a character or string of characters, numbered either with an arithmetic or bit shift sequence, "stamped" on top of existing text which is equivalent to using overtype mode on selections or "peeled away" leaving spaces in their place while being "stamped" over existing text. Not something you need everyday, but when you do need it, it is essential.
-
-
Full complement of mouse selections and double click selections: select the word like everyone else but you can also double click on the opening or closing brackets () [] {} and select the text between matching brackets, or double click on the opening double or single quote and select the whole string. In both cases the brackets or the quotes can be included or excluded from the selection. You can also double click and select a part of an identifier delimited by Alternate Caps (Camel Hump naming convention) or underscores (traditional).
-
Full complement of mouse drag and drop editing not seen in other editors. Full visual feedback on what the dropping operation will affect. Of course you can copy or move the selection. However, you can also drop the selection on top of a word and it will replace the word. Drop a selection on an opening or closing bracket () {} [] and it will replace all text contained between the brackets, with the brackets either included or excluded from the replacement. Similarly you can drop a selection on the opening double or single quote and it will replace the whole "string", either including or excluding the quotes from the replacement. This alone eliminates the need for having to select, copy go to destination, select, delete then paste. Just Drag/Drop/Replace.
-
Automatic code reindenting on copy, move, paste and inserting a line. Makes manual reformatting rarely necessary. You'd be surprised how much productivity you lose just performing these housekeeping tasks and if you don't lose the time by ignoring these tasks then you'll be surprised how much productivity you loose because your code is not consistently formatted. Either way your productivity takes a hit.
-
Move lines or selections up/down in the file without cut and paste using Alt+Up/Alt+Down keys with automatic reindentation to the context of the new location.
-
Automatic code formatting using the language's syntactical structure for determining the indentation level of every line. This leaves multi-line comments unchanged.
-
Automatic comment reflowing to margins with insertion of leading comment string for new lines either as you type or by hitting a key. This eliminates the need to worry about where to break a comment and distracting yourself by having to start a new comment on every line.
-
Automatic formatting of multi-line comments with hanging indents allows you to create nicely formatted comments without effort. After all shouldn't comments be formatted for human eyes first and for an automated comment scraping tool second?
- HTML Copy with full keyword colorization, highlighted words and line numbers. E-mail code snippets, for review or discussion, to colleagues. The result looks so much like a bitmap of WinPTE's screen that most people don't realize that the text can be selected.
Line 1020 1021 1022 1023 1024 1025 1026 1027 1028// File: screenshot.cpp, lines 1020 to 1028 BOOL CPTEColorPick::LoadSettings() { if (LoadSettings("Color Chart", PTEIniFile)) { UpdateColorText(); return true; } return false; }
-
Unlimited and omni-present Undo that is preserved across file saves and file revert operations. Making reverting a file to its last saved state an undoable operation. How many times did you wish for this to back out of a revert? It is omni-present in the sense that If it modifies text then it is undoable, period. No buts, ifs or exceptions allowed.
-
Hierarchical transactional undo model exposed to scripts. Which means that all modifications to one file or any number of files made by a script can be grouped into a single undo operation. In WinPTE philosophy if it took you a single keystroke to make the change it should take you a single keystroke to undo it. Regardless of whether it was a built-in function or a roll-your-own macro.
-
Auto highlight of matching brackets (){}[] and the text that is contained in between makes it easy to validate complicated parenthesized expressions. The highlight style (foreground, background, line colors, underline, strike through, bold, italic) are completely configurable including separate styles for the matched brackets and the contained text with an optional and separate fadeout delay for the brackets and the contained text to remove the highlighting should you so desire.
-
Flexible automatic file backup on save. You can change the location for the backup to be anywhere on the drive of the original file, change the name, extension and even use a file name with a date and/or time stamp to create a new file every time you save.
-
VBA Add-In for editing VBA code in WinPTE gives seamless transfer of file content and edit position between VBA code window and WinPTE in both directions. It also adds ability to launch external tools to the VBA IDE, viewing difference through an external difference viewer of the current module code window and the last saved version, automatic export of project modules, user definable shortcuts for external tools and much more.
-
Highlight Word, with a single key light up an identifier a keyword or any string, everywhere and in every file. Up to 100 highlights can be active at any one time. Very simple yet powerful feature for code review, code analysis and verification. Also useful for visually detecting missing elements between two lists.
Highlight the elements in one list, and any elements not highlighted in the other list will visually stand out. Here is an example of a C++ constructor that fails to initialize one of the data members. Can you spot it? Beside it is another where all the initialized members have been highlighted. How fast can you spot the uninitialized member now?Line 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28// File:
, lines 1 to 28 class CColorPick::CColorPick() { public: CColorPick()(); protected: bool m_bSkipTextUpdate; bool m_bEraseBackground; int m_nLastAction; int m_nID; bool m_bUpdateLayout; bool m_bLayoutUpdated; BOOL m_bDebug; BOOL m_bInitialized; }; CColorPick::CColorPick() { m_bInitialized = FALSE; m_bSkipTextUpdate = false; m_bEraseBackground = false; m_nID = 0; m_bDebug = FALSE; m_bUpdateLayout = false; m_bLayoutUpdated = false; }Line 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28// File:
, lines 1 to 28 class CColorPick::CColorPick() { public: CColorPick()(); protected: bool m_bSkipTextUpdate; bool m_bEraseBackground; int m_nLastAction; int m_nID; bool m_bUpdateLayout; bool m_bLayoutUpdated; BOOL m_bDebug; BOOL m_bInitialized; }; CColorPick::CColorPick() { m_bInitialized = FALSE; m_bSkipTextUpdate = false; m_bEraseBackground = false; m_nID = 0; m_bDebug = FALSE; m_bUpdateLayout = false; m_bLayoutUpdated = false; }
-
Fully adjustable display styles for all text elements including background, foreground, line colors with transparency to allow for translucent overlay effect. All styles include boxed, bold, italic, strike through, underline, and simulated bold text styles. The latter is a bold style that uses the same character spacing as the normal font weight. Use it if you find changing character pitch too distracting and yet want to use bold to make some text stand out. For example bracket match highlighting is a good candidate for use of the simulated bold effect.
-
Column based colorization for languages like Fortran-77.
-
Saving of display style "color schemes" in files anywhere a file can be saved on your system. Making it easy to share and replicated display configurations between installations.
-
Customizable language templates define the syntax coloring, syntax outlining, statement completion, keyboard shortcuts, formatting rules, context menu and much more. You can even define your own text styles for syntax colorization and edit them in the standard display configuration pane.
-
Code Fragment Templates allow you to create pick and choose style file templates, with dependencies, placement, exclusion criteria and text substitution parameters.
-
Outline mode can create up to 15 levels of nested collapsible line regions, and also allows you do display all 15 levels of nesting separately or merge them all into 1 display column, or anything in between. Two styles for connections between vertical and horizontal tree lines in expanded outlines: square and arc to match your esthetic preferences.
![]() |
||
![]() |
||
![]() |
-
Modern GUI look, feel and behavior. You get docking panes, customizable toolbars and menus that can be torn-off and left open.
-
Attention to detail in display rendering eliminates unnecessary display refreshes, ensures that there is no update flicker or erroneous painting artifacts. Resulting in less strain on your eyes and less distractions for your concentration.
-
Full support for proportional fonts including maintaining alignment of column formatted plain text without which proportional fonts are a poor choice for editing source code even if your editor supports them.
-
Full support for Italic font style. Including slanting of the caret, the mouse I-Beam cursor and edges of the background to follow the Italic slant of the selected font. All of which are essential for working comfortably with Italic style font, if this is your font preference. WinPTE also ensures that Italic text is not truncated in rendering nor overlays non-italic text that may follow. Many editors let you choose Italic fonts but are unable to properly render nor support this style making the offering a hollow proposition useful only to take up space on their feature list.
-
Full mouse wheel support for all scrollable windows without having the window own input focus. This means you can scroll any window content by moving the mouse cursor over it and rolling the mouse wheel without having to click in the window first.
-
Workspace docking pane that shows all the currently open files and allows quick navigation to any file. The workspace can be restored on startup resulting in all files that you had open in that workspace to be reloaded with the same cursor position as when the workspace was closed. This means you can pick up where you left off. You can also create any number of workspaces and persist them any where, including your project directory. Allowing you to restore your working set of files for any number of active projects and to synchronize the workspace between machines when you synchronize your project files. Great for those times when you just can't leave your work at the office.
-
Hyperlinked ToDo pane creates a list of tasks and tags parsed from comment tags in open files with a hyperlink to the location of the comment. You can create comment tags in your code as you work and quickly locate them from the To Do pane.
-
Power Block Mode a powerful batch edit mode which allows you to interactively apply edit operations you perform on one line to any number of lines. The lines don't have to be contiguous nor does the operation have to be applied in the same location on every line. This is the ultimate in bulk editing horse power.
-
Customizable multi-line statement completion templates for common language constructs or frequent constructs used by you. Each statement completion template can have up to 10 insertion points defined where you can enter "parameter text" when the template is expanded and any number of places where the entered "parameter" text will be replicated. The location of the insertion points can be in any sequence. So you can have templates that enter parameters a few lines down then jump to the beginning in any order that makes sense for the construct you are entering.
-
Customizable file and function header templates with expandable macro content for file name, date, time, author, copyright holder, etc. You can customize by extension and by language template. So you can share the same template for all the file extensions used by the language or customize them on a per extension basis. All depends on your preference and language requirements. Supported languages include automatic filling in of function header with current function's parameter list and synopsis. So you just fill in the descriptions and you are done.
-
Message boxes remember their location and size on a per query type basis. Where the operation will not cause irreparable damage to your work they also come with "Use As Default Response" checkbox once checked the button you click will be used every time the same query comes up. You will never see this message box again until the query response is reset. This allows you to eliminate distracting notifications at your choosing and when they come up instead of buried deep inside some configuration tree. This applies to script message boxes as well as built in types. This same functionality is available to user defined scripts.
-
File Modification Message boxes allow launching of an external difference viewer of your choice. You'll never have to scratch your head wondering what the correct answer is to: "File has not been saved. Do you wish to save it?". You just click on the "View Difference" link and see what changes have not been saved. Make an informed decision instead of taking a guess whether you forgot to save that bug fix or whether it was your cat running over the keyboard while you answered the phone.
-
Select parts of file or files to pass to the external difference viewer of your choice for viewing or merging and then apply merged changes back to the file "snippet" they came from. Ideal for code review and refactoring of code. Quickly answer the question of whether two similar looking code fragments are really the same or just similar.


