     definition>> pprint-short
     "''" print ;
 
-: edit ( defspec -- )
-    dup where
-    [ first2 edit-location ]
-    [ dup word-link? [ name>> edit ] [ cannot-find-source ] if ]
-    ?if ;
+GENERIC: edit ( object -- )
 
-: edit-vocab ( name -- )
-    >vocab-link edit ;
+M: object edit
+    dup where [ first2 edit-location ] [ cannot-find-source ] ?if ;
+
+M: link edit name>> edit ;
+
+M: string edit
+    dup vocab [ edit ] [ cannot-find-source ] ?if ;
 
 : edit-error ( error -- )
     [ error-file ] [ error-line ] bi

    [ "Fixing " write pprint " and all usages..." print nl ]
    [ [ smart-usage ] keep prefix ] bi
    edit-each ;

! Copyright (C) 2005, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs continuations debugger definitions
help.topics io io.backend io.files io.pathnames kernel lexer
namespaces parser prettyprint sequences source-files
source-files.errors splitting strings summary tools.crossref
vocabs vocabs.files vocabs.hierarchy vocabs.loader
vocabs.metadata ;
FROM: vocabs => vocab-name >vocab-link ;
IN: editors

