diff --git a/.github/workflows/CI-nodejs.yml b/.github/workflows/CI-nodejs.yml index 3f2f5b6..a292dc5 100644 --- a/.github/workflows/CI-nodejs.yml +++ b/.github/workflows/CI-nodejs.yml @@ -9,7 +9,7 @@ permissions: 'on': push: branches: - - main + - fix-completion tags-ignore: - '**' paths-ignore: diff --git a/jinja-lsp-nodejs/index.d.ts b/jinja-lsp-nodejs/index.d.ts index 8041c01..3bad770 100644 --- a/jinja-lsp-nodejs/index.d.ts +++ b/jinja-lsp-nodejs/index.d.ts @@ -78,7 +78,7 @@ export class NodejsLspFiles { /** Actions can come from unsaved context. */ addGlobalContext(uri: string, actions?: Array | undefined | null): void deleteAll(filename: string): void - addOne(id: number, filename: string, content: string, line: number, ext: string): Array + addOne(id: number, filename: string, content: string, line: number, ext: string, col?: number | undefined | null): Array getVariables(id: string, line: number): Array | null hover(id: number, filename: string, line: number, position: JsPosition): JsHover | null complete(id: number, filename: string, line: number, position: JsPosition): Array | null diff --git a/jinja-lsp-nodejs/npm/android-arm-eabi/package.json b/jinja-lsp-nodejs/npm/android-arm-eabi/package.json index 864427c..4daa1eb 100644 --- a/jinja-lsp-nodejs/npm/android-arm-eabi/package.json +++ b/jinja-lsp-nodejs/npm/android-arm-eabi/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-android-arm-eabi", - "version": "0.0.11", + "version": "0.0.13", "os": [ "android" ], diff --git a/jinja-lsp-nodejs/npm/android-arm64/package.json b/jinja-lsp-nodejs/npm/android-arm64/package.json index a1b86e3..a4935d5 100644 --- a/jinja-lsp-nodejs/npm/android-arm64/package.json +++ b/jinja-lsp-nodejs/npm/android-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-android-arm64", - "version": "0.0.11", + "version": "0.0.13", "os": [ "android" ], diff --git a/jinja-lsp-nodejs/npm/darwin-arm64/package.json b/jinja-lsp-nodejs/npm/darwin-arm64/package.json index b2fcfc0..3263209 100644 --- a/jinja-lsp-nodejs/npm/darwin-arm64/package.json +++ b/jinja-lsp-nodejs/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-darwin-arm64", - "version": "0.0.11", + "version": "0.0.13", "os": [ "darwin" ], diff --git a/jinja-lsp-nodejs/npm/darwin-universal/package.json b/jinja-lsp-nodejs/npm/darwin-universal/package.json index 7dd058b..9298a4d 100644 --- a/jinja-lsp-nodejs/npm/darwin-universal/package.json +++ b/jinja-lsp-nodejs/npm/darwin-universal/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-darwin-universal", - "version": "0.0.11", + "version": "0.0.13", "os": [ "darwin" ], diff --git a/jinja-lsp-nodejs/npm/freebsd-x64/package.json b/jinja-lsp-nodejs/npm/freebsd-x64/package.json index 338b9f0..c0e30fd 100644 --- a/jinja-lsp-nodejs/npm/freebsd-x64/package.json +++ b/jinja-lsp-nodejs/npm/freebsd-x64/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-freebsd-x64", - "version": "0.0.11", + "version": "0.0.13", "os": [ "freebsd" ], diff --git a/jinja-lsp-nodejs/npm/linux-arm-gnueabihf/package.json b/jinja-lsp-nodejs/npm/linux-arm-gnueabihf/package.json index bc5dace..261381c 100644 --- a/jinja-lsp-nodejs/npm/linux-arm-gnueabihf/package.json +++ b/jinja-lsp-nodejs/npm/linux-arm-gnueabihf/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-arm-gnueabihf", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/linux-arm-musleabihf/package.json b/jinja-lsp-nodejs/npm/linux-arm-musleabihf/package.json index a651416..1d8d07b 100644 --- a/jinja-lsp-nodejs/npm/linux-arm-musleabihf/package.json +++ b/jinja-lsp-nodejs/npm/linux-arm-musleabihf/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-arm-musleabihf", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/linux-arm64-gnu/package.json b/jinja-lsp-nodejs/npm/linux-arm64-gnu/package.json index b157a3f..b64e23a 100644 --- a/jinja-lsp-nodejs/npm/linux-arm64-gnu/package.json +++ b/jinja-lsp-nodejs/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-arm64-gnu", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/linux-arm64-musl/package.json b/jinja-lsp-nodejs/npm/linux-arm64-musl/package.json index 6762c1f..84246df 100644 --- a/jinja-lsp-nodejs/npm/linux-arm64-musl/package.json +++ b/jinja-lsp-nodejs/npm/linux-arm64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-arm64-musl", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/linux-riscv64-gnu/package.json b/jinja-lsp-nodejs/npm/linux-riscv64-gnu/package.json index a1b3f27..3ad499c 100644 --- a/jinja-lsp-nodejs/npm/linux-riscv64-gnu/package.json +++ b/jinja-lsp-nodejs/npm/linux-riscv64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-riscv64-gnu", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/linux-x64-gnu/package.json b/jinja-lsp-nodejs/npm/linux-x64-gnu/package.json index 9576aea..2ee687d 100644 --- a/jinja-lsp-nodejs/npm/linux-x64-gnu/package.json +++ b/jinja-lsp-nodejs/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-x64-gnu", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/linux-x64-musl/package.json b/jinja-lsp-nodejs/npm/linux-x64-musl/package.json index 52910f5..c2273d2 100644 --- a/jinja-lsp-nodejs/npm/linux-x64-musl/package.json +++ b/jinja-lsp-nodejs/npm/linux-x64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-linux-x64-musl", - "version": "0.0.11", + "version": "0.0.13", "os": [ "linux" ], diff --git a/jinja-lsp-nodejs/npm/win32-arm64-msvc/package.json b/jinja-lsp-nodejs/npm/win32-arm64-msvc/package.json index 4e76f2c..cdd655b 100644 --- a/jinja-lsp-nodejs/npm/win32-arm64-msvc/package.json +++ b/jinja-lsp-nodejs/npm/win32-arm64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-win32-arm64-msvc", - "version": "0.0.11", + "version": "0.0.13", "os": [ "win32" ], diff --git a/jinja-lsp-nodejs/npm/win32-ia32-msvc/package.json b/jinja-lsp-nodejs/npm/win32-ia32-msvc/package.json index 58cd4c0..4c6e445 100644 --- a/jinja-lsp-nodejs/npm/win32-ia32-msvc/package.json +++ b/jinja-lsp-nodejs/npm/win32-ia32-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-win32-ia32-msvc", - "version": "0.0.11", + "version": "0.0.13", "os": [ "win32" ], diff --git a/jinja-lsp-nodejs/npm/win32-x64-msvc/package.json b/jinja-lsp-nodejs/npm/win32-x64-msvc/package.json index 55a7925..326dd2f 100644 --- a/jinja-lsp-nodejs/npm/win32-x64-msvc/package.json +++ b/jinja-lsp-nodejs/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions-win32-x64-msvc", - "version": "0.0.11", + "version": "0.0.13", "os": [ "win32" ], diff --git a/jinja-lsp-nodejs/package-lock.json b/jinja-lsp-nodejs/package-lock.json index 505f836..2659a58 100644 --- a/jinja-lsp-nodejs/package-lock.json +++ b/jinja-lsp-nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@jinja-lsp/functions", - "version": "0.0.11", + "version": "0.0.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@jinja-lsp/functions", - "version": "0.0.11", + "version": "0.0.13", "license": "MIT", "devDependencies": { "@napi-rs/cli": "^2.18.3", diff --git a/jinja-lsp-nodejs/package.json b/jinja-lsp-nodejs/package.json index 7a626c7..f63dffb 100644 --- a/jinja-lsp-nodejs/package.json +++ b/jinja-lsp-nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@jinja-lsp/functions", - "version": "0.0.11", + "version": "0.0.13", "main": "index.js", "types": "index.d.ts", "napi": { diff --git a/jinja-lsp-nodejs/src/lib.rs b/jinja-lsp-nodejs/src/lib.rs index be7a2d8..a79850b 100644 --- a/jinja-lsp-nodejs/src/lib.rs +++ b/jinja-lsp-nodejs/src/lib.rs @@ -104,10 +104,18 @@ impl NodejsLspFiles { &mut self, id: u32, filename: String, - content: String, + mut content: String, line: u32, ext: String, + col: Option, + // is_json: bool, ) -> Vec { + let col = col.unwrap_or(0); + let mut space_before = String::new(); + for _ in 0..col { + space_before.push_str(" "); + } + content = format!("{space_before}{content}"); let mut all_identifiers = vec![]; let params: DidOpenTextDocumentParams = DidOpenTextDocumentParams { text_document: TextDocumentItem::new( @@ -309,6 +317,7 @@ impl NodejsLspFiles { mut position: JsPosition, ) -> Option> { position.line -= line; + let original_uri = &format!("{filename}"); let uri = Url::parse(&format!("file:///home/{filename}.{id}.jinja")).unwrap(); let position = Position::new(position.line, position.character); let params: CompletionParams = CompletionParams { @@ -349,7 +358,11 @@ impl NodejsLspFiles { } CompletionType::Identifier => { - if let Some(variables) = self.lsp_files.read_variables(&uri, position, None) { + if let Some(variables) = + self + .lsp_files + .read_variables(&uri, position, None, Some(original_uri.to_string())) + { let mut ret = vec![]; for item in variables { ret.push(JsCompletionItem { diff --git a/jinja-lsp/src/channels/lsp.rs b/jinja-lsp/src/channels/lsp.rs index 7735261..bdde0ab 100644 --- a/jinja-lsp/src/channels/lsp.rs +++ b/jinja-lsp/src/channels/lsp.rs @@ -178,7 +178,7 @@ pub fn lsp_task( } CompletionType::Identifier => { if let Some(variables) = - lsp_data.read_variables(&uri, position, None) + lsp_data.read_variables(&uri, position, None, None) { items = Some(CompletionResponse::Array(variables)); } @@ -220,9 +220,12 @@ pub fn lsp_task( } } CompletionType::IncompleteIdentifier { name, range } => { - if let Some(variables) = - lsp_data.read_variables(&uri, position, Some((name, range))) - { + if let Some(variables) = lsp_data.read_variables( + &uri, + position, + Some((name, range)), + None, + ) { items = Some(CompletionResponse::Array(variables)); } } diff --git a/jinja-lsp/src/lsp_files.rs b/jinja-lsp/src/lsp_files.rs index 58d41f3..5c47e20 100644 --- a/jinja-lsp/src/lsp_files.rs +++ b/jinja-lsp/src/lsp_files.rs @@ -604,6 +604,7 @@ impl LspFiles { uri: &Url, position: Position, starting: Option<(String, Range)>, + nodejs_uri: Option, ) -> Option> { let mut items = vec![]; let start = position.line as usize; @@ -674,7 +675,12 @@ impl LspFiles { // } } } + let is_nodejs = nodejs_uri.is_some(); + let uri = nodejs_uri.unwrap_or(String::new()); for file in self.variables.iter() { + if is_nodejs && file.0 != &uri { + continue; + } for variable in file.1 { if variable.identifier_type == IdentifierType::BackendVariable { items.push(CompletionItem {