fix(highlight): 语法加载改用编译期绝对路径并增加诊断日志
add_from_folder 之前用相对路径 syntaxes/,依赖运行时工作目录, 在 dx serve 启动的 server 子进程下可能解析失败导致自定义语法 (含 Swift)静默不加载。 改用 CARGO_MANIFEST_DIR 在编译期固化为绝对路径,消除工作目录 依赖;并在 LazyLock 初始化时输出加载路径、语法总数与 Swift 是否 命中,便于排查加载问题。
This commit is contained in:
parent
603a7f68cb
commit
e8be1967db
@ -14,10 +14,22 @@ pub mod server {
|
||||
/// 全局语法集合,懒加载时合并内置语法与 `syntaxes/` 目录下的自定义语法。
|
||||
static SYNTAX_SET: LazyLock<SyntaxSet> = LazyLock::new(|| {
|
||||
let mut builder = SyntaxSet::load_defaults_newlines().into_builder();
|
||||
if let Err(e) = builder.add_from_folder("syntaxes/", true) {
|
||||
tracing::warn!("Failed to load custom syntaxes: {:?}", e);
|
||||
// 使用 CARGO_MANIFEST_DIR 派生的绝对路径,避免运行时工作目录不确定导致加载失败
|
||||
let syntaxes_dir = concat!(env!("CARGO_MANIFEST_DIR"), "/syntaxes");
|
||||
tracing::info!("Loading custom syntaxes from: {}", syntaxes_dir);
|
||||
match builder.add_from_folder(syntaxes_dir, true) {
|
||||
Ok(()) => tracing::info!("Custom syntaxes loaded successfully"),
|
||||
Err(e) => tracing::warn!("Failed to load custom syntaxes: {:?}", e),
|
||||
}
|
||||
builder.build()
|
||||
let built = builder.build();
|
||||
tracing::info!(
|
||||
"SyntaxSet built: {} syntaxes, swift={:?}",
|
||||
built.syntaxes().len(),
|
||||
built
|
||||
.find_syntax_by_extension("swift")
|
||||
.map(|s| &s.name)
|
||||
);
|
||||
built
|
||||
});
|
||||
|
||||
/// 根据语言标识查找对应的语法定义。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user