Perlnow Version 0.4
The new code is available here (a beta-ish release: 0.41):
http://obsidianrook.com/perlnow/code/
Some documentation is here:
http://obsidianrook.com/perlnow/index_docs.html
o Brief intro to perlnow
o automates a few routine tasks -- the idea
is that when you've got an idea, it makes it
easier for you to jump into working on it.
There are commands for module and script creation,
as well as commands to check, debug and run (or run tests).
As you work with perlnow it tries to do an intelligent
job of guessing run-strings for these tasks.
It makes heavy use of a simple (though unfortunately
non-standard) templating package: template.el
o This version of perlnow (the 0.4 release) has many
bugs fixed (and no doubt many bugs introduced, though
hopefully small ones [1]), and some notable features added.
o perlnow-check now has a variant, perlnow-check harder, bound to:
C-u C-c \ c
perlnow-check just does a "perl -cw", the "check harder" version
other also runs "podchecker" and "perlcritic".
I think this could be my "killer-app". Nothing else
here is likely to improve your life as a perl coder as
much as this.
I'm really happy with that UI idea of using the standard
emacs prefix command (C-u) to mean "run this harder", or
"more thoroughly". I've been working on using that
through out perlnow.
o perlnow-module-starter. The original perlnow had a front
end to "h2xs": now there's a similar one for "module-starter".
This defaults to "Module::Build" and presumes you're creating
object-oriented modules, but both defaults can be changed.
If you're the kind of person who generates a new
cpan-style project every hour or so, that will no doubt be
tremendously useful.
o support for multiple numbered test files.
Older versions of perlnow tended to presume
a test file naming style like "t/Modular-Stuff.t"
(That was the h2xs default, which is where I picked it up).
In reality, standard practice is closer to:
t/00-basic_modstuff.t
01-heavy_modstuff.t
02-even_stuffier.t
(The way I had been using perlnow.el, I just
used "Modular-Stuff.t" as an initial name, and manually
re-named it when I wanted to move on to another *.t)
Now if you have something like a cpan-style project
with numbered tests in one t directory, the usual "edit
test" command will look for the highest numbered test
file. And doing an "edit test" with the "harder"
prefix, "C-u", will open up a menu showing all of the
test files.
o Removing small annoyances can have larger effects on the way you work.
For me, the barrier to starting a script is lower,
so that's what I do when I want to try out a code snippet.
Because of this habit I've got a directory full of
experimental code demos, essentially a private cookbook
I can refer back to.
o Other small features:
perlnow-ack (Note: there's already an "ack.el"
and perlysense has ack features, too.)
perlnow-revise-test-plan
perlnow-revise-export-list
perlnow-insert-sub
Some Demos
o Multiple-test file handling:
Open ~/End/Cave/EmacsPerl/Wall/Emacs-Run/lib/Emacs/Run.pm
(a Module::Build-based, CPAN module)
C-c / t Note, opens up 08-*.t, the highest numbered file.
C-c / b Back to the module.
C-u C-c / t Doing it "harder" opens a menu of existing test files.
Desired feature:
C-c / r Should guess you want to run a single test file.
C-u C-c / r Should guess you want to run all tests
C-u C-u C-c /r Should guess you want to run all tests recursively.
o Exporter-based demo:
C-c / m
C-c / i do this several times to create some simple subs
C-c / t Creates a test. Note FindBin/use lib,
Write a test, checking the return of the simple subs.
C-c / r run the test - fails: duh, subs aren't exported
C-c / b back to *.pm
M-x perlnow-revise-export-list automatically adds all
subs to %EXPORT_TAGS, :all
C-c / b back to *.t
add more tests, until test count is wrong.
M-x perlnow-revise-test-plan automatically fixes the
test count
footnotes
- One of the nice things about working on code to remove small
annoyances: if it doesn't work, the work-around is by definition
only a small annoyance.
Joseph Brenner,
22 Sep 2009