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 |