src/Tools/jEdit/src/document_model.scala
changeset 64828 e837f6bf653c
parent 64827 4ef1eb75f1cd
child 64829 07f209e957bc
equal deleted inserted replaced
64827:4ef1eb75f1cd 64828:e837f6bf653c
   185 
   185 
   186   sealed case class File_Content(text: String)
   186   sealed case class File_Content(text: String)
   187   {
   187   {
   188     lazy val bytes: Bytes = Bytes(text)
   188     lazy val bytes: Bytes = Bytes(text)
   189     lazy val chunk: Symbol.Text_Chunk = Symbol.Text_Chunk(text)
   189     lazy val chunk: Symbol.Text_Chunk = Symbol.Text_Chunk(text)
   190     lazy val bibtex_entries: List[(String, Text.Offset)] = Bibtex_JEdit.parse_entries(text)
   190     lazy val bibtex_entries: List[(String, Text.Offset)] =
       
   191       try { Bibtex.parse_entries(text) }
       
   192       catch { case ERROR(msg) => Output.warning(msg); Nil }
   191   }
   193   }
   192 }
   194 }
   193 
   195 
   194 trait Document_Model extends Document.Model
   196 trait Document_Model extends Document.Model
   195 {
   197 {
   246   def get_blob: Option[Document.Blob] =
   248   def get_blob: Option[Document.Blob] =
   247     if (is_theory) None
   249     if (is_theory) None
   248     else Some(Document.Blob(content.bytes, content.chunk, pending_edits.nonEmpty))
   250     else Some(Document.Blob(content.bytes, content.chunk, pending_edits.nonEmpty))
   249 
   251 
   250   def bibtex_entries: List[(String, Text.Offset)] =
   252   def bibtex_entries: List[(String, Text.Offset)] =
   251     if (Bibtex_JEdit.check(node_name)) content.bibtex_entries else Nil
   253     if (Bibtex.check_name(node_name)) content.bibtex_entries else Nil
   252 
   254 
   253 
   255 
   254   /* edits */
   256   /* edits */
   255 
   257 
   256   def update_text(text: String): Option[File_Model] =
   258   def update_text(text: String): Option[File_Model] =
   346 
   348 
   347   private def reset_bibtex_entries(): Unit = GUI_Thread.require { _bibtex_entries = None }
   349   private def reset_bibtex_entries(): Unit = GUI_Thread.require { _bibtex_entries = None }
   348 
   350 
   349   def bibtex_entries: List[(String, Text.Offset)] =
   351   def bibtex_entries: List[(String, Text.Offset)] =
   350     GUI_Thread.require {
   352     GUI_Thread.require {
   351       if (Bibtex_JEdit.check(buffer)) {
   353       if (Bibtex.check_name(node_name)) {
   352         _bibtex_entries match {
   354         _bibtex_entries match {
   353           case Some(entries) => entries
   355           case Some(entries) => entries
   354           case None =>
   356           case None =>
   355             val text = JEdit_Lib.buffer_text(buffer)
   357             val text = JEdit_Lib.buffer_text(buffer)
   356             val entries = Bibtex_JEdit.parse_entries(text)
   358             val entries =
       
   359               try { Bibtex.parse_entries(text) }
       
   360               catch { case ERROR(msg) => Output.warning(msg); Nil }
   357             _bibtex_entries = Some(entries)
   361             _bibtex_entries = Some(entries)
   358             entries
   362             entries
   359         }
   363         }
   360       }
   364       }
   361       else Nil
   365       else Nil