views:

523

answers:

18

As some of you might know I am the lead developer of Padre, the Perl IDE. In the first year of its development Padre became an acceptable text editor with some extra features for Perl development.

I'd like to ask the Stack Overflow community for some help in driving the project further to turn it into an exceptional IDE for Perl development. So I'd be glad to read what do you think what are the most important features of an IDE that are still missing from Padre?.

Especially I'd be interested from people who currently use Eclipse+EPIC, Komodo, Visual Studio or any of the text editors for programmers.

+5  A: 

The two most invaluable features I find:

  • line-by-line debugging, watchpoints, breakpoints and so on, so I can properly debug my code.
  • code completion so I don't have to go looking up docs (even online).
paxdiablo
+2  A: 

The first thing I look for is some kind of overview over the currently active file. I'd like to see methods/functions and, if possible, the use'd modules and escpecially any use base statements.

You solved that pretty well in Padre.

innaM
+11  A: 

The most important feature of an IDE for Perl development (including Padre) is:

an interactive debugger that actually works. E.g. remembering breakpoints, ability to drill down into complicated data structures, copy (to clipboard) should work on watched variables - including a menu command Copy Special that allows putting it in various formats; say CSV, XML or tab separated.

Peter Mortensen
+7  A: 

I am a heavy Perl EPIC user and my biggest gripe is not being able to jump to a function that is clearly defined in the current context (usually by pressing F3). It is pretty much hit or miss at this point.

Artem Russakovskii
+1 Padre wouldn't need to implement this from scratch, either. It could use ctags.
Michael Carman
A: 

Integration of a read-eval-print loop. As a heavy Emacs user, I very much appreciate Sepia. Very useful for trying things out before I commit them to code.

hillu
+1  A: 

Visual-Studio style refactoring for variables and function names and extraction of functions. Visual studio searches your whole module for all references and allows you to see all changed lines in case you do not want to change one instance (for whatever reason)....

weismat
As probably none of the current Padre developer have Visual Studio could you describe these refactoring tools in a bit more detail? Either here or an e-mail to me? ([email protected])
szabgab
I think it is easiest if you download the free windows version from http://www.microsoft.com/express/product/default.aspx. I am personally using C#. Please let me know if you need some screenshots.
weismat
OK - it is named Lexically Rename Variable - but I do not manage to get it working as in C# - I have sent you some screenshots anyway.
weismat
thanks for the screenshots, I opened tickets http://padre.perlide.org/trac/ticket/492 http://padre.perlide.org/trac/ticket/494 but you have to explain what is not working for you in Lexically Rename Variable so we can either explain how it works or fix it.
szabgab
+3  A: 

Good VCS integration. This is something that I absolutely love in Eclipse: You instantly see what files have local changes and which aren't added to the repository yet. And you get to browse the different versions and have a nice diff view just one mouse click away.

innaM
+1  A: 

This can be possibly achieved via use strict; but could be as well a valuable feature even if not use'd explicitly, namely:

the other day we spent about 10-20 minutes debugging the following behavior:

my %hash;

$hash->{'key1'} = value1;

# on reading in different module
print $hash{'key1'}; # is of course empty, but was so easy to overlook in the code above

resume: proper Perl type safety brought in by the IDE.

It might be already implemented in Padre, though, as it turned out not in Eclipse+EPIC

D_K
I think the correct solution here would be to tell the user he has to use strict with an appropriate reference to the car analogy. Something along the lines of not letting your child go without the belt on. Without that you cannot tell if the user really has both a %hash and a $hash. (though we could have special warnings for not using the same variable name for both scalars and hashes or arrays)
szabgab
Well, that certainly makes sense. The case that I described has happened in front of tired eyes of two rather experienced Perl-developers. Somehow it was very easy to forget the strict'ing and there you go.On the other hand -- the case demonstrates some more deep problems related to Perl itself, like weak type safety. So I thought these types of simple problems could be solved via the IDE (or a plugin for sanity checks).
D_K
+3  A: 

A project manager. It's essential for me to be able to define the set of files and folders that comprise a particular codebase. Sessions are useful but not a replacement.

Michael Carman
Agreed! And a decent project manager shouldn't even be too hard to implement. Besides, the competition is pretty weak. Komodo IDE's project are mind-boggling, counter intuitive and the feature clashes with their own VCS integration. EPIC/Eclipse don't have anything like that that I'm aware of.
innaM
EPIC/Eclipse has projects (or at least something called "project"). I remember because the last time I tried it syntax highlighting didn't work unless a file was in a project, which irritated me to no end.
Michael Carman
Padre has a (partially implemented) but automatic project management. Any directory structure that looks like a CPAN module is treated as a project without any manual configuration. Meaning any directory where there is a Makefile.PL or Build.PL is considered the root of the project. What would you like to see as project management?
szabgab
@Michael: Duh! You're right. I used to use the projects as some sort of file browser. The requirement that everything must be in some sort of project and that projects don't like it when the live outside of your workspace is, err...., suboptimal.
innaM
@szabgab: The essential functionality is to be able to define a set of files, directories (which implicitly includes their contents, possibly with filtering), and logical groupings (virtual folders which can contain files and directories). There should be a tree view for browsing and opening the files in the project and a mechanism for switching between projects. Having a root directory is useful (particularly if you relocate the data) but files shouldn't have to be under the root to be in the project. Anything else is gravy: e.g. building, running the test suite, or creating the distribution.
Michael Carman
+1  A: 

The ability to configure and run external (command-line) tools. Plug-ins are great but end-users won't necessarily want to author one just to integrate with an external tool. Allowing users to configure their own tools provides a great deal of extensibility with minimal barriers to entry.

My editor of choice is UltraEdit. It's not an IDE, but through its support for user tools I've been able to integrate IDE features such as lint, version control, debugging, and more.

Michael Carman
+6  A: 

OK, here's my third answer, although I hate to say it.

The competition is pretty easy to install. Padre isn't. I tried to update to the latest release today and, once again, got failing tests.

innaM
We know we need simple installer, we already have it on Windows and one day we will have it on Linux and MacOSX as well. We just need some help with that.In the meantime: What tests are failing? Those of Padre or some prereq? On what OS? Have you reported the failing tests?
szabgab
Don't worry. I know you folks are working on this and I was going to give your ticket system a go today. But since you asked what features I am looking for in a Perl IDE, I (hesitantly) answered.
innaM
For the public record: the bug was fixed a couple of minutes before I tried to report it.
innaM
+2  A: 

Stability. People turn away quickly if their editor crashes and they loose their work.

Kai Bäsler
A: 

Ability to create and debug XS code.

Przemek
A: 

Line ending policies for files, by directory, and project wide.

So, for a given project or directory, I'd like to make all line endings be LF only. While in another directory I may wish to have a mix of CRLF and LF files.

I work a lot on stuff that goes back and forth between Unix and Win32 environments.

The typical solution of automatically converting all files back and forth as one moves from platform to platform hasn't worked well for me.

When a file gets created in the wrong format by accident, it can be a real pain.

daotoad
+3  A: 

Testing integration.

Perl has great unit testing tools. When I run my test suite, and get a failure, I want to see the code for the test that failed.

Having a good way to jump through test results and see the code for the failed test along with the expected and actual results would be a great boon.

daotoad
A: 

I don't know if Padre can do this, but the ability to split the screen is very important to me. As a VIM user I constantly split my screen to look at another file while coding.

projecktzero
A: 

The ability to use my own choice of editor (which it may have, as far as I know). That has a chance of winning over the vim/emacs people.

David Thornley
A: 

I work with Komodo. I also use other editors but I come back to Komodo most of the time. A good IDE shoud have:

  1. A good Debugger. Breakpoints, watch lists, everything you need.
  2. Remote debugging. Threads debugging capability.
  3. Syntax highlighting including weighted fonts as well ( I was pretty disappointed by Oxygen for example, a XSLT IDE, where I can not use bold fonts to emphasise reserved terms)
  4. Syntax completion.
  5. Project management tools, preferable extendable by plugins.
Val