Code Editor

JEditor’s core is a powerful multi-tab code editor built on top of Qt’s QPlainTextEdit, designed for speed, flexibility, and a smooth development experience.

Multi-Tab Editing

Work on multiple files simultaneously using the tab-based interface:

  • Open multiple files in separate tabs

  • Switch between tabs by clicking

  • Close tabs individually

  • Drag and drop files from the file system into the editor

  • The current file path and tab state are tracked automatically

File Operations

Action

Description

New File (Ctrl+N)

Create a new empty file

Open File (Ctrl+O)

Open an existing file and load it into a tab

Open Folder (Ctrl+K)

Open a project folder and display it in the file tree

Save File (Ctrl+S)

Save the current tab’s content to disk

Recent Files

JEditor keeps a list of recently opened files for quick access, available from the File menu.

Auto-Save

JEditor includes an automatic save feature that periodically saves your work:

  • Runs in a background thread per open file

  • Configurable save interval

  • Detects external file changes and handles conflicts

  • Tracks file modification state

Syntax Highlighting

JEditor provides built-in Python syntax highlighting and supports additional languages through plugins.

Built-in Python Highlighting includes:

  • Keywords (if, else, for, while, def, class, etc.)

  • Built-in functions (print, len, range, etc.)

  • Strings (single-line and multi-line)

  • Comments

  • Decorators

  • Numbers

  • Customizable colors via the color settings

Plugin-based Language Support:

Additional languages can be added through the plugin system. Pre-built plugins are available for:

  • C (.c)

  • C++ (.cpp, .cxx, .cc, .h, .hpp, .hxx)

  • Go (.go)

  • Java (.java)

  • Rust (.rs)

See Plugin System for details on creating language plugins.

Auto-Completion

JEditor integrates Jedi for intelligent Python code completion:

  • Context-aware suggestions based on the current code

  • Supports virtual environment (venv) for accurate package completions

  • Runs in a background thread so the UI stays responsive

  • Configurable case-sensitivity and completion behavior

Line Numbers

The editor displays line numbers in a dedicated gutter on the left side:

  • Line numbers update dynamically as the document changes

  • Customizable colors for line number text and background

  • Current line number is highlighted for easy reference

Current Line Highlight

The line where the cursor is currently positioned is highlighted with a distinct background color, making it easy to identify your editing position. The highlight color is customizable through the color settings.

File Tree

When you open a folder (Ctrl+K), JEditor displays a file tree on the left side:

  • Browse the full directory structure of your project

  • Click on any file to open it in a new editor tab

  • Supports expanding and collapsing directories

  • Scrollable navigation for large projects

Encoding Support

JEditor supports multiple file encodings:

  • UTF-8 (default)

  • GBK

  • Latin-1

  • Automatic encoding detection when opening files

  • Per-file encoding selection from the File > Encoding menu

  • Encoding is preserved when saving files

Search & Replace

JEditor provides powerful search and replace functionality:

File Search:

  • Search within the current file

  • Case-sensitive and case-insensitive options

  • Regular expression (regex) support

Project-Wide Search:

  • Search across all files in an opened folder

  • Results displayed in a table with file path and line number

  • Click on a result to navigate directly to the match

  • Runs in a background thread for large codebases

Replace:

  • Replace single occurrences or all matches at once

  • Supports the same options as search (case, regex)