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

  1. 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