RichStyle: The Angel is in The Detail.

A Silver Pearl in An Old Shell

It’s been more than ten years since Microsoft published the first version of its own plain-text editor Notepad. And so far, no significant improvements or modifications happened. It still as is, simple, small, without frills!

Notepad2 is an alternative, tries to expand the original software’s capabilities, with following and maintaining its principle; simplicity.

A principle-driven software

So, can we say here that Microsoft’s applications are principle-driven, rather than user-satisfaction driven?

Well, actually, I don’t think so.

Commercial software, just like any commercial product, are customer-satisfaction-driven, and that’s what happening in all commercial Windows-based applications, but not in Windows itself!


Because Windows is meant to be an infrastructure for these applications, and any functional improvements in this infrastructure can hurt hosted-software’s functional role, and thus, their competitive existence in market! So? there’s no serious chance for functional integration in Windows.

And that’s why Notepad is still like this.

Now, on the other hand, in business life, “Customer is always right”, which means even if he or she isn’t! I mean according to given principles or standards. But in software industry, which seems like chemical industry, because of its complex and critical nature first, and its deep and unexpected effects in human being secondly, you can’t follow this rule simply here.

A sophisticated software-designer can offer far more than what user could imagine. He or she can offer user capabilities and functions user wouldn’t imagine before.

As an example, I wouldn’t imagine —as a user— that it could be possible to show a bidirectional text in one plain-text file, so I didn’t even ask myself if there’s a solution for it or not. But when I saw such a solution for the first time in a real software, which was GEdit, I was very grateful to open source community for its unexpected help and solutions.

Another example was the approach of showing Find function in Adobe Acrobat 7.0 and FireFox.

«Find» field in Adobe Acrobat toolbar
Find field in Adobe Acrobat toolbar

So, unlike commercial software, that’re necessarily user’s-satisfaction-driven, open source software are principle-driven.

… Unlike a snowball trundled in a very quick, random, and non-stop cycle, the only one who can stay in shape, in such a storming environment; is penguin!

Notepad2 and PunBB are the most typical examples for principle driven software.

Doesn’t seem like you —as a user— should sacrifice with some features and functions, in order to keep your software under your principle’s control; a principle like simplicity for example?

Simplicity deserves sacrifice!

An overview

Notepad2 consists of two software components:

Designed —as a whole— for MS-Windows only, looking like a silver pearl in an old shell!

The following table will give you a quick view of how far Notepad2 went comparing to Notepad, in which I want to suggest more improvements.

Notepad Notepad2
Regular Expression
Rectangular selection
Overwrite mode insert
Line numbers
Tool bar
Status bar Simple (XP only)
Replace 2k/XP only
UTF-8 support 2k/XP only
BiDi No, but you can use right Ctrl+Shift to turn the direction of the whole lines right.

Requirements for Notepad2

Find & Replace

  1. Showing Find and Replace functions in a toolbar, just like FireFox and Adobe Acrobat 7.0. The find options (check boxes) will be turned into toolbar buttons, as switch buttons, just like Word Wrap button in Notepad2 itself.
A screenshot of Notepad2, enriched with a toolbar.
Notepad2 - The current design
A prototype for an improved UI for Notepad2.
A prototype of an improved UI for Notepad2
  1. Multiple line Find & Replace: as a controllable option, using a button in Find/Replace toolbar.
  2. Highlighting Regular Expressions syntax in Find/Replace field(s).
  3. Moving on to a new line (using Find/Replace, or either Go To/Go To next or previous bookmark) should put the target line in the top of Notepad2 window as much as possible, rather than the bottom of the window, as usual.

Commands & Options

  1. All commands in File, Edit, and Help menus should be customizable in toolbar.
    These commands are used as operational functions, you need to deal with them frequently, every time you open Notepad2.
  2. All commands in View & Settings menus, including all their sub dialogs should be organized in one tabbed dialog called Options, with a button on toolbar to reach it. I might write more about this dialog box in future.
    These commands are used as control functions, you don’t need to deal with them that much, but:
    • occasionally first: therefore they shouldn’t be as a part of the direct-interface items,
    • and all together secondly: thus they should be in a one single control panel.
A model shows two rows of functions in parallel vertically, one after another, in front of a user’s eye; a user’s eye first, then Operational Functions, then Control Functions.
Functions order


  1. Keyboard shortcut info in tool tips.
  2. Showing/Hiding space/tab/paragraph marks.
  3. Cleaning Spaces (removing duplicated ones).
  4. Print preview.
  5. Document statistics: Just like GEdit:
    • Number of Lines
    • Words
    • Characters with spaces
    • Characters without spaces
    • Bytes.

Requirements for Scintilla

Bidirectional text support

As a suggestion: if the first character of the whole document was an Arabic character, the scroll bar should be in the left side of the application’s window.

A screenshot of Notepad2 shows its lack of BiDi support.
Scintilla desn’t support BiDi
A prototype of Notepad2 shows a BiDi support.
A prototype of Notepad2 shows a BiDi support

Actually, I was planning to develop an Arabic GUI for Notepad2, but I realized it doesn’t make sense to provide an Arabic interface for an application lacks of Arabic-support internally.

It doesn’t make sense to develop an Arabic interface while Arabic texts will not appear in the right direction!


  1. Highlighting CSS & JS scripts embedded in HTML documents.
  2. Linux shell .sh file support.
  3. Recognizing Hypertexts: optionally, just like Word Wrap option.
  4. Spell Checking: with distinguishing between programming and natural languages.