Add warning when open file outside workspace

This commit is contained in:
Edwin Cheng 2019-04-07 01:20:33 +08:00
parent 0372eca5b2
commit 333feb3869

View File

@ -12,11 +12,13 @@ use ra_vfs::{Vfs, VfsChange, VfsFile, VfsRoot};
use relative_path::RelativePathBuf;
use parking_lot::RwLock;
use failure::format_err;
use gen_lsp_server::ErrorCode;
use crate::{
project_model::ProjectWorkspace,
vfs_filter::IncludeRustFiles,
Result,
LspError,
};
#[derive(Debug)]
@ -152,11 +154,19 @@ impl ServerWorld {
pub fn uri_to_file_id(&self, uri: &Url) -> Result<FileId> {
let path = uri.to_file_path().map_err(|()| format_err!("invalid uri: {}", uri))?;
let file = self
.vfs
.read()
.path2file(&path)
.ok_or_else(|| format_err!("unknown file: {}", path.display()))?;
let file = self.vfs.read().path2file(&path).ok_or_else(|| {
// Check whether give path is exists,
// if so, maybe this file is outside out current workspace
if path.exists() {
LspError {
code: ErrorCode::InvalidRequest as i32,
message: "Rust file outside current workspace is not supported yet.".to_string(),
}
.into()
} else {
format_err!("unknown file: {}", path.display())
}
})?;
Ok(FileId(file.0.into()))
}