Skip to content

Commit

Permalink
Remove state file and comment on save
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreasArvidsson committed Feb 4, 2025
1 parent 1e91b9a commit 4022c69
Show file tree
Hide file tree
Showing 12 changed files with 31 additions and 173 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "andreas-talon",
"displayName": "Andreas Talon",
"description": "VSCode extension used by Talon Voice",
"version": "3.67.0",
"version": "3.68.0",
"publisher": "AndreasArvidsson",
"license": "MIT",
"main": "./out/extension.js",
Expand Down
7 changes: 5 additions & 2 deletions src/commands/formatComments/formatComments.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as prettier from "prettier";
import * as vscode from "vscode";
import { getConfiguration } from "../../util/configuration";
import { getActiveEditor } from "../../util/getActiveEditor";
import { isTesting } from "../../util/isTesting";
import { JavaFormatter } from "./JavaFormatter";
Expand Down Expand Up @@ -98,7 +97,7 @@ async function getLineWidth(document: vscode.TextDocument): Promise<number> {
return prettierConfig.printWidth;
}

const defaultFormatter = getConfiguration(document, "editor", "defaultFormatter");
const defaultFormatter = getConfiguration("editor", "defaultFormatter");

switch (defaultFormatter) {
case "ms-python.black-formatter":
Expand All @@ -108,3 +107,7 @@ async function getLineWidth(document: vscode.TextDocument): Promise<number> {

return 80;
}

function getConfiguration<T>(section: string, key: string): T | undefined {
return vscode.workspace.getConfiguration(section).get<T>(key);
}
18 changes: 0 additions & 18 deletions src/commands/formatComments/registerFormatCommentsOnSave.ts

This file was deleted.

6 changes: 1 addition & 5 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import * as vscode from "vscode";
import { registerFormatCommentsOnSave } from "./commands/formatComments/registerFormatCommentsOnSave";
import { registerCommands } from "./commands/registerCommands";
import { registerLanguageCodeActions } from "./language/registerLanguageCodeActions";
import { registerLanguageCompletionProviders } from "./language/registerLanguageCompletionProviders";
import { registerLanguageDefinitions } from "./language/registerLanguageDefinitions";
import { registerLanguageFormatters } from "./language/registerLanguageFormatters";
import { registerStateUpdater } from "./stateUpdater";
import { createTabView } from "./tabView";
import { TreeSitter } from "./treeSitter/TreeSitter";
import { getCommandServerExtension, getParseTreeExtension } from "./util/getExtension";
Expand Down Expand Up @@ -40,8 +38,6 @@ async function activateExtension(context: vscode.ExtensionContext): Promise<void
registerLanguageCompletionProviders(),
registerLanguageCodeActions(treeSitter),
registerLanguageFormatters(treeSitter),
registerFormatCommentsOnSave(),
createTabView(),
isTesting ? vscode.Disposable.from() : registerStateUpdater()
createTabView()
);
}
4 changes: 1 addition & 3 deletions src/language/SnippetFormatter.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { parseSnippetFile, serializeSnippetFile } from "talon-snippets";
import type { TextDocument } from "vscode";
import type { LanguageFormatterText } from "./registerLanguageFormatters";

export const snippetFormatter: LanguageFormatterText = {
getText(document: TextDocument, _indentation: string): string {
const text = document.getText();
getText(text: string, _indentation: string): string {
const documents = parseSnippetFile(text);
return serializeSnippetFile(documents);
}
Expand Down
9 changes: 4 additions & 5 deletions src/language/TalonFormatter.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import type { TextDocument } from "vscode";
import type { SyntaxNode } from "web-tree-sitter";
import { configuration } from "../util/configuration";
import type { LanguageFormatterTree } from "./registerLanguageFormatters";

export const talonFormatter: LanguageFormatterTree = {
getText(document: TextDocument, node: SyntaxNode, indentation: string): string {
const columnWidth = getColumnWidth(document, node.text);
getText(node: SyntaxNode, indentation: string): string {
const columnWidth = getColumnWidth(node.text);
const formatter = new TalonFormatter(indentation, columnWidth);
return formatter.getText(node);
}
Expand Down Expand Up @@ -175,10 +174,10 @@ class TalonFormatter {
}
}

function getColumnWidth(document: TextDocument, text: string) {
function getColumnWidth(text: string) {
const match = text.match(/# fmt: columnWidth=(\d+)/);
if (match != null) {
return parseInt(match[1]);
}
return configuration.talonFormatter.columnWidth(document);
return configuration.talonFormatter.columnWidth();
}
10 changes: 4 additions & 6 deletions src/language/TalonListFormatter.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import type { TextDocument } from "vscode";
import { configuration } from "../util/configuration";
import type { LanguageFormatterText } from "./registerLanguageFormatters";
import { parseTalonList } from "./TalonListParser";

export const talonListFormatter: LanguageFormatterText = {
getText(document: TextDocument, _indentation: string): string {
const text = document.getText();
const columnWidth = getColumnWidth(document, text);
getText(text: string, _indentation: string): string {
const columnWidth = getColumnWidth(text);
const talonList = parseTalonList(text);
talonList.headers.sort((a, _b) => (a.type === "header" && a.key === "list" ? -1 : 0));
const result: string[] = [];
Expand Down Expand Up @@ -45,10 +43,10 @@ export const talonListFormatter: LanguageFormatterText = {
}
};

function getColumnWidth(document: TextDocument, text: string) {
function getColumnWidth(text: string) {
const match = text.match(/# fmt: columnWidth=(\d+)/);
if (match != null) {
return parseInt(match[1]);
}
return configuration.talonListFormatter.columnWidth(document);
return configuration.talonListFormatter.columnWidth();
}
3 changes: 1 addition & 2 deletions src/language/TreeSitterFormatter.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import type { TextDocument } from "vscode";
import type { SyntaxNode } from "web-tree-sitter";
import type { LanguageFormatterTree } from "./registerLanguageFormatters";

export const treeSitterFormatter: LanguageFormatterTree = {
getText(document: TextDocument, node: SyntaxNode, indentation: string): string {
getText(node: SyntaxNode, indentation: string): string {
const formatter = new TreeSitterFormatter(indentation);
return formatter.getText(node);
}
Expand Down
8 changes: 4 additions & 4 deletions src/language/registerLanguageFormatters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import { talonListFormatter } from "./TalonListFormatter";
import { treeSitterFormatter } from "./TreeSitterFormatter";

export interface LanguageFormatterTree {
getText(document: TextDocument, node: SyntaxNode, indentation: string): string;
getText(node: SyntaxNode, indentation: string): string;
}

export interface LanguageFormatterText {
getText(document: TextDocument, indentation: string): string;
getText(text: string, indentation: string): string;
}

function provideDocumentFormattingEditsForTree(
Expand All @@ -33,7 +33,7 @@ function provideDocumentFormattingEditsForTree(
}

const { indentation } = await parseOptions(document, options);
const newText = formatter.getText(document, rootNode, indentation);
const newText = formatter.getText(rootNode, indentation);
return createTextEdits(document, newText);
}
};
Expand All @@ -47,7 +47,7 @@ function provideDocumentFormattingEditsForText(formatter: LanguageFormatterText)
): Promise<TextEdit[]> => {
const { indentation } = await parseOptions(document, options);
try {
const newText = formatter.getText(document, indentation);
const newText = formatter.getText(document.getText(), indentation);
return createTextEdits(document, newText);
} catch (error) {
console.warn((error as Error).message);
Expand Down
90 changes: 0 additions & 90 deletions src/stateUpdater.ts

This file was deleted.

43 changes: 8 additions & 35 deletions src/util/configuration.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
import type { TextDocument } from "vscode";
import { workspace } from "vscode";
import { isTesting } from "./isTesting";

interface Configuration {
formatCommentsOnSave: (document: TextDocument) => boolean;
talonFormatter: {
columnWidth: (document: TextDocument) => number | undefined;
columnWidth: () => number | undefined;
};
talonListFormatter: {
columnWidth: (document: TextDocument) => number | undefined;
columnWidth: () => number | undefined;
};
}

export const configuration: Configuration = (() => {
if (isTesting) {
return {
formatCommentsOnSave: () => false,
talonFormatter: {
columnWidth: () => 28
},
Expand All @@ -26,43 +23,19 @@ export const configuration: Configuration = (() => {
}

return {
formatCommentsOnSave: (document) => {
return getMyConfiguration<boolean>(document, "formatCommentsOnSave") ?? false;
},
talonFormatter: {
columnWidth: (document) => {
return getMyConfiguration<number>(document, "talonFormatter.columnWidth");
columnWidth: () => {
return getConfiguration<number>("talonFormatter.columnWidth");
}
},
talonListFormatter: {
columnWidth: (document) => {
return getMyConfiguration<number>(document, "talonListFormatter.columnWidth");
columnWidth: () => {
return getConfiguration<number>("talonListFormatter.columnWidth");
}
}
};
})();

function getMyConfiguration<T>(document: TextDocument, key: string): T | undefined {
return getConfiguration(document, "andreas", key);
}

export function getConfiguration<T>(
document: TextDocument,
section: string,
key: string
): T | undefined {
return (
getLanguageConfiguration(document, section, key) ??
workspace.getConfiguration(section).get<T>(key)
);
}

function getLanguageConfiguration<T>(
document: TextDocument,
section: string,
key: string
): T | undefined {
const langConfig = workspace.getConfiguration(`[${document.languageId}]`);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return
return (langConfig as any)[`${section}.${key}`];
function getConfiguration<T>(key: string): T | undefined {
return workspace.getConfiguration("andreas").get<T>(key);
}

0 comments on commit 4022c69

Please sign in to comment.