From 566e7f29cb5f63053debf31051cc231b76fd088b Mon Sep 17 00:00:00 2001 From: Dervex Date: Tue, 18 Jun 2024 18:47:28 +0200 Subject: [PATCH] Improve config completion and CLI logging --- CHANGELOG.md | 5 +++++ src/argon.ts | 2 +- src/completion.ts | 24 +++++++++++++++++++++--- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d1083e..c8e3fe4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +### Fixed + +- Global configuration completion no longer suggests settings that already exist +- Argon no longer displays `npm` verbose information in notifications + ## [2.0.6] - 2024-06-16 ### Added diff --git a/src/argon.ts b/src/argon.ts index 9934ac5..adf98b6 100644 --- a/src/argon.ts +++ b/src/argon.ts @@ -7,7 +7,7 @@ function log(data: string, silent?: boolean) { let output = undefined for (const line of data.trim().split("\n")) { - const isVerbose = line.endsWith("]") + const isVerbose = line.endsWith("]") || !/^.{0,5}:/.test(line) if (line.startsWith("ERROR")) { logger.error(line, isVerbose) diff --git a/src/completion.ts b/src/completion.ts index 70960eb..31734bd 100644 --- a/src/completion.ts +++ b/src/completion.ts @@ -104,6 +104,20 @@ const SETTINGS = [ }, ] +function hasSetting(document: vscode.TextDocument, setting: string) { + const text = document.getText() + + if (text.includes(setting)) { + for (const line of text.split("\n")) { + if (line.includes(setting)) { + return !line.includes("#") + } + } + } + + return false +} + export function start() { const selector: vscode.DocumentSelector = { language: "toml", @@ -112,8 +126,12 @@ export function start() { } vscode.languages.registerCompletionItemProvider(selector, { - provideCompletionItems() { - return SETTINGS.map((setting) => { + provideCompletionItems(document) { + return SETTINGS.flatMap((setting) => { + if (hasSetting(document, setting.field)) { + return [] + } + const item = new vscode.CompletionItem( setting.field, vscode.CompletionItemKind.Field, @@ -122,7 +140,7 @@ export function start() { item.insertText = new vscode.SnippetString(setting.value) item.documentation = new vscode.MarkdownString(setting.doc) - return item + return [item] }) }, })