# HG changeset patch # User wenzelm # Date 1345644623 -7200 # Node ID 04cd2fddb4d98cef570d50021e38e5122fa93803 # Parent 61dc7d5d150a94d3f680d64ea7c2d128ec39873a pass syntax through check_thy; diff -r 61dc7d5d150a -r 04cd2fddb4d9 src/Pure/System/build.scala --- a/src/Pure/System/build.scala Wed Aug 22 15:53:17 2012 +0200 +++ b/src/Pure/System/build.scala Wed Aug 22 16:10:23 2012 +0200 @@ -354,7 +354,7 @@ map(thy => Document.Node.Name(info.dir + Thy_Load.thy_path(thy)))) val loaded_theories = thy_deps.loaded_theories - val syntax = thy_deps.syntax + val syntax = thy_deps.make_syntax val all_files = thy_deps.deps.map({ case (n, h) => diff -r 61dc7d5d150a -r 04cd2fddb4d9 src/Pure/Thy/thy_info.scala --- a/src/Pure/Thy/thy_info.scala Wed Aug 22 15:53:17 2012 +0200 +++ b/src/Pure/Thy/thy_info.scala Wed Aug 22 16:10:23 2012 +0200 @@ -44,14 +44,10 @@ def deps: List[Dep] = rev_deps.reverse - def thy_load_commands: List[String] = - (for ((cmd, Some(((Keyword.THY_LOAD, _), _))) <- keywords) yield cmd) ::: - thy_load.base_syntax.thy_load_commands - def loaded_theories: Set[String] = (thy_load.loaded_theories /: rev_deps) { case (loaded, (name, _)) => loaded + name.theory } - def syntax: Outer_Syntax = thy_load.base_syntax.add_keywords(keywords) + def make_syntax: Outer_Syntax = thy_load.base_syntax.add_keywords(keywords) } private def require_thys(initiators: List[Document.Node.Name], @@ -66,8 +62,9 @@ else { try { if (initiators.contains(name)) error(cycle_msg(initiators)) + val syntax = required.make_syntax val header = - try { thy_load.check_thy(name) } + try { thy_load.check_thy(syntax, name) } catch { case ERROR(msg) => cat_error(msg, "The error(s) above occurred while examining theory " + diff -r 61dc7d5d150a -r 04cd2fddb4d9 src/Pure/Thy/thy_load.scala --- a/src/Pure/Thy/thy_load.scala Wed Aug 22 15:53:17 2012 +0200 +++ b/src/Pure/Thy/thy_load.scala Wed Aug 22 16:10:23 2012 +0200 @@ -42,12 +42,14 @@ } } - def check_thy_text(name: Document.Node.Name, text: CharSequence): Document.Node.Header = + def check_thy_text(syntax: Outer_Syntax, name: Document.Node.Name, text: CharSequence) + : Document.Node.Header = { val header = Thy_Header.read(text) val name1 = header.name val imports = header.imports.map(import_name(name.dir, _)) // FIXME val uses = header.uses.map(p => (append(name.dir, Path.explode(p._1)), p._2)) + // FIXME find files in text val uses = header.uses if (name.theory != name1) error("Bad file name " + Thy_Load.thy_path(Path.basic(name.theory)) + @@ -55,11 +57,11 @@ Document.Node.Header(imports, header.keywords, uses) } - def check_thy(name: Document.Node.Name): Document.Node.Header = + def check_thy(syntax: Outer_Syntax, name: Document.Node.Name): Document.Node.Header = { val path = Path.explode(name.node) if (!path.is_file) error("No such file: " + path.toString) - check_thy_text(name, File.read(path)) + check_thy_text(syntax, name, File.read(path)) } } diff -r 61dc7d5d150a -r 04cd2fddb4d9 src/Tools/jEdit/src/document_model.scala --- a/src/Tools/jEdit/src/document_model.scala Wed Aug 22 15:53:17 2012 +0200 +++ b/src/Tools/jEdit/src/document_model.scala Wed Aug 22 16:10:23 2012 +0200 @@ -68,7 +68,8 @@ Swing_Thread.require() Isabelle.buffer_lock(buffer) { Exn.capture { - Isabelle.thy_load.check_thy_text(name, buffer.getSegment(0, buffer.getLength)) + val text = buffer.getSegment(0, buffer.getLength) + Isabelle.thy_load.check_thy_text(session.recent_syntax, name, text) } match { case Exn.Res(header) => header case Exn.Exn(exn) => Document.Node.bad_header(Exn.message(exn)) diff -r 61dc7d5d150a -r 04cd2fddb4d9 src/Tools/jEdit/src/jedit_thy_load.scala --- a/src/Tools/jEdit/src/jedit_thy_load.scala Wed Aug 22 15:53:17 2012 +0200 +++ b/src/Tools/jEdit/src/jedit_thy_load.scala Wed Aug 22 16:10:23 2012 +0200 @@ -53,20 +53,21 @@ } } - override def check_thy(name: Document.Node.Name): Document.Node.Header = + override def check_thy(syntax: Outer_Syntax, name: Document.Node.Name) + : Document.Node.Header = { Swing_Thread.now { Isabelle.jedit_buffer(name.node) match { case Some(buffer) => Isabelle.buffer_lock(buffer) { - Some(check_thy_text(name, buffer.getSegment(0, buffer.getLength))) + Some(check_thy_text(syntax, name, buffer.getSegment(0, buffer.getLength))) } case None => None } } getOrElse { val file = new JFile(name.node) // FIXME load URL via jEdit VFS (!?) if (!file.exists || !file.isFile) error("No such file: " + quote(file.toString)) - check_thy_text(name, File.read(file)) + check_thy_text(syntax, name, File.read(file)) } } }