src/Tools/jEdit/src/plugin.scala
changeset 64817 0bb6b582bb4f
parent 64813 7283f41d05ab
child 64818 67a0a563d2b3
equal deleted inserted replaced
64816:e306cab8edf9 64817:0bb6b582bb4f
    69     for {
    69     for {
    70       text_area <- JEdit_Lib.jedit_text_areas(buffer).toList
    70       text_area <- JEdit_Lib.jedit_text_areas(buffer).toList
    71       doc_view <- document_view(text_area)
    71       doc_view <- document_view(text_area)
    72     } yield doc_view
    72     } yield doc_view
    73 
    73 
    74   def document_models(): List[Document_Model] =
       
    75     for {
       
    76       buffer <- JEdit_Lib.jedit_buffers().toList
       
    77       model <- Document_Model.get(buffer)
       
    78     } yield model
       
    79 
       
    80   def document_blobs(): Document.Blobs =
       
    81     Document.Blobs(
       
    82       (for {
       
    83         buffer <- JEdit_Lib.jedit_buffers()
       
    84         model <- Document_Model.get(buffer)
       
    85         blob <- model.get_blob
       
    86       } yield (model.node_name -> blob)).toMap)
       
    87 
       
    88   def exit_models(buffers: List[Buffer])
    74   def exit_models(buffers: List[Buffer])
    89   {
    75   {
    90     GUI_Thread.now {
    76     GUI_Thread.now {
    91       PIDE.editor.flush()
    77       PIDE.editor.flush()
    92       buffers.foreach(buffer =>
    78       buffers.foreach(buffer =>
   107         if buffer != null && !buffer.getBooleanProperty(Buffer.GZIPPED)
    93         if buffer != null && !buffer.getBooleanProperty(Buffer.GZIPPED)
   108       } {
    94       } {
   109         if (buffer.isLoaded) {
    95         if (buffer.isLoaded) {
   110           JEdit_Lib.buffer_lock(buffer) {
    96           JEdit_Lib.buffer_lock(buffer) {
   111             val node_name = resources.node_name(buffer)
    97             val node_name = resources.node_name(buffer)
   112             val model = Document_Model.init(session, buffer, node_name)
    98             val model = Document_Model.init(session, node_name, buffer)
   113             for {
    99             for {
   114               text_area <- JEdit_Lib.jedit_text_areas(buffer)
   100               text_area <- JEdit_Lib.jedit_text_areas(buffer)
   115               if document_view(text_area).map(_.model) != Some(model)
   101               if document_view(text_area).map(_.model) != Some(model)
   116             } Document_View.init(model, text_area)
   102             } Document_View.init(model, text_area)
   117           }
   103           }
   338         case msg: BufferUpdate
   324         case msg: BufferUpdate
   339         if msg.getWhat == BufferUpdate.LOADED ||
   325         if msg.getWhat == BufferUpdate.LOADED ||
   340           msg.getWhat == BufferUpdate.PROPERTIES_CHANGED ||
   326           msg.getWhat == BufferUpdate.PROPERTIES_CHANGED ||
   341           msg.getWhat == BufferUpdate.CLOSING =>
   327           msg.getWhat == BufferUpdate.CLOSING =>
   342 
   328 
   343           if (msg.getWhat == BufferUpdate.CLOSING) {
   329           if (msg.getWhat == BufferUpdate.CLOSING && msg.getBuffer != null)
   344             val buffer = msg.getBuffer
   330             PIDE.exit_models(List(msg.getBuffer))
   345             if (buffer != null) PIDE.editor.remove_node(PIDE.resources.node_name(msg.getBuffer))
   331 
   346           }
       
   347           if (PIDE.session.is_ready) {
   332           if (PIDE.session.is_ready) {
   348             delay_init.invoke()
   333             delay_init.invoke()
   349             delay_load.invoke()
   334             delay_load.invoke()
   350           }
   335           }
   351 
   336