Skip to content

Commit 96876f2

Browse files
committed
remove file when check file remove
1 parent 106b5df commit 96876f2

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

crates/emmylua_code_analysis/src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,15 @@ impl EmmyLuaAnalysis {
145145
updated_files
146146
}
147147

148+
pub fn remove_file_by_uri(&mut self, uri: &Uri) -> Option<FileId> {
149+
if let Some(file_id) = self.compilation.get_db_mut().get_vfs_mut().remove_file(uri) {
150+
self.compilation.remove_index(vec![file_id]);
151+
return Some(file_id);
152+
}
153+
154+
None
155+
}
156+
148157
pub fn update_files_by_path(&mut self, files: Vec<(PathBuf, Option<String>)>) -> Vec<FileId> {
149158
let files = files
150159
.into_iter()

crates/emmylua_code_analysis/src/vfs/mod.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,19 @@ impl Vfs {
9999
fid
100100
}
101101

102+
pub fn remove_file(&mut self, uri: &Uri) -> Option<FileId> {
103+
let fid = self.get_file_id(uri)?;
104+
if let Some(path) = self.file_path_map.remove(&fid.id) {
105+
self.file_id_map.remove(&path);
106+
}
107+
if let Some(data) = self.file_data.get_mut(fid.id as usize) {
108+
data.take();
109+
}
110+
self.line_index_map.remove(&fid);
111+
self.tree_map.remove(&fid);
112+
Some(fid)
113+
}
114+
102115
pub fn update_config(&mut self, emmyrc: Arc<Emmyrc>) {
103116
self.emmyrc = Some(emmyrc);
104117
}

crates/emmylua_ls/src/context/client_id.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub fn get_client_id(client_info: &Option<ClientInfo>) -> ClientId {
3939
match info.name.as_str() {
4040
"Visual Studio Code" => ClientId::VSCode,
4141
"IntelliJ" => ClientId::Intellij,
42-
"Neovim" | "coc.nvim" => ClientId::Neovim,
42+
"Neovim" | "coc.nvim" => ClientId::Neovim,
4343
"Cursor" => ClientId::VSCode,
4444
"Windsurf" => ClientId::VSCode, // 不确定是不是这个名, 先加上吧
4545
"Trae" => ClientId::VSCode, // 字节的, 但不确定是不是这个名, 先加上吧

crates/emmylua_ls/src/handlers/text_document/watched_file_handler.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ pub async fn on_did_change_watched_files(
1818
let file_type = get_file_type(&file_event.uri);
1919
match file_type {
2020
Some(WatchedFileType::Lua) => {
21+
if file_event.typ == FileChangeType::DELETED {
22+
analysis.remove_file_by_uri(&file_event.uri);
23+
continue;
24+
}
25+
2126
if !workspace.current_open_files.contains(&file_event.uri) {
2227
collect_lua_files(
2328
&mut watched_lua_files,

0 commit comments

Comments
 (0)