neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
Experimental editor inspired by Notepad++ - Cross-platform thanks to wxWidgets and CMake
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An experimental, cross-platform (Windows / Linux / macOS) text editor built on wxWidgets. ⚠️ Experimental software, under active development.README 전문 보기 ↗
An experimental, cross-platform (Windows / Linux / macOS / FreeBSD) text editor built on wxWidgets.
⚠️ Experimental software, under active development.
wxNote is built on wxWidgets' wxStyledTextCtrl (Scintilla + Lexilla) and runs natively on
Windows, Linux, macOS, and FreeBSD from one codebase: tabbed editing, split views, theming, a native
custom-language engine (Scintillua), macros, an integrated terminal, session restore, and full UI
localization. Plugins are
first-class via the project's own permissive, cross-platform Nib API; legacy Win32 Notepad++-ABI
plugin binaries are additionally supported on Windows through an optional GPL bridge plugin (see
Plugins below).
Why the project exists, and why it's a from-scratch editor rather than a port, is told in
docs/GOALS.md; how it's put together is in
docs/ARCHITECTURE.md.
Experimental, under active development. The Windows build is the most mature and feature-rich; the Linux, macOS and FreeBSD builds are structured and CI-wired but still being validated.
Implemented: tabbed editor with per-tab Scintilla documents, a split second view
(MAIN | SUB — Move/Clone to Other View, with the split collapsing when a pane empties), syntax
highlighting (Lexilla) with keyword lists for 98 languages (SciTE's, and the languages' own projects'
where SciTE has none) and language detection from the file's name and first line, your own
language definitions (languages.yaml: extensions, comment tokens and keyword lists, also edited in
the Style Configurator), a native custom-language engine — Scintillua (Lua 5.4.7 + LPeg 1.1.0
lexer grammars run through a Scintilla container lexer; see
docs/ARCHITECTURE.md), with legacy Notepad++ userDefineLang.xml
files importable via the optional GPL udl-compat plugin (see Plugins), find/replace and
find/replace-in-files, an incremental search bar (match-case / whole-word / regex toggles, live
highlight-all, and an n-of-m match counter), find-driven multi-cursor (Select All Occurrences / Add
Next), Go-to-line, dark mode, auto-indent / brace-match / smart-highlight, code folding (built-in
lexers and custom Scintillua languages), bookmarks, a Document Map
(minimap), a Function List (symbol tree, with rules derived independently from each language's own
grammar — C++, Python, JS/TS, Java, C#, Go, Rust, Lua), a real integrated terminal (a genuine ConPTY/forkpty pseudo-terminal with libvterm emulation,
so vim, htop, ANSI colour and the shell's own line editing all work; multi-tab, with a
per-platform shell picker, and a redirected-pipe fallback on Windows older than 10 1809), a Clipboard History panel, a Project Panel (workspace tree of
folders + files, saved as .yaml) and folder-as-workspace, pinned tabs, Restore Recent Closed File
(Ctrl+Shift+T) + MRU Ctrl+Tab switching, an interactive status bar (double-click to go-to-line,
convert EOL or encoding, or toggle INS/OVR), EOL detection, session restore, print + print preview, a
customizable right-click menu (submenus, labels of your own, plugin commands), macro
recording/playback (saved macros persist and are bindable in the Shortcut Mapper),
(tail -f: reload on external change), four selectable (Tabler,
Solar, IconPark, Streamline — see Credits), full UI into 8
languages (pl, de, fr, es, ru, ja, zh, ko), and a — see .
wxNote's core hosts its own original, permissive, cross-platform plugin API, Nib
(include/nib/nib.h) — a wxDynamicLibrary-based loader (.dll / .so / .dylib) with commands,
event subscriptions, dockable panels, and document/editor access. The core reproduces no Notepad++
plugin ABI itself — it includes nothing from include/npp-compat/; its command ids live in the core's
own src/command_ids.h.
Real Notepad++-ABI plugins (NPPM_* messages, FuncItem, NppData, …) are additionally
supported through an optional cross-platform bridge, packages/npp-bridge: on Windows it
LoadLibrarys prebuilt N++ .dll binaries, and on Linux/macOS it dlopens recompiled N++
plugins (.so / .dylib). Only the prebuilt Win32 .dll binaries themselves stay Windows-only. The
bridge is itself just a Nib plugin: it loads Notepad++-ABI DLLs, surfaces their commands in the Extensions
menu, and translates NPPM_* / FuncItem / SCNotification to and from Nib on their behalf — see
packages/npp-bridge/README.md for exact NPPM_* coverage. Because
this bridge reproduces Notepad++'s ABI, it is licensed GPL-3.0-or-later, kept isolated from the
otherwise Apache-2.0 core (see LICENSING.md).
Legacy Notepad++ User-Defined Languages (userDefineLang.xml) are supported through a second
optional plugin, packages/udl-compat: it parses your existing UDL files, translates each into a
Scintillua Lua/LPeg lexer, and registers it with the core via the new nib.langdef API (it also
ships a standalone udl2scintillua converter CLI). Because it knows the Notepad++ UDL format it is
licensed GPL-3.0-or-later and kept isolated from the Apache-2.0 core, and is built as
bin/nib/udl_compat.dll (see docs/ARCHITECTURE.md).
wxNote keeps its own settings, key bindings, themes, language definitions, sessions and workspaces as
plain YAML files (see docs/SETTINGS_DESIGN.md); the core reads no
Notepad++ format. A third optional plugin, packages/npp-compat, brings an existing Notepad++ setup
across: Extensions > Import from Notepad++... translates config.xml into settings, shortcuts.xml
into a key-binding scheme, and themes, contextMenu.xml and what was added to langs.xml into wxNote's
own files, and it also opens a Notepad++ session or workspace (the npp2wxnote CLI does the same translations from a terminal). It
reproduces Notepad++'s file formats, so it too is GPL-3.0-or-later and kept out of the core.
Requires CMake ≥ 3.20, a C++17 compiler, and Ninja. wxWidgets 3.3.1 is fetched and built
automatically on first configure (expect that one to take a while; builds are incremental after).
The native language engine's runtime — Lua 5.4.7 + LPeg 1.1.0 (built as a lua_lpeg static
library) plus Scintillua's lexer.lua — is likewise fetched automatically on first configure, so
the initial configure needs network access.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target wxnote
# -> build/bin/wxnote (wxnote.exe on Windows)
packages/npp-bridge (Notepad++-ABI plugin bridge) compile in here.sudo apt-get install build-essential cmake ninja-build pkg-config libgtk-3-devpkg install cmake-core ninja pkgconf gtk3 (packages
carry their headers; there are no separate dev packages).Plugins:
Plugin.dll / Plugin.so / Plugin.dylib into
<exe>/nib/ next to the executable.Plugin/Plugin.dll into <exe>/plugins/Plugin/. This
additionally requires npp_bridge.dll to be present in <exe>/nib/ (built automatically alongside
wxnote on Windows) — the bridge is what actually loads and translates for these plugins.src/ the wxNote application (main.cpp + the data-driven menu engine, the Scintillua
language engine (scintillua_engine.{h,cpp}), terminal panel, command_ids.h,
platform shims; src/plugins/nib_test_plugin is a Nib-native test plugin)
packages/ npp-bridge (optional GPL Notepad++-ABI bridge, builds on every OS — loads real
Notepad++ plugin DLLs on Windows, recompiled npp_shim plugins on Linux/macOS; itself a Nib plugin),
udl-compat (optional GPL Nib plugin: imports legacy Notepad++ UDLs as Scintillua lexers),
npp-compat (optional GPL Nib plugin: translates a Notepad++ setup - config.xml, shortcuts.xml,
themes, contextMenu.xml, sessions, workspaces - into wxNote's own YAML files),
test_plugin (a Notepad++-ABI test fixture, Windows-only, never shipped)
include/nib/ the project's own permissive, cross-platform plugin API (nib.h)
include/npp-compat/ clean-room Notepad++-ABI headers (consumed only by packages/npp-bridge,
packages/npp-compat and packages/test_plugin — the core includes nothing from here)
resources/ toolbar icons (icons/ = Tabler default, icons-solar/, icons-iconpark/,
icons-streamline/), themes/ (Default.yaml is the light default), contextmenu.yaml, fonts,
locale/ (8-language i18n catalogs)
third_party/ scintilla + lexilla (both permissive, HPND), lua + lpeg + scintillua (the custom-language engine, all MIT), libvterm-tables (generated DEC tables for the fetched libvterm terminal core, MIT), wxbf (wxBorderlessFrame, wxWindows Licence)
installer/ packaging scripts: windows/ (NSIS), linux/ (AppImage, .deb, .rpm, Flatpak), macos/ (.dmg), freebsd/ (.pkg)
docs/ GOALS.md (why the project exists), ARCHITECTURE.md (how the editor is put
together), CREDITS.md (everything used or consulted during development)
Grab the latest build from the project site's Download page (picks the right asset for you) or straight from Releases:
wxNote-<version>-Setup.exe) or Windows-on-ARM
(wxNote-<version>-arm64-Setup.exe).deb, .rpm, or .flatpak (flatpak install wxNote-<version>.flatpak),
each available for x86_64 and ARM (aarch64/arm64-suffixed assets), plus a .deb for riscv64.dmg, built separately for Apple Silicon (wxNote-<version>-arm64.dmg) and
Intel (wxNote-<version>-x86_64.dmg) — pick the one matching your Mac's chipwxnote-<version>-freebsd15-amd64.pkg).
pkg add looks for dependencies only beside the file, so install them from the repository first:
pkg install $(pkg query -F <file> %dn), then pkg add <file>CI builds all of these as artifacts for every PR and for source-affecting pushes to master (see
.github/workflows/build.yml and installer/{windows,linux,macos,freebsd}/); pushing a version tag (v*)
runs .github/workflows/release.yml, which rebuilds everything and attaches it to a new GitHub
Release. See CHANGELOG.md for release history.
wxnote [options] [files...]
-g, --goto <line[,col]> go to this line (and column) in the last file opened
-e, --encoding <name> force encoding: ansi|utf8|utf8bom|utf16le|utf16be
-n, --new-instance always open a new window
-r, --reuse-instance reuse an already-running window
-w, --wait do not return until the file is closed
--safe start without loading any plugins
-v, --version print the version and exit
-h, --help show the usage message
Files given on the command line are opened in tabs. By default every launch opens its own window;
turning on Preferences > General > "Reuse an existing window" makes a second launch hand its files to
the already-running window instead (over a local IPC connection) and exit — -n/-r override that
setting for a single launch either way.
-w/--wait makes wxnote usable as $EDITOR / git config core.editor "wxnote --wait". It
deliberately implies -n: the IPC handoff path exits immediately, so without forcing a new
instance the caller would unblock before the tab even opened. On Windows, note that a bare cmd.exe
prompt does not wait on GUI-subsystem processes at all (use start /wait wxnote -w <file>), whereas
git, sh and make wait on the process handle and block correctly.
Full reference: the manual's Command Line page.
Bug reports, code, translations, and themes are all welcome — see
CONTRIBUTING.md for how to build, the PR workflow, and the project's
code/licensing ground rules.
Apache License 2.0, with three exceptions in what ships: the optional packages/npp-bridge/ plugin
(which lets real compiled Notepad++ plugins load), the optional packages/udl-compat/ plugin
(which imports legacy Notepad++ userDefineLang.xml files by translating them to Scintillua lexers)
and the optional packages/npp-compat/ plugin (which imports a Notepad++ setup — settings, shortcuts,
themes, context menu, sessions, workspaces) all stay GPL-3.0-or-later — npp-bridge because it
reproduces Notepad++'s plugin ABI, udl-compat and npp-compat because they know Notepad++'s file
formats — kept isolated from the otherwise Apache-2.0 core; the
never-shipped, Windows-only test fixture packages/test_plugin/ tracks the same GPL license for the
same reason. wxNote is an
independent project — it copies no Notepad++ source
code; Notepad++ was used only as a behavioral reference and a test target, and wxNote is not
affiliated with or endorsed by it (see NOTICE). The project started on GPL v3 and
relicensed once every Notepad++-derived file had been replaced or clean-room-reimplemented and the
plugin-ABI reproduction fully isolated into that one optional module — purely to give users and
downstream developers more freedom, with no commercial agenda. See LICENSING.md
for the per-component record.
The full record of everything used or consulted during development — including the editors studied as
design references — is in docs/CREDITS.md. The headliners:
include/npp-compat/, consumed only by the optional GPL packages (packages/npp-bridge, packages/npp-compat) — no Notepad++ source is used (see LICENSING.md).v0.3.3 by SHA256); two generated DEC charset tables it needs are vendored in third_party/libvterm-tables/.v0.16.0 release, pinned by SHA256).resources/icons/CREDITS.mdresources/icons-solar/CREDITS.md).resources/icons-iconpark/CREDITS.md).resources/icons-streamline/CREDITS.md).resources/fonts/CREDITS.md): Cascadia Mono — © Microsoft, the default and fallback face — JetBrains Mono — © the JetBrains Mono Project Authors — IBM Plex Mono — © IBM Corp. — Iosevka Fixed — © Renzhi Li — all four SIL OFL 1.1 — and Hack — © Source Foundry Authors (MIT + Bitstream Vera). Cascadia, IBM Plex and Iosevka carry Reserved Font Names (see LICENSING.md).