From 5e38579be8958d4c1a18b458718f4af521d10d46 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 15 Aug 2026 17:34:30 -0600 Subject: [PATCH 1/2] Implement getSettingDefinitions for declarative settings API Add getSettingDefinitions() to TextToolsSettingTab so settings are searchable in Obsidian's global settings search on 1.13.0+. Keep display() as a fallback for Obsidian < 1.13.0 since minAppVersion is 1.11.0. Update the lockfile to obsidian 1.13.1 for the new API types. Closes #26 --- package-lock.json | 12 +++---- src/settings-tab.ts | 80 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 85 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index a8f247f..9c48a44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-text-tools", - "version": "1.0.7", + "version": "1.0.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-text-tools", - "version": "1.0.7", + "version": "1.0.11", "license": "MIT", "devDependencies": { "@eslint/json": "^0.14.0", @@ -17,7 +17,7 @@ "eslint": "^9.39.4", "eslint-plugin-obsidianmd": "^0.1.9", "globals": "^17.4.0", - "obsidian": "latest", + "obsidian": "^1.13.1", "tslib": "2.6.0", "typescript": "5.4.5", "typescript-eslint": "^8.56.1", @@ -4712,9 +4712,9 @@ } }, "node_modules/obsidian": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.12.2.tgz", - "integrity": "sha512-DGAzpt6vo+sMDET/o8Zj26Bj2hbHrFsNUU8TtnzCyerO/OHksMFQnU9QEnPHVsOMstt/WnHXfC56j2r1syObWg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.13.1.tgz", + "integrity": "sha512-qtTEA2pmhJzhuhJqzbBFRYhpIOqvW+krDYjtFynv66KbxBbumHBlsJfWw3I4jtnK/6fZwbQhCrmmDdRwXmX56w==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/settings-tab.ts b/src/settings-tab.ts index 26cd891..63c7f09 100644 --- a/src/settings-tab.ts +++ b/src/settings-tab.ts @@ -1,5 +1,6 @@ -import { App, PluginSettingTab, Setting } from "obsidian"; +import { App, PluginSettingTab, Setting, SettingDefinitionItem } from "obsidian"; import TextToolsPlugin from "../main"; +import { TextToolsSettings } from "./settings"; export class TextToolsSettingTab extends PluginSettingTab { plugin: TextToolsPlugin; @@ -9,6 +10,83 @@ export class TextToolsSettingTab extends PluginSettingTab { this.plugin = plugin; } + // Obsidian 1.13.0+ renders from these definitions, which also makes the + // settings appear in Obsidian's global settings search. + getSettingDefinitions(): SettingDefinitionItem[] { + return [ + { + type: "group", + heading: "Line numbers", + items: [ + { + name: "Separator", + desc: 'String between the line number and the line text. Default: ". "', + control: { + type: "text", + key: "lineNumberSeparator", + placeholder: ". ", + }, + }, + { + name: "Pad with leading zeros", + desc: "Align numbers with leading zeros (01, 02 … 10).", + control: { + type: "toggle", + key: "padLineNumbers", + }, + }, + ], + }, + { + type: "group", + heading: "Filter lines", + items: [ + { + name: "Case-sensitive filtering", + desc: "When on, filter commands match case exactly.", + control: { + type: "toggle", + key: "caseSensitiveFiltering", + }, + }, + ], + }, + { + type: "group", + heading: "Guids", + items: [ + { + name: "Uppercase hex digits", + desc: "Insert guids using uppercase hex digits.", + control: { + type: "toggle", + key: "insertUppercaseGuids", + }, + }, + ], + }, + { + type: "group", + heading: "Padding", + items: [ + { + name: "Default pad character", + desc: "Character used when padding lines (default: space).", + control: { + type: "text", + key: "defaultPadString", + placeholder: " ", + validate: (value: string) => + value.length > 0 ? undefined : "Enter a pad character.", + }, + }, + ], + }, + ]; + } + + // Fallback for Obsidian versions older than 1.13.0, which do not support + // getSettingDefinitions(). display(): void { const { containerEl } = this; containerEl.empty(); From 7271fd637eac114eb60267f96307a13caf5cb311 Mon Sep 17 00:00:00 2001 From: Nils Date: Sat, 15 Aug 2026 19:50:05 -0600 Subject: [PATCH 2/2] Update minimum app version requirement to 1.13.0 and remove fallback settings for older versions --- manifest.json | 2 +- src/settings-tab.ts | 91 +-------------------------------------------- 2 files changed, 2 insertions(+), 91 deletions(-) diff --git a/manifest.json b/manifest.json index 018658b..4465cb7 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "id": "text-tools", "name": "Local Text Tools", "version": "1.0.11", - "minAppVersion": "1.11.0", + "minAppVersion": "1.13.0", "description": "Text manipulation commands: case conversion, line numbering, and more. Works with single and multiple selections.", "author": "Nils Telleria", "authorUrl": "https://github.com/nilsandrey", diff --git a/src/settings-tab.ts b/src/settings-tab.ts index 63c7f09..4d7484d 100644 --- a/src/settings-tab.ts +++ b/src/settings-tab.ts @@ -1,4 +1,4 @@ -import { App, PluginSettingTab, Setting, SettingDefinitionItem } from "obsidian"; +import { App, PluginSettingTab, SettingDefinitionItem } from "obsidian"; import TextToolsPlugin from "../main"; import { TextToolsSettings } from "./settings"; @@ -84,93 +84,4 @@ export class TextToolsSettingTab extends PluginSettingTab { }, ]; } - - // Fallback for Obsidian versions older than 1.13.0, which do not support - // getSettingDefinitions(). - display(): void { - const { containerEl } = this; - containerEl.empty(); - - // ------------------------------------------------------------------ // - // Line numbers - // ------------------------------------------------------------------ // - new Setting(containerEl).setName("Line numbers").setHeading(); - - new Setting(containerEl) - .setName("Separator") - .setDesc('String between the line number and the line text. Default: ". "') - .addText((t) => - t - .setPlaceholder(". ") - .setValue(this.plugin.settings.lineNumberSeparator) - .onChange(async (v) => { - this.plugin.settings.lineNumberSeparator = v; - await this.plugin.saveSettings(); - }) - ); - - new Setting(containerEl) - .setName("Pad with leading zeros") - .setDesc("Align numbers with leading zeros (01, 02 … 10).") - .addToggle((t) => - t - .setValue(this.plugin.settings.padLineNumbers) - .onChange(async (v) => { - this.plugin.settings.padLineNumbers = v; - await this.plugin.saveSettings(); - }) - ); - - // ------------------------------------------------------------------ // - // Filtering - // ------------------------------------------------------------------ // - new Setting(containerEl).setName("Filter lines").setHeading(); - - new Setting(containerEl) - .setName("Case-sensitive filtering") - .setDesc("When on, filter commands match case exactly.") - .addToggle((t) => - t - .setValue(this.plugin.settings.caseSensitiveFiltering) - .onChange(async (v) => { - this.plugin.settings.caseSensitiveFiltering = v; - await this.plugin.saveSettings(); - }) - ); - - // ------------------------------------------------------------------ // - // GUIDs - // ------------------------------------------------------------------ // - new Setting(containerEl).setName("Guids").setHeading(); - - new Setting(containerEl) - .setName("Uppercase hex digits") - .setDesc("Insert guids using uppercase hex digits.") - .addToggle((t) => - t - .setValue(this.plugin.settings.insertUppercaseGuids) - .onChange(async (v) => { - this.plugin.settings.insertUppercaseGuids = v; - await this.plugin.saveSettings(); - }) - ); - - // ------------------------------------------------------------------ // - // Padding - // ------------------------------------------------------------------ // - new Setting(containerEl).setName("Padding").setHeading(); - - new Setting(containerEl) - .setName("Default pad character") - .setDesc("Character used when padding lines (default: space).") - .addText((t) => - t - .setPlaceholder(" ") - .setValue(this.plugin.settings.defaultPadString) - .onChange(async (v) => { - this.plugin.settings.defaultPadString = v || " "; - await this.plugin.saveSettings(); - }) - ); - } }