This commit is contained in:
Noah Santschi-Cooney 2022-03-20 01:27:45 +00:00
parent f8dd31ca81
commit d5b0dcffb2
No known key found for this signature in database
GPG key ID: 3B22282472C8AE48
5 changed files with 35 additions and 10 deletions

2
server/Cargo.lock generated
View file

@ -736,7 +736,7 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "mcshader-lsp"
version = "0.9.6"
version = "0.9.5"
dependencies = [
"anyhow",
"arc-swap",

View file

@ -14,7 +14,7 @@ where
T: opengl::ShaderValidator + ?Sized,
{
RE_DIAGNOSTIC.get_or_init(|| match vendor.vendor().as_str() {
"NVIDIA" => {
"NVIDIA Corporation" => {
Regex::new(r#"^(?P<filepath>[^?<>*|"]+)\((?P<linenum>\d+)\) : (?P<severity>error|warning) [A-C]\d+: (?P<output>.+)"#).unwrap()
}
_ => {

View file

@ -7,7 +7,7 @@ use petgraph::stable_graph::NodeIndex;
use serde::Deserialize;
use serde_json::{from_value, Value};
use tree_sitter::Parser;
use tree_sitter::{Parser, Point};
use url_norm::FromUrl;
use walkdir::WalkDir;
@ -39,10 +39,10 @@ use regex::Regex;
use lazy_static::lazy_static;
mod commands;
mod diagnostics_parser;
mod configuration;
mod consts;
mod dfs;
mod diagnostics_parser;
mod graph;
mod logging;
mod lsp_ext;
@ -352,7 +352,11 @@ impl MinecraftShaderLanguageServer {
return Ok(diagnostics);
}
};
diagnostics.extend(diagnostics_parser::parse_diagnostics_output(stdout, uri, self.opengl_context.as_ref()));
diagnostics.extend(diagnostics_parser::parse_diagnostics_output(
stdout,
uri,
self.opengl_context.as_ref(),
));
} else {
let mut all_trees: Vec<(TreeType, Vec<(NodeIndex, Option<_>)>)> = Vec::new();
@ -402,7 +406,11 @@ impl MinecraftShaderLanguageServer {
Some(s) => s,
None => continue,
};
diagnostics.extend(diagnostics_parser::parse_diagnostics_output(stdout, uri, self.opengl_context.as_ref()));
diagnostics.extend(diagnostics_parser::parse_diagnostics_output(
stdout,
uri,
self.opengl_context.as_ref(),
));
}
};
@ -488,6 +496,7 @@ impl LanguageServerHandling for MinecraftShaderLanguageServer {
info!("starting server...");
let capabilities = ServerCapabilities {
definition_provider: Some(OneOf::Left(true)),
document_link_provider: Some(DocumentLinkOptions {
resolve_provider: None,
work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
@ -660,7 +669,23 @@ impl LanguageServerHandling for MinecraftShaderLanguageServer {
completable.complete(Err(Self::error_not_available(())));
}
fn goto_definition(&mut self, _: TextDocumentPositionParams, completable: LSCompletable<Vec<Location>>) {
fn goto_definition(&mut self, params: TextDocumentPositionParams, completable: LSCompletable<Vec<Location>>) {
let source = fs::read_to_string(params.text_document.uri.path()).unwrap();
let tree = self.tree_sitter.borrow_mut().parse(source, None).unwrap();
let node_at_pos = tree.root_node().named_descendant_for_point_range(
Point {
row: params.position.line as usize,
column: params.position.character as usize,
},
Point {
row: params.position.line as usize,
column: (params.position.character + 1) as usize,
},
);
info!("found a node"; "node" => format!("{:?}", node_at_pos));
completable.complete(Err(Self::error_not_available(())));
}

View file

@ -1,7 +1,7 @@
use std::ffi::{CStr, CString};
use std::ptr;
use slog_scope::{debug, info};
use slog_scope::info;
#[cfg(test)]
use mockall::automock;
@ -32,7 +32,7 @@ impl OpenGlContext {
let gl_ctx = OpenGlContext { _ctx: gl_window };
unsafe {
debug!(
info!(
"OpenGL device";
"vendor" => gl_ctx.vendor(),
"version" => String::from_utf8(CStr::from_ptr(gl::GetString(gl::VERSION) as *const _).to_bytes().to_vec()).unwrap(),

View file

@ -893,7 +893,7 @@ fn test_generate_merge_list_04() {
#[test]
fn test_nvidia_diagnostics() {
let mut mockgl = opengl::MockShaderValidator::new();
mockgl.expect_vendor().returning(|| "NVIDIA".into());
mockgl.expect_vendor().returning(|| "NVIDIA Corporation".into());
let server = new_temp_server(Some(Box::new(mockgl)));
let output = "/home/noah/.minecraft/shaderpacks/test/shaders/final.fsh(9) : error C0000: syntax error, unexpected '}', expecting ',' or ';' at token \"}\"";