Proper use of defined vs. *{FOO}{THING}.
[sepia.git] / sepia.info
blob6f713a2f7e86a731b66f79588590f2f24048c7b7
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::
28 \x1f
29 File: sepia.info,  Node: Introduction,  Next: Editing,  Prev: Top,  Up: Top
31 1 Introduction
32 **************
34 Sepia is a set of tools for Perl development in Emacs.  Its goal is to
35 extend CPerl mode to support fast code navigation and interactive
36 development.  It is inspired by Emacs' current support for a number of
37 other languages, including Lisp, Python, and Emacs Lisp.
39 * Menu:
41 * Getting Started::
42 * Philosophy::
43 * Related Work::
45 \x1f
46 File: sepia.info,  Node: Getting Started,  Next: Philosophy,  Prev: Introduction,  Up: Introduction
48 1.1 Getting Started
49 ===================
51 To install Sepia, its Emacs Lisp files must be in Emacs' `load-path',
52 and the `lib' directory must be in Perl's `@INC'.  Assuming that Sepia
53 has been unpacked in `~/sepia', it can be installed by adding the
54 following lines to `~/.emacs':
56      (add-to-list 'load-path "~/sepia")
57      (setq sepia-perl5lib (list (expand-file-name "~/sepia/lib")))
58      (defalias 'perl-mode 'sepia-mode)
59      (require 'sepia)
61    Then to bring up the interactive Perl prompt, type `M-x sepia-repl'.
63 \x1f
64 File: sepia.info,  Node: Philosophy,  Next: Related Work,  Prev: Getting Started,  Up: Introduction
66 1.2 Philosophy
67 ==============
69 A development environment should support three activities: code
70 spelunking, interaction, and customization.  Emacs as an environment for
71 developing Emacs Lisp thoroughly supports all of them: It has commands
72 to visit individual functions' code and documentation, commands to
73 evaluate or step through expressions, and an architecture that
74 encourages customization in Emacs Lisp.  As an environment for Perl,
75 however, it is lacking: there is limited interactivity with the Perl
76 debugger, and reasonable documentation browsing, but no support for
77 navigating, editing, and re-evaluating code.  Sepia attempts to remedy
78 the situation.
80    Modern IDEs also support these three activities, but do so awkwardly.
81 Rather than having functions to visit definitions (`find-function') and
82 search for functions (`apropos'), they clutter the screen with class
83 and file trees.  Rather than supporting interactive evaluation of small
84 pieces of code, they perform background semantic checking on whole
85 projects and highlight errors.  Rather than allowing minor
86 customizations to grow organically into features, they support limited
87 configuration files and baroque plug-in APIs.  Sepia tries to adhere to
88 the apparent Emacs philosophy that rich semantic information should be
89 unobtrusive, and that the best way to build working code is to start by
90 experimenting with small pieces.
92    Language support packages for Emacs vary widely in the degree to
93 which they make use of or replace existing Emacs features.  Minimal
94 modes provide keyword-based syntax highlighting and an unadorned comint
95 buffer as an interpreter.  Others provide their own specialized
96 equivalents of comint, eldoc, completion, and other Emacs features.
97 Sepia takes a third approach by trying to do as much as possible with
98 existing Emacs features, even when they are not optimal for Perl.  For
99 example, it uses comint to communicate with the subprocess, eldoc to
100 display documentation, and grep to list source locations.
102    This approach has three advantages: First, it maximizes the number of
103 features that can be supported with limited development time.  Second,
104 it respects users' settings.  A seasoned Emacs user may have changed
105 hundreds of settings, so a mode that reimplements features will have to
106 support equivalent settings, and will force the user to re-specify them.
107 Finally, this approach respects decades of development spent, as Neal
108 Stephenson put it, "focused with maniacal intensity on the deceptively
109 simple-seeming problem of editing text."  Many non-obvious choices go
110 into making a polished interface, and while a reimplementation gets rid
111 of accumulated cruft, it must rediscover these hidden trade-offs.
113    Anyways, I hope you enjoy using Sepia.  Its development style is
114 strange for someone used Perl's typical mix of one-liners and
115 edit-save-run, but once you are accustomed to it, you may find it very
116 effective.
118 \x1f
119 File: sepia.info,  Node: Related Work,  Prev: Philosophy,  Up: Introduction
121 1.3 Related Work
122 ================
124 A number of more-or-less related Emacs extensions are currently under
125 development.  Here is a list of the ones I have heard about, along with
126 my brief impression of how they differ from Sepia.  Since I use none of
127 them regularly, these impressions should be taken with a grain of salt.
129 `PDE'
130      PDE is similar to Sepia in offering an interactive Lisp-like
131      development environment interfacing with a long-running Perl
132      process.  It seems more ambitious, and therefore a bit more
133      invasive.
135      `http://search.cpan.org/search?query=pde&mode=module'
137 `Devel::PerlySense'
138      Devel::PerlySense offers a more Eclipse-like development
139      environment, with offline code analysis via PPI.
141      `http://search.cpan.org/search?query=devel::perlysense&mode=module'
143 `Emacs::EPL'
144      Emacs::EPL is a low-level IPC interface between Emacs and Perl.
145      Sepia was originally based on Emacs::EPL, but the current
146      `comint'-based implementation proved more maintainable.
148      `http://search.cpan.org/search?query=emacs::epl&mode=module'
151 \x1f
152 File: sepia.info,  Node: Editing,  Next: Interactive Perl,  Prev: Introduction,  Up: Top
154 2 Editing
155 *********
157 Sepia's first contribution is a set of commands to explore a Perl
158 codebase.  These include commands to browse and display documentation,
159 to find function definitions, and to query a cross-reference database of
160 function and variable uses.  Sepia also provides intelligent symbol
161 completion.
163 * Menu:
165 * Completion::
166 * Navigation::
167 * Documentation::
169 \x1f
170 File: sepia.info,  Node: Completion,  Next: Navigation,  Prev: Editing,  Up: Editing
172 2.1 Completion
173 ==============
175 Sepia implements partial-word completion that communicates with the
176 inferior Perl process.  For example, `%S:X:v_u' completes to
177 `%Sepia::Xref::var_use' when Sepia is loaded.  This completion only
178 operates on functions and global variables known to the Perl
179 interpreter, so it works best when code and interpreter are in sync.
181    More precisely, completion examines the text before point and tries
182 each of the following in turn, using the first successful approach:
184   1. If the text looks like a method call (e.g. `$object->f' or
185      `Class->f'), complete on methods.
187   2. If it looks like a variable (e.g. `%hash' or `$scalar'), complete
188      on variables.
190   3. Complete on modules and functions.
192   4. Otherwise, complete on Perl built-in operators.
194    For each of the first three cases, completions candidates are first
195 generated by splitting the text on characters `[:_]' and matching the
196 resulting word parts.  For example, `X:a_b' will complete to all
197 symbols matching `^X[^:]*:+a[^:_]*_b' such as `Xref::a_bug' and
198 `X::always_bites_me'.  If no matches result, the text is treated as an
199 acronym.  For example, `dry' will complete to `dont_repeat_yourself'.
201    Completion is performed by the following commands:
202 `M-x sepia-complete-symbol'
203      Complete the symbol before point as described above.  Note that
204      this does not consider lexical scope, and is always case-sensitive,
205      independent of `completion-ignore-case'.
207 `TAB'
208 `M-x sepia-indent-or-complete'
209      First try to reindent the current line.  If its indentation does
210      not change, then try to expand an abbrev at point (unless
211      `sepia-indent-expand-abbrev' is `nil').  If no abbrev is expanded,
212      then call `sepia-complete-symbol'.
215 \x1f
216 File: sepia.info,  Node: Navigation,  Next: Documentation,  Prev: Completion,  Up: Editing
218 2.2 Navigation
219 ==============
221 Sepia provides several commands for navigating program source.  All of
222 them rely on information from the inferior Perl process, so it is
223 important both that it be running, and that its internal representation
224 of the program match the program source.  The commands marked (Xref)
225 below also rely on a cross-reference database, which must be explicitly
226 rebuilt by calling `xref-rebuild' when the program changes.
228    There are two basic kinds of navigation commands.  The first kind
229 jumps directly to the first matching location when possible, prompting
230 only if no such location is found.  These commands find only a single
231 location.
233 `M-. M-.'
234 `M-x sepia-dwim'
235      Guess what kind of identifier is at point, and try to do the right
236      thing: for a function, find its definition(s); for a variable,
237      find its uses; for a module, view its documentation; otherwise,
238      prompt for the name of a function to visit.  `sepia-dwim'
239      automatically goes to the first function definition or variable
240      use found.
242 `M-. l'
243 `M-x sepia-location'
244      Jump directly to the definition of the function at point,
245      prompting if point is not on a known function.  If multiple
246      definitions are found, choose one arbitrarily.  This function is
247      similar to `sepia-defs', and the two should probably be merged.
249 `M-. j'
250 `M-x sepia-jump-to-symbol'
251      Navigate to a function using "ido" interactive completion.  Within
252      interactive completion, press <:> to descend into a package, <DEL>
253      to ascend to a parent package, and <RET> to go to the
254      currently-selected function.
257    The second kind of navigation commands always prompts the user -
258 though usually with a sensible default value - and finds multiple
259 locations.  When called with a prefix argument, these commands present
260 their results in a `grep-mode' buffer.  When called _without_ a prefix
261 argument, they place all results on the found-location ring and jump
262 directly to the first.  The remaining locations can be cycled through by
263 calls to `sepia-next'.
265 `M-. f NAME <RET>'
266 `M-x sepia-defs'
267      Find definition(s) of function NAME.
269 `M-. m NAME <RET>'
270 `M-x sepia-module-find NAME <RET>'
271      Find the source of module NAME.
273 `M-. a REGEXP <RET>'
274 `M-x sepia-apropos REGEXP <RET>'
275      Find definitions of all functions whose names match REGEXP.
277 `M-. c NAME <RET>'
278 `M-x sepia-callers NAME <RET>'
279      (Xref) Find calls to function NAME.
281 `M-. C NAME <RET>'
282 `M-x sepia-callees NAME <RET>'
283      (Xref) Find the definitions of functions called by NAME.
285 `M-. v NAME <RET>'
286 `M-x sepia-var-uses NAME <RET>'
287      (Xref) Find uses of the global variable NAME.
289 `M-. V NAME <RET>'
290 `M-x sepia-var-defs NAME <RET>'
291      (Xref) Find definitions of global variable NAME.  Since Perl's
292      global variables are not declared, this is rarely useful
295    Finally, there are several other navigation-related commands that do
296 not fit into either of the above categories.
298 `M-,'
299 `M-x sepia-next'
300      Cycle through the definitions found by the previous <M-.> search.
302 `M-. r'
303 `M-x sepia-rebuild'
304      Rebuild the cross-reference database by walking the op-tree and
305      stashes.
307 `M-. t'
308 `M-x find-tag'
309      Execute the `find-tag' command typically bound to <M-.>.
312 \x1f
313 File: sepia.info,  Node: Documentation,  Prev: Navigation,  Up: Editing
315 2.3 Documentation
316 =================
318 Sepia can be used to browse installed modules' documentation, to format
319 and display the current buffer's POD, and to browse the list of modules
320 installed on the system.
322 `M-. d NAME <RET>'
323 `M-x sepia-perldoc-this'
324      View documentation for module NAME or Perl manual page NAME.
326 `C-c C-d'
327 `M-x sepia-view-pod'
328      Format and view the current buffer's documentation.
330 `sepia-package-list'
331      Browse a tree of installed packages.  This lists only the top-level
332      packages from installed distributions, so if package `My::Stuff'
333      also provides `My::Stuff::Details', it will not be displayed.  When
334      Emacs-w3m is available, each module is linked to its documentation.
336 `sepia-module-list'
337      Browse a tree of both top-level and internal packages, like
338      `sepia-package-list'.
341    Sepia also integrates with eldoc (at least in GNU Emacs >= 22).
342 Documentation for Perl operators and control structures is taken from
343 CPerl mode.  Sepia will also display documentation for user-defined
344 functions if their POD is formatted in the standard way, with functions
345 described in a "=head2" or "=item" entry.  To load user documentation,
346 visit the relevant file and type `M-x sepia-doc-update'.
348    If `Module::CoreList' is available, Sepia's eldoc function will also
349 display the first version of Perl with which a module was shipped.
350 This is intended to give the programmer a sense of when he is creating
351 external dependencies.
353 \x1f
354 File: sepia.info,  Node: Interactive Perl,  Next: CPAN browsing,  Prev: Editing,  Up: Top
356 3 Interactive Perl
357 ******************
359 Sepia's second main contribution is an interactive interface (REPL) to
360 an inferior Perl process.  The interface is based on GUD mode, and
361 inherits many of its bindings; this chapter discusses only the Sepia
362 extensions.  To start or switch to the repl, type `M-x sepia-repl'.  As
363 in Sepia mode, <TAB> in the REPL performs partial-word completion with
364 `sepia-complete-symbol'.
366    Sepia also provides a number of other ways to evaluate pieces of
367 code in Perl, and commands to process buffer text using the inferior
368 process.
370 * Menu:
372 * Shortcuts::
373 * Debugger::
374 * Evaluation::
375 * Mutilation::
376 * Scratchpad::
378 \x1f
379 File: sepia.info,  Node: Shortcuts,  Next: Debugger,  Prev: Interactive Perl,  Up: Interactive Perl
381 3.1 Shortcuts
382 =============
384 "Shortcuts" are commands handled specially by the REPL rather than
385 being evaluated as Perl code.  They either communicate with the REPL
386 function, or provide a convenient interface to variables in the Sepia
387 package.  Shortcuts are prefixed by a comma (<,>), and may be
388 abbreviated to the shortest unique prefix.
390 `cd DIR'
391      Change Perl's current directory to DIR.
393 `debug [VAL]'
394      Turn Sepia debugger hook on or off, or toggle if VAL is missing.
396 `define NAME ['DOC'] BODY...'
397      Define NAME as a shortcut for Perl code BODY, with optional
398      documentation DOC, surrounded by single quotes.  BODY is passed
399      the raw command-line text as its first argument.
401 `delete'
402      Delete the current breakpoint.
404 `format TYPE'
405      Set the output format to TYPE, either "dumper" (using
406      `Data::Dumper'), "dump" (`Data::Dump'), "yaml" (`YAML'), or
407      "plain" (stringification).  Default: "dumper".
409 `help'
410      Display a list of shortcuts.
412 `lsbreak'
413      List breakpoints.
415 `methods NAME [REGEXP]'
416      Display a list of functions defined in package NAME and its
417      `ISA'-ancestors matching optional pattern REGEXP.
419 `package NAME'
420      Set the default evaluation package to NAME.
422 `pwd'
423      Show the process's current working directory.
425 `quit'
426      Exit the inferior Perl process.
428 `reload'
429      Reload `Sepia.pm' and recursively invoke the REPL.  This command is
430      mostly of interest when working on Sepia itself.
432 `shell [COMMAND]'
433      Execute shell command COMMAND, displaying its standard output and
434      standard error.
436 `strict [VAL]'
437      Set evaluation strictness to VAL, or toggle it if VAL is not
438      given.  Note that turning strictness off and on clears the REPL's
439      lexical environment.
441 `undef NAME'
442      Undefine shortcut NAME.  *Warning*: this can equally be used to
443      remove built-in shortcuts.
445 `wantarray [VAL]'
446      Set the evaluation context to VAL, or toggle between scalar and
447      array context.
449 `who PACKAGE [REGEXP]'
450 `who [REGEXP]'
451      List identifiers in PACKAGE (main by default) matching optional
452      REGEXP.
455 \x1f
456 File: sepia.info,  Node: Debugger,  Next: Evaluation,  Prev: Shortcuts,  Up: Interactive Perl
458 3.2 Debugger
459 ============
461 Sepia uses Perl's debugger hooks and GUD mode to support conditional
462 breakpoints and single-stepping, and overrides Perl's `die()' to invoke
463 the debugger rather than unwind the stack.  This makes it possible to
464 produce a backtrace, inspect and modify global variables, and even
465 continue execution when a program tries to kill itself.  If the
466 PadWalker module is available, Sepia also provides functions to inspect
467 and modify lexical variables.
469    The debugger has its own set of shortcuts, also prefixed by a comma.
471 `backtrace'
472      Show a backtrace.
474 `break FILE:LINE [EXPR]'
475      Set a breakpoint in FILE at LINE.  If EXPR is supplied, stop only
476      if it evaluates to true.
478 `down N'
479 `up N'
480      Move the current stack frame up or down by N (or one) frames.
482 `inspect [N]'
483      Inspect lexicals in the current frame or frame N, counting upward
484      from 1.
486 `lsbreak'
487      List breakpoints.
489 `next [N]'
490      Advance N (or one) lines, skipping subroutine calls.
492 `quit'
493 `die'
494 `warn'
495      Continue as the program would have executed without debugger
496      intervention, dying if the debugger was called from `die()'.
498 `return EXPR'
499      Continue execution as if `die()' had returned the value of EXPR,
500      which is evaluated in the global environment.
502 `step [N]'
503      Step forward N (or one) lines, descending into subroutines.
505 `xreturn SUB EXPR'
506      Return EXPR from the innermost call to SUB.  This is a somewhat
507      dangerous and experimental feature, but is probably more useful
508      than returning a value from `die()'.
511 \x1f
512 File: sepia.info,  Node: Evaluation,  Next: Mutilation,  Prev: Debugger,  Up: Interactive Perl
514 3.3 Evaluation
515 ==============
517 When interactive Perl is running, Sepia can evaluate regions of code in
518 the inferior Perl process.  The following commands assume that this
519 process has already been started by calling `sepia-repl'.
521 `C-M-x'
522 `M-x sepia-eval-defun'
523      Evaluate the function around point in the inferior Perl process.
524      If it contains errors, jump to the location of the first.
526 `C-c C-l'
527 `M-x sepia-load-file'
528      Save the current buffer, then reload its file and if warnings or
529      errors occur, display an error buffer.  With a prefix argument,
530      also rebuild the cross-reference index.
532 `C-c e'
533 `M-x sepia-eval-expression <RET> EXPR <RET>'
534      Evaluate EXPR in scalar context and echo the result.  With a
535      prefix argument, evaluate in list context.
537 `C-c!'
538 `sepia-set-cwd'
539      Set the REPL's working directory to the current buffer's directory.
542 \x1f
543 File: sepia.info,  Node: Mutilation,  Next: Scratchpad,  Prev: Evaluation,  Up: Interactive Perl
545 3.4 Mutilation
546 ==============
548 Sepia contains several functions to operate on regions of text using the
549 interactive Perl process.  These functions can be used like standard
550 one-liners (e.g. `perl -pe ...'), with the advantage that all of the
551 functions and variables in the interactive session are available.
553 `M-x sepia-perl-pe-region <RET> CODE <RET>'
554      Evaluate CODE on each line in the region with `$_' bound to the
555      line text, collecting the resulting values of `$_'.  With a prefix
556      argument, replace the region with the result.
558 `M-x sepia-perl-ne-region <RET> CODE <RET>'
559      Evaluate CODE as above, but collect the results instead.
561 `M-x sepia-perlize-region <RET> CODE <RET>'
562      Evaluate CODE once with `$_' bound to the entire region,
563      collecting the final value of `$_'.  With a prefix argument,
564      replace the region.
567 \x1f
568 File: sepia.info,  Node: Scratchpad,  Prev: Mutilation,  Up: Interactive Perl
570 3.5 Scratchpad
571 ==============
573 Sepia also supports a scratchpad, another form of interaction inspired
574 by Emacs' `*scratch*' buffer.  To create or switch to the scratchpad,
575 type `M-x sepia-scratch'.  Scratchpad mode is exactly like Sepia mode,
576 except <C-j> evaluates the current line and prints the result on the
577 next line.
579 \x1f
580 File: sepia.info,  Node: CPAN browsing,  Next: Customization,  Prev: Interactive Perl,  Up: Top
582 4 CPAN browsing
583 ***************
585 Sepia has rudimentary support for browsing documentation and installing
586 modules from CPAN.  Modules whose names, descriptions, or authors match
587 a query are displayed in a `*sepia-cpan*' buffer, in which the
588 following commands are available:
591 `M-x sepia-cpan-search <RET> PATTERN <RET>'
592      List modules whose names match PATTERN.
595 `M-x sepia-cpan-desc <RET> PATTERN <RET>'
596      List modules whose names or descriptions match PATTERN.
599 `M-x sepia-cpan-list <RET> NAME <RET>'
600      List modules authored by NAME.
603 `M-x sepia-cpan-readme <RET> MODULE <RET>'
604      Fetch and display MODULE's README file.
607 `M-x sepia-cpan-doc <RET> MODULE <RET>'
608      Browse MODULE's documentation on `http://search.cpan.org'.
611 `M-x sepia-cpan-install <RET> MODULE <RET>'
612      Install MODULE and its prerequisites.  This feature is not yet
613      well tested.
616 \x1f
617 File: sepia.info,  Node: Customization,  Next: Internals,  Prev: CPAN browsing,  Up: Top
619 5 Customization
620 ***************
622 While Sepia can be customized in both the Perl and Emacs Lisp, most of
623 the user-accessible configuration is in the latter.
625 * Menu:
627 * Emacs Variables::
628 * Perl Variables::
630 \x1f
631 File: sepia.info,  Node: Emacs Variables,  Next: Perl Variables,  Prev: Customization,  Up: Customization
633 5.1 Emacs Variables
634 ===================
636 Since Sepia tries where possible to reuse existing Emacs functionality,
637 its behavior should already be covered by existing customizations.  The
638 two variables most likely to need customization are
639 `sepia-program-name' and `sepia-perl5lib'.  General Sepia mode
640 configuration can be done with `sepia-mode-hook', while REPL-specific
641 configuration can be done with `sepia-repl-mode-hook'.
643 `sepia-complete-methods'
644      If non-`nil', `sepia-complete-symbol' will complete simple method
645      calls of the form `$x->' or `Module->'.  Since the former requires
646      evaluation of `$x', this can be disabled.  Default: `T'.
648 `sepia-eval-defun-include-decls'
649      If non-`nil', attempt to generate a declaration list for
650      `sepia-eval-defun'.  This is necessary when evaluating some code,
651      such as that calling functions without parentheses, because the
652      presence of declarations affects the parsing of barewords.
653      Default: `T'.
655 `sepia-indent-expand-abbrev'
656      If non-`nil', `sepia-indent-or-complete' will, if reindentation
657      does not change the current line, expand an abbreviation before
658      point rather than performing completion.  Only if no abbreviation
659      is found will it perform completion.  Default: `T'.
661 `sepia-module-list-function'
662      The function to view a tree of installed modules.  Default:
663      `w3m-find-file' if Emacs-w3m is installed, or
664      `browse-url-of-buffer' otherwise.
666 `sepia-perldoc-function'
667      The function called to view installed modules' documentation.
668      Default: `w3m-perldoc' if Emacs-w3m is installed, or
669      `cperl-perldoc' otherwise.
671 `sepia-perl5lib'
672      A list of directories to include in `PERL5LIB' when starting
673      interactive Perl.  Default: `nil'.
675 `sepia-prefix-key'
676      The prefix to use for for functions in `sepia-keymap'.  Default:
677      <M-.>.
679 `sepia-program-name'
680      The Perl program name for interactive Perl.  Default: "perl".
682 `sepia-use-completion'
683      If non-`nil', various Sepia functions will generate completion
684      candidates from interactive Perl when called interactively.  This
685      may be slow or undesirable in some situations.  Default: `T'.
687 `sepia-view-pod-function'
688      The function called to view the current buffer's documentation.
689      Default: `sepia-w3m-view-pod' if Emacs-w3m is available, or
690      `sepia-perldoc-buffer' otherwise.
693 \x1f
694 File: sepia.info,  Node: Perl Variables,  Prev: Emacs Variables,  Up: Customization
696 5.2 Perl Variables
697 ==================
699 When Sepia starts up, it evaluates the Perl script in `~/.sepiarc'.
700 The following variables in the Sepia package control various aspects of
701 interactive evaluation.
703 `$PACKAGE'
704      The package in which user input is evaluated, determined
705      automatically when code is evaluated from a buffer.  Default:
706      `main'.
708 `$PRINTER'
709      The function called to format interactive output, normally set
710      with the `printer' shortcut.
712 `$PRINT_PRETTY'
713      If true, format some values nicely independent of the value of
714      `$PRINTER'.  Currently, this means columnating lists of simple
715      scalars.  Default: true.
717 `$PS1'
718      The trailing end of the prompt string, which should end with "> ".
719      Default: `"> "'.
721 `$STOPDIE'
722      If true, calls to `die' from interactive code will invoke the Sepia
723      debugger.  Default: true.
725 `$STOPWARN'
726      If true, calls to `warn' from interactive code will invoke the
727      Sepia debugger.  Default: false.
729 `$WANTARRAY'
730      If true, evaluate interactive expressions in list context.
731      Default: true.
734    Additional REPL shortcuts can be defined with
735 `Sepia::define_shortcut'.  For example
737      Sepia::define_shortcut time => sub { print scalar localtime, "\n"; 0 },
738          'Display the current time.';
740    defines a shortcut "time" that displays the current time.  For
741 details, see the code in `Sepia.pm'.
743 \x1f
744 File: sepia.info,  Node: Internals,  Next: Credits,  Prev: Customization,  Up: Top
746 6 Internals
747 ***********
749 Many things remain unexplained except by the code itself, and some
750 details mentioned above should probably be given less prominence.  For
751 developer documentation, please see the POD for `Sepia' and
752 `Sepia::Xref', and the doc-strings in `sepia.el'.
754 \x1f
755 File: sepia.info,  Node: Credits,  Next: Function Index,  Prev: Internals,  Up: Top
757 Credits
758 *******
760 Hilko Bengen
761      Found and motivated me to fix a bunch of bugs, created Debian
762      packages.
764 Ævar Arnfjörð Bjarmason
765      Miscellaneous fixes.  Tested unicode support.
767 Ye Wenbin
768      Found and fixed numerous bugs.
770 Free Software
771      Portions of the code were lifted from Emacs-w3m, SLIME, ido, and
772      B::Xref, all of which are Free software.
775 \x1f
776 File: sepia.info,  Node: Function Index,  Prev: Credits,  Up: Top
778 Function Index
779 **************
781 \0\b[index\0\b]
782 * Menu:
784 * sepia-apropos:                         Navigation.           (line 60)
785 * sepia-callees:                         Navigation.           (line 68)
786 * sepia-callers:                         Navigation.           (line 64)
787 * sepia-complete-symbol:                 Completion.           (line 34)
788 * sepia-cpan-desc:                       CPAN browsing.        (line 17)
789 * sepia-cpan-doc:                        CPAN browsing.        (line 29)
790 * sepia-cpan-install:                    CPAN browsing.        (line 33)
791 * sepia-cpan-list:                       CPAN browsing.        (line 21)
792 * sepia-cpan-readme:                     CPAN browsing.        (line 25)
793 * sepia-cpan-search:                     CPAN browsing.        (line 13)
794 * sepia-defs:                            Navigation.           (line 52)
795 * sepia-dwim:                            Navigation.           (line 20)
796 * sepia-eval-defun:                      Evaluation.           (line 12)
797 * sepia-eval-expression:                 Evaluation.           (line 23)
798 * sepia-indent-or-complete:              Completion.           (line 40)
799 * sepia-install-eldoc:                   Documentation.        (line 29)
800 * sepia-jump-to-symbol:                  Navigation.           (line 36)
801 * sepia-load-file:                       Evaluation.           (line 17)
802 * sepia-location:                        Navigation.           (line 29)
803 * sepia-mode:                            Editing.              (line  6)
804 * sepia-module-find:                     Navigation.           (line 56)
805 * sepia-module-list:                     Documentation.        (line 25)
806 * sepia-next:                            Navigation.           (line 85)
807 * sepia-package-list:                    Documentation.        (line 19)
808 * sepia-perl-ne-region:                  Mutilation.           (line 17)
809 * sepia-perl-pe-region:                  Mutilation.           (line 12)
810 * sepia-perldoc-this:                    Documentation.        (line 12)
811 * sepia-perlize-region:                  Mutilation.           (line 20)
812 * sepia-rebuild:                         Navigation.           (line 89)
813 * sepia-repl:                            Interactive Perl.     (line  6)
814 * sepia-scratch:                         Scratchpad.           (line  6)
815 * sepia-set-cwd:                         Evaluation.           (line 28)
816 * sepia-var-defs:                        Navigation.           (line 76)
817 * sepia-var-uses:                        Navigation.           (line 72)
818 * sepia-view-pod:                        Documentation.        (line 16)
821 \x1f
822 Tag Table:
823 Node: Top\x7f187
824 Node: Introduction\x7f530
825 Node: Getting Started\x7f968
826 Node: Philosophy\x7f1593
827 Node: Related Work\x7f4620
828 Node: Editing\x7f5786
829 Node: Completion\x7f6248
830 Node: Navigation\x7f8092
831 Node: Documentation\x7f11441
832 Node: Interactive Perl\x7f12988
833 Node: Shortcuts\x7f13725
834 Node: Debugger\x7f15926
835 Node: Evaluation\x7f17585
836 Node: Mutilation\x7f18561
837 Node: Scratchpad\x7f19513
838 Node: CPAN browsing\x7f19918
839 Node: Customization\x7f20912
840 Node: Emacs Variables\x7f21210
841 Node: Perl Variables\x7f23705
842 Node: Internals\x7f25192
843 Node: Credits\x7f25552
844 Node: Function Index\x7f26010
845 \x1f
846 End Tag Table