Saturday, February 23, 2008

Some ideas for PIDA IDE

During some months, I was switching between different editors and IDE:
All of them have very good features but there is a different feeling for me with PIDA ... Don't know exactly why, perhaps Python, PyGtk and Vim together and because PIDA is smooth with its nice GUI.

From PIDA web site:
PIDA is an IDE (integrated development environment). PIDA is different from other IDEs in that it will use the tools you already have available rather than attempting to reinvent each one. PIDA is written in Python with the PyGTK toolkit, and although is designed to be used to program in any language, PIDA has fancy Python IDE features.

The best is to see by yourself, just download PIDA here and use it you will be very surprised and soon addicted to it !

I rapidly wish to contribute to his project but unfortunately my knowledge of Python and PyGTK is to limited at present time to do something very useful. Never mind, during my quest I grab some of the best features I like in each IDE and put them here like a wish list or future development ideas for PIDA.

Sorry, this a draft but here we go .... feel free to leave comments !

Project plugin

PIDA has already a very good project management plugin. A feature I see in Jedit and Open Komodo is a tree like display for different groups of projects. The user can define different groups of projects and for each group you can also define subgroup and so on.

See screenshots below to have a idea of what I mean. Perhaps this is a feature that would be interesting to see in PIDA.



Plugins manager

  • Display the release date of the plugin in a column to see recent released plugins
  • Display a check button in column to be able to select more than one plugin to install
  • Display only upgradeable or not already installed plugins in the available plugins tab
Perhaps something like those screenshots:





External tools plugin


Run external programs on the current :
  • file
  • selection
  • line
  • word under cursor
  • ..

to manipulate text by putting it through an external command and displays the resulting output:

  • in a terminal
  • in a new file
  • as a replacement of the current file
  • as a replacement of the current selection
  • after the cursor in the current file

Ability to define:

  • global tools
  • per project tools
  • per file type (c, python, html, ...) tools.

Possibility to share the tools with the community like with the Snippet plugin.

Something in the spirit or similar to Textmate Bundles or Gedit external tools.

Some screenshots from Open Kommodo to see how they have implemented such features:

  • First define a command to be run:


  • Say for example that a find in file command as been defined, you can see it in the toolbox pane on the right:
  • A right click to see the properties of this command or tool and you can now modify the command used:
  • A another gui idea from Jedit:


  • some ideas from Gedit:




You can work on different input


and different output



Documentation viewer plugin

PIDA has already a very good documentation viewer plugin, you can see html docs and even browse the web with it !


This a must, and the only other interesting features for me are:
  • history under go-back and go-forward button (like Firefox)
  • bookmarks and bookmarks manager
Sometimes docs are in pdf, it may be useful to have a pdf viewer directly embedded in PIDA and to be able to copy and paste some text from the pdf document to the text area.

See the very good pdftexpreview plugin.
Thanks Tobias !

Terminal or commander plugin

Eureka ! What a great plugin ... I was looking for an IDE with this simple but so powerful feature for months and finally found it in PIDA.

You can have a REAL terminal just under your vim buffers isn't it sooo cool ?! Up's sorry not realy a terminal but it's better to say, one, two, three or the number of terminals you want .... and you can switch easily between the text area and the terminals with just one keyboard shortcut ... yeah ... cool.


One of the possible enhancements may concern the ability to define some terminal profiles like in gnome-terminal or konsole.

Profile parameters may include:
  • colors (background, text)
  • terminal font
  • program run: ssh, ipython, etc ...

Perspectives plugin

Ability to define, save or load the state of PIDA:
  • which plugins are enable
  • where they are docked, etc ...
For example define a perspective for Python development with Python and Python debugger enable on the right area of PIDA with a terminal running ipython on the bottom area. Define another perspective for C or remote editing on a server ...

Perhaps see the way Eclipse has implemented those kind of features.


Bookmarks plugin

With PIDA you have the ability to save favorites folders or files with the bookmark plugin.
Perhaps it will be interesting:
  • to have the bookmarked folders available in the file browser plugin.
  • to define a shortcut for each file bookmark

Shortcuts plugin

Sometimes it's useful to see the available shortcuts when you start on or two key combination.
Say for example that you type C+e then the user will see the available command and the corresponding shortcut that start with C+e.



Perhaps warn the user that a shortcut is already defined

Ctags plugin


A plugin like the excellent Python source viewer but for other languages:

  • perhaps based on ctags
  • Ability to browse the code with the mouse and the keyboard
Include the source code browser with the project viewer plugin to directly browse source file within the project viewer ?

Image viewer plugin

Sometimes when editing asymptote, tikz, pstricks pictures or latex document you can feel the need to have the image viewed near the text edited. Just like the the pdftex preview plugin for latex document.

Rest or txt2tags plugin

Perhaps use the documentation viewer or pdftex plugin to see the preview of document typset using rest or text2tags markup languages.

Snap open files/buffers plugin

A regex open file dialog that looks like that of Textmate. See for example fuzzyfinder for Vim or SnapOpen for Gedit


Personal Menu plugin

I know it's not the philosphy of PIDA but sometimes it's useful to keep or see the original menu of the editor embeded in PIDA.

  • Define an Editor root menu ?
  • Let the user define his personal menu