lazyval gui_text: String = Library.string_builder(line_range.length * 2) { s => val style = GUI.Style_HTML
// see also HyperSearchResults.highlightString
s ++= ""
s ++= line.toString
s ++= ": "
val line_start = line_range.start val plain_start = line_text.length - line_text.stripLeading.length val plain_stop = line_text.stripTrailing.length
val search_range = Text.Range(line_start + plain_start, line_start + plain_stop) var last = plain_start for (range <- JEdit_Lib.search_text(buffer, search_range, regex)) { val next = range.start - line_start if (last < next) s ++= style.make_text(line_text.substring(last, next))
s ++= ""
s ++= highlight_style
s ++= "\">"
s ++= style.make_text(line_text.substring(next, next + range.length))
s ++= ""
last = range.stop - line_start
} if (last < plain_stop) s ++= style.make_text(line_text.substring(last))
s ++= ""
} overridedef toString: String = gui_text
}
val fold_line_style = new Array[SyntaxStyle](4) for (i <- 0 to 3) {
fold_line_style(i) =
SyntaxUtilities.parseStyle(
jEdit.getThemeProperty("view.style.foldLine." + i),
current_font_info.family, current_font_info.size.round, true)
}
getPainter.setFoldLineStyle(fold_line_style)
if (getWidth > 0) { val metric = JEdit_Lib.font_metric(getPainter) val margin = Rich_Text.component_margin(metric, getPainter) val output = current_output val snapshot = current_base_snapshot val results = current_base_results
lazyval current_refresh: Future[Unit] = fork_refresh(
{ val (rich_texts, rendering) = try { val rich_texts = Rich_Text.format(output, margin, metric, cache = PIDE.session.cache) val rendering =
JEdit_Rendering.make(snapshot, rich_texts = rich_texts, results = results)
(rich_texts, rendering)
} catch { case exn: Throwable if !Exn.is_interrupt(exn) =>
Log.log(Log.ERROR, this, exn) throw exn
}
GUI_Thread.later { if (future_refresh.value.contains(current_refresh)) {
current_rendering = rendering
val horizontal_offset = pretty_text_area.getHorizontalOffset
def scroll_to(offset: Int, x: Int = horizontal_offset): Unit = {
setCaretPosition(offset)
JEdit_Lib.scroll_to_caret(pretty_text_area)
pretty_text_area.setHorizontalOffset(x)
}
val scroll_bottom = JEdit_Lib.scrollbar_bottom(pretty_text_area) val scroll_start = JEdit_Lib.scrollbar_start(pretty_text_area) val update_start =
JEdit_Lib.buffer_edit(getBuffer) {
rich_text_area.active_reset()
getBuffer.setFoldHandler(new Fold_Handling.Document_Fold_Handler(rendering))
JEdit_Lib.set_text(getBuffer, rich_texts.map(_.text))
}
if (update_start > 0 && scroll_bottom) {
scroll_to(JEdit_Lib.bottom_line_offset(getBuffer))
} elseif (update_start > scroll_start) scroll_to(scroll_start) else scroll_to(0, x = 0)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.