From: Adam Chlipala Date: Tue, 1 Jan 2008 22:19:27 +0000 (+0000) Subject: Only one default alias per domain X-Git-Tag: release_2010-11-19~69 X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/commitdiff_plain/5817600b9fb6b1a43268462d2255908682937c13 Only one default alias per domain --- diff --git a/src/plugins/alias.sml b/src/plugins/alias.sml index b96d57d..139c2fb 100644 --- a/src/plugins/alias.sml +++ b/src/plugins/alias.sml @@ -40,10 +40,10 @@ fun write nodes = fun writeD nodes = let - val files = map (fn node => aliasesDF node) nodes + fun files () = map (fn node => aliasesDF node) nodes in - (fn s => app (fn file => #write file s) files, - fn () => app (fn file => #writeDom file ()) files) + (fn s => app (fn file => #write file s) (files ()), + fn () => app (fn file => #writeDom file ()) (files ())) end fun openInAll base = foldl (fn (node, r) => @@ -52,9 +52,12 @@ fun openInAll base = foldl (fn (node, r) => Domain.domainsFile {node = node, name = base})) SM.empty Domain.nodes +fun reopenAliasesD () = (SM.app (fn {close, ...} => close ()) (!aliasesD); + aliasesD := openInAll "aliases.default") + val _ = Domain.registerBefore (fn _ => (aliases := openInAll "aliases"; - aliasesD := openInAll "aliases.default")) + reopenAliasesD ())) val _ = Domain.registerAfter (fn _ => (SM.app (fn file => #close file ()) (!aliases); @@ -134,7 +137,8 @@ fun writeSource (env, s, t) = write ": "; writeTarget (write, t); write "\n") - | Default => (writeD "*@"; + | Default => (reopenAliasesD (); + writeD "*@"; writeDomD (); writeD ": "; writeTarget (writeD, t);