[sepia] 06/63: Imported Debian patch 0.73-1

Hilko Bengen bengen at moszumanska.debian.org
Sat Aug 8 11:20:32 UTC 2015


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to branch master
in repository sepia.

commit b13628524fe0c6d1e5e528d6d3eb91b8bd3b7df3
Author: Hilko Bengen <bengen at debian.org>
Date:   Thu May 24 22:28:14 2007 +0200

    Imported Debian patch 0.73-1
---
 ChangeLog        |  22 +++++++++
 META.yml         |   2 +-
 debian/changelog |  13 ++++++
 lib/Sepia.pm     | 137 +++++++++++++++++++++++++++++++++++++++----------------
 sepia.el         |  33 +++++++++-----
 5 files changed, 155 insertions(+), 52 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7ea9ed4..ce8bf18 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2007-05-23  Sean O'Rourke  <sorourke at cs.ucsd.edu>
+
+	* lib/Sepia.pm (_apropos_re): handle empty completions.
+	(columnate): pretty-print ",who" output.
+
+	* sepia.el (sepia-complete-symbol): bury stale completions buffer;
+	  suggested by Hilko Bengen.
+
+2007-05-17  Sean O'Rourke  <sorourke at cs.ucsd.edu>
+
+	* lib/Sepia.pm (_completions1): Fix infinite recursion.
+	(repl): typo; clarify ambiguous vs. unrecognized shortcuts.
+
+2007-05-15  Sean O'Rourke  <sorourke at cs.ucsd.edu>
+
+	* sepia.el (sepia-dwim): don't try to jump to location when
+	  looking up module docs.
+
+	* lib/Sepia.pm: use $::__ instead of $Sepia::__
+	(repl_quit): new command.
+	(repl): add banner.
+
 2007-05-12  Sean O'Rourke  <sorourke at cs.ucsd.edu>
 
 	* VERSION: 0.72
diff --git a/META.yml b/META.yml
index 0227425..60f7bd1 100644
--- a/META.yml
+++ b/META.yml
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:                Sepia
-version:             0.72
+version:             0.73
 abstract:            Simple Emacs-Perl InterAction
 license:             perl
 generated_by:        ExtUtils::MakeMaker version 6.31
diff --git a/debian/changelog b/debian/changelog
index 08fdfa0..362e0f4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+sepia (0.73-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Hilko Bengen <bengen at debian.org>  Thu, 24 May 2007 22:28:14 +0200
+
+sepia (0.72-2) unstable; urgency=low
+
+  * Fix for deep recursion when trying to autocomplete empty symbol
+  * Change keybinding for sepia-indent-or-complete to M-TAB
+
+ -- Hilko Bengen <bengen at debian.org>  Thu, 17 May 2007 09:42:12 +0200
+
 sepia (0.72-1) unstable; urgency=low
 
   * New upstream release
diff --git a/lib/Sepia.pm b/lib/Sepia.pm
index 14b10b3..8ce4006 100644
--- a/lib/Sepia.pm
+++ b/lib/Sepia.pm
@@ -4,9 +4,20 @@ package Sepia;
 
 Sepia - Simple Emacs-Perl Interface
 
+=head1 SYNOPSIS
+
+From inside Emacs:
+
+   M-x load-library RET sepia RET
+   M-x sepia-init RET
+
+At the prompt in the C<*perl-interaction*> buffer:
+
+   main @> ,help
+
 =cut
 
-$VERSION = '0.72';
+$VERSION = '0.73';
 @ISA = qw(Exporter);
 
 require Exporter;
@@ -45,9 +56,14 @@ BEGIN {
     }
 }
 
-=over 4
+=head1 DESCRIPTION
+
+Sepia is a set of features to make Emacs a better tool for Perl
+development.  This package contains the Perl side of the
+implementation, including all user-serviceable parts (for the
+cross-referencing facility see L<Sepia::Xref>).
 
-=item C<@compls = completions($string [, $type])>
+=head2 C<@compls = completions($string [, $type])>
 
 Find a list of completions for C<$string> with glob type $type.
 Completion operates on word subparts separated by [:_], so
@@ -59,6 +75,7 @@ sub _apropos_re($)
 {
     # Do that crazy multi-word identifier completion thing:
     my $re = shift;
+    return qr/.*/ if $re eq '';
     if (wantarray) {
         map {
             s/(?:^|(?<=[A-Za-z\d]))(([^A-Za-z\d])\2*)/[A-Za-z\\d]*$2+/g;
@@ -75,13 +92,13 @@ sub _apropos_re($)
 sub _completions1
 {
     no strict;
+    print STDERR "_completions1(@_)\n";
     my $stash = shift;
-    if (@_ == 1) {
-        map {
-            "$stash$_"
-        } grep /$_[0]/, keys %$stash;
+    my $re = shift || '';
+    $re = qr/$re/;
+    if (@_ == 0 || !defined $_[0]) {
+        map "$stash$_", grep /$re/, keys %$stash;
     } else {
-        my $re = shift;
         map {
             _completions1("$stash$_", @_);
         } grep /$re.*::$/, keys %$stash;
@@ -143,7 +160,7 @@ sub completions
     @ret;
 }
 
-=item C<@locs = location(@names)>
+=head2 C<@locs = location(@names)>
 
 Return a list of [file, line, name] triples, one for each function
 name in C<@names>.
@@ -189,7 +206,7 @@ sub location
     return @x;
 }
 
-=item C<@matches = apropos($name [, $is_regex])>
+=head2 C<@matches = apropos($name [, $is_regex])>
 
 Search for function C<$name>, either in all packages or, if C<$name>
 is qualified, only in one package.  If C<$is_regex> is true, the
@@ -249,7 +266,7 @@ sub apropos
     }
 }
 
-=item C<@names = mod_subs($pack)>
+=head2 C<@names = mod_subs($pack)>
 
 Find subs in package C<$pack>.
 
@@ -265,7 +282,7 @@ sub mod_subs
     }
 }
 
-=item C<@decls = mod_decls($pack)>
+=head2 C<@decls = mod_decls($pack)>
 
 Generate a list of declarations for all subroutines in package
 C<$pack>.
@@ -285,7 +302,7 @@ sub mod_decls
     return wantarray ? @ret : join '', @ret;
 }
 
-=item C<$info = module_info($module, $type)>
+=head2 C<$info = module_info($module, $type)>
 
 Emacs-called function to get module information.
 
@@ -311,7 +328,7 @@ sub module_info($$)
     }
 }
 
-=item C<$file = mod_file($mod)>
+=head2 C<$file = mod_file($mod)>
 
 Find the likely file owner for module C<$mod>.
 
@@ -327,7 +344,7 @@ sub mod_file
     $m ? $INC{"$m.pm"} : undef;
 }
 
-=item C<@mods = package_list>
+=head2 C<@mods = package_list>
 
 Gather a list of all distributions on the system. XXX UNUSED
 
@@ -348,7 +365,7 @@ sub package_list
     sort inst->modules;
 }
 
-=item C<@mods = module_list>
+=head2 C<@mods = module_list>
 
 Gather a list of all packages (.pm files, really) installed on the
 system, grouped by distribution. XXX UNUSED
@@ -368,7 +385,7 @@ sub module_list
     } @_;
 }
 
-=item C<@mods = doc_list>
+=head2 C<@mods = doc_list>
 
 Gather a list of all documented packages (.?pm files, really)
 installed on the system, grouped by distribution. XXX UNUSED
@@ -386,7 +403,7 @@ sub doc_list
     } @_;
 }
 
-=item C<lexicals($subname)>
+=head2 C<lexicals($subname)>
 
 Return a list of C<$subname>'s lexical variables.  Note that this
 includes all nested scopes -- I don't know if or how Perl
@@ -404,7 +421,7 @@ sub lexicals
     } grep B::class($_) ne 'SPECIAL', $names->ARRAY;
 }
 
-=item C<$lisp = tolisp($perl)>
+=head2 C<$lisp = tolisp($perl)>
 
 Convert a Perl scalar to some ELisp equivalent.
 
@@ -439,10 +456,11 @@ sub tolisp($)
     }
 }
 
-=item C<printer(\@res [, $iseval])>
+=head2 C<printer(\@res [, $iseval])>
 
 Print C<@res> appropriately on the current filehandle.  If C<$iseval>
-is true, use terse format.  Otherwise, use human-readable format.
+is true, use terse format.  Otherwise, use human-readable format,
+which can use either L<Data::Dumper>, L<YAML>, or L<Data::Dump>.
 
 =cut
 
@@ -462,7 +480,7 @@ sub print_dumper
 sub print_plain
 {
     no strict;
-    $__ = "@res";
+    $::__ = "@res";
 }
 
 sub print_yaml
@@ -495,25 +513,26 @@ sub printer
     @__ = @res;
     my $str;
     if ($iseval) {
-        $__ = "@res";
+        $::__ = "@res";
     } elsif (@res == 1 && (ref $res[0]) =~ /^PDL/) {
-        $__ = "$res[0]";
+        $::__ = "$res[0]";
     } else {
-        $__ = $PRINTER->();
+        $::__ = $PRINTER->();
     }
     if ($iseval) {
-        print ';;;', length $__, "\n$__\n";
+        print ';;;', length $::__, "\n$::__\n";
     } else {
-        print "=> $__\n";
+        print "=> $::__\n";
     }
 }
 
-=item C<repl(\*FH)>
+=head2 C<repl(\*FH)>
 
 Execute a command interpreter on FH.  The prompt has a few bells and
 whistles, including:
 
-  * Obviously-incomplete lines are treated as multiline input.
+  * Obviously-incomplete lines are treated as multiline input (press
+    'return' twice or 'C-c' to discard).
 
   * C<die> is overridden to enter a recursive interpreter at the point
     C<die> is called.  From within this interpreter, you can examine a
@@ -524,19 +543,23 @@ Behavior is controlled in part through the following package-globals:
 
 =over 4
 
+=item C<$PACKAGE> -- evaluation package
+
+=item C<$PRINTER> -- result printer (default: print_dumper)
+
 =item C<$PS1> -- the default prompt
 
 =item C<$STOPDIE> -- true to enter the inspector on C<die()>
 
 =item C<$STOPWARN> -- true to enter the inspector on C<warn()>
 
-=item C<%REPL> -- maps shortcut names to handlers
-
-=item C<$PACKAGE> -- evaluation package
+=item C<$STRICT> -- whether 'use strict' is applied to input
 
 =item C<$WANTARRAY> -- evaluation context
 
-=item C<$PRINTER> -- result printer (default: print_dumper)
+=item C<%REPL> -- maps shortcut names to handlers
+
+=item C<%REPL_DOC> -- maps shortcut names to documentation
 
 =back
 
@@ -559,6 +582,7 @@ BEGIN {
              wantarray => \&Sepia::repl_wantarray,
              format => \&Sepia::repl_format,
              strict => \&Sepia::repl_strict,
+             quit => \&Sepia::repl_quit,
          );
     %REPL_DOC = (
         cd =>
@@ -572,6 +596,8 @@ BEGIN {
     'methods X          List methods for reference or package X',
         package =>
     'package PACKAGE    Set evaluation package to PACKAGE',
+        quit =>
+    'quit               Quit the REPL',
         strict =>
     'strict [0|1]       Turn \'use strict\' mode on or off',
         wantarray =>
@@ -685,10 +711,28 @@ sub who
     } grep !/::$/ && !/^(?:_<|[^\w])/, keys %{$pack.'::'};
 }
 
+
+sub columnate
+{
+    my $len = 0;
+    my $width = $ENV{COLUMNS} || 80;
+    for (@_) {
+        $len = length if $len < length;
+    }
+    my $nc = int($width / ($len+1)) || 1;
+    my $nr = @_ / $nc + (@_ % $nc ? 1 : 0);
+    my $fmt = ('%-'.($len+1).'s') x $nc . "\n";
+    my @incs = map { $_ * $nr } 0..$nc-1;
+    my $str = '';
+    for my $r (0..$nr) {
+        $str .= sprintf $fmt, map { $_ || '' } @_[map { $r + $_ } @incs];
+    }
+    $str
+}
+
 sub repl_who
 {
-    my @who = who @_;
-    Sepia::printer(\@who);
+    print columnate who @_;
     0;
 }
 
@@ -740,6 +784,11 @@ sub repl_package
     0;
 }
 
+sub repl_quit
+{
+    1;
+}
+
 sub debug_help
 {
     print <<EOS;
@@ -838,7 +887,10 @@ sub repl
         }
         CORE::warn(@_);
     };
-
+    print <<EOS;
+Sepia version $Sepia::VERSION.
+Press ",h" for help, or "^D" or ",q" to exit.
+EOS
     print prompt;
     my @sigs = qw(INT TERM PIPE ALRM);
     local @SIG{@sigs};
@@ -867,16 +919,23 @@ sub repl
             };
             if ($buf =~ /^,(\S+)\s*(.*)/s) {
                 ## Inspector shortcuts
-                if (exists $Sepia::RK{$1}) {
+                my $short = $1;
+                if (exists $Sepia::RK{$short}) {
                     my $ret;
                     my $arg = $2;
                     chomp $arg;
-                    ($ret, @res) = $Sepia::REPL{$Sepia::RK{$1}}->($arg, wantarray);
+                    ($ret, @res) = $Sepia::REPL{$Sepia::RK{$short}}->($arg, wantarray);
                     if ($ret) {
                         return wantarray ? @res : $res[0];
                     }
                 } else {
-                    print "Unrecignized shortcut '$1'\n";
+                    if (grep /^$short/, keys %Sepia::REPL) {
+                        print "Ambiguous shortcut '$short': ",
+                            join(', ', sort grep /^$short/, keys %Sepia::REPL),
+                                "\n";
+                    } else {
+                        print "Unrecognized shortcut '$short'\n";
+                    }
                     $buf = '';
                     print prompt;
                     next repl;
diff --git a/sepia.el b/sepia.el
index 87634e9..33157e9 100644
--- a/sepia.el
+++ b/sepia.el
@@ -558,18 +558,22 @@ to this location."
     (interactive "P")
     (multiple-value-bind (type obj) (sepia-ident-at-point)
       (sepia-set-found nil type)
-      (let ((ret
-             (cond
-               ((member type '(?% ?$ ?@)) (xref-var-defs obj))
-               ((or (equal type ?&)
-                    (let (case-fold-search)
-                      (string-match "^[^A-Z]" obj)))
-                (list (sepia-location obj)))
-               (t `((,(sepia-w3m-perldoc-this obj) 1 nil nil))))))
-        (if display-p
-            (sepia-show-locations ret)
-            (sepia-set-found ret type)
-            (sepia-next)))))
+      (let* (module-doc-p
+             (ret
+              (cond
+                ((member type '(?% ?$ ?@)) (xref-var-defs obj))
+                ((or (equal type ?&)
+                     (let (case-fold-search)
+                       (string-match "^[^A-Z]" obj)))
+                 (list (sepia-location obj)))
+                (t
+                 (setq module-doc-p t)
+                 `((,(sepia-w3m-perldoc-this obj) 1 nil nil))))))
+        (unless module-doc-p
+          (if display-p
+              (sepia-show-locations ret)
+              (sepia-set-found ret type)
+              (sepia-next))))))
 
 (defun sepia-rebuild ()
   "Rebuild the Xref database."
@@ -819,12 +823,17 @@ The function is intended to be bound to \\M-TAB, like
         (1 ;; (delete-ident-at-point)
          (delete-region (- (point) len) (point))
          (insert (if type (string type) "") (car completions))
+         ;; Hide stale completions buffer (stolen from lisp.el).
+         (let ((win (get-buffer-window "*Completions*" 0)))
+           (if win (with-selected-window win (bury-buffer))))
          t)
         (t (let ((old name)
                  (new (try-completion "" completions)))
              (if (string= new old)
                  (with-output-to-temp-buffer "*Completions*"
                    (display-completion-list completions))
+                 (let ((win (get-buffer-window "*Completions*" 0)))
+                   (if win (with-selected-window win (bury-buffer))))
                  (delete-region (- (point) len) (point))
                  (insert (if type (string type) "") new)))
            t)))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/sepia.git



More information about the Pkg-perl-cvs-commits mailing list