def get_file_content(name: Document.Node.Name): Option[String] =
get_model(name) match { case Some(model) => Some(model.content.text) case None => read_file_content(name)
}
overridedef with_thy_reader[A](name: Document.Node.Name, f: Reader[Char] => A): A = { val file = node_file(name)
get_model(file) match { case Some(model) => f(Scan.char_reader(model.content.text)) case None if file.isFile => using(Scan.byte_reader(file))(f) case None => error("No such file: " + quote(file.toString))
}
}
/* document models */
def visible_node(name: Document.Node.Name): Boolean =
get_model(name) match { case Some(model) => model.node_visible case None => false
}
def change_model(
session: VSCode_Session,
editor: Language_Server.Editor,
file: JFile,
version: Long,
text: String,
range: Option[Line.Range] = None
): Unit = {
state.change { st => val model = st.models.getOrElse(file, VSCode_Model.init(session, editor, node_name(file))) val model1 =
(model.change_text(text, range) getOrElse model).set_version(version).external(false)
st.update_models(Some(file -> model1))
}
}
def close_model(file: JFile): Boolean =
state.change_result(st =>
st.models.get(file) match { case None => (false, st) case Some(model) => (true, st.update_models(Some(file -> model.external(true))))
})
def sync_models(changed_files: Set[JFile]): Unit =
state.change { st => val changed_models =
(for {
(file, model) <- st.models.iterator if changed_files(file) && model.external_file
text <- read_file_content(model.node_name)
model1 <- model.change_text(text)
} yield (file, model1)).toList
st.update_models(changed_models)
}
def update_caret(caret: Option[(JFile, Line.Position)]): Unit =
state.change(_.update_caret(caret))
def get_caret(): Option[VSCode_Resources.Caret] = { val st = state.value for {
(file, pos) <- st.caret
model <- st.models.get(file)
offset <- model.content.doc.offset(pos)
} yield VSCode_Resources.Caret(file, model, offset)
}
/* decoration requests */
def force_decorations(channel: Channel, file: JFile): Unit = { val model = state.value.models(file) val rendering1 = rendering(model) val (_, decos, model1) = model.publish_full(rendering1) if (pide_extensions) {
channel.write(rendering1.decoration_output(decos).json(file))
}
}
/* spell checker */
val spell_checker = new Spell_Checker_Variable
spell_checker.update(options)
}
¤ 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.0.1Bemerkung:
(vorverarbeitet)
¤
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 ist noch experimentell.