retrieve shortcut list from inferior process.
authorSean O'Rourke <seano@cpan.org>
Mon, 30 Jan 2012 21:29:39 +0000 (30 14:29 -0700)
committerSean O'Rourke <seano@cpan.org>
Mon, 30 Jan 2012 21:29:39 +0000 (30 14:29 -0700)
ChangeLog
lib/Sepia.pm
sepia.el

index 7d8a00d..d9f079d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
 
        * sepia.el (sepia-complete-symbol): Finally fix method completion
          to not delete invocant.
+       (sepia-shortcuts): retrieve shortcuts dynamically.
+       (sepia-complete-symbol): use it.
 
 2011-11-16  Sean O'Rourke  <seano@cpan.org>
 
index 09eaa15..97255a1 100644 (file)
@@ -33,7 +33,7 @@ interface.
 
 =cut
 
-$VERSION = '0.992';
+$VERSION = '0.992_01';
 BEGIN {
     if ($] >= 5.012) {
         eval 'no warnings "deprecated"'; # undo some of the 5.12 suck.
index 717710f..09980f0 100644 (file)
--- a/sepia.el
+++ b/sepia.el
@@ -979,17 +979,9 @@ REPL shortcuts."
   (interactive)
   (error "TODO"))
 
-(defvar sepia-shortcuts
-  '(
-"break"     "eval"      "lsbreak"   "quit"      "size"      "wantarray"
-"cd"        "format"    "methods"   "reload"    "strict"    "who"
-"debug"     "freload"   "package"   "restart"   "test"
-"define"    "help"      "pdl"       "save"      "time"      
-"delete"    "load"      "pwd"       "shell"     "undef"     
-)
-  "List of currently-defined REPL shortcuts.
-
-XXX: this needs to be updated whenever you add one on the Perl side.")
+(defun sepia-shortcuts ()
+  "Return a list of current Sepia shortcuts."
+  (sepia-eval "sort keys %Sepia::REPL" 'list-context))
 
 (defun sepia-complete-symbol ()
   "Try to complete the word at point.
@@ -1025,10 +1017,10 @@ The function is intended to be bound to \\M-TAB, like
       (when (eq major-mode 'sepia-repl-mode)
         (save-excursion
           (comint-bol)
-          (when (looking-at ",\\([a-z]+\\)$")
+          (when (looking-at ",\\([a-z]*\\)$")
             (let ((str (match-string 1)))
               (setq len (length str)
-                    completions (all-completions str sepia-shortcuts))))))
+                    completions (all-completions str (sepia-shortcuts)))))))
       ;; 1 - Look for a method call:
       (unless completions
         (setq meth (sepia-simple-method-before-point))