Personal project · Desktop application

pymightyfalcon

A Python IDE built from scratch in PyQt5

  • Python 3
  • PyQt5 ≥ 5.15
  • QScintilla ≥ 2.14
  • python-lsp-server
  • debugpy
  • pyflakes
  • black
  • GitPython

A code editor and IDE written from scratch in PyQt5, using QScintilla as the editing component. It started as a single-file proof of concept and grew into a modular application with a project model, a plugin system and a language-server bridge.

The point of the project was to build the parts an IDE is usually assumed to have — syntax-aware editing, diagnostics, a debugger, source control — rather than to wrap an existing editor component and ship it.

What it does

Editing

  • Tabbed editor with split panes, built on QScintilla
  • Syntax highlighting with per-language lexer mapping
  • Code folding, breakpoint margins and an edge-line marker
  • Ctrl+click jump-to-definition via a symbol index built from the file
  • Comment toggling, fold-all and a configurable indentation model
  • Minimap and a command palette

Project and navigation

  • Open a folder as a project, with a file-system tree and recent projects
  • Find in files across the project
  • Status bar and a command palette for keyboard-driven navigation

Tooling

  • Language-server bridge (python-lsp-server) for diagnostics and completion
  • Linting with pyflakes and formatting with black
  • Debugger integration through debugpy
  • Git integration through GitPython
  • Embedded xterm terminals in a bottom panel, as reorderable tabs

Extensibility

  • Plugin system with the formatter, linter and git features implemented as plugins
  • Theme support with settings persisted between runs

Download

Source archive

Any platform

Run from source with Python 3 — see the steps below.

Download

Requirements

  • Python 3 with PyQt5 and QScintilla
  • xterm, for the embedded terminal panel
  • Linux — the terminal panel uses X11 window embedding

Installing

Run from source

tar -xzf pymightyfalcon-source.tar.gz
cd pymightyfalcon
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python src/main.py

The embedded terminal panel needs xterm installed on the system.

Source code

https://gitlab.com/dusan.atanackovic.pydev/pymightyfalcon

The repository is private. If you would like to look through the code, get in touch and I will grant access.