* DESCRIPTION (-*- allout -*- mode) Sepia is a set of features to make Emacs a better tool for Perl development, including: * an interactive prompt (REPL) for evaluating code; * cross-referencing to find and navigate between function and variable definitions and uses; * variable- and function-name completion. * eldoc support to echo function arguments in the minibuffer * functions to simplify POD browsing with Emacs-w3m I find Emacs as a software development environment preferable to many modern IDEs, particularly when using a richly-supported language like Lisp or Emacs Lisp. Sepia is my attempt to give Perl a similar degree of support "in the Emacs way," which represents 40 years' collective experience of the software development community. I have therefore tried throughout to use or mimic existing Emacs functionality, rather than to create something new. * INSTALLATION 1) run "perl Makefile.PL; make; make install" 2) optionally, install the Emacs-w3m and tree-widget packages: http://emacs-w3m.namazu.org/ http://emhacks.sf.net/ 3) put the elisp files somewhere Emacs will find them. * RUNNING In Emacs, type M-x load-library RET sepia RET M-x sepia-init RET to start the interpreter. For other features that require additional emacs packages, you will have to manually load sepia-w3m and sepia-tree. Probably the most useful part of the package is the cross-reference facility. Since it can take several seconds to create, and become outdated when the program changes, it must be built explicitly by M-x sepia-rebuild RET Type C-h f sepia-init RET to get a list of Sepia functions. The xref functions will look up zero or more source locations, then allow you to cycle through them with "M-x sepia-next". With a prefix argument, the functions will instead display a grep-mode buffer listing all the hits, from which you can then navigate. * TODO .- (Easy) Use module, file, and line number to refine queries on the Perl side. .- (Hard) Use module, file, and line number to filter results on the Emacs side. .- (Easy) Clean up Perl side a bit more. .- (Medium) Better documentation for Elisp side. .- (Medium) Get the variable def/use analysis working again. * BUGS .- Function definition lines may occasionally all go completely wrong. Rebuilding the Xref database fixes this. .- The cursor may miss by several lines when jumping to a definition. This is hard to fix -- Perl doesn't give exact line numbers for sub defs, so we have to do some minor regex-searching. .- `sepia-var-assigns' doesn't work yet -- don't use it. .- named method calls are (mostly?) detected, but nothing smart is done about packages, so e.g. "new Foo" will result in listings for every instance of "new" in your program. * CREDITS Sepia would never have been possible without Software Libre, as many key components have been stolen and adapted from other packages: * Sepia::Xref is taken from B::Xref. * sepia-w3m is taken from w3m-perldoc.