[sepia] 08/63: Imported Debian patch 0.73-2
Hilko Bengen
bengen at moszumanska.debian.org
Sat Aug 8 11:20:33 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 b1e940d17ec55fb3ab8a2051c8bfefdd59a75d5e
Author: Hilko Bengen <bengen at debian.org>
Date: Sat May 26 16:22:31 2007 +0200
Imported Debian patch 0.73-2
---
debian/changelog | 7 +++++++
lib/Sepia.pm | 61 ++++++++++++++++++++++++++++++++------------------------
sepia.el | 20 ++++++++++++++++---
3 files changed, 59 insertions(+), 29 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 362e0f4..f89923e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+sepia (0.73-2) unstable; urgency=low
+
+ * Upstream fix for autocompletion (in general and for scalars in
+ particular)
+
+ -- Hilko Bengen <bengen at debian.org> Sat, 26 May 2007 16:22:31 +0200
+
sepia (0.73-1) unstable; urgency=low
* New upstream release
diff --git a/lib/Sepia.pm b/lib/Sepia.pm
index 8ce4006..9c89d3d 100644
--- a/lib/Sepia.pm
+++ b/lib/Sepia.pm
@@ -92,7 +92,6 @@ sub _apropos_re($)
sub _completions1
{
no strict;
- print STDERR "_completions1(@_)\n";
my $stash = shift;
my $re = shift || '';
$re = qr/$re/;
@@ -119,45 +118,55 @@ sub completions
{
no strict;
my ($str, $type, $infunc) = @_;
- my @ret = map { s/^:://; $_ } ($type ? do {
- (grep { defined *{$_}{$type} } _completions $str),
- (defined $infunc && defined *{$infunc}{CODE}) ? do {
+ my @ret;
+
+ if (!$type) {
+ @ret = grep {
+ defined *{$_}{CODE} || defined *{$_}{IO}
+ || (/::$/ && defined *{$_}{HASH});
+ } _completions $str;
+ } else {
+ @ret = grep {
+ $type eq 'SCALAR' ? defined ${$_} : defined *{$_}{$type}
+ } _completions $str;
+ if (defined $infunc && defined *{$infunc}{CODE}) {
my ($apre) = _apropos_re($str);
my $st = $sigil{$type};
- grep {
+ push @ret, grep {
(my $tmp = $_) =~ s/^\Q$st//;
$tmp =~ /$apre/;
} lexicals($infunc);
- } : ();
- } : do {
- grep {
- defined *{$_}{CODE} || defined *{$_}{IO}
- || (/::$/ && defined *{$_}{HASH});
- } _completions $str;
- });
- if (!@ret && $str !~ /[^\w\d]/) {
+ }
+ }
+
## Complete "simple" sequences as abbreviations, e.g.:
## wtci -> Want_To_Complete_It, NOT
## -> WaTCh_trIpe
+ if (!@ret && $str !~ /[^\w\d]/) {
my $broad = join '.*', map "\\b$_", split '', $str;
- @ret = map { s/^:://; $_ } ($type ? do {
- (grep { defined *{$_}{$type} } _completions1 '::', qr/$broad/),
- (defined $infunc && defined *{$infunc}{CODE}) ? do {
- my ($apre) = _apropos_re($str);
+ if ($type) {
+ @ret = grep {
+ defined *{$_}{CODE} || defined *{$_}{IO}
+ || (/::$/ && defined *{$_}{HASH});
+ } _completions1 '::', qr/$broad/;
+ } else {
+ @ret = grep {
+ $type eq 'SCALAR' ? defined ${$_} : defined *{$_}{$type}
+ } _completions1 '::', qr/$broad/;
+ }
+ if (defined $infunc && defined *{$infunc}{CODE}) {
my $st = $sigil{$type};
grep {
(my $tmp = $_) =~ s/^\Q$st//;
- $tmp =~ /$apre/;
+ $tmp =~ /$broad/;
} lexicals($infunc);
- } : ();
- } : do {
- grep {
- defined *{$_}{CODE} || defined *{$_}{IO}
- || (/::$/ && defined *{$_}{HASH});
- } _completions1 '::', qr/$broad/;
- })
}
- @ret;
+ }
+ ## XXX: Control characters, $", and $1, etc. confuse Emacs, so
+ ## remove them.
+ grep {
+ !looks_like_number $_ && !/^[^\w\d_]$/ && !/^_</ && !/^[[:cntrl:]]/
+ } map { s/^:://; $_ } @ret;
}
=head2 C<@locs = location(@names)>
diff --git a/sepia.el b/sepia.el
index 33157e9..1276d86 100644
--- a/sepia.el
+++ b/sepia.el
@@ -800,6 +800,21 @@ annoying in larger programs.
The function is intended to be bound to \\M-TAB, like
``lisp-complete-symbol''."
(interactive)
+ (let ((win (get-buffer-window "*Completions*" 0)))
+ (when (and (eq last-command this-command)
+ win (window-live-p win) (window-buffer win)
+ (buffer-name (window-buffer win)))
+ ;; If this command was repeated, and
+ ;; there's a fresh completion window with a live buffer,
+ ;; and this command is repeated, scroll that window.
+ (with-current-buffer (window-buffer win)
+ (if (pos-visible-in-window-p (point-max) win)
+ (set-window-start win (point-min))
+ (save-selected-window
+ (select-window win)
+ (scroll-up))))
+ (return t))
+
(multiple-value-bind (type name) (sepia-ident-at-point)
(let ((len (+ (if type 1 0) (length name)))
(completions (xref-completions
@@ -824,8 +839,7 @@ The function is intended to be bound to \\M-TAB, like
(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))))
+ (if win (with-selected-window win (bury-buffer)))
t)
(t (let ((old name)
(new (try-completion "" completions)))
@@ -837,7 +851,7 @@ The function is intended to be bound to \\M-TAB, like
(delete-region (- (point) len) (point))
(insert (if type (string type) "") new)))
t)))
- ))
+ )))
(defun sepia-indent-or-complete ()
"Indent the current line or complete the symbol around point.
--
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