src/Tools/jEdit/src/isabelle.scala
changeset 66182 1a4b6ae5e72b
parent 66180 201d42f67bba
child 66183 c67933ea9234
equal deleted inserted replaced
66181:33d7519fc35d 66182:1a4b6ae5e72b
   273   def newline(text_area: TextArea)
   273   def newline(text_area: TextArea)
   274   {
   274   {
   275     if (!text_area.isEditable()) text_area.getToolkit().beep()
   275     if (!text_area.isEditable()) text_area.getToolkit().beep()
   276     else {
   276     else {
   277       val buffer = text_area.getBuffer
   277       val buffer = text_area.getBuffer
       
   278       val line = text_area.getCaretLine
       
   279       val caret = text_area.getCaretPosition
       
   280 
   278       def nl { text_area.userInput('\n') }
   281       def nl { text_area.userInput('\n') }
   279 
   282 
   280       if (indent_enabled(buffer, "jedit_indent_newline")) {
   283       if (indent_enabled(buffer, "jedit_indent_newline")) {
   281         buffer_syntax(buffer) match {
   284         buffer_syntax(buffer) match {
   282           case Some(syntax) if buffer.isInstanceOf[Buffer] =>
   285           case Some(syntax) =>
   283             val keywords = syntax.keywords
   286             val keywords = syntax.keywords
   284 
   287 
   285             val line = text_area.getCaretLine
       
   286             val caret = text_area.getCaretPosition
       
   287             val (toks1, toks2) = Text_Structure.split_line_content(buffer, keywords, line, caret)
   288             val (toks1, toks2) = Text_Structure.split_line_content(buffer, keywords, line, caret)
   288 
   289 
   289             if (toks1.isEmpty) buffer.removeTrailingWhiteSpace(Array(line))
   290             if (toks1.isEmpty) buffer.removeTrailingWhiteSpace(Array(line))
   290             else if (keywords.is_indent_command(toks1.head)) buffer.indentLine(line, true)
   291             else if (keywords.is_indent_command(toks1.head)) buffer.indentLine(line, true)
   291 
   292 
   293               JEdit_Lib.buffer_edit(buffer) {
   294               JEdit_Lib.buffer_edit(buffer) {
   294                 text_area.setSelectedText("\n")
   295                 text_area.setSelectedText("\n")
   295                 if (!buffer.indentLine(line + 1, true)) text_area.goToStartOfWhiteSpace(false)
   296                 if (!buffer.indentLine(line + 1, true)) text_area.goToStartOfWhiteSpace(false)
   296               }
   297               }
   297             else nl
   298             else nl
   298           case _ => nl
   299           case None => nl
   299         }
   300         }
   300       }
   301       }
   301       else nl
   302       else nl
   302     }
   303     }
   303   }
   304   }