It's been a while since I could do some proper hacking on fun code. Whenever I had
spare time recently, I had to spend it on maintenance work. It's been even longer
since I could hack on new features for Padre. Over five months, to be exact. In
such a long time span, it's easy to forget lots of details about the code and its
design. That is the case particularly for such a quickly evolving project.
After my first glance at the code today, I felt like I was starting from zero.
But in the end, I managed to implement a couple of new features that I'm quite satisfied
with. This gentle slope of a learning curve demonstrates one of the enormous
strengths of the project: Most of the code is quite straightforward and easy to understand.
Newbies get up to speed quickly and adding features is a breeze. It's simply fun.
Within a few hours, I improved on Gabor's recent "Find method declaration" feature
in that it can now use the "perltags" file that is already used for class name
and method auto-completion. This makes the determination of the file in which
the selected method was declared a lot more robust. Too bad we can't look into
Perl scalars with static analysis. This currently works only for class method syntax
a la class->method. It's still an order of magnitude faster to use than
searching files manually.
Next on my list was adding an XS document type with "calltips" support for the
perl interpreter API. Now, when you open an XS file in Padre, you will, among other
horrors, get shitty syntax highlighting because it's only recognized as a C source
file. But at least Padre can now show you the documentation of the perlapi macro
that you're hovering your cursor over. Trust me, that can be a salvation for
misremembering, constantly perlapi-rereading and misreading XS neophytes like
myself. We have a long way to go to make Padre a useful editor for XS and C,
but I'm optimistic. It just so easy to get started that I can relearn the code
base once every few months .
 "Easy to understand" doesn't necessarily mean that it's all great or elegant
code. The code quality in the project varies greatly. Usually, the initial, hackish
implementations are redesigned and refactored into good APIs as the need arises.
 Think "exuberant ctags", but for Perl. Generated with the Perl::Tags module.
Thanks to osfameron for promptly uploading a new version.
 Next up, I'd like to add multiple copies of the perlapi docs. One for each
release of perl. The user would then select the version of perl he's developing
for and get the correct documentation automatically. Eventually including all the
backported constructs from ppport.h. Help welcome.