GitXplorerGitXplorer
A

porcupine

public
163 stars
49 forks
218 issues

Commits

List of commits on branch main.
Verified
b6ea2acb9b4786f226dbaec6d234130ffd5788af

Fix trailing newline (#1518)

MMoosems committed 3 months ago
Verified
229d8cd2046fc1fef78e1d5e49d7380390ff904e

Fix simple terminal (st) run command in external window (#1514)

88manz committed 7 months ago
Verified
7b6d7e884b46778c74a6f8ddb51a292d59078cf2

Update directory_tree.py: Fixed double clicking (#1512)

ccelltoolz committed 7 months ago
Verified
fb0534b719a90242b571d102d9a2cc9232c816d0

Delete platformdirs dependency (#1511)

AAkuli committed 7 months ago
Verified
d17ae9dd3a1f4c7f0f1af2c13afa929427a64bd6

Improve pluginloader docstrings (#1509)

AAkuli committed 7 months ago
Verified
9be57652c233623e215eedd4f15910666a7df77c

Delete toposort dependency (#1507)

AAkuli committed 8 months ago

README

The README file for this repository.

Porcupine

Porcupine is an editor written with the notorious Tkinter library. It supports most things you would expect from an editor, such as autocompletions and syntax highlighting.

Screenshot.

Most important features:

  • Syntax highlighting (supports many programming languages and color themes, extensible)
  • Autocompletions when pressing tab
  • Jump to definition with Ctrl+click
  • Langserver support
  • Editorconfig support
  • Git support
  • Compiling files inside the editor window
  • Running files in a separate terminal or command prompt window
  • Automatic indenting and trailing whitespace stripping when Enter is pressed
  • Indent/dedent block with Tab and Shift+Tab
  • Commenting/uncommenting multiple lines by selecting them and typing a #
  • Highlighting matching parentheses
  • Line numbers
  • Line length marker
  • Find/replace
  • Code folding
  • Multiple files can be opened at the same time like tabs in a web browser
  • The tabs can be dragged out of the window to open a new Porcupine window conveniently

Porcupine's design makes it very easy to customize. Almost everything is implemented as a plugin that can be disabled easily, but if you know how to use Python and tkinter, you can also make your own plugins. Porcupine plugins are so powerful that if you run Porcupine without any plugins, it looks like this:

Screenshot of porcupine without plugins 1

Screenshot of porcupine without plugins 2

Installing Porcupine

Development Install

See CONTRIBUTING.md for development instructions.

Debian-based Linux distributions (e.g. Ubuntu, Mint)

Open a terminal and run these commands:

sudo apt install python3-tk python3-pip python3-venv
sudo apt install --no-install-recommends tkdnd    # for drop_to_open plugin
python3 -m venv porcupine-venv
source porcupine-venv/bin/activate
pip install wheel
pip install https://github.com/Akuli/porcupine/archive/v2024.03.31.zip
porcu

To easily run porcupine again later, go to Settings --> Porcupine Settings and check "Show Porcupine in the desktop menu system". This makes Porcupine show up in the menu just like any other application.

You can uninstall Porcupine by unchecking "Show Porcupine in the desktop menu system" in the settings and then deleting porcupine-venv.

Other Linux distributions

Install Python 3.9 or newer with pip and tkinter somehow. If you want drag and drop support, also install tkdnd for the Tcl interpreter that tkinter uses. Then run these commands:

python3 -m venv porcupine-venv
source porcupine-venv/bin/activate
pip install wheel
pip install https://github.com/Akuli/porcupine/archive/v2024.03.31.zip
porcu

To easily run porcupine again later, go to Settings --> Porcupine Settings and check "Show Porcupine in the desktop menu system". This makes Porcupine show up in the menu just like any other application.

You can uninstall Porcupine by unchecking "Show Porcupine in the desktop menu system" in the settings and then deleting porcupine-venv.

MacOS

I don't have a Mac. If you have a Mac, you can help me a lot by installing Porcupine and letting me know how well it works.

I think you can download Python with tkinter from python.org and then run the commands for "other Linux distributions" above.

Windows

Download a Porcupine installer from the releases page and run it. Because I haven't asked Microsoft to trust Porcupine installers, you will likely get a warning similar to this one:

Windows thinks it protected your PC

You should still be able to run the installer by clicking "More info". When installed, you will find Porcupine from the start menu.

Documentation

If you have just installed Porcupine, have a look at user-doc/getting-started.md. If you want to develop Porcupine, see CONTRIBUTING.md or dev-doc/architecture-and-design.md.

Most of Porcupine's documentation is markdown files in two folders:

FAQ

What's new in the latest Porcupine release?

See CHANGELOG.md.

Does Porcupine support programming language X?

You will likely get syntax highlighting without any configuring, and autocompletions with a few lines of configuration file editing. See this documentation.

Help! Porcupine doesn't work.

Please install the latest version. If it still doesn't work, let me know by creating an issue on GitHub.

Is Porcupine written in Porcupine?

Yes. I wrote the very first version in nano, but Porcupine has changed a lot since.

Why is it named Porcupine?

I think because I didn't find other projects named porcupine, but I don't remember exactly. Originally, Porcupine was named "Akuli's Editor".

I want an editor that does X, but X is not in the feature list above. Does Porcupine do X?

You can run Porcupine and find out, or create an issue on GitHub and ask. If you manage to make me excited about X, I might implement it.

Why did you create a new editor?

Because I can.

Why did you create a new editor in tkinter?

Because I can.

How does feature X work?

See porcupine/X.py or porcupine/plugins/X.py.

Why not use editor X?

Because Porcupine is better.

Is Porcupine based on IDLE?

Of course not. IDLE is an awful mess that you should stay far away from.

Is Porcupine a toy project or is it meant to be a serious editor?

Porcupine is meant to be a serious editor, in fact you might regret even touching it. https://www.youtube.com/watch?v=Y3iUoFkDKjU