From 8806a0b18b446c949c274b608b7f2d00b1d6861b Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Wed, 15 Apr 2009 16:12:31 -0700 Subject: [PATCH] Make fuel auto-use the existing using in fuel-debug--uses-for-file. --- extra/fuel/fuel.factor | 28 +++++++++++++++++++++++++--- misc/fuel/fuel-debug-uses.el | 12 +++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/extra/fuel/fuel.factor b/extra/fuel/fuel.factor index 403708e880..a8c2adc3e1 100644 --- a/extra/fuel/fuel.factor +++ b/extra/fuel/fuel.factor @@ -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 > [ "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 diff --git a/misc/fuel/fuel-debug-uses.el b/misc/fuel/fuel-debug-uses.el index 4842f960d1..8b25744011 100644 --- a/misc/fuel/fuel-debug-uses.el +++ b/misc/fuel/fuel-debug-uses.el @@ -88,9 +88,16 @@ 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") @@ -105,8 +112,7 @@ (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)