Make LWP::Simple optional.
[sepia.git] / sepia.info
blob783ed3c944650db1c3d5026cc416ea4a1988261a
1 This is sepia.info, produced by makeinfo version 4.8 from sepia.texi.
3 INFO-DIR-SECTION Emacs
4 START-INFO-DIR-ENTRY
5 * Sepia: (sepia).    Simple Emacs Perl Integration.
6 END-INFO-DIR-ENTRY
8 \x1f
9 File: sepia.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
11 SEPIA
12 *****
14    Sepia is a set of Perl development tools for Emacs supporting code
15 navigation and interactive evaluation.
17 * Menu:
19 * Introduction::
20 * Editing::
21 * Interactive Perl::
22 * CPAN browsing::
23 * Customization::
24 * Internals::
25 * Credits::
26 * Function Index::
27 * Variable Index::
29 \x1f
30 File: sepia.info,  Node: Introduction,  Next: Editing,  Prev: Top,  Up: Top
32 1 Introduction
33 **************
35 Sepia is a set of tools for Perl development in Emacs.  Its goal is to
36 extend CPerl mode to support fast code navigation and interactive
37 development.  It is inspired by Emacs' current support for a number of
38 other languages, including Lisp, Python, and Emacs Lisp.
40 * Menu:
42 * Getting Started::
43 * Philosophy::
44 * Related Work::
46 \x1f
47 File: sepia.info,  Node: Getting Started,  Next: Philosophy,  Prev: Introduction,  Up: Introduction
49 1.1 Getting Started
50 ===================
52 To install Sepia, its Emacs Lisp files must be in Emacs' `load-path',
53 and the `lib' directory must be in Perl's `@INC'.  Assuming that Sepia
54 has been unpacked in `~/sepia', it can be installed by adding the
55 following lines to `~/.emacs':
57      (add-to-list 'load-path "~/sepia")
58      (setq sepia-perl5lib (list (expand-file-name "~/sepia/lib")))
59      (defalias 'perl-mode 'sepia-mode)
60      (require 'sepia)
62    Then to bring up the interactive Perl prompt, type `M-x sepia-repl'.
64 \x1f
65 File: sepia.info,  Node: Philosophy,  Next: Related Work,  Prev: Getting Started,  Up: Introduction
67 1.2 Philosophy
68 ==============
70 A development environment should support three activities: code
71 spelunking, interaction, and customization.  Emacs as an environment for
72 developing Emacs Lisp thoroughly supports all of them: It has commands
73 to visit individual functions' code and documentation, commands to
74 evaluate or step through expressions, and an architecture that
75 encourages customization in Emacs Lisp.  As an environment for Perl,
76 however, it is lacking: there is limited interactivity with the Perl
77 debugger, and reasonable documentation browsing, but no support for
78 navigating, editing, and re-evaluating code.  Sepia attempts to remedy
79 the situation.
81    Modern IDEs also support these three activities, but do so awkwardly.
82 Rather than having functions to visit definitions (`find-function') and
83 search for functions (`apropos'), they clutter the screen with class
84 and file trees.  Rather than supporting interactive evaluation of small
85 pieces of code, they perform background semantic checking on whole
86 projects and highlight errors.  Rather than allowing minor
87 customizations to grow organically into features, they support limited
88 configuration files and baroque plug-in APIs.  Sepia tries to adhere to
89 the apparent Emacs philosophy that rich semantic information should be
90 unobtrusive, and that the best way to build working code is to start by
91 experimenting with small pieces.
93    Language support packages for Emacs vary widely in the degree to
94 which they make use of or replace existing Emacs features.  Minimal
95 modes provide keyword-based syntax highlighting and an unadorned comint
96 buffer as an interpreter.  Others provide their own specialized
97 equivalents of comint, eldoc, completion, and other Emacs features.
98 Sepia takes a third approach by trying to do as much as possible with
99 existing Emacs features, even when they are not optimal for Perl.  For
100 example, it uses comint to communicate with the subprocess, eldoc to
101 display documentation, and grep to list source locations.
103    This approach has three advantages: First, it maximizes the number of
104 features that can be supported with limited development time.  Second,
105 it respects users' settings.  A seasoned Emacs user may have changed
106 hundreds of settings, so a mode that reimplements features will have to
107 support equivalent settings, and will force the user to re-specify them.
108 Finally, this approach respects decades of development spent, as Neal
109 Stephenson put it, "focused with maniacal intensity on the deceptively
110 simple-seeming problem of editing text."  Many non-obvious choices go
111 into making a polished interface, and while a reimplementation gets rid
112 of accumulated cruft, it must rediscover these hidden trade-offs.
114    Anyways, I hope you enjoy using Sepia.  Its development style is
115 strange for someone used Perl's typical mix of one-liners and
116 edit-save-run, but once you are accustomed to it, you may find it very
117 effective.
119 \x1f
120 File: sepia.info,  Node: Related Work,  Prev: Philosophy,  Up: Introduction
122 1.3 Related Work
123 ================
125 A number of more-or-less related Emacs extensions are currently under
126 development.  Here is a list of the ones I have heard about, along with
127 my brief impression of how they differ from Sepia.  Since I use none of
128 them regularly, these impressions should be taken with a grain of salt.
130 `PDE'
131      PDE is similar to Sepia in offering an interactive Lisp-like
132      development environment interfacing with a long-running Perl
133      process.  It seems more ambitious, and therefore a bit more
134      invasive.
136      `http://search.cpan.org/search?query=pde&mode=module'
138 `Devel::PerlySense'
139      Devel::PerlySense offers a more Eclipse-like development
140      environment, with offline code analysis via PPI.
142      `http://search.cpan.org/search?query=devel::perlysense&mode=module'
144 `Emacs::EPL'
145      Emacs::EPL is a low-level IPC interface between Emacs and Perl.
146      Sepia was originally based on Emacs::EPL, but the current
147      `comint'-based implementation proved more maintainable.
149      `http://search.cpan.org/search?query=emacs::epl&mode=module'
152 \x1f
153 File: sepia.info,  Node: Editing,  Next: Interactive Perl,  Prev: Introduction,  Up: Top
155 2 Editing
156 *********
158 Sepia's first contribution is a set of commands to explore a Perl
159 codebase.  These include commands to browse and display documentation,
160 to find function definitions, and to query a cross-reference database of
161 function and variable uses.  Sepia also provides intelligent symbol
162 completion.
164 * Menu:
166 * Completion::
167 * Navigation::
168 * Documentation::
169 * Other commands::
171 \x1f
172 File: sepia.info,  Node: Completion,  Next: Navigation,  Prev: Editing,  Up: Editing
174 2.1 Completion
175 ==============
177 Sepia implements partial-word completion that communicates with the
178 inferior Perl process.  For example, `%S:X:v_u' completes to
179 `%Sepia::Xref::var_use' when Sepia is loaded.  This completion only
180 operates on functions and global variables known to the Perl
181 interpreter, so it works best when code and interpreter are in sync.
183    More precisely, completion examines the text before point and tries
184 each of the following in turn, using the first successful approach:
186   1. If the text looks like a method call (e.g. `$object->f' or
187      `Class->f'), complete on methods.
189   2. If it looks like a variable (e.g. `%hash' or `$scalar'), complete
190      first on lexical, then global variables.
192   3. Complete on modules and functions.
194   4. Otherwise, complete on Perl built-in operators.
196    For each of the first three cases, completions candidates are first
197 generated by splitting the text on characters `[:_]' and matching the
198 resulting word parts.  For example, `X:a_b' will complete to all
199 symbols matching `^X[^:]*:+a[^:_]*_b' such as `Xref::a_bug' and
200 `X::always_bites_me'.  If no matches result, the text is treated as an
201 acronym.  For example, `dry' will complete to `dont_repeat_yourself'.
202 _Note: partial-word completion is not currently supported for lexicals._
204    Completion is performed by the following commands:
205 `M-x sepia-complete-symbol'
206      Complete the symbol before point as described above.  This is
207      always case-sensitive, independent of `completion-ignore-case'.
209 `TAB'
210 `M-x sepia-indent-or-complete'
211      First try to reindent the current line.  If its indentation does
212      not change, then try to expand an abbrev at point (unless
213      `sepia-indent-expand-abbrev' is `nil').  If no abbrev is expanded,
214      then call `sepia-complete-symbol'.
217 \x1f
218 File: sepia.info,  Node: Navigation,  Next: Documentation,  Prev: Completion,  Up: Editing
220 2.2 Navigation
221 ==============
223 Sepia provides several commands for navigating program source.  All of
224 them rely on information from the inferior Perl process, so it is
225 important both that it be running, and that its internal representation
226 of the program match the program source.  The commands marked (Xref)
227 below also rely on a cross-reference database, which must be explicitly
228 rebuilt by calling `xref-rebuild' when the program changes.
230    There are two basic kinds of navigation commands.  The first kind
231 jumps directly to the first matching location when possible, prompting
232 only if no such location is found.  These commands find only a single
233 location.
235 `M-. M-.'
236 `M-x sepia-dwim'
237      Guess what kind of identifier is at point, and try to do the right
238      thing: for a function, find its definition(s); for a variable,
239      find its uses; for a module, view its documentation; otherwise,
240      prompt for the name of a function to visit.  `sepia-dwim'
241      automatically goes to the first function definition or variable
242      use found.
244 `M-. l'
245 `M-x sepia-location'
246      Jump directly to the definition of the function at point,
247      prompting if point is not on a known function.  If multiple
248      definitions are found, choose one arbitrarily.  This function is
249      similar to `sepia-defs', and the two should probably be merged.
251 `M-. j'
252 `M-x sepia-jump-to-symbol'
253      Navigate to a function using "ido" interactive completion.  Within
254      interactive completion, press <:> to descend into a package, <DEL>
255      to ascend to a parent package, and <RET> to go to the
256      currently-selected function.
259    The second kind of navigation commands always prompts the user -
260 though usually with a sensible default value - and finds multiple
261 locations.  When called with a prefix argument, these commands present
262 their results in a `grep-mode' buffer.  When called _without_ a prefix
263 argument, they place all results on the found-location ring and jump
264 directly to the first.  The remaining locations can be cycled through by
265 calls to `sepia-next'.
267 `M-. f NAME <RET>'
268 `M-x sepia-defs'
269      Find definition(s) of function NAME.
271 `M-. m NAME <RET>'
272 `M-x sepia-module-find NAME <RET>'
273      Find the source of module NAME.
275 `M-. a REGEXP <RET>'
276 `M-x sepia-apropos REGEXP <RET>'
277      Find definitions of all functions whose names match REGEXP.
279 `M-. c NAME <RET>'
280 `M-x sepia-callers NAME <RET>'
281      (Xref) Find calls to function NAME.
283 `M-. C NAME <RET>'
284 `M-x sepia-callees NAME <RET>'
285      (Xref) Find the definitions of functions called by NAME.
287 `M-. v NAME <RET>'
288 `M-x sepia-var-uses NAME <RET>'
289      (Xref) Find uses of the global variable NAME.
291 `M-. V NAME <RET>'
292 `M-x sepia-var-defs NAME <RET>'
293      (Xref) Find definitions of global variable NAME.  Since Perl's
294      global variables are not declared, this is rarely useful
297    Finally, there are several other navigation-related commands that do
298 not fit into either of the above categories.
300 `M-,'
301 `M-x sepia-next'
302      Cycle through the definitions found by the previous <M-.> search.
304 `M-. r'
305 `M-x sepia-rebuild'
306      Rebuild the cross-reference database by walking the op-tree and
307      stashes.
309 `M-. t'
310 `M-x find-tag'
311      Execute the `find-tag' command typically bound to <M-.>.
314 \x1f
315 File: sepia.info,  Node: Documentation,  Next: Other commands,  Prev: Navigation,  Up: Editing
317 2.3 Documentation
318 =================
320 Sepia can be used to browse installed modules' documentation, to format
321 and display the current buffer's POD, and to browse the list of modules
322 installed on the system.
324 `M-. d NAME <RET>'
325 `M-x sepia-perldoc-this'
326      View documentation for module NAME or Perl manual page NAME.
328 `C-c C-d'
329 `M-x sepia-view-pod'
330      Format and view the current buffer's documentation.
332 `sepia-package-list'
333      Browse a tree of installed packages.  This lists only the top-level
334      packages from installed distributions, so if package `My::Stuff'
335      also provides `My::Stuff::Details', it will not be displayed.  When
336      Emacs-w3m is available, each module is linked to its documentation.
338 `sepia-module-list'
339      Browse a tree of both top-level and internal packages, like
340      `sepia-package-list'.
343    Sepia also integrates with eldoc (at least in GNU Emacs >= 22).
344 Documentation for Perl operators and control structures is taken from
345 CPerl mode.  Sepia will also display documentation for user-defined
346 functions if their POD is formatted in the standard way, with functions
347 described in a "=head2" or "=item" entry.  To load user documentation,
348 visit the relevant file and type `M-x sepia-doc-update'.
350    If `Module::CoreList' is available, Sepia's eldoc function will also
351 display the first version of Perl with which a module was shipped.
352 This is intended to give the programmer a sense of when he is creating
353 external dependencies.
355 \x1f
356 File: sepia.info,  Node: Other commands,  Prev: Documentation,  Up: Editing
358 2.4 Other commands
359 ==================
361 `M-x sepia-rename-lexical'
362      Rename a variable in the function at point, querying for each
363      replacement when called with a prefix argument.  Currently, this
364      is only a thin wrapper around `query-replace'.
366 \x1f
367 File: sepia.info,  Node: Interactive Perl,  Next: CPAN browsing,  Prev: Editing,  Up: Top
369 3 Interactive Perl
370 ******************
372 Sepia's second main contribution is an interactive interface (REPL) to
373 an inferior Perl process.  The interface is based on GUD mode, and
374 inherits many of its bindings; this chapter discusses only the Sepia
375 extensions.  To start or switch to the repl, type `M-x sepia-repl'.  As
376 in Sepia mode, <TAB> in the REPL performs partial-word completion with
377 `sepia-complete-symbol'.
379    Sepia also provides a number of other ways to evaluate pieces of
380 code in Perl, and commands to process buffer text using the inferior
381 process.
383 * Menu:
385 * Shortcuts::
386 * Debugger::
387 * Evaluation::
388 * Mutilation::
389 * Scratchpad::
391 \x1f
392 File: sepia.info,  Node: Shortcuts,  Next: Debugger,  Prev: Interactive Perl,  Up: Interactive Perl
394 3.1 Shortcuts
395 =============
397 "Shortcuts" are commands handled specially by the REPL rather than
398 being evaluated as Perl code.  They either communicate with the REPL
399 function, or provide a convenient interface to Sepia variables and
400 functions.  Shortcuts are prefixed by a comma (<,>), and may be
401 abbreviated to the shortest unique prefix.  The debugger defines
402 additional shortcuts (*Note Debugger::.).
404 `break FILE:LINE [EXPR]'
405      Set a breakpoint in FILE at LINE.  If EXPR is supplied, stop only
406      if it evaluates to true.
408 `cd DIR'
409      Change Perl's current directory to DIR.
411 `debug [VAL]'
412      Turn Sepia debugger hook on or off, or toggle if VAL is missing.
414 `define NAME ['DOC'] BODY...'
415      Define NAME as a shortcut for Perl code BODY, with optional
416      documentation DOC, surrounded by single quotes.  BODY is passed
417      the raw command-line text as its first argument.
419 `format TYPE'
420      Set the output format to TYPE, either "dumper" (using
421      `Data::Dumper'), "dump" (`Data::Dump'), "yaml" (`YAML'), or
422      "plain" (stringification).  Default: "dumper".
424 `help'
425      Display a list of shortcuts.
427 `load [FILE]'
428      Reload saved variables from FILE (or `~/.sepia-save'), created by
429      `save'.
431 `lsbreak'
432      List breakpoints.
434 `methods NAME [REGEXP]'
435      Display a list of functions defined in package NAME and its
436      `ISA'-ancestors matching optional pattern REGEXP.
438 `package NAME'
439      Set the default evaluation package to NAME.
441 `pwd'
442      Show the process's current working directory.
444 `quit'
445      Exit the inferior Perl process.
447 `reload'
448      Reload `Sepia.pm' and recursively invoke the REPL.  This command is
449      mostly of interest when working on Sepia itself, and will fail
450      catastrophically if `Sepia.pm' fails to compile.
452 `save [PATTERN [FILE]]'
453      Save variables matching PATTERN (or all variables) to FILE (or
454      `~/.sepia-save') in `Storable' format.  Note that because saving
455      magic variables can have unpredictable results, using `save'
456      without a pattern argument is risky.  Sepia excludes common magic
457      variables and dangerous packages, but its list is not foolproof.
459 `shell [COMMAND]'
460      Execute shell command COMMAND, displaying its standard output and
461      standard error.
463 `size [PACKAGE [REGEXP]]'
464      List the variables in PACKAGE (or the current package) along with
465      their total sizes.  This requires the `Devel::Size' module.
467 `strict [VAL]'
468      Set evaluation strictness to VAL, or toggle it if VAL is not
469      given.  Note that turning strictness off and on clears the REPL's
470      lexical environment.
472 `undef NAME'
473      Undefine shortcut NAME.  *Warning*: this can equally be used to
474      remove built-in shortcuts.
476 `wantarray [VAL]'
477      Set the evaluation context to VAL, or toggle between scalar and
478      array context.
480 `who PACKAGE [REGEXP]'
481 `who [REGEXP]'
482      List identifiers in PACKAGE (main by default) matching optional
483      REGEXP.
486 \x1f
487 File: sepia.info,  Node: Debugger,  Next: Evaluation,  Prev: Shortcuts,  Up: Interactive Perl
489 3.2 Debugger
490 ============
492 Sepia uses Perl's debugger hooks and GUD mode to support conditional
493 breakpoints and single-stepping, and overrides Perl's `die()' to invoke
494 the debugger rather than unwind the stack.  This makes it possible to
495 produce a backtrace, inspect and modify global variables, and even
496 continue execution when a program tries to kill itself.  If the
497 PadWalker module is available, Sepia also provides functions to inspect
498 and modify lexical variables.
500    The debugger has its own set of shortcuts, also prefixed by a comma.
502 `backtrace'
503      Show a backtrace.
505 `delete'
506      Delete the current breakpoint.
508 `down N'
509 `up N'
510      Move the current stack frame up or down by N (or one) frames.
512 `inspect [N]'
513      Inspect lexicals in the current frame or frame N, counting upward
514      from 1.
516 `next [N]'
517      Advance N (or one) lines, skipping subroutine calls.
519 `quit'
520 `die'
521 `warn'
522      Continue as the program would have executed without debugger
523      intervention, dying if the debugger was called from `die()'.
525 `return EXPR'
526      Continue execution as if `die()' had returned the value of EXPR,
527      which is evaluated in the global environment.
529 `step [N]'
530      Step forward N (or one) lines, descending into subroutines.
532 `xreturn SUB EXPR'
533      Return EXPR from the innermost call to SUB.  This is a somewhat
534      dangerous and experimental feature, but is probably more useful
535      than returning a value from `die()'.
538 \x1f
539 File: sepia.info,  Node: Evaluation,  Next: Mutilation,  Prev: Debugger,  Up: Interactive Perl
541 3.3 Evaluation
542 ==============
544 When interactive Perl is running, Sepia can evaluate regions of code in
545 the inferior Perl process.  The following commands assume that this
546 process has already been started by calling `sepia-repl'.
548 `C-M-x'
549 `M-x sepia-eval-defun'
550      Evaluate the function around point in the inferior Perl process.
551      If it contains errors, jump to the location of the first.
553 `C-c C-l'
554 `M-x sepia-load-file'
555      Save the current buffer, then reload its file and if warnings or
556      errors occur, display an error buffer.  With a prefix argument,
557      also rebuild the cross-reference index.
559 `C-c e'
560 `M-x sepia-eval-expression <RET> EXPR <RET>'
561      Evaluate EXPR in scalar context and echo the result.  With a
562      prefix argument, evaluate in list context.
564 `C-c!'
565 `sepia-set-cwd'
566      Set the REPL's working directory to the current buffer's directory.
569 \x1f
570 File: sepia.info,  Node: Mutilation,  Next: Scratchpad,  Prev: Evaluation,  Up: Interactive Perl
572 3.4 Mutilation
573 ==============
575 Sepia contains several functions to operate on regions of text using the
576 interactive Perl process.  These functions can be used like standard
577 one-liners (e.g. `perl -pe ...'), with the advantage that all of the
578 functions and variables in the interactive session are available.
580 `M-x sepia-perl-pe-region <RET> CODE <RET>'
581      Evaluate CODE on each line in the region with `$_' bound to the
582      line text, collecting the resulting values of `$_'.  With a prefix
583      argument, replace the region with the result.
585 `M-x sepia-perl-ne-region <RET> CODE <RET>'
586      Evaluate CODE as above, but collect the results instead.
588 `M-x sepia-perlize-region <RET> CODE <RET>'
589      Evaluate CODE once with `$_' bound to the entire region,
590      collecting the final value of `$_'.  With a prefix argument,
591      replace the region.
594 \x1f
595 File: sepia.info,  Node: Scratchpad,  Prev: Mutilation,  Up: Interactive Perl
597 3.5 Scratchpad
598 ==============
600 Sepia also supports a scratchpad, another form of interaction inspired
601 by Emacs' `*scratch*' buffer.  To create or switch to the scratchpad,
602 type `M-x sepia-scratch'.  Scratchpad mode is exactly like Sepia mode,
603 except <C-j> evaluates the current line and prints the result on the
604 next line.
606 \x1f
607 File: sepia.info,  Node: CPAN browsing,  Next: Customization,  Prev: Interactive Perl,  Up: Top
609 4 CPAN browsing
610 ***************
612 Sepia has rudimentary support for browsing documentation and installing
613 modules from CPAN.  Modules whose names, descriptions, or authors match
614 a query are displayed in a `*sepia-cpan*' buffer, in which the
615 following commands are available:
618 `M-x sepia-cpan-search <RET> PATTERN <RET>'
619      List modules whose names match PATTERN.
622 `M-x sepia-cpan-desc <RET> PATTERN <RET>'
623      List modules whose names or descriptions match PATTERN.
626 `M-x sepia-cpan-list <RET> NAME <RET>'
627      List modules authored by NAME.
630 `M-x sepia-cpan-readme <RET> MODULE <RET>'
631      Fetch and display MODULE's README file.
634 `M-x sepia-cpan-doc <RET> MODULE <RET>'
635      Browse MODULE's documentation on `http://search.cpan.org'.
638 `M-x sepia-cpan-install <RET> MODULE <RET>'
639      Install MODULE and its prerequisites.  This feature is not yet
640      well tested.
643 \x1f
644 File: sepia.info,  Node: Customization,  Next: Internals,  Prev: CPAN browsing,  Up: Top
646 5 Customization
647 ***************
649 While Sepia can be customized in both the Perl and Emacs Lisp, most of
650 the user-accessible configuration is in the latter.
652 * Menu:
654 * Emacs Variables::
655 * Perl Variables::
657 \x1f
658 File: sepia.info,  Node: Emacs Variables,  Next: Perl Variables,  Prev: Customization,  Up: Customization
660 5.1 Emacs Variables
661 ===================
663 Since Sepia tries where possible to reuse existing Emacs functionality,
664 its behavior should already be covered by existing customizations.  The
665 two variables most likely to need customization are
666 `sepia-program-name' and `sepia-perl5lib'.  General Sepia mode
667 configuration can be done with `sepia-mode-hook', while REPL-specific
668 configuration can be done with `sepia-repl-mode-hook'.
670 `sepia-complete-methods'
671      If non-`nil', `sepia-complete-symbol' will complete simple method
672      calls of the form `$x->' or `Module->'.  Since the former requires
673      evaluation of `$x', this can be disabled.  Default: `T'.
675 `sepia-eval-defun-include-decls'
676      If non-`nil', attempt to generate a declaration list for
677      `sepia-eval-defun'.  This is necessary when evaluating some code,
678      such as that calling functions without parentheses, because the
679      presence of declarations affects the parsing of barewords.
680      Default: `T'.
682 `sepia-indent-expand-abbrev'
683      If non-`nil', `sepia-indent-or-complete' will, if reindentation
684      does not change the current line, expand an abbreviation before
685      point rather than performing completion.  Only if no abbreviation
686      is found will it perform completion.  Default: `T'.
688 `sepia-module-list-function'
689      The function to view a tree of installed modules.  Default:
690      `w3m-find-file' if Emacs-w3m is installed, or
691      `browse-url-of-buffer' otherwise.
693 `sepia-perldoc-function'
694      The function called to view installed modules' documentation.
695      Default: `w3m-perldoc' if Emacs-w3m is installed, or
696      `cperl-perldoc' otherwise.
698 `sepia-perl5lib'
699      A list of directories to include in `PERL5LIB' when starting
700      interactive Perl.  Default: `nil'.
702 `sepia-prefix-key'
703      The prefix to use for for functions in `sepia-keymap'.  Default:
704      <M-.>.
706 `sepia-program-name'
707      The Perl program name for interactive Perl.  Default: "perl".
709 `sepia-use-completion'
710      If non-`nil', various Sepia functions will generate completion
711      candidates from interactive Perl when called interactively.  This
712      may be slow or undesirable in some situations.  Default: `T'.
714 `sepia-view-pod-function'
715      The function called to view the current buffer's documentation.
716      Default: `sepia-w3m-view-pod' if Emacs-w3m is available, or
717      `sepia-perldoc-buffer' otherwise.
720 \x1f
721 File: sepia.info,  Node: Perl Variables,  Prev: Emacs Variables,  Up: Customization
723 5.2 Perl Variables
724 ==================
726 When Sepia starts up, it evaluates the Perl script in `~/.sepiarc'.
727 The following variables in the Sepia package control various aspects of
728 interactive evaluation.
730 `$PACKAGE'
731      The package in which user input is evaluated, determined
732      automatically when code is evaluated from a buffer.  Default:
733      `main'.
735 `$PRINTER'
736      The function called to format interactive output, normally set
737      with the `printer' shortcut.
739 `$PRINT_PRETTY'
740      If true, format some values nicely independent of the value of
741      `$PRINTER'.  Currently, this means columnating lists of simple
742      scalars.  Default: true.
744 `$PS1'
745      The trailing end of the prompt string, which should end with "> ".
746      Default: `"> "'.
748 `$STOPDIE'
749      If true, calls to `die' from interactive code will invoke the Sepia
750      debugger.  Default: true.
752 `$STOPWARN'
753      If true, calls to `warn' from interactive code will invoke the
754      Sepia debugger.  Default: false.
756 `$WANTARRAY'
757      If true, evaluate interactive expressions in list context.
758      Default: true.
761    Additional REPL shortcuts can be defined with
762 `Sepia::define_shortcut'.  For example
764      Sepia::define_shortcut time => sub { print scalar localtime, "\n"; 0 },
765          'Display the current time.';
767    defines a shortcut "time" that displays the current time.  For
768 details, see the code in `Sepia.pm'.
770 \x1f
771 File: sepia.info,  Node: Internals,  Next: Credits,  Prev: Customization,  Up: Top
773 6 Internals
774 ***********
776 Many things remain unexplained except by the code itself, and some
777 details mentioned above should probably be given less prominence.  For
778 developer documentation, please see the POD for `Sepia' and
779 `Sepia::Xref', and the doc-strings in `sepia.el'.
781 \x1f
782 File: sepia.info,  Node: Credits,  Next: Function Index,  Prev: Internals,  Up: Top
784 Credits
785 *******
787 Hilko Bengen
788      Found and motivated me to fix a bunch of bugs, created Debian
789      packages.
791 Ævar Arnfjörð Bjarmason
792      Miscellaneous fixes.  Tested unicode support.
794 Ye Wenbin
795      Found and fixed numerous bugs.
797 Free Software
798      Portions of the code were lifted from Emacs-w3m, SLIME, ido, and
799      B::Xref, all of which are Free software.
802 \x1f
803 File: sepia.info,  Node: Function Index,  Next: Variable Index,  Prev: Credits,  Up: Top
805 Function Index
806 **************
808 \0\b[index\0\b]
809 * Menu:
811 * sepia-apropos:                         Navigation.           (line 60)
812 * sepia-callees:                         Navigation.           (line 68)
813 * sepia-callers:                         Navigation.           (line 64)
814 * sepia-complete-symbol:                 Completion.           (line 35)
815 * sepia-cpan-desc:                       CPAN browsing.        (line 17)
816 * sepia-cpan-doc:                        CPAN browsing.        (line 29)
817 * sepia-cpan-install:                    CPAN browsing.        (line 33)
818 * sepia-cpan-list:                       CPAN browsing.        (line 21)
819 * sepia-cpan-readme:                     CPAN browsing.        (line 25)
820 * sepia-cpan-search:                     CPAN browsing.        (line 13)
821 * sepia-defs:                            Navigation.           (line 52)
822 * sepia-dwim:                            Navigation.           (line 20)
823 * sepia-eval-defun:                      Evaluation.           (line 12)
824 * sepia-eval-expression:                 Evaluation.           (line 23)
825 * sepia-indent-or-complete:              Completion.           (line 40)
826 * sepia-install-eldoc:                   Documentation.        (line 29)
827 * sepia-jump-to-symbol:                  Navigation.           (line 36)
828 * sepia-load-file:                       Evaluation.           (line 17)
829 * sepia-location:                        Navigation.           (line 29)
830 * sepia-mode:                            Editing.              (line  6)
831 * sepia-module-find:                     Navigation.           (line 56)
832 * sepia-module-list:                     Documentation.        (line 25)
833 * sepia-next:                            Navigation.           (line 85)
834 * sepia-package-list:                    Documentation.        (line 19)
835 * sepia-perl-ne-region:                  Mutilation.           (line 17)
836 * sepia-perl-pe-region:                  Mutilation.           (line 12)
837 * sepia-perldoc-this:                    Documentation.        (line 12)
838 * sepia-perlize-region:                  Mutilation.           (line 20)
839 * sepia-rebuild:                         Navigation.           (line 89)
840 * sepia-rename-lexical:                  Other commands.       (line  7)
841 * sepia-repl:                            Interactive Perl.     (line  6)
842 * sepia-scratch:                         Scratchpad.           (line  6)
843 * sepia-set-cwd:                         Evaluation.           (line 28)
844 * sepia-var-defs:                        Navigation.           (line 76)
845 * sepia-var-uses:                        Navigation.           (line 72)
846 * sepia-view-pod:                        Documentation.        (line 16)
848 \x1f
849 File: sepia.info,  Node: Variable Index,  Prev: Function Index,  Up: Top
851 Variable Index
852 **************
854 \0\b[index\0\b]
855 * Menu:
857 * sepia-complete-methods:                Emacs Variables.      (line 13)
858 * sepia-eval-defun-include-decls:        Emacs Variables.      (line 18)
859 * sepia-indent-expand-abbrev:            Emacs Variables.      (line 25)
860 * sepia-module-list-function:            Emacs Variables.      (line 31)
861 * sepia-perl5lib:                        Emacs Variables.      (line 41)
862 * sepia-perldoc-function:                Emacs Variables.      (line 36)
863 * sepia-prefix-key:                      Emacs Variables.      (line 45)
864 * sepia-program-name:                    Emacs Variables.      (line 49)
865 * sepia-use-completion:                  Emacs Variables.      (line 52)
866 * sepia-view-pod-function:               Emacs Variables.      (line 57)
869 \x1f
870 Tag Table:
871 Node: Top\x7f187
872 Node: Introduction\x7f549
873 Node: Getting Started\x7f987
874 Node: Philosophy\x7f1612
875 Node: Related Work\x7f4639
876 Node: Editing\x7f5805
877 Node: Completion\x7f6286
878 Node: Navigation\x7f8178
879 Node: Documentation\x7f11527
880 Node: Other commands\x7f13097
881 Node: Interactive Perl\x7f13432
882 Node: Shortcuts\x7f14169
883 Node: Debugger\x7f17214
884 Node: Evaluation\x7f18758
885 Node: Mutilation\x7f19734
886 Node: Scratchpad\x7f20686
887 Node: CPAN browsing\x7f21091
888 Node: Customization\x7f22085
889 Node: Emacs Variables\x7f22383
890 Node: Perl Variables\x7f24878
891 Node: Internals\x7f26365
892 Node: Credits\x7f26725
893 Node: Function Index\x7f27183
894 Node: Variable Index\x7f29956
895 \x1f
896 End Tag Table