IntelliEdit

IntelliEdit
IntelliEdit

Introduction

IntelliEdit is a free (as in “free speech” and also as in “free beer”) source code editor and Microsoft Notepad replacement that supports several languages. Running in the Microsoft Windows environment, its use is governed by GNU General Public License v3.0. Based on the powerful editing component Scintilla, IntelliEdit is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendliness, IntelliEdit is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment. I hope you enjoy IntelliEdit as much as I enjoy coding it!

Getting started

Install IntelliEdit using the installer

  • Download the installer
  • Run the executable binary and follow the installation flow

The installer will likely require Administrative privileges in order to install IntelliEdit (and later, to update IntelliEdit or install or update plugins, or anything else that requires writing to the installation directory). If you do not have Administrative privileges, you either need to tell the installer to use a location where you do have write permission (though that may still ask for Administrator privileges), or you may choose not use the installer and instead run a portable edition from a directory where you have write permission.

Install IntelliEdit from zip

These instructions will allow you to run a portable or mini-portable (also called “minimalist”), without requiring administrative privileges.

  • Create a new folder somewhere that you have write-permission
  • Unzip the content into the new folder
  • Run IntelliEdit from the new folder

The portable zip edition of IntelliEdit can be removed by deleting the directory they came in. If you manually set up file associations or context-menu entries in the OS, it is your responsibility to remove them yourself.

Working with Files

A “file” is the basic unit of what is edited in IntelliEdit, but that term actually covers multiple related concepts. Primarily, the “file” is the series of bytes stored on a disk or other storage medium and accessed through your computer’s filesystem; and pedantically, if the document you are editing has never been saved to the filesystem, it’s not technically a file, though common usage applies that term to unsaved documents as well. The “document” refers to the text being edited, whether it’s a new, unsaved document, or whether it’s a document that’s been previously saved as a file on the filesystem. And finally, in IntelliEdit, each document is presented in a Tab in one of the two Views of the IntelliEdit user interface, which are the graphical containers which IntelliEdit uses to manipulate files and other documents, though many users think of the user interface element as the “file” as well.

The main button contains many of the normal file-operation actions found in most applications. IntelliEdit also includes other custom actions which are useful to understand.

  • New: Creates a new document, and displays that empty document in a Tab in the active View.
  • Open: Opens an existing file from the filesystem, and displays that document in a Tab in the active View.
  • Save: Saves the current document to the filesystem using the same filename.
    If the document does not currently have a file associated with it, this action will be grayed out and the menu entry cannot be used. Use Save As instead.
  • Save As: Saves the current document to the filesystem, prompting for the new filename to use.
    If the document had previously been saved to a file, this will create as new copy of the file, and IntelliEdit will continue working with the document associated with the new file, leaving the old file with the contents that were last saved.
  • The Print action will pull up a Windows-standard print dialog, from which you can choose your printer and send your text to the selected printer.
    Normally, it will print the whole document, but you can use the print dialog to choose only certain pages; if you have an active selection in the editor, only the selected text will be printed.
  • Rename File: Renames the active document.
  • Move File: Moves the active document.
  • Copy File: Copies the active document.
  • Delete File: Deletes the active document.
  • Properties: Shows properties for the active document.
  • Close: Closes the active document, prompting to save if it has been modified since it was opened or created.
  • Exit: Closes the IntelliEdit application.

The Clipboard menu features typical editing commands which any Windows user should be familiar with:

  • Undo: reverts the text to its content before the previous operation; can be used one or more times consecutively to step back through a document’s textual history.
  • Redo: if Undo was executed previously, this will reinstate the change(s) previously undone; may be executed multiple times.
  • Cut: will remove any selected text from the document and place it on the Windows clipboard.
  • Copy: will put a copy of any selected text on the Windows clipboard; document content is unaltered.
  • Paste: if the Windows clipboard contains text, this will insert a copy of that text at the point of the caret; if text is selected when this command is executed, the selected text will be replaced by the text from the clipboard; if the clipboard does not contain text, nothing will happen.
  • Delete: will remove any selected text from the document.
  • Select All: selects all text in the document into a stream selection.
IntelliEdit-Find
IntelliEdit-Find
IntelliEdit-Replace
IntelliEdit-Replace

The Find/Replace dialogs have certain features in common, though some are not available (greyed out) under certain circumstances.

  • Find what: This is the text you are searching for.
  • Replace with: This is the text that will replace what was matched.
  • Match whole word only: If checked, searches will only match if the result is a whole word (so "it" will not be found inside "hitch").
  • Match case: If checked, searches must match in case (so a search for "it" will not find "It" or "IT").
  • Regular Expression: Uses the Boost regular expression engine to perform very powerful search and replace actions.

The various action buttons available include:

  • Find Next: Finds the next matching text.
  • Replace: Replaces the currently-selected match. (If no match is currently selected, it behaves like Find Next and just highlights the next match in the specified direction.)
  • Replace All: It makes one pass through the active document, from the very top to the very bottom, and replaces all occurrences found.

The Bookmark menu allows you to navigate and manipulate Bookmarks.

  • Add: Adds the Bookmark indicator on the active line.
  • Delete: Deletes the Bookmark indicator on the active line.
  • Find Next: Navigates to the next Bookmark in the active document.
  • Find Previous: Navigates to the previous Bookmark in the active document.

Supported Programming Languages

The following programming languages are supported by IntelliEdit:

  • ASP
  • Bash
  • Batch
  • C/C++
  • C#
  • CMake
  • CSS
  • Groovy
  • HTML
  • Java
  • JavaScript
  • JSON
  • Makefile
  • Markdown
  • MATLAB
  • PHP
  • Python
  • R
  • Rust
  • SQL
  • TCL/TK
  • XML

Create and Submit your Pull Request

As noted in the Contributing Rules for IntelliEdit, all Pull Requests need to be attached to a issue on GitHub. So the first step is to create an issue which requests that the functionality be improved (if it was already there) or added (if it was not yet there); in your issue, be sure to explain that you have the functionality definition ready, and will be submitting a Pull Request. The second step is to use the GitHub interface to create the Pull Request from your fork into the main repository. The final step is to wait for and respond to feedback from the developers as needed, until such time as your PR is accepted or rejected.

Software Content Register

Release Name: IntelliEdit
Description: IntelliEdit is an alternative Windows version to the famous Microsoft Notepad!
Outgoing License: GNU General Public License v3.0
Type of content: static/dynamic libraries, source code, binary

genUp4win
Desciption: This library is a generic updater for Windows.
Version: 2.03
Home Page: https://github.com/mihaimoga/genUp4win
License: MIT
Format: source code, binary

CHLinkCtrl
Description: This class allows you to create a static control on a window or dialog which behaves similar to a hyperlink as seen on a web page. When the mouse moves over the text the cursor becomes a hand and when you click on the text the hyperlink is executed.
Version: 1.43
Home Page: https://www.naughter.com/hlinkctrl.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

CInstanceChecker
Description: This class implements single instance apps. Limiting your app to single instance is more tricky in Win32 with the removal of the hPrevInstance parameter from WinMain and the introduction of separate address spaces.
Version: 1.25
Home Page: https://www.naughter.com/sinstance.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

Lexilla, Scintilla, and SciTE
Description: Scintilla is a free source code editing component. It comes with complete source code and a license that permits use in any free project or commercial product.
As well as features found in standard text editing components, Scintilla includes features especially useful when editing and debugging source code. These include support for syntax styling, error indicators, code completion and call tips. The selection margin can contain markers like those used in debuggers to indicate breakpoints and the current line. Styling choices are more open than with many editors, allowing the use of proportional fonts, bold and italics, multiple foreground and background colours and multiple fonts.

Version: 5.5.3
Home Page: https://www.scintilla.org/
License: Custom (Neil Hodgson’s license)
Format: source code, binary

CScintillaCtrl, CScintillaDoc, CScintillaView
Description: These classes provides a MFC and ATL/WTL wrapping for the Scintilla edit control (http://www.scintilla.org). This control provides an open source cross platform edit control. Some of the features it provides include syntax colouring, call tips, brace highlighting, Styles, margins and markers to name but a few. The provided wrapper classes make it easier to include the control in MFC / WTL projects on Windows.
Version: 1.90
Home Page: https://www.naughter.com/scintilla.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

CVersionInfo
Description: This simple little class encapsulates the SDK calls which access version info from Win32 files. Most executables and DLL’s have a VS_VERSION_INFO resource associated with them and this class provides a simple C++ class to programmatically access this information.
Version: 1.13
Home Page: https://www.naughter.com/versioninfo.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

PJ Naughter’s license: You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) when your product is released in binary form. You are allowed to modify the source code in any way you want except you cannot modify the copyright details at the top of each module. If you want to distribute source code with your application, then you are only allowed to distribute versions released by the author. This is to maintain a single distribution point for the source code.

Neil Hodgson’s license: Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.
NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

History

  • Version 1.00 (May 30th, 2024): Initial release.
  • Version 1.01 (July 23rd, 2024):
    • Added line numbers.
    • Updated LEXILLA library to version 5.3.3 and SCINTILLA library to version 5.5.1.
    • Updated PJ Naughter’s CScintillaCtrl library to the latest version available.
      Updated class to work with Scintilla v5.5.1. New messages wrapped include: SCI_AUTOCSETSTYLE, SCI_AUTOCGETSTYLE & SCI_CUTALLOWLINE.
  • Version 1.02 (July 27th, 2024):
    • Enabled syntax highlighting for the following programming languages:
      • ASP
      • C#
      • CSS
      • HTML
      • Java
      • MarkDown
      • PHP
      • Python
      • SQL
      • XML
  • Version 1.03 (August 24th, 2024):
    • Updated LEXILLA library to version 5.4.0 and SCINTILLA library to version 5.5.2.
    • Updated PJ Naughter’s CScintillaCtrl library to the latest version available.
      Updated class to work with Scintilla v5.5.2. New messages wrapped include: SCI_STYLESETSTRETCH, SCI_STYLEGETSTRETCH, SCI_GETUNDOSEQUENCE, SCI_LINEINDENT, SCI_LINEDEDENT, SCI_SETCOPYSEPARATOR & SCI_GETCOPYSEPARATOR.
  • Version 1.04 (August 31st, 2024):
    • Enabled syntax highlighting for the following programming languages:
      • Bash
      • Batch
      • CMake
      • Groovy
      • JavaScript
      • JSON
      • Makefile
      • MATLAB
      • R
      • Rust
    • Implemented User Manual option into Help menu.
    • Implemented Check for updates… option into Help menu.
  • Version 1.05 (October 27th, 2024):
    • Reworked the implementation of Check for updates… option.
    • Enabled syntax highlighting for TCL/TK programming language.
    • Fixed limitation to _MAX_PATH for long path names.
    • Updated LEXILLA library to version 5.4.1 and SCINTILLA library to version 5.5.3.
  • Version 1.06 (December 16th, 2024):
    • Updated copyright information.
    • Updated PJ Naughter’s CScintillaCtrl library to the latest version available.
      Updated CScintillaView::Serialize to better handle loading a non UTF encoded file.
    • Added new file options:
      • Rename File
      • Move File
      • Copy File
      • Delete File
      • Properties