NodeText Documentation
NodeText is a fast, lightweight code editor built with Rust and Tauri. It features built-in debugging via GDB/LLDB, syntax highlighting for 30+ languages, an integrated terminal, file explorer, code completion, and much more.
Open a File
CtrlO to open a file, or drag & drop a file onto the editor.
Open a Folder
Use File → Open Folder to open a project directory in the explorer.
Built-in Terminal
Ctrl` to toggle the integrated terminal panel.
Start Debugging
Press F5 to build and start debugging your Rust project.
Keyboard Shortcuts — File Operations
| Shortcut | Action |
|---|---|
| CtrlO | Open file |
| CtrlS | Save file |
| CtrlShiftS | Save file as (new name) |
| CtrlN | Create new file |
| CtrlW | Close current file tab |
Keyboard Shortcuts — Editing
| Shortcut | Action |
|---|---|
| CtrlZ | Undo |
| CtrlY | Redo |
| CtrlShiftZ | Redo (alternative) |
| CtrlA | Select all |
| CtrlC | Copy |
| CtrlX | Cut |
| CtrlV | Paste |
| Tab | Insert tab / Indent selected lines |
| ShiftTab | Dedent selected lines |
| Home | Smart home (toggle: first non-whitespace / column 0) |
| Enter | New line with auto-indent |
| Alt↑ | Move line up (or expand selection scope in Rust) |
| Alt↓ | Move line down (or shrink selection scope in Rust) |
| AltZ | Toggle word wrap |
| Ctrl + Mouse Wheel | Increase / decrease font size |
| AltShift + Drag | Block (column) selection |
Keyboard Shortcuts — Chord Shortcuts (Ctrl+K)
Chord shortcuts are two-step key sequences. Press CtrlK first, then press the second key within 1.5 seconds. These are built-in and cannot be overridden by custom shortcuts.
| Shortcut | Action |
|---|---|
| CtrlK then D | Format document (JSON, XML, HTML) |
| CtrlK then C | Comment selected lines |
| CtrlK then U | Uncomment selected lines |
Note: If no text is selected, comment/uncomment operates on the entire current line. For block-comment languages (CSS, HTML, XML), the selection is wrapped with the block delimiters instead of line prefixes.
Keyboard Shortcuts — Find & Replace
| Shortcut | Action |
|---|---|
| CtrlF | Open find bar |
| CtrlH | Open find and replace |
| F3 | Find next match |
| ShiftF3 | Find previous match |
| CtrlShiftF | Find in project (all files) |
| Escape | Close find bar |
Keyboard Shortcuts — Debugging
| Shortcut | Action |
|---|---|
| F5 | Start / Continue debugging |
| ShiftF5 | Stop debugging |
| F9 | Toggle breakpoint on current line |
| F10 | Step over |
| F11 | Step into |
| ShiftF11 | Step out |
| CtrlShiftB | Build project (cargo build) |
Keyboard Shortcuts — Terminal
| Shortcut | Action |
|---|---|
| Ctrl` | Toggle terminal panel |
| Enter | Execute command |
| ↑ | Previous command in history |
| ↓ | Next command in history |
| CtrlShiftC | Send interrupt (Ctrl+C) |
Keyboard Shortcuts — File Explorer
| Shortcut | Action |
|---|---|
| F2 | Rename selected file or folder |
| Delete | Delete selected file or folder |
| Right-click | Context menu: New File, New Folder, Rename, Delete, Copy, Cut, Paste |
Custom Shortcuts — Configuration
You can add custom keyboard shortcuts that execute terminal commands. Open Settings and switch to the Shortcuts tab.
Adding a Custom Shortcut
- Click + Add Shortcut
- Check the modifier keys you want: Ctrl, Alt, Shift
- Select a key from the dropdown (A–Z, 0–9, or F1–F12)
- Enter the terminal command to execute (e.g.,
cargo build -r) - Click Save
When the shortcut is triggered, the terminal panel opens automatically and the command is executed.
Custom Shortcuts — Reserved Shortcuts
The following shortcuts are reserved by the editor and cannot be overridden by custom shortcuts:
Themes — Dark Theme (Default)
The default theme uses the Catppuccin Mocha color palette — a warm, low-contrast dark theme that is easy on the eyes.
UI Colors
Syntax Colors
Themes — Light Theme
The light theme uses the Catppuccin Latte color palette — a clean, bright theme for daytime use.
UI Colors
Syntax Colors
Switch themes in Settings → Editor → Theme dropdown. The change applies immediately to the editor and all pop-out windows.
Font & Size
The editor uses the following monospace font stack (in priority order):
Font Size
- Default: 13px
- Range: 10px – 24px
- Adjust in Settings → Editor → Font Size
- Or use Ctrl + Mouse Wheel to adjust on-the-fly
Note: Font ligatures are disabled for accurate character-width rendering and cursor positioning.
Word Wrap
Toggle word wrap with AltZ or the wrap button in the toolbar. When enabled, long lines wrap at the editor boundary instead of scrolling horizontally. The setting persists across sessions.
Syntax Highlighting
NodeText supports syntax highlighting for 30+ languages, detected automatically from file extensions or content analysis.
You can also manually select a language from the language dropdown in the toolbar or the status bar.
Code Completion
The editor provides context-aware autocomplete suggestions including:
- Language keywords — reserved words for the current language
- Built-in methods — Rust standard library (String, Vec, Option, Result, HashMap, etc.)
- Struct fields — triggered after
.(dot) - Module items — triggered after
::(Rust) - File & project symbols — functions, types, and structs
- Buffer words — words from the current document
Use ↑/↓ to navigate, Tab or Enter to accept, Escape to dismiss.
Auto-Indent & Bracket Matching
Auto-Indent
- Automatic indentation on Enter preserving the current indent level
- Extra indent after opening brackets
{,(,[ - Auto-dedent when typing closing brackets
},),] - Rust-specific: match arms (
=>), where clauses, method chains
Bracket Matching
- Highlights matching pairs:
{},[],() - HTML/XML tag matching:
<tag>...</tag> - Generic angle brackets:
Vec<T>,HashMap<K,V> - Skips matches inside strings and comments
Auto-Close
When you select text and type an opening bracket or quote, the selection is automatically wrapped: (selection), [selection], {selection}, "selection", 'selection'.
Code Folding
Click the fold markers in the gutter to collapse or expand code regions. Rust files use AST-based folding; other languages use brace-matching. Collapsed regions show /* ... */ as a placeholder. Editing inside a folded region automatically unfolds it.
Block (Column) Selection
Hold AltShift and drag with the mouse to select a rectangular block of text. You can copy (CtrlC) or delete (Delete / Backspace) the block selection. Press Escape to clear.
Find & Replace
Press CtrlF to open the find bar. All matches are highlighted in orange, with the current match in yellow. Press CtrlH to open the replace row. Use the Replace button for single replacements or All to replace every match.
Find in Project
Press CtrlShiftF to search across all files in the open project folder. Results are listed with file path, line number, and matched content. Click any result to navigate directly to that location.
Document Formatting
Press CtrlK then D to format the current document.
- JSON — Pretty-prints with 2-space indentation. Shows an error message if the JSON is invalid.
- XML / HTML — Formats with proper indentation, handling self-closing tags, comments, CDATA, and processing instructions.
All formatting operations support undo (CtrlZ).
Comment / Uncomment
Press CtrlK then C to comment and CtrlK then U to uncomment selected code.
Comment Styles by Language
| Style | Languages |
|---|---|
// | Rust, JavaScript, TypeScript, C, C++, C#, Java, Go, Dart, Kotlin, Swift, Scala, Zig, PHP, Protobuf, GraphQL |
# | Python, Shell, Ruby, R, Perl, Elixir, TOML, Config, Dockerfile, PowerShell |
-- | SQL, Lua, Haskell |
REM | Batch |
<!-- --> | HTML, XML |
/* */ | CSS |
Integrated Terminal
Toggle with Ctrl`. The terminal supports:
- Command execution with output display
- Command history navigation (↑/↓)
- Interrupt running commands (CtrlShiftC)
- Syntax-colored cargo check output
- Auto-opens for builds, debug sessions, and custom shortcuts
Debug / Watch Panel
The watch panel shows local variables and custom watch expressions during debug sessions. Features:
- Locals — automatically populated with local variable values
- Watch — add custom expressions to monitor
- Recursive structure expansion
- Type information on hover
- Context menu: Add to watch, Copy value, Inspect
- Watch expressions persist in
debug.json
Claude AI Panel
An integrated AI assistant powered by Claude. Enter your Anthropic API key in the panel settings to enable it. Ask questions about your code, get explanations, or request help directly within the editor.
- Chat-style message interface
- Enter to send, ShiftEnter for new line
- Conversation history maintained during session
Chart Visualization
Visualize Rust code structure as interactive graphs. Chart types include:
- Structure — module and type hierarchy
- Call Graph — function call relationships
- Dependencies — module dependencies
- Module Map — project module layout
- Type Hierarchy — trait/struct inheritance
- Complexity — code complexity heatmap
Nodes are color-coded by kind. Double-click a node to navigate to its definition. Pan and zoom to explore large codebases.
Pop-out / Pin Windows
Several panels can be detached into separate windows using the pop-out button (arrow icon) in the panel header:
- File Explorer — browse project files in a separate window
- Debug / Watch — monitor variables side-by-side with code
- Search Results — keep search results visible while editing
- Terminal — detach the terminal for multi-monitor setups
- Chart — visualize code in a dedicated window
Pop-out windows automatically sync the current theme and font size. Each window operates independently and can be closed or pinned back to the main editor.
Breakpoints
Click on a line number to toggle a breakpoint (red circle). Right-click a breakpoint to add a condition expression. Breakpoints are saved across sessions.
Conditional Breakpoints
Set an expression (e.g., x > 0, name == "foo") to pause execution only when the condition is true. Optionally filter by thread ID.
Step Controls
| Control | Description |
|---|---|
| F5 Continue | Resume execution until the next breakpoint |
| F10 Step Over | Execute the current line, skip into function calls |
| F11 Step Into | Step into the function call on the current line |
| ShiftF11 Step Out | Continue until the current function returns |
| ShiftF5 Stop | Terminate the debug session |
The debugger supports both GDB and LLDB, auto-detecting which is available. Rust macro expansions are automatically handled during stepping.
Variables & Watch
During debugging, the Watch panel displays:
- Local variables with their current values and types
- Watch expressions that you add manually
- Expand complex types (structs, enums, vectors) to inspect nested fields
- Smart type display: simplifies
alloc::string::StringtoString - Automatic unwrapping of Box, Rc, and Arc smart pointers
Build & Diagnostics
Press CtrlShiftB to run cargo build -r. Errors and warnings appear as underlines in the editor. The terminal shows full build output with colored diagnostics.
Settings
Open Settings from the toolbar gear icon. The settings dialog has two tabs:
Editor Tab
- Theme — Choose between Dark and Light
- Font Size — Set between 10px and 24px
Shortcuts Tab
- Add, edit, and remove custom keyboard shortcuts
- Each shortcut maps a key combination to a terminal command
- Built-in shortcuts are protected and will show an error if a conflict is detected
Settings are saved automatically and persist across sessions.
Drag & Drop
Drag a file from your system file manager and drop it onto the editor to open it. A visual overlay with a dashed border and "Drop file to open" message appears during the drag. File tabs can also be reordered by dragging them.
Status Bar
The status bar at the bottom of the window shows:
- Cursor position —
Ln 1, Col 1 - Language — current file language (e.g., Rust, JavaScript)
- Encoding — UTF-8
- Status messages — save confirmations, errors, build status
- Debug status — shown when a debug session is active