Skip to content

Instantly share code, notes, and snippets.

@tanis2000
Created August 20, 2017 20:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tanis2000/ce90baa791b1ee7d1a6b7662840db9e3 to your computer and use it in GitHub Desktop.
Save tanis2000/ce90baa791b1ee7d1a6b7662840db9e3 to your computer and use it in GitHub Desktop.
RLS log from the VSCode extension
DEBUG:rls::server: Language Server Starting up
TRACE:rls::server: reading: 1288 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":13915,"rootPath":"/Users/tanis/Documents/minigame-rust","rootUri":"file:///Users/tanis/Documents/minigame-rust","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true},"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true}},"textDocument":{"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true}},"hover":{"dynamicRegistration":true},"signatureHelp":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"definition":{"dynamicRegistration":true},"codeAction":{"dynamicRegistration":true},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true}}},"initializationOptions":{"omitInitBuild":true},"trace":"off"}}`
TRACE:rls::server: Handling Initialize (0) (params: InitializeParams { process_id: Some(13915), root_path: Some("/Users/tanis/Documents/minigame-rust"), root_uri: Some("file:///Users/tanis/Documents/minigame-rust"), initialization_options: Some(Object({"omitInitBuild": Bool(true)})), capabilities: ClientCapabilities { workspace: Some(WorkspaceClientCapabilites { apply_edit: Some(true), workspace_edit: Some(WorkspaceEditCapability { document_changes: Some(true) }), did_change_configuration: Some(GenericCapability { dynamic_registration: Some(false) }), did_change_watched_files: Some(GenericCapability { dynamic_registration: Some(true) }), symbol: Some(GenericCapability { dynamic_registration: Some(true) }), execute_command: Some(GenericCapability { dynamic_registration: Some(true) }) }), text_document: Some(TextDocumentClientCapabilities { synchronization: Some(SynchronizationCapability { dynamic_registration: Some(true), will_save: Some(true), will_save_wait_until: Some(true), did_save: Some(true) }), completion: Some(CompletionCapability { dynamic_registration: Some(true), completion_item: Some(CompletionItemCapability { snippet_support: Some(true) }) }), hover: Some(GenericCapability { dynamic_registration: Some(true) }), signature_help: Some(GenericCapability { dynamic_registration: Some(true) }), references: Some(GenericCapability { dynamic_registration: Some(true) }), document_highlight: Some(GenericCapability { dynamic_registration: Some(true) }), document_symbol: Some(GenericCapability { dynamic_registration: Some(true) }), formatting: Some(GenericCapability { dynamic_registration: Some(true) }), range_formatting: Some(GenericCapability { dynamic_registration: Some(true) }), on_type_formatting: Some(GenericCapability { dynamic_registration: Some(true) }), definition: Some(GenericCapability { dynamic_registration: Some(true) }), code_action: Some(GenericCapability { dynamic_registration: Some(true) }), code_lens: Some(GenericCapability { dynamic_registration: Some(true) }), document_link: Some(GenericCapability { dynamic_registration: Some(true) }), rename: Some(GenericCapability { dynamic_registration: Some(true) }) }), experimental: None }, trace: Off })
TRACE:rls::server: response: "Content-Length: 500\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"capabilities\":{\"textDocumentSync\":2,\"hoverProvider\":true,\"completionProvider\":{\"resolveProvider\":true,\"triggerCharacters\":[\".\",\":\"]},\"definitionProvider\":true,\"referencesProvider\":true,\"documentHighlightProvider\":true,\"documentSymbolProvider\":true,\"workspaceSymbolProvider\":true,\"codeActionProvider\":true,\"documentFormattingProvider\":true,\"documentRangeFormattingProvider\":false,\"renameProvider\":true,\"executeCommandProvider\":{\"commands\":[\"rls.applySuggestion\"]}}}}"
TRACE:rls::actions: init: InitializationOptions { omit_init_build: true }
TRACE:rls::server: reading: 52 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","method":"initialized","params":{}}`
TRACE:rls::server: Handling Initialized (params: "")
TRACE:rls::server: response: "Content-Length: 259\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"client/registerCapability\",\"params\":{\"registrations\":[{\"id\":\"rls-watch\",\"method\":\"workspace/didChangeWatchedFiles\",\"registerOptions\":{\"watchers\":[{\"globPattern\":\"/Users/tanis/Documents/minigame-rust/Cargo{.toml,.lock}\"}]}}]}}"
TRACE:rls::server: reading: 76 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","method":"$/setTraceNotification","params":{"value":"off"}}`
TRACE:rls::server: parsing invalid message: None
TRACE:rls::server: reading: 554 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"rust":{"sysroot":null,"target":null,"rustflags":null,"clear_env_rust_log":true,"build_lib":false,"build_bin":null,"cfg_test":false,"unstable_features":false,"wait_to_build":500,"show_warnings":true,"goto_def_racer_fallback":false,"use_crate_blacklist":true,"build_on_save":false,"workspace_mode":true,"analyze_package":null,"rustup":{"toolchain":"stable-x86_64-apple-darwin","nightlyToolchain":"nightly-x86_64-apple-darwin"},"mode":"legacy","rls":{"useRustfmt":true}}}}}`
TRACE:rls::server: Handling WorkspaceChangeConfiguration (params: DidChangeConfigurationParams { settings: Object({"rust": Object({"analyze_package": Null, "build_bin": Null, "build_lib": Bool(false), "build_on_save": Bool(false), "cfg_test": Bool(false), "clear_env_rust_log": Bool(true), "goto_def_racer_fallback": Bool(false), "mode": String("legacy"), "rls": Object({"useRustfmt": Bool(true)}), "rustflags": Null, "rustup": Object({"nightlyToolchain": String("nightly-x86_64-apple-darwin"), "toolchain": String("stable-x86_64-apple-darwin")}), "show_warnings": Bool(true), "sysroot": Null, "target": Null, "unstable_features": Bool(false), "use_crate_blacklist": Bool(true), "wait_to_build": Number(PosInt(500)), "workspace_mode": Bool(true)})}) })
TRACE:rls::actions: config change: Object({"rust": Object({"analyze_package": Null, "build_bin": Null, "build_lib": Bool(false), "build_on_save": Bool(false), "cfg_test": Bool(false), "clear_env_rust_log": Bool(true), "goto_def_racer_fallback": Bool(false), "mode": String("legacy"), "rls": Object({"useRustfmt": Bool(true)}), "rustflags": Null, "rustup": Object({"nightlyToolchain": String("nightly-x86_64-apple-darwin"), "toolchain": String("stable-x86_64-apple-darwin")}), "show_warnings": Bool(true), "sysroot": Null, "target": Null, "unstable_features": Bool(false), "use_crate_blacklist": Bool(true), "wait_to_build": Number(PosInt(500)), "workspace_mode": Bool(true)})})
TRACE:rls::server: response: "Content-Length: 72\r\n\r\n{\"jsonrpc\":\"2.0\",\"method\":\"rustDocument/diagnosticsBegin\",\"params\":null}"
TRACE:rls::build: request_build Cargo
TRACE:rls::server: response: "Content-Length: 165\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"client/unregisterCapability\",\"params\":{\"unregisterations\":[{\"id\":\"rls-range-formatting\",\"method\":\"textDocument/rangeFormatting\"}]}}"
TRACE:rls::build: run_build, "/Users/tanis/Documents/minigame-rust" Cargo
TRACE:rls::build: running build
TRACE:rls::build::cargo: root manifest_path: "/Users/tanis/Documents/minigame-rust/Cargo.toml"
TRACE:rls::build::cargo: Cargo compilation options:
CargoOptions { package: [], target: None, lib: false, bin: [], bins: false, all: true, exclude: [] }
TRACE:rls::server: reading: 16587 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs","languageId":"rust","version":1,"text":"#[cfg(feature = \"hotload\")]\nextern crate dynamic_reload;\n\nextern crate sdl2;\nextern crate cgmath;\nextern crate rand;\nextern crate imgui;\n\n//#[cfg(not(feature = \"hotload\"))]\n//extern crate minigame;\n\n#[cfg(feature = \"hotload\")]\nuse dynamic_reload::{DynamicReload, Lib, Symbol, Search, PlatformName, UpdateState};\n#[cfg(feature = \"hotload\")]\nuse std::rc::Rc;\nuse std::time::Duration;\nuse std::thread;\nuse std::str;\nuse std::ffi::CString;\nuse std::ptr;\nuse std::mem;\nuse std::path::Path;\nuse std::cell::RefCell;\nuse sdl2::image::{LoadTexture, INIT_PNG, INIT_JPG};\nuse sdl2::pixels::Color as SdlColor;\nuse sdl2::event::Event;\nuse sdl2::keyboard::Keycode;\nuse sdl2::render::TextureCreator;\nuse sdl2::render::Texture as SdlTexture;\nuse sdl2::video::WindowContext;\nuse rand::Rng;\nuse imgui::*;\n\n#[cfg(not(feature = \"hotload\"))]\nuse test_shared::shared_fun;\n\nuse spritebatch::SpriteBatch;\nuse spritebatch::SpriteSortMode;\nuse color::Color;\nuse texture::Texture;\nuse texturemanager::TextureManager;\nuse shader::Shader;\nuse camera::Camera;\nuse viewportadapter::ScalingViewportAdapter;\nuse viewportadapter::ViewportAdapterTrait;\nuse scene::Scene;\nuse imagecomponent::ImageComponent;\nuse log::Log;\nuse self::cgmath::Vector2;\nuse self::cgmath::Matrix4;\nuse self::cgmath::One;\n\npub mod gl {\n include!(concat!(env!(\"OUT_DIR\"), \"/bindings.rs\"));\n}\nuse self::gl::types::*;\n\n#[cfg(feature = \"hotload\")]\nstruct Plugins {\n plugins: Vec<Rc<Lib>>,\n}\n\n#[cfg(feature = \"hotload\")]\nimpl Plugins {\n fn add_plugin(&mut self, plugin: &Rc<Lib>) {\n self.plugins.push(plugin.clone());\n }\n\n fn unload_plugins(&mut self, lib: &Rc<Lib>) {\n for i in (0..self.plugins.len()).rev() {\n if &self.plugins[i] == lib {\n self.plugins.swap_remove(i);\n }\n }\n }\n\n fn reload_plugin(&mut self, lib: &Rc<Lib>) {\n Self::add_plugin(self, lib);\n }\n\n // called when a lib needs to be reloaded.\n fn reload_callback(&mut self, state: UpdateState, lib: Option<&Rc<Lib>>) {\n match state {\n UpdateState::Before => Self::unload_plugins(self, lib.unwrap()),\n UpdateState::After => Self::reload_plugin(self, lib.unwrap()),\n UpdateState::ReloadFailed(_) => Log::error(\"Failed to reload\"),\n }\n }\n}\n\nfn find_sdl_gl_driver() -> Option<u32> {\n for (index, item) in sdl2::render::drivers().enumerate() {\n sdl2::log::log(item.name);\n if item.name.contains(\"opengl\") {\n sdl2::log::log(\"Driver chosen follows\");\n sdl2::log::log(item.name);\n return Some(index as u32);\n }\n }\n sdl2::log::log(\"No OpenGL driver chosen\");\n None\n}\n\n// Vertex data\nstatic VERTEX_DATA: [GLfloat; 6] = [0.0, 0.5, 0.5, -0.5, -0.5, -0.5];\n\n// Shader sources\n#[cfg(any(target_os=\"android\", target_os=\"ios\"))]\nfn precision() -> String {\n String::from(\"precision mediump float;\\n\")\n}\n\n#[cfg(not(any(target_os=\"android\", target_os=\"ios\")))]\nfn precision() -> String {\n String::from(\"\")\n}\n\nstatic VS_SRC: &'static str = \"\\n\\\n attribute vec2 position;\\n\\\n varying vec4 color;\\n\\\n void main() {\\n\\\n gl_Position = vec4(position, 0.0, 1.0);\\n\\\n color = vec4(1.0, 1.0, 1.0, 1.0);\\n\\\n gl_PointSize = 1.0;\\n\\\n }\";\n\nstatic FS_SRC: &'static str = \"\\n\\\n varying vec4 color;\\n\\\n void main() {\\n\\\n gl_FragColor = color;\\n\\\n }\";\n\npub fn foo() {\n \n}\n\nfn compile_shader(src: &str, ty: GLenum) -> GLuint {\n let shader;\n unsafe {\n shader = gl::CreateShader(ty);\n // Attempt to compile the shader\n let c_str = CString::new(src.as_bytes()).unwrap();\n gl::ShaderSource(shader, 1, &c_str.as_ptr(), ptr::null());\n gl::CompileShader(shader);\n\n // Get the compile status\n let mut status = gl::FALSE as GLint;\n gl::GetShaderiv(shader, gl::COMPILE_STATUS, &mut status);\n\n // Fail on error\n if status != (gl::TRUE as GLint) {\n let mut len = 0;\n gl::GetShaderiv(shader, gl::INFO_LOG_LENGTH, &mut len);\n let mut buf = Vec::with_capacity(len as usize);\n buf.set_len((len as usize) - 1); // subtract 1 to skip the trailing null character\n gl::GetShaderInfoLog(shader,\n len,\n ptr::null_mut(),\n buf.as_mut_ptr() as *mut GLchar);\n panic!(\"{}\",\n str::from_utf8(&buf)\n .ok()\n .expect(\"ShaderInfoLog not valid utf8\"));\n }\n }\n shader\n}\n\nfn link_program(vs: GLuint, fs: GLuint) -> GLuint {\n unsafe {\n let program = gl::CreateProgram();\n gl::AttachShader(program, vs);\n gl::AttachShader(program, fs);\n gl::LinkProgram(program);\n // Get the link status\n let mut status = gl::FALSE as GLint;\n gl::GetProgramiv(program, gl::LINK_STATUS, &mut status);\n\n // Fail on error\n if status != (gl::TRUE as GLint) {\n let mut len: GLint = 0;\n gl::GetProgramiv(program, gl::INFO_LOG_LENGTH, &mut len);\n let mut buf = Vec::with_capacity(len as usize);\n buf.set_len((len as usize) - 1); // subtract 1 to skip the trailing null character\n gl::GetProgramInfoLog(program,\n len,\n ptr::null_mut(),\n buf.as_mut_ptr() as *mut GLchar);\n panic!(\"{}\",\n str::from_utf8(&buf)\n .ok()\n .expect(\"ProgramInfoLog not valid utf8\"));\n }\n program\n }\n}\n\n#[cfg(feature = \"hotload\")]\nfn plugin_load<'a>() -> (Plugins, DynamicReload<'a>) {\n // Setup the reload handler. A temporary directory will be created inside the target/debug\n // where plugins will be loaded from. That is because on some OS:es loading a shared lib\n // will lock the file so we can't overwrite it so this works around that issue.\n let mut reload_handler = DynamicReload::new(Some(vec![\"target/debug\"]),\n Some(\"target/debug\"),\n Search::Default);\n let mut plugs = Plugins { plugins: Vec::new() };\n\n // test_shared is generated in build.rs\n match reload_handler.add_library(\"test_shared\", PlatformName::Yes) {\n Ok(lib) => plugs.add_plugin(&lib),\n Err(e) => {\n //Log::error(\"Unable to load dynamic lib, err {:?}\", e);\n return (plugs, reload_handler);\n }\n }\n\n (plugs, reload_handler)\n}\n\n#[cfg(not(feature = \"hotload\"))]\nfn plugin_load() -> (i32, i32) {\n (0, 0)\n}\n\n#[cfg(feature = \"hotload\")]\nfn plugin_update<'a>(mut plugs: &mut Plugins, mut reload_handler: &mut DynamicReload<'a>) {\n reload_handler.update(Plugins::reload_callback, &mut plugs);\n\n if plugs.plugins.len() > 0 {\n // In a real program you want to cache the symbol and not do it every time if your\n // application is performance critical\n let fun: Symbol<extern \"C\" fn() -> i32> =\n unsafe { plugs.plugins[0].lib.get(b\"shared_fun\\0\").unwrap() };\n\n //Log::info(\"Value {}\", fun());\n }\n}\n\n#[cfg(not(feature = \"hotload\"))]\nfn plugin_update(mut plugs: &mut i32, mut reload_handler: &mut i32) {\n //Log::info(\"Value {}\", shared_fun());\n}\n\npub struct Engine {\n}\n\nimpl Engine {\n pub fn new() -> Self {\n Engine {\n }\n }\n\n //#[cfg(feature = \"hotload\")]\n pub fn run_loop(&mut self) {\n let (mut plugs, mut reload_handler) = plugin_load();\n\n // Init SDL2\n let sdl_context = sdl2::init().unwrap();\n let video_subsystem = sdl_context.video().unwrap();\n\n let window = video_subsystem\n .window(\"minigame-rust\", 800, 600)\n .position_centered()\n .opengl()\n .build()\n .unwrap();\n\n sdl2::log::log(\"Looking for OpenGL drivers\");\n let mut canvas = window\n .into_canvas()\n .index(find_sdl_gl_driver().unwrap())\n .build()\n .unwrap();\n\n sdl2::log::log(\"Loading GL extensions\");\n gl::load_with(|s| video_subsystem.gl_get_proc_address(s) as *const _);\n sdl2::log::log(\"Setting current GL context\");\n canvas.window().gl_set_context_to_current();\n\n // Create GLSL shaders\n /*\n sdl2::log::log(\"Compiling vertex shader\");\n let vs_src = precision()+VS_SRC;\n let vs = compile_shader(&vs_src, gl::VERTEX_SHADER);\n sdl2::log::log(\"Compiling fragment shader\");\n let fs_src = precision()+FS_SRC;\n let fs = compile_shader(&fs_src, gl::FRAGMENT_SHADER);\n sdl2::log::log(\"Linking shaders\");\n let program = link_program(vs, fs);\n\n let mut vao = 0;\n let mut vbo = 0;\n */\n unsafe {\n /*\n // Use shader program\n gl::UseProgram(program);\n\n //let col_attr = gl::GetAttribLocation(program, CString::new(\"color\").unwrap().as_ptr());\n\n // Specify the layout of the vertex data\n let pos_attr = gl::GetAttribLocation(program, CString::new(\"position\").unwrap().as_ptr());\n gl::EnableVertexAttribArray(pos_attr as GLuint);\n gl::VertexAttribPointer(pos_attr as GLuint,\n 2,\n gl::FLOAT,\n gl::FALSE as GLboolean,\n 0,\n mem::transmute(&VERTEX_DATA[0]));\n */\n }\n\n let mut event_pump = sdl_context.event_pump().unwrap();\n\n /*\n // test_shared is generated in build.rs\n match reload_handler.add_library(\"test_shared\", PlatformName::Yes) {\n Ok(lib) => plugs.add_plugin(&lib),\n Err(e) => {\n Log::error(\"Unable to load dynamic lib, err {:?}\", e);\n return;\n }\n }\n */\n\n let mut shader = Shader::new();\n shader.load_default();\n\n let mut tc = canvas.texture_creator();\n let mut tm = TextureManager::new(&tc);\n tm.load(String::from(\"wabbit\"), Path::new(\"assets/wabbit_alpha.png\"));\n let wabbit = tm.get(&String::from(\"wabbit\"));\n\n let playerVA = ScalingViewportAdapter::with_size_and_virtual(800, 600, 320, 240);\n let mut playerCamera = Camera::new();\n playerCamera.set_viewport_adapter(Some(playerVA));\n\n let mut scene = Scene::new(32);\n let mut e = scene.create_entity();\n //let tm = self.texture_manager.as_ref().unwrap();\n //let mut ic = ImageComponent::new();//with_texture(tm.get(&String::from(\"wabbit\")));\n //e.add(ic);\n scene.add(e);\n\n let mut rng = rand::thread_rng();\n\n\n let mut bunnies = [Bunny::new(); 100];\n for bunny in bunnies.iter_mut() {\n bunny.speed.x = rng.gen::<f32>() * 5.0;\n bunny.speed.x = (rng.gen::<f32>() * 5.0) - 2.5;\n }\n\n let mut sb = SpriteBatch::new();\n\n let mut imgui = ImGui::init();\n let ui = imgui.frame((800, 600), (800, 600), 0.0);\n //imgui.set_texture_id(0);\n\n //\n // While this is running (printing a number) change return value in file src/test_shared.rs\n // build the project with cargo build and notice that this code will now return the new value\n //\n 'running: loop {\n plugin_update(&mut plugs, &mut reload_handler);\n\n /*\n reload_handler.update(Plugins::reload_callback, &mut plugs);\n\n if plugs.plugins.len() > 0 {\n // In a real program you want to cache the symbol and not do it every time if your\n // application is performance critical\n let fun: Symbol<extern \"C\" fn() -> i32> =\n unsafe { plugs.plugins[0].lib.get(b\"shared_fun\\0\").unwrap() };\n\n Log::info(\"Value {}\", fun());\n }\n */\n\n for event in event_pump.poll_iter() {\n match event {\n Event::Quit { .. } |\n Event::KeyDown { keycode: Some(Keycode::Escape), .. } => break 'running,\n _ => {}\n }\n }\n\n canvas.set_draw_color(SdlColor::RGB(191, 255, 255));\n canvas.clear();\n\n /*\n sdl2::log::log(\"Drawing triangle\");\n unsafe {\n gl::DrawArrays(gl::TRIANGLES, 0, 3);\n }\n */\n\n ui.window(im_str!(\"Hello world\"))\n .size((300.0, 100.0), ImGuiSetCond_FirstUseEver)\n .build(|| {\n ui.text(im_str!(\"Hello world!\"));\n ui.text(im_str!(\"This...is...imgui-rs!\"));\n ui.separator();\n let mouse_pos = ui.imgui().mouse_pos();\n ui.text(im_str!(\"Mouse Position: ({:.1},{:.1})\", mouse_pos.0, mouse_pos.1));\n });\n\n {\n let position = Vector2::new(0.0, 0.0);\n let matrix: Matrix4<f32> = Matrix4::one();\n //sdl2::log::log(\"wabbit width and height follows\");\n //sdl2::log::log(&wabbit.get_height().to_string());\n //sdl2::log::log(&wabbit.get_width().to_string());\n sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));\n for bunny in bunnies.iter_mut() {\n bunny.update();\n sb.draw(wabbit.clone(), Some(bunny.position), None, None, None, 0.0, None, Color::white(), 0.0);\n }\n sb.end(&mut canvas);\n }\n\n\n canvas.present();\n\n //::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));\n // The rest of the game loop goes here...\n\n\n // Wait for 0.5 sec\n //thread::sleep(Duration::from_millis(500));\n // Replace with the following once we're done with testing\n thread::sleep(Duration::from_millis(0))\n }\n\n // Cleanup\n unsafe {\n /*\n gl::DeleteProgram(program);\n gl::DeleteShader(fs);\n gl::DeleteShader(vs);\n gl::DeleteBuffers(1, &vbo);\n */\n }\n }\n}\n\n#[derive(Clone, Copy, Debug)]\nstruct Bunny {\n position: Vector2<f32>,\n speed: Vector2<f32>,\n min: Vector2<f32>,\n max: Vector2<f32>,\n gravity: f32,\n}\n\nimpl Bunny {\n pub fn new() -> Self {\n let mut rng = rand::thread_rng();\n Bunny {\n position: Vector2::new(0.0, 0.0),\n speed: Vector2::new(rng.gen::<f32>() * 5.0, (rng.gen::<f32>() * 5.0) - 2.5),\n min: Vector2::new(0.0, 0.0),\n max: Vector2::new(800.0, 600.0),\n gravity: 0.5,\n }\n }\n\n pub fn update(&mut self) {\n let mut rng = rand::thread_rng();\n self.position.x += self.speed.x;\n self.position.y += self.speed.y;\n self.speed.y += self.gravity;\n\n if self.position.x > self.max.x {\n self.speed.x *= -1.0;\n self.position.x = self.max.x;\n } else if self.position.x < self.min.x {\n self.speed.x *= -1.0;\n self.position.x = self.min.x;\n }\n\n if self.position.y > self.max.y {\n self.speed.y *= -0.8;\n self.position.y = self.max.y;\n\n if rng.gen::<f32>() > 0.5 {\n self.speed.y -= 3.0 + rng.gen::<f32>() * 4.0;\n }\n } else if self.position.y < self.min.y {\n self.speed.y = 0.0;\n self.position.y = self.min.y;\n }\n\n }\n}"}}}`
TRACE:rls::server: Handling DidOpenTextDocument (params: DidOpenTextDocumentParams { text_document: TextDocumentItem { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs", language_id: Some("rust"), version: Some(1), text: "#[cfg(feature = \"hotload\")]\nextern crate dynamic_reload;\n\nextern crate sdl2;\nextern crate cgmath;\nextern crate rand;\nextern crate imgui;\n\n//#[cfg(not(feature = \"hotload\"))]\n//extern crate minigame;\n\n#[cfg(feature = \"hotload\")]\nuse dynamic_reload::{DynamicReload, Lib, Symbol, Search, PlatformName, UpdateState};\n#[cfg(feature = \"hotload\")]\nuse std::rc::Rc;\nuse std::time::Duration;\nuse std::thread;\nuse std::str;\nuse std::ffi::CString;\nuse std::ptr;\nuse std::mem;\nuse std::path::Path;\nuse std::cell::RefCell;\nuse sdl2::image::{LoadTexture, INIT_PNG, INIT_JPG};\nuse sdl2::pixels::Color as SdlColor;\nuse sdl2::event::Event;\nuse sdl2::keyboard::Keycode;\nuse sdl2::render::TextureCreator;\nuse sdl2::render::Texture as SdlTexture;\nuse sdl2::video::WindowContext;\nuse rand::Rng;\nuse imgui::*;\n\n#[cfg(not(feature = \"hotload\"))]\nuse test_shared::shared_fun;\n\nuse spritebatch::SpriteBatch;\nuse spritebatch::SpriteSortMode;\nuse color::Color;\nuse texture::Texture;\nuse texturemanager::TextureManager;\nuse shader::Shader;\nuse camera::Camera;\nuse viewportadapter::ScalingViewportAdapter;\nuse viewportadapter::ViewportAdapterTrait;\nuse scene::Scene;\nuse imagecomponent::ImageComponent;\nuse log::Log;\nuse self::cgmath::Vector2;\nuse self::cgmath::Matrix4;\nuse self::cgmath::One;\n\npub mod gl {\n include!(concat!(env!(\"OUT_DIR\"), \"/bindings.rs\"));\n}\nuse self::gl::types::*;\n\n#[cfg(feature = \"hotload\")]\nstruct Plugins {\n plugins: Vec<Rc<Lib>>,\n}\n\n#[cfg(feature = \"hotload\")]\nimpl Plugins {\n fn add_plugin(&mut self, plugin: &Rc<Lib>) {\n self.plugins.push(plugin.clone());\n }\n\n fn unload_plugins(&mut self, lib: &Rc<Lib>) {\n for i in (0..self.plugins.len()).rev() {\n if &self.plugins[i] == lib {\n self.plugins.swap_remove(i);\n }\n }\n }\n\n fn reload_plugin(&mut self, lib: &Rc<Lib>) {\n Self::add_plugin(self, lib);\n }\n\n // called when a lib needs to be reloaded.\n fn reload_callback(&mut self, state: UpdateState, lib: Option<&Rc<Lib>>) {\n match state {\n UpdateState::Before => Self::unload_plugins(self, lib.unwrap()),\n UpdateState::After => Self::reload_plugin(self, lib.unwrap()),\n UpdateState::ReloadFailed(_) => Log::error(\"Failed to reload\"),\n }\n }\n}\n\nfn find_sdl_gl_driver() -> Option<u32> {\n for (index, item) in sdl2::render::drivers().enumerate() {\n sdl2::log::log(item.name);\n if item.name.contains(\"opengl\") {\n sdl2::log::log(\"Driver chosen follows\");\n sdl2::log::log(item.name);\n return Some(index as u32);\n }\n }\n sdl2::log::log(\"No OpenGL driver chosen\");\n None\n}\n\n// Vertex data\nstatic VERTEX_DATA: [GLfloat; 6] = [0.0, 0.5, 0.5, -0.5, -0.5, -0.5];\n\n// Shader sources\n#[cfg(any(target_os=\"android\", target_os=\"ios\"))]\nfn precision() -> String {\n String::from(\"precision mediump float;\\n\")\n}\n\n#[cfg(not(any(target_os=\"android\", target_os=\"ios\")))]\nfn precision() -> String {\n String::from(\"\")\n}\n\nstatic VS_SRC: &\'static str = \"\\n\\\n attribute vec2 position;\\n\\\n varying vec4 color;\\n\\\n void main() {\\n\\\n gl_Position = vec4(position, 0.0, 1.0);\\n\\\n color = vec4(1.0, 1.0, 1.0, 1.0);\\n\\\n gl_PointSize = 1.0;\\n\\\n }\";\n\nstatic FS_SRC: &\'static str = \"\\n\\\n varying vec4 color;\\n\\\n void main() {\\n\\\n gl_FragColor = color;\\n\\\n }\";\n\npub fn foo() {\n \n}\n\nfn compile_shader(src: &str, ty: GLenum) -> GLuint {\n let shader;\n unsafe {\n shader = gl::CreateShader(ty);\n // Attempt to compile the shader\n let c_str = CString::new(src.as_bytes()).unwrap();\n gl::ShaderSource(shader, 1, &c_str.as_ptr(), ptr::null());\n gl::CompileShader(shader);\n\n // Get the compile status\n let mut status = gl::FALSE as GLint;\n gl::GetShaderiv(shader, gl::COMPILE_STATUS, &mut status);\n\n // Fail on error\n if status != (gl::TRUE as GLint) {\n let mut len = 0;\n gl::GetShaderiv(shader, gl::INFO_LOG_LENGTH, &mut len);\n let mut buf = Vec::with_capacity(len as usize);\n buf.set_len((len as usize) - 1); // subtract 1 to skip the trailing null character\n gl::GetShaderInfoLog(shader,\n len,\n ptr::null_mut(),\n buf.as_mut_ptr() as *mut GLchar);\n panic!(\"{}\",\n str::from_utf8(&buf)\n .ok()\n .expect(\"ShaderInfoLog not valid utf8\"));\n }\n }\n shader\n}\n\nfn link_program(vs: GLuint, fs: GLuint) -> GLuint {\n unsafe {\n let program = gl::CreateProgram();\n gl::AttachShader(program, vs);\n gl::AttachShader(program, fs);\n gl::LinkProgram(program);\n // Get the link status\n let mut status = gl::FALSE as GLint;\n gl::GetProgramiv(program, gl::LINK_STATUS, &mut status);\n\n // Fail on error\n if status != (gl::TRUE as GLint) {\n let mut len: GLint = 0;\n gl::GetProgramiv(program, gl::INFO_LOG_LENGTH, &mut len);\n let mut buf = Vec::with_capacity(len as usize);\n buf.set_len((len as usize) - 1); // subtract 1 to skip the trailing null character\n gl::GetProgramInfoLog(program,\n len,\n ptr::null_mut(),\n buf.as_mut_ptr() as *mut GLchar);\n panic!(\"{}\",\n str::from_utf8(&buf)\n .ok()\n .expect(\"ProgramInfoLog not valid utf8\"));\n }\n program\n }\n}\n\n#[cfg(feature = \"hotload\")]\nfn plugin_load<\'a>() -> (Plugins, DynamicReload<\'a>) {\n // Setup the reload handler. A temporary directory will be created inside the target/debug\n // where plugins will be loaded from. That is because on some OS:es loading a shared lib\n // will lock the file so we can\'t overwrite it so this works around that issue.\n let mut reload_handler = DynamicReload::new(Some(vec![\"target/debug\"]),\n Some(\"target/debug\"),\n Search::Default);\n let mut plugs = Plugins { plugins: Vec::new() };\n\n // test_shared is generated in build.rs\n match reload_handler.add_library(\"test_shared\", PlatformName::Yes) {\n Ok(lib) => plugs.add_plugin(&lib),\n Err(e) => {\n //Log::error(\"Unable to load dynamic lib, err {:?}\", e);\n return (plugs, reload_handler);\n }\n }\n\n (plugs, reload_handler)\n}\n\n#[cfg(not(feature = \"hotload\"))]\nfn plugin_load() -> (i32, i32) {\n (0, 0)\n}\n\n#[cfg(feature = \"hotload\")]\nfn plugin_update<\'a>(mut plugs: &mut Plugins, mut reload_handler: &mut DynamicReload<\'a>) {\n reload_handler.update(Plugins::reload_callback, &mut plugs);\n\n if plugs.plugins.len() > 0 {\n // In a real program you want to cache the symbol and not do it every time if your\n // application is performance critical\n let fun: Symbol<extern \"C\" fn() -> i32> =\n unsafe { plugs.plugins[0].lib.get(b\"shared_fun\\0\").unwrap() };\n\n //Log::info(\"Value {}\", fun());\n }\n}\n\n#[cfg(not(feature = \"hotload\"))]\nfn plugin_update(mut plugs: &mut i32, mut reload_handler: &mut i32) {\n //Log::info(\"Value {}\", shared_fun());\n}\n\npub struct Engine {\n}\n\nimpl Engine {\n pub fn new() -> Self {\n Engine {\n }\n }\n\n //#[cfg(feature = \"hotload\")]\n pub fn run_loop(&mut self) {\n let (mut plugs, mut reload_handler) = plugin_load();\n\n // Init SDL2\n let sdl_context = sdl2::init().unwrap();\n let video_subsystem = sdl_context.video().unwrap();\n\n let window = video_subsystem\n .window(\"minigame-rust\", 800, 600)\n .position_centered()\n .opengl()\n .build()\n .unwrap();\n\n sdl2::log::log(\"Looking for OpenGL drivers\");\n let mut canvas = window\n .into_canvas()\n .index(find_sdl_gl_driver().unwrap())\n .build()\n .unwrap();\n\n sdl2::log::log(\"Loading GL extensions\");\n gl::load_with(|s| video_subsystem.gl_get_proc_address(s) as *const _);\n sdl2::log::log(\"Setting current GL context\");\n canvas.window().gl_set_context_to_current();\n\n // Create GLSL shaders\n /*\n sdl2::log::log(\"Compiling vertex shader\");\n let vs_src = precision()+VS_SRC;\n let vs = compile_shader(&vs_src, gl::VERTEX_SHADER);\n sdl2::log::log(\"Compiling fragment shader\");\n let fs_src = precision()+FS_SRC;\n let fs = compile_shader(&fs_src, gl::FRAGMENT_SHADER);\n sdl2::log::log(\"Linking shaders\");\n let program = link_program(vs, fs);\n\n let mut vao = 0;\n let mut vbo = 0;\n */\n unsafe {\n /*\n // Use shader program\n gl::UseProgram(program);\n\n //let col_attr = gl::GetAttribLocation(program, CString::new(\"color\").unwrap().as_ptr());\n\n // Specify the layout of the vertex data\n let pos_attr = gl::GetAttribLocation(program, CString::new(\"position\").unwrap().as_ptr());\n gl::EnableVertexAttribArray(pos_attr as GLuint);\n gl::VertexAttribPointer(pos_attr as GLuint,\n 2,\n gl::FLOAT,\n gl::FALSE as GLboolean,\n 0,\n mem::transmute(&VERTEX_DATA[0]));\n */\n }\n\n let mut event_pump = sdl_context.event_pump().unwrap();\n\n /*\n // test_shared is generated in build.rs\n match reload_handler.add_library(\"test_shared\", PlatformName::Yes) {\n Ok(lib) => plugs.add_plugin(&lib),\n Err(e) => {\n Log::error(\"Unable to load dynamic lib, err {:?}\", e);\n return;\n }\n }\n */\n\n let mut shader = Shader::new();\n shader.load_default();\n\n let mut tc = canvas.texture_creator();\n let mut tm = TextureManager::new(&tc);\n tm.load(String::from(\"wabbit\"), Path::new(\"assets/wabbit_alpha.png\"));\n let wabbit = tm.get(&String::from(\"wabbit\"));\n\n let playerVA = ScalingViewportAdapter::with_size_and_virtual(800, 600, 320, 240);\n let mut playerCamera = Camera::new();\n playerCamera.set_viewport_adapter(Some(playerVA));\n\n let mut scene = Scene::new(32);\n let mut e = scene.create_entity();\n //let tm = self.texture_manager.as_ref().unwrap();\n //let mut ic = ImageComponent::new();//with_texture(tm.get(&String::from(\"wabbit\")));\n //e.add(ic);\n scene.add(e);\n\n let mut rng = rand::thread_rng();\n\n\n let mut bunnies = [Bunny::new(); 100];\n for bunny in bunnies.iter_mut() {\n bunny.speed.x = rng.gen::<f32>() * 5.0;\n bunny.speed.x = (rng.gen::<f32>() * 5.0) - 2.5;\n }\n\n let mut sb = SpriteBatch::new();\n\n let mut imgui = ImGui::init();\n let ui = imgui.frame((800, 600), (800, 600), 0.0);\n //imgui.set_texture_id(0);\n\n //\n // While this is running (printing a number) change return value in file src/test_shared.rs\n // build the project with cargo build and notice that this code will now return the new value\n //\n \'running: loop {\n plugin_update(&mut plugs, &mut reload_handler);\n\n /*\n reload_handler.update(Plugins::reload_callback, &mut plugs);\n\n if plugs.plugins.len() > 0 {\n // In a real program you want to cache the symbol and not do it every time if your\n // application is performance critical\n let fun: Symbol<extern \"C\" fn() -> i32> =\n unsafe { plugs.plugins[0].lib.get(b\"shared_fun\\0\").unwrap() };\n\n Log::info(\"Value {}\", fun());\n }\n */\n\n for event in event_pump.poll_iter() {\n match event {\n Event::Quit { .. } |\n Event::KeyDown { keycode: Some(Keycode::Escape), .. } => break \'running,\n _ => {}\n }\n }\n\n canvas.set_draw_color(SdlColor::RGB(191, 255, 255));\n canvas.clear();\n\n /*\n sdl2::log::log(\"Drawing triangle\");\n unsafe {\n gl::DrawArrays(gl::TRIANGLES, 0, 3);\n }\n */\n\n ui.window(im_str!(\"Hello world\"))\n .size((300.0, 100.0), ImGuiSetCond_FirstUseEver)\n .build(|| {\n ui.text(im_str!(\"Hello world!\"));\n ui.text(im_str!(\"This...is...imgui-rs!\"));\n ui.separator();\n let mouse_pos = ui.imgui().mouse_pos();\n ui.text(im_str!(\"Mouse Position: ({:.1},{:.1})\", mouse_pos.0, mouse_pos.1));\n });\n\n {\n let position = Vector2::new(0.0, 0.0);\n let matrix: Matrix4<f32> = Matrix4::one();\n //sdl2::log::log(\"wabbit width and height follows\");\n //sdl2::log::log(&wabbit.get_height().to_string());\n //sdl2::log::log(&wabbit.get_width().to_string());\n sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));\n for bunny in bunnies.iter_mut() {\n bunny.update();\n sb.draw(wabbit.clone(), Some(bunny.position), None, None, None, 0.0, None, Color::white(), 0.0);\n }\n sb.end(&mut canvas);\n }\n\n\n canvas.present();\n\n //::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));\n // The rest of the game loop goes here...\n\n\n // Wait for 0.5 sec\n //thread::sleep(Duration::from_millis(500));\n // Replace with the following once we\'re done with testing\n thread::sleep(Duration::from_millis(0))\n }\n\n // Cleanup\n unsafe {\n /*\n gl::DeleteProgram(program);\n gl::DeleteShader(fs);\n gl::DeleteShader(vs);\n gl::DeleteBuffers(1, &vbo);\n */\n }\n }\n}\n\n#[derive(Clone, Copy, Debug)]\nstruct Bunny {\n position: Vector2<f32>,\n speed: Vector2<f32>,\n min: Vector2<f32>,\n max: Vector2<f32>,\n gravity: f32,\n}\n\nimpl Bunny {\n pub fn new() -> Self {\n let mut rng = rand::thread_rng();\n Bunny {\n position: Vector2::new(0.0, 0.0),\n speed: Vector2::new(rng.gen::<f32>() * 5.0, (rng.gen::<f32>() * 5.0) - 2.5),\n min: Vector2::new(0.0, 0.0),\n max: Vector2::new(800.0, 600.0),\n gravity: 0.5,\n }\n }\n\n pub fn update(&mut self) {\n let mut rng = rand::thread_rng();\n self.position.x += self.speed.x;\n self.position.y += self.speed.y;\n self.speed.y += self.gravity;\n\n if self.position.x > self.max.x {\n self.speed.x *= -1.0;\n self.position.x = self.max.x;\n } else if self.position.x < self.min.x {\n self.speed.x *= -1.0;\n self.position.x = self.min.x;\n }\n\n if self.position.y > self.max.y {\n self.speed.y *= -0.8;\n self.position.y = self.max.y;\n\n if rng.gen::<f32>() > 0.5 {\n self.speed.y -= 3.0 + rng.gen::<f32>() * 4.0;\n }\n } else if self.position.y < self.min.y {\n self.speed.y = 0.0;\n self.position.y = self.min.y;\n }\n\n }\n}" } })
TRACE:rls::actions: on_open: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs"
TRACE:rls::server: reading: 38 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":1,"result":null}`
TRACE:rls::server: parsing invalid message: Some(Failure { jsonrpc: Some(V2), error: Error { code: InvalidRequest, message: "Invalid request", data: None }, id: Num(1) })
TRACE:rls::server: response: "Content-Length: 76\r\n\r\n{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32600,\"message\":\"Invalid request\"},\"id\":1}"
TRACE:rls::server: reading: 262 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":1,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"range":{"start":{"line":413,"character":19},"end":{"line":413,"character":24}},"context":{"diagnostics":[]}}}`
TRACE:rls::server: Handling CodeAction (1) (params: CodeActionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, range: Range { start: Position { line: 413, character: 19 }, end: Position { line: 413, character: 24 } }, context: CodeActionContext { diagnostics: [] } })
TRACE:rls::actions: code_action CodeActionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, range: Range { start: Position { line: 413, character: 19 }, end: Position { line: 413, character: 24 } }, context: CodeActionContext { diagnostics: [] } }
TRACE:rls::server: response: "Content-Length: 36\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":[]}"
TRACE:rls::server: reading: 38 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":2,"result":null}`
TRACE:rls::server: parsing invalid message: Some(Failure { jsonrpc: Some(V2), error: Error { code: InvalidRequest, message: "Invalid request", data: None }, id: Num(2) })
TRACE:rls::server: response: "Content-Length: 76\r\n\r\n{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32600,\"message\":\"Invalid request\"},\"id\":2}"
TRACE:rls::build::cargo: exec: main
TRACE:rls::build::cargo: rustc intercepted - args: ["--crate-name", "main", "src/main.rs", "--color", "never", "--crate-type", "bin", "--emit=dep-info,metadata", "-C", "debuginfo=2", "--cfg", "feature=\"default\"", "--cfg", "feature=\"dynamic_reload\"", "--cfg", "feature=\"hotload\"", "-C", "metadata=bb0cbcabfa212c1b", "-C", "extra-filename=-bb0cbcabfa212c1b", "--out-dir", "/Users/tanis/Documents/minigame-rust/target/rls/debug/deps", "-L", "dependency=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps", "--extern", "sdl2=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libsdl2-2980d547dc686e61.rmeta", "--extern", "png=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libpng-8e12a6e0cbfd1246.rmeta", "--extern", "imgui=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libimgui-a22b48cc133ab643.rmeta", "--extern", "log=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/liblog-caf9684d1f9b8f5a.rmeta", "--extern", "rand=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/librand-cf9928a31ec84b00.rmeta", "--extern", "rusttype=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/librusttype-7a1b1849ef5256d2.rmeta", "--extern", "cgmath=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libcgmath-8326719986d39cda.rmeta", "--extern", "dynamic_reload=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libdynamic_reload-9e5a101a6dc1a396.rmeta", "--extern", "minigame=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libminigame.rmeta", "--error-format=json", "-Zcontinue-parse-after-error", "-Zsave-analysis", "-Zunstable-options", "-L", "native=/Users/tanis/Documents/minigame-rust/target/rls/debug/build/imgui-sys-b3503b55c8708663/out"] envs: {"CARGO_PKG_VERSION_MAJOR": Some("0"), "CARGO_MANIFEST_DIR": Some("/Users/tanis/Documents/minigame-rust"), "CARGO_PKG_VERSION_PRE": Some(""), "CARGO_PKG_NAME": Some("minigame"), "CARGO_PKG_HOMEPAGE": Some(""), "DYLD_LIBRARY_PATH": Some("/Users/tanis/Documents/minigame-rust/target/rls/debug/deps:/Users/tanis/.rustup/toolchains/nightly-x86_64-apple-darwin/lib"), "CARGO": Some("/Users/tanis/.rustup/toolchains/nightly-x86_64-apple-darwin/bin/rls"), "CARGO_PKG_VERSION_MINOR": Some("1"), "CARGO_PKG_VERSION": Some("0.1.0"), "OUT_DIR": Some("/Users/tanis/Documents/minigame-rust/target/rls/debug/build/minigame-c17e1588ef479d87/out"), "CARGO_PKG_VERSION_PATCH": Some("0"), "CARGO_PKG_AUTHORS": Some("Valerio Santinelli <santinelli@gmail.com>"), "CARGO_PKG_DESCRIPTION": Some("")}
TRACE:rls::build::rustc: rustc - args: `["rustc", "--crate-name", "main", "src/main.rs", "--color", "never", "--crate-type", "bin", "--emit=dep-info,metadata", "-C", "debuginfo=2", "--cfg", "feature=\"default\"", "--cfg", "feature=\"dynamic_reload\"", "--cfg", "feature=\"hotload\"", "-C", "metadata=bb0cbcabfa212c1b", "-C", "extra-filename=-bb0cbcabfa212c1b", "--out-dir", "/Users/tanis/Documents/minigame-rust/target/rls/debug/deps", "-L", "dependency=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps", "--extern", "sdl2=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libsdl2-2980d547dc686e61.rmeta", "--extern", "png=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libpng-8e12a6e0cbfd1246.rmeta", "--extern", "imgui=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libimgui-a22b48cc133ab643.rmeta", "--extern", "log=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/liblog-caf9684d1f9b8f5a.rmeta", "--extern", "rand=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/librand-cf9928a31ec84b00.rmeta", "--extern", "rusttype=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/librusttype-7a1b1849ef5256d2.rmeta", "--extern", "cgmath=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libcgmath-8326719986d39cda.rmeta", "--extern", "dynamic_reload=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libdynamic_reload-9e5a101a6dc1a396.rmeta", "--extern", "minigame=/Users/tanis/Documents/minigame-rust/target/rls/debug/deps/libminigame.rmeta", "--error-format=json", "-Zcontinue-parse-after-error", "-Zsave-analysis", "-Zunstable-options", "-L", "native=/Users/tanis/Documents/minigame-rust/target/rls/debug/build/imgui-sys-b3503b55c8708663/out", "--sysroot", "/Users/tanis/.rustup/toolchains/nightly-x86_64-apple-darwin"]`, envs: {"CARGO_PKG_VERSION_MAJOR": Some("0"), "CARGO_MANIFEST_DIR": Some("/Users/tanis/Documents/minigame-rust"), "CARGO_PKG_VERSION_PRE": Some(""), "CARGO_PKG_NAME": Some("minigame"), "CARGO_PKG_HOMEPAGE": Some(""), "DYLD_LIBRARY_PATH": Some("/Users/tanis/Documents/minigame-rust/target/rls/debug/deps:/Users/tanis/.rustup/toolchains/nightly-x86_64-apple-darwin/lib"), "CARGO": Some("/Users/tanis/.rustup/toolchains/nightly-x86_64-apple-darwin/bin/rls"), "CARGO_PKG_VERSION_MINOR": Some("1"), "CARGO_PKG_VERSION": Some("0.1.0"), "OUT_DIR": Some("/Users/tanis/Documents/minigame-rust/target/rls/debug/build/minigame-c17e1588ef479d87/out"), "CARGO_PKG_VERSION_PATCH": Some("0"), "CARGO_PKG_AUTHORS": Some("Valerio Santinelli <santinelli@gmail.com>"), "CARGO_PKG_DESCRIPTION": Some("")}, build dir: "/Users/tanis/Documents/minigame-rust"
TRACE:rls::actions: build - Success
DEBUG:rls::actions: reload analysis: "/Users/tanis/Documents/minigame-rust"
TRACE:rls::server: response: "Content-Length: 70\r\n\r\n{\"jsonrpc\":\"2.0\",\"method\":\"rustDocument/diagnosticsEnd\",\"params\":null}"
TRACE:rls::server: reading: 187 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":2,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":412,"character":26}}}`
TRACE:rls::server: Handling Hover (2) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 412, character: 26 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 412, character: 26 }
TRACE:rls::actions: line: ` //sdl2::log::log(&wabbit.get_width().to_string());
`
TRACE:rls::actions: start: 24
TRACE:rls::actions: end: 27
TRACE:rls::actions: hover: Span { file: "/Users/tanis/Documents/minigame-rust/src/engine.rs", range: Range { row_start: Row(412, PhantomData), row_end: Row(412, PhantomData), col_start: Column(24, PhantomData), col_end: Column(27, PhantomData) } }
TRACE:rls::server: response: "Content-Length: 62\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":2,\"result\":{\"contents\":[],\"range\":null}}"
TRACE:rls::server: reading: 187 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":3,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":413,"character":22}}}`
TRACE:rls::server: Handling Hover (3) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 413, character: 22 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 413, character: 22 }
TRACE:rls::actions: line: ` sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));
`
TRACE:rls::actions: start: 19
TRACE:rls::actions: end: 24
TRACE:rls::actions: hover: Span { file: "/Users/tanis/Documents/minigame-rust/src/engine.rs", range: Range { row_start: Row(413, PhantomData), row_end: Row(413, PhantomData), col_start: Column(19, PhantomData), col_end: Column(24, PhantomData) } }
TRACE:rls::server: response: "Content-Length: 62\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":3,\"result\":{\"contents\":[],\"range\":null}}"
TRACE:rls::server: reading: 187 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":413,"character":28}}}`
TRACE:rls::server: Handling Hover (4) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 413, character: 28 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 413, character: 28 }
TRACE:rls::actions: line: ` sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));
`
TRACE:rls::actions: start: 26
TRACE:rls::actions: end: 29
TRACE:rls::actions: hover: Span { file: "/Users/tanis/Documents/minigame-rust/src/engine.rs", range: Range { row_start: Row(413, PhantomData), row_end: Row(413, PhantomData), col_start: Column(26, PhantomData), col_end: Column(29, PhantomData) } }
TRACE:rls::server: response: "Content-Length: 62\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":4,\"result\":{\"contents\":[],\"range\":null}}"
TRACE:rls::server: reading: 192 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":5,"method":"textDocument/definition","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":413,"character":23}}}`
TRACE:rls::server: Handling GotoDefinition (5) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 413, character: 23 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 413, character: 23 }
TRACE:rls::actions: line: ` sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));
`
TRACE:rls::actions: start: 19
TRACE:rls::actions: end: 24
INFO:rls::actions: goto_def - falling back to Racer
TRACE:rls::server: response: "Content-Length: 36\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":5,\"result\":[]}"
TRACE:rls::server: reading: 187 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":6,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":413,"character":22}}}`
TRACE:rls::server: Handling Hover (6) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 413, character: 22 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 413, character: 22 }
TRACE:rls::actions: line: ` sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));
`
TRACE:rls::actions: start: 19
TRACE:rls::actions: end: 24
TRACE:rls::actions: hover: Span { file: "/Users/tanis/Documents/minigame-rust/src/engine.rs", range: Range { row_start: Row(413, PhantomData), row_end: Row(413, PhantomData), col_start: Column(19, PhantomData), col_end: Column(24, PhantomData) } }
TRACE:rls::server: response: "Content-Length: 62\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":6,\"result\":{\"contents\":[],\"range\":null}}"
TRACE:rls::server: reading: 199 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":7,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":413,"character":22}}}`
TRACE:rls::server: Handling DocumentHighlight (7) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 413, character: 22 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 413, character: 22 }
TRACE:rls::actions: line: ` sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));
`
TRACE:rls::actions: start: 19
TRACE:rls::actions: end: 24
TRACE:rls::server: response: "Content-Length: 36\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":7,\"result\":[]}"
TRACE:rls::server: reading: 262 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":8,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"range":{"start":{"line":413,"character":19},"end":{"line":413,"character":24}},"context":{"diagnostics":[]}}}`
TRACE:rls::server: Handling CodeAction (8) (params: CodeActionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, range: Range { start: Position { line: 413, character: 19 }, end: Position { line: 413, character: 24 } }, context: CodeActionContext { diagnostics: [] } })
TRACE:rls::actions: code_action CodeActionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, range: Range { start: Position { line: 413, character: 19 }, end: Position { line: 413, character: 24 } }, context: CodeActionContext { diagnostics: [] } }
TRACE:rls::server: response: "Content-Length: 36\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":8,\"result\":[]}"
TRACE:rls::server: reading: 192 bytes
TRACE:rls::server: parse_message `{"jsonrpc":"2.0","id":9,"method":"textDocument/definition","params":{"textDocument":{"uri":"file:///Users/tanis/Documents/minigame-rust/src/engine.rs"},"position":{"line":413,"character":22}}}`
TRACE:rls::server: Handling GotoDefinition (9) (params: TextDocumentPositionParams { text_document: TextDocumentIdentifier { uri: "file:///Users/tanis/Documents/minigame-rust/src/engine.rs" }, position: Position { line: 413, character: 22 } })
TRACE:rls::actions: convert_pos_to_span: "/Users/tanis/Documents/minigame-rust/src/engine.rs" Position { line: 413, character: 22 }
TRACE:rls::actions: line: ` sb.begin(&mut canvas, SpriteSortMode::SpriteSortModeDeferred, Some(&shader), Some(matrix));
`
TRACE:rls::actions: start: 19
TRACE:rls::actions: end: 24
INFO:rls::actions: goto_def - falling back to Racer
TRACE:rls::server: response: "Content-Length: 36\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":9,\"result\":[]}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment