diff --git a/crates/emmylua_ls/src/handlers/document_color/build_color.rs b/crates/emmylua_ls/src/handlers/document_color/build_color.rs index a87592a56..276c244d6 100644 --- a/crates/emmylua_ls/src/handlers/document_color/build_color.rs +++ b/crates/emmylua_ls/src/handlers/document_color/build_color.rs @@ -51,8 +51,9 @@ fn try_build_color_information( let color_text = &text[i..j]; if let Some(color) = parse_hex_color(color_text) { let source_text_range = token.text_range(); + let start = if bytes[i - 1] == b'#' { i - 1 } else { i }; let text_range = TextRange::new( - source_text_range.start() + TextSize::new(i as u32), + source_text_range.start() + TextSize::new(start as u32), source_text_range.start() + TextSize::new(j as u32), ); let lsp_range = document.to_lsp_range(text_range)?; @@ -110,10 +111,15 @@ pub fn convert_color_to_hex(color: Color, len: usize) -> String { let b = (color.blue * 255.0).round() as u8; match len { 6 => format!("{:02X}{:02X}{:02X}", r, g, b), + 7 => format!("#{:02X}{:02X}{:02X}", r, g, b), 8 => { let a = (color.alpha * 255.0).round() as u8; format!("{:02X}{:02X}{:02X}{:02X}", r, g, b, a) } + 9 => { + let a = (color.alpha * 255.0).round() as u8; + format!("#{:02X}{:02X}{:02X}{:02X}", r, g, b, a) + } _ => "".to_string(), } }