]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'autouse-existing-usings' of git@github.com:seckar/factor into cleaner...
authorNicholas Seckar <nseckar@gmail.com>
Sun, 19 Apr 2009 21:31:44 +0000 (14:31 -0700)
committerNicholas Seckar <nseckar@gmail.com>
Sun, 19 Apr 2009 21:31:44 +0000 (14:31 -0700)
extra/fuel/fuel.factor
misc/fuel/fuel-debug-uses.el

index 413aefdc761e62d69b9a2a6c6db89a8f4370eb08..3c623212b05ade78108f04231ffff39c61adfc09 100644 (file)
@@ -1,9 +1,9 @@
 ! Copyright (C) 2008, 2009 Jose Antonio Ortega Ruiz.
 ! See http://factorcode.org/license.txt for BSD license.
 
-USING: assocs compiler.units fuel.eval fuel.help fuel.remote fuel.xref
-help.topics io.pathnames kernel namespaces parser sequences
-tools.scaffold vocabs.loader ;
+USING: accessors assocs compiler.units continuations fuel.eval fuel.help
+fuel.remote fuel.xref help.topics io.pathnames kernel math namespaces parser
+sequences tools.scaffold vocabs.loader ;
 
 IN: fuel
 
@@ -28,6 +28,24 @@ IN: fuel
 <PRIVATE
 
 SYMBOL: :uses
+SYMBOL: :uses-suggestions
+
+: is-use-restart ( restart -- ? )
+    name>> [ "Use the " head? ] [ " vocabulary" tail? ] bi and ;
+
+: get-restart-vocab ( restart -- vocab )
+    [ "Use the " length ] dip
+    name>> [ length " vocabulary" length - ] keep
+    subseq ;
+
+: is-suggested-restart ( restart -- ? )
+    dup is-use-restart [
+        get-restart-vocab :uses-suggestions get member?
+    ] [ drop f ] if ;
+
+: try-suggested-restarts ( -- )
+    restarts get [ is-suggested-restart ] filter
+    dup length 1 = [ first restart ] [ drop ] if ;
 
 : fuel-set-use-hook ( -- )
     [ amended-use get clone :uses prefix fuel-eval-set-result ]
@@ -38,6 +56,10 @@ SYMBOL: :uses
 
 PRIVATE>
 
+: fuel-use-suggested-vocabs ( ... suggestions quot: ( ... -- ... ) -- ... )
+    [ :uses-suggestions set ] dip
+    [ try-suggested-restarts rethrow ] recover ;
+
 : fuel-run-file ( path -- )
     [ fuel-set-use-hook run-file ] curry with-scope ; inline
 
index 4842f960d1787ebcbf8c9a3755601a0a46c2ae9d..8b25744011446094083f6156277639d355b95b1c 100644 (file)
         fuel-debug--uses nil
         fuel-debug--uses-restarts nil))
 
+(defun fuel-debug--current-usings (file)
+  (with-current-buffer (find-file-noselect file)
+    (sort (fuel-syntax--find-usings t) 'string<)))
+
 (defun fuel-debug--uses-for-file (file)
   (let* ((lines (fuel-debug--file-lines file))
-         (cmd `(:fuel ((V{ ,@lines } fuel-get-uses)) t t)))
+         (old-usings (fuel-debug--current-usings file))
+         (cmd `(:fuel ((V{ ,@old-usings }
+                           [ V{ ,@lines } fuel-get-uses ]
+                           fuel-use-suggested-vocabs)) t t)))
     (fuel-debug--uses-prepare file)
     (fuel--with-popup (fuel-debug--uses-buffer)
       (insert "Asking Factor. Please, wait ...\n")
 
 (defun fuel-debug--uses-display (uses)
   (let* ((inhibit-read-only t)
-         (old (with-current-buffer (find-file-noselect fuel-debug--uses-file)
-                (sort (fuel-syntax--find-usings t) 'string<)))
+         (old (fuel-debug--current-usings fuel-debug--uses-file))
          (new (sort uses 'string<)))
     (erase-buffer)
     (fuel-debug--uses-insert-title)