Skip to content

Repository files navigation

MacPad++

A native macOS text and source-code editor inspired by Notepad++, written from scratch in Swift/AppKit and released under the GNU General Public License v3.

About the name. The ++ is a nod to where the idea comes from, nothing more. MacPad++ is not an official Notepad++ release, not a Mac edition of it, and not connected to that project or its author in any way.

What this is, honestly. MacPad++ is not a port of Notepad++. Notepad++ is a large C++ codebase written directly against the Windows-only Win32 API and the Scintilla control, which is why no official macOS build exists — the obstacle was always the code, never the licence (Notepad++ has been GPL from the start). MacPad++ is an original application that recreates the Notepad++ experience on macOS: the same menu structure, the same commands, the same muscle memory. It shares no source with Notepad++ and is not affiliated with or endorsed by that project or its author, Don Ho.


Features

Editing

  • In-window tab bar — dirty markers, drag-to-reorder, middle-click close, five tab tint colours, right-click menu (close others, rename, copy path, open containing folder)
  • Split view — two independent editor panes
  • Code folding — brace-based for C-family languages, indentation-based for Python/YAML; fold all, unfold all, fold to level 1–8
  • Bookmarks — toggle, next/previous, cut/copy/remove bookmarked lines, remove unmarked lines, inverse bookmarks
  • Auto-indent, soft/hard tabs, configurable tab width, auto-closing brackets
  • Brace matching with highlight, jump to matching brace, select between braces
  • Auto-completion from language keywords plus every word in the document
  • Column editor — insert text or an incrementing number (decimal/octal/hex/binary, optional zero-padding) down a column
  • Show whitespace, end-of-line marks, indent guides; current-line highlight

Commands (Edit menu)

  • Case conversion ×6 — UPPER, lower, Proper, Sentence, iNVERT, rAnDOm
  • Line operations ×16 — duplicate, remove duplicates, delete, move up/down, join, split, remove empty, insert blank above/below, reverse order, randomize order, and six sort modes (lexicographic asc/desc, case-insensitive asc/desc, numeric asc/desc)
  • Blank operations ×8 — trim trailing/leading/both, EOL to space, remove unnecessary blank + EOL, tabs↔spaces (leading and all)
  • Comments — toggle line comment, block comment/uncomment, toggle block comment
  • Insert date/time (short, long, custom format), copy filename/path/directory to clipboard

Search

  • Four-tab Find dialog — Find, Replace, Find in Files, Mark
  • Normal / Extended (\n, \t, \xHH) / Regular expression modes
  • Match case, whole word, wrap around, backward direction, in-selection
  • Count, Find All, Replace All, Replace All in All Opened Documents
  • Find in Files — recursive, glob filters, binary-file and VCS-directory skipping, cancellable, with a results panel grouped by file
  • Mark All — style every occurrence; Bookmark All Matching Lines

Panels (dockable)

Document Map (minimap) · Function List · Document List · Clipboard History · Character Panel (0–255) · Folder as Workspace (file browser) · Search Results

Languages

71 languages with syntax highlighting, comment definitions and function-list parsing — including C, C++, C#, Java, JavaScript, TypeScript, Python, Ruby, Swift, Go, Rust, PHP, Perl, Lua, SQL, HTML, CSS, XML, JSON, YAML, Markdown, Shell, PowerShell, Batch, Makefile, Dockerfile, Assembly, Fortran, COBOL, Pascal, Haskell, Erlang, Lisp, Scheme, MATLAB, R, Verilog, VHDL, TeX, Liquid (Shopify themes), and more.

Encoding & line endings

ANSI, UTF-8, UTF-8-BOM, UTF-16 LE/BE with BOM, plus ~30 character sets across Western/Central European, Cyrillic, Greek, Turkish, Hebrew, Arabic, Baltic, Vietnamese, Thai, Japanese, Chinese and Korean. EOL conversion between Windows (CRLF), Unix (LF) and classic Mac (CR), with automatic detection on open.

Everything else

  • 8 themes — Default (follows system light/dark), Obsidian, Zenburn, Solarized, Solarized Light, Twilight, Deep Black, Mono Industrial
  • Preferences, Style Configurator (live preview), Shortcut Mapper (reads the live menu bar)
  • Macros — record, play back, run N times, save and reuse named macros
  • Sessions — auto-restore on launch, plus explicit Save/Load Session
  • Hash tools — MD5, SHA-1, SHA-256, SHA-512 of selection or document
  • Run — launch a shell command with $(FULL_CURRENT_PATH) substitution
  • Six-field clickable status bar; recent-files list; print support

Build

Requires macOS 12+ and Xcode (or the Swift toolchain).

git clone https://github.com/HL-Apprentice/MacPad.git
cd MacPad++
./build.sh
open build/MacPad++.app

Drag build/MacPad++.app into /Applications to keep it. The build is ad-hoc signed, so Gatekeeper may ask you to confirm the first launch (right-click → Open).

To develop against it directly:

swift build && swift run

Self-test

MacPad++ can build its whole interface off-screen, drive it, and report:

swift build && "$(swift build --show-bin-path)/MacPad" --self-test

77 checks covering the menu bar (dead items, colliding shortcuts), encoding and line-ending round-trips through disk, the Edit commands and undo, navigation and bookmarks, construction and drawing of all seven panels, split view, folding, every theme, the settings windows, and find/mark/replace. Exit status is 0 only when all of them pass, so it drops straight into CI.


Not implemented

Stated plainly rather than buried:

  • Plugin system. Notepad++ plugins are Windows DLLs loaded via a Win32 ABI. That cannot be reproduced on macOS, and no plugin menu is shipped.
  • Rectangular/column selection. The Column Editor (insert down a column) is implemented; free-form rectangular selection with multi-caret editing is not.
  • Document Map renders a scaled text approximation, not a pixel-exact page thumbnail.
  • Notepad++'s User Defined Language dialog is absent; languages are defined in Swift (Sources/MacPad/Languages/) and adding one is a small, self-contained edit.
  • Windows-specific items (Recycle Bin, file association registration, Windows shell integration) are replaced by their macOS equivalents or omitted.

Third-party notices

MacPad++ bundles no third-party code and has no dependencies. The bundled colour schemes reproduce palettes from well-known terminal and editor themes, credited in THIRD-PARTY-NOTICES.md.

Licence

MacPad++ is free software: you may redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the Licence, or (at your option) any later version. It is distributed without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See LICENSE for the full text.

"Notepad++" is the work and trademark of its respective owner. MacPad++ takes inspiration from its feature set only.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages