docs: add some refs

上级 e9393f8c
# Docs
## Refs
[WebIDE 的开发记录其五(monaco-editor + textmate)](https://www.ubug.io/blog/workpad-part-5)
> 主要就是因为 Textmate 语法解析依赖的 Oniguruma 是一个 C 语言下的解析功能,VSCode 可以使用 node 环境来调用原生的模块,但是在 web 环境下无法实现,即使通过 asm.js 转换后,性能依然会有 100-1000 倍的损失(16年9月的说明,目前未测试),而且 IE 不支持~~~
- textmate 提供语言的语法配置,再加上一些 monaco-editor 的语言支持,生成 grammarProvider
- textmate 注册 TextmateRegistry,然后挂载不同语言的 grammarProvider 保存解析配置之类的
- 使用 onigasm 注册语法解析器 grammarRegistry,然后创建不同语言实际的解析器 TextmateTokenizer
\ No newline at end of file
......@@ -99,8 +99,18 @@ impl Grammar {
if self.root_id == -1 {
let repository = self.grammar.repository.clone().unwrap();
let based = repository.clone().map.base_s.unwrap();
RuleFactory::get_compiled_rule_id(based.clone(), self, repository.clone());
self.root_id = RuleFactory::get_compiled_rule_id(based.clone(), self, repository.clone());
}
let is_first_line: bool;
if let None = prev_state {
is_first_line = true
} else {
}
let lineText = format!("{:?}\n", line_text);
let onigLineText = self.create_onig_string(lineText);
}
pub fn tokenize_line(&mut self, line_text: String, prev_state: Option<StackElement>) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册