Color picker goober works w single quotes (#6957)
* lsp stuffs Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
		
							
								
								
									
										14
									
								
								rust/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								rust/Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -535,7 +535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "lazy_static",
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -963,7 +963,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc",
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -1746,7 +1746,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "hermit-abi",
 | 
			
		||||
 "libc",
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -2987,7 +2987,7 @@ dependencies = [
 | 
			
		||||
 "once_cell",
 | 
			
		||||
 "socket2",
 | 
			
		||||
 "tracing",
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -3306,7 +3306,7 @@ dependencies = [
 | 
			
		||||
 "errno",
 | 
			
		||||
 "libc",
 | 
			
		||||
 "linux-raw-sys",
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -3900,7 +3900,7 @@ dependencies = [
 | 
			
		||||
 "getrandom 0.3.1",
 | 
			
		||||
 "once_cell",
 | 
			
		||||
 "rustix",
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -4753,7 +4753,7 @@ version = "0.1.9"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "windows-sys 0.52.0",
 | 
			
		||||
 "windows-sys 0.59.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
 | 
			
		||||
@ -4220,8 +4220,8 @@ sketch001 = startSketchOn(XY)
 | 
			
		||||
        result,
 | 
			
		||||
        vec![tower_lsp::lsp_types::ColorInformation {
 | 
			
		||||
            range: tower_lsp::lsp_types::Range {
 | 
			
		||||
                start: tower_lsp::lsp_types::Position { line: 4, character: 24 },
 | 
			
		||||
                end: tower_lsp::lsp_types::Position { line: 4, character: 33 },
 | 
			
		||||
                start: tower_lsp::lsp_types::Position { line: 4, character: 25 },
 | 
			
		||||
                end: tower_lsp::lsp_types::Position { line: 4, character: 32 },
 | 
			
		||||
            },
 | 
			
		||||
            color: tower_lsp::lsp_types::Color {
 | 
			
		||||
                red: 1.0,
 | 
			
		||||
@ -4272,8 +4272,8 @@ sketch001 = startSketchOn(XY)
 | 
			
		||||
        result,
 | 
			
		||||
        vec![tower_lsp::lsp_types::ColorInformation {
 | 
			
		||||
            range: tower_lsp::lsp_types::Range {
 | 
			
		||||
                start: tower_lsp::lsp_types::Position { line: 4, character: 24 },
 | 
			
		||||
                end: tower_lsp::lsp_types::Position { line: 4, character: 33 },
 | 
			
		||||
                start: tower_lsp::lsp_types::Position { line: 4, character: 25 },
 | 
			
		||||
                end: tower_lsp::lsp_types::Position { line: 4, character: 32 },
 | 
			
		||||
            },
 | 
			
		||||
            color: tower_lsp::lsp_types::Color {
 | 
			
		||||
                red: 1.0,
 | 
			
		||||
@ -4291,8 +4291,8 @@ sketch001 = startSketchOn(XY)
 | 
			
		||||
                uri: "file:///test.kcl".try_into().unwrap(),
 | 
			
		||||
            },
 | 
			
		||||
            range: tower_lsp::lsp_types::Range {
 | 
			
		||||
                start: tower_lsp::lsp_types::Position { line: 4, character: 24 },
 | 
			
		||||
                end: tower_lsp::lsp_types::Position { line: 4, character: 33 },
 | 
			
		||||
                start: tower_lsp::lsp_types::Position { line: 4, character: 25 },
 | 
			
		||||
                end: tower_lsp::lsp_types::Position { line: 4, character: 32 },
 | 
			
		||||
            },
 | 
			
		||||
            color: tower_lsp::lsp_types::Color {
 | 
			
		||||
                red: 1.0,
 | 
			
		||||
 | 
			
		||||
@ -438,8 +438,15 @@ impl Node<Program> {
 | 
			
		||||
        let add_color = |literal: &Node<Literal>| {
 | 
			
		||||
            // Check if the string is a color.
 | 
			
		||||
            if let Some(c) = literal.value.is_color() {
 | 
			
		||||
                let source_range = literal.as_source_range();
 | 
			
		||||
                // We subtract 1 from either side because of the "'s in the literal.
 | 
			
		||||
                let fixed_source_range = SourceRange::new(
 | 
			
		||||
                    source_range.start() + 1,
 | 
			
		||||
                    source_range.end() - 1,
 | 
			
		||||
                    source_range.module_id(),
 | 
			
		||||
                );
 | 
			
		||||
                let color = ColorInformation {
 | 
			
		||||
                    range: literal.as_source_range().to_lsp_range(code),
 | 
			
		||||
                    range: fixed_source_range.to_lsp_range(code),
 | 
			
		||||
                    color: tower_lsp::lsp_types::Color {
 | 
			
		||||
                        red: c.r,
 | 
			
		||||
                        green: c.g,
 | 
			
		||||
@ -498,7 +505,11 @@ impl Node<Program> {
 | 
			
		||||
        crate::walk::walk(self, |node: crate::walk::Node<'a>| {
 | 
			
		||||
            match node {
 | 
			
		||||
                crate::walk::Node::Literal(literal) => {
 | 
			
		||||
                    if literal.start == pos_start && literal.end == pos_end && literal.value.is_color().is_some() {
 | 
			
		||||
                    // Account for the quotes in the literal.
 | 
			
		||||
                    if (literal.start + 1) == pos_start
 | 
			
		||||
                        && (literal.end - 1) == pos_end
 | 
			
		||||
                        && literal.value.is_color().is_some()
 | 
			
		||||
                    {
 | 
			
		||||
                        found.replace(true);
 | 
			
		||||
                        return Ok(true);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user