src/Tools/jEdit/src/completion_popup.scala
changeset 56589 71c5d1f516c0
parent 56587 83777a91f5de
child 56593 0ea7c84110ac
equal deleted inserted replaced
56588:272d173cd398 56589:71c5d1f516c0
   153       val buffer = text_area.getBuffer
   153       val buffer = text_area.getBuffer
   154       val decode = Isabelle_Encoding.is_active(buffer)
   154       val decode = Isabelle_Encoding.is_active(buffer)
   155 
   155 
   156       Isabelle.mode_syntax(JEdit_Lib.buffer_mode(buffer)) match {
   156       Isabelle.mode_syntax(JEdit_Lib.buffer_mode(buffer)) match {
   157         case Some(syntax) =>
   157         case Some(syntax) =>
   158           val caret = text_area.getCaretPosition
       
   159 
       
   160           val line = buffer.getLineOfOffset(caret)
       
   161           val line_start = buffer.getLineStartOffset(line)
       
   162           val line_length = (buffer.getLineEndOffset(line) min buffer.getLength) - line_start
       
   163           val line_text = buffer.getSegment(line_start, line_length)
       
   164 
       
   165           val context =
   158           val context =
   166             (for {
   159             (for {
   167               rendering <- opt_rendering
   160               rendering <- opt_rendering
   168               range <- JEdit_Lib.before_caret_range(text_area, rendering)
   161               range <- JEdit_Lib.before_caret_range(text_area, rendering)
   169               context <- rendering.language_context(range)
   162               context <- rendering.language_context(range)
   170             } yield context) getOrElse syntax.language_context
   163             } yield context) getOrElse syntax.language_context
   171 
   164 
   172           syntax.completion.complete(
   165           val caret = text_area.getCaretPosition
   173             history, decode, explicit, line_start, line_text, caret - line_start, false, context)
   166           val line_range = JEdit_Lib.line_range(buffer, text_area.getCaretLine)
       
   167           val line_start = line_range.start
       
   168           for {
       
   169             line_text <- JEdit_Lib.try_get_text(buffer, line_range)
       
   170             result <-
       
   171               syntax.completion.complete(
       
   172                 history, decode, explicit, line_start, line_text, caret - line_start, false, context)
       
   173           } yield result
   174 
   174 
   175         case None => None
   175         case None => None
   176       }
   176       }
   177     }
   177     }
   178 
   178