src/Tools/jEdit/src/document_model.scala
changeset 64829 07f209e957bc
parent 64828 e837f6bf653c
child 64831 4792ee012e94
equal deleted inserted replaced
64828:e837f6bf653c 64829:07f209e957bc
    74   def get(buffer: JEditBuffer): Option[Buffer_Model] =
    74   def get(buffer: JEditBuffer): Option[Buffer_Model] =
    75     state.value.buffer_models.get(buffer)
    75     state.value.buffer_models.get(buffer)
    76 
    76 
    77   def is_stable(): Boolean =
    77   def is_stable(): Boolean =
    78     state.value.models_iterator.forall(_.is_stable)
    78     state.value.models_iterator.forall(_.is_stable)
       
    79 
       
    80   def bibtex_entries_iterator(): Iterator[(String, Document_Model, Text.Offset)] =
       
    81     for {
       
    82       model <- state.value.models_iterator
       
    83       (entry, offset) <- model.bibtex_entries
       
    84     } yield (entry, model, offset)
    79 
    85 
    80 
    86 
    81   /* init and exit */
    87   /* init and exit */
    82 
    88 
    83   def init(session: Session, node_name: Document.Node.Name, buffer: Buffer): Buffer_Model =
    89   def init(session: Session, node_name: Document.Node.Name, buffer: Buffer): Buffer_Model =
   191       try { Bibtex.parse_entries(text) }
   197       try { Bibtex.parse_entries(text) }
   192       catch { case ERROR(msg) => Output.warning(msg); Nil }
   198       catch { case ERROR(msg) => Output.warning(msg); Nil }
   193   }
   199   }
   194 }
   200 }
   195 
   201 
   196 trait Document_Model extends Document.Model
   202 sealed abstract class Document_Model extends Document.Model
   197 {
   203 {
   198   /* content */
   204   /* content */
   199 
   205 
   200   def bibtex_entries: List[(String, Text.Offset)]
   206   def bibtex_entries: List[(String, Text.Offset)]
   201 
   207 
   242     PIDE.resources.special_header(node_name) getOrElse
   248     PIDE.resources.special_header(node_name) getOrElse
   243       PIDE.resources.check_thy_reader("", node_name, Scan.char_reader(content.text), strict = false)
   249       PIDE.resources.check_thy_reader("", node_name, Scan.char_reader(content.text), strict = false)
   244 
   250 
   245 
   251 
   246   /* content */
   252   /* content */
       
   253 
       
   254   def node_position(offset: Text.Offset): Line.Node_Position =
       
   255     Line.Node_Position(node_name.node,
       
   256       Line.Position.zero.advance(content.text.substring(0, offset), Text.Length))
   247 
   257 
   248   def get_blob: Option[Document.Blob] =
   258   def get_blob: Option[Document.Blob] =
   249     if (is_theory) None
   259     if (is_theory) None
   250     else Some(Document.Blob(content.bytes, content.chunk, pending_edits.nonEmpty))
   260     else Some(Document.Blob(content.bytes, content.chunk, pending_edits.nonEmpty))
   251 
   261