Fix README install path and add configurable thread settings

This commit is contained in:
2026-05-05 15:24:05 +02:00
parent 93f19858a9
commit 6bd9693ea6
4 changed files with 62 additions and 5 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ The selected text is replaced in place.
1. Build the plugin (see [Development](#development)) or download a release 1. Build the plugin (see [Development](#development)) or download a release
2. Copy `main.js` and `manifest.json` to your vault at: 2. Copy `main.js` and `manifest.json` to your vault at:
``` ```
<VaultFolder>/.obsidian/plugins/unicode-text-formatter/ <VaultFolder>/.obsidian/plugins/obsidian-unicode-formatter/
``` ```
3. In Obsidian: **Settings → Community Plugins → Installed Plugins** — enable **Unicode Text Formatter** 3. In Obsidian: **Settings → Community Plugins → Installed Plugins** — enable **Unicode Text Formatter**
+7 -4
View File
@@ -1,9 +1,9 @@
import { Plugin } from "obsidian"; import type UnicodeFormatterPlugin from "./main";
import { transformText, cleanText, bulletToEmdash, bulletToArrow, numberedListSlash, numberedListParens, markdownToLinkedIn, FormatStyle } from "./formatter"; import { transformText, cleanText, bulletToEmdash, bulletToArrow, numberedListSlash, numberedListParens, markdownToLinkedIn, FormatStyle } from "./formatter";
import { splitIntoThreads } from "./thread-splitter"; import { splitIntoThreads } from "./thread-splitter";
import { ThreadModal } from "./thread-modal"; import { ThreadModal } from "./thread-modal";
function addFormatCommand(plugin: Plugin, style: FormatStyle, name: string) { function addFormatCommand(plugin: UnicodeFormatterPlugin, style: FormatStyle, name: string) {
plugin.addCommand({ plugin.addCommand({
id: `unicode-formatter:${style}`, id: `unicode-formatter:${style}`,
name, name,
@@ -16,7 +16,7 @@ function addFormatCommand(plugin: Plugin, style: FormatStyle, name: string) {
}); });
} }
export function registerCommands(plugin: Plugin): void { export function registerCommands(plugin: UnicodeFormatterPlugin): void {
addFormatCommand(plugin, "bold", "Format as unicode bold"); addFormatCommand(plugin, "bold", "Format as unicode bold");
addFormatCommand(plugin, "italic", "Format as unicode italic"); addFormatCommand(plugin, "italic", "Format as unicode italic");
addFormatCommand(plugin, "bold-italic", "Format as unicode bold italic"); addFormatCommand(plugin, "bold-italic", "Format as unicode bold italic");
@@ -86,7 +86,10 @@ export function registerCommands(plugin: Plugin): void {
editorCallback: (editor) => { editorCallback: (editor) => {
const selection = editor.getSelection(); const selection = editor.getSelection();
if (selection) { if (selection) {
const tweets = splitIntoThreads(selection); const tweets = splitIntoThreads(selection, {
maxChars: plugin.settings.threadMaxChars,
addNumbering: plugin.settings.threadAddNumbering,
});
new ThreadModal(plugin.app, tweets).open(); new ThreadModal(plugin.app, tweets).open();
} }
}, },
+5
View File
@@ -1,8 +1,13 @@
import { Plugin } from 'obsidian'; import { Plugin } from 'obsidian';
import { registerCommands } from './commands'; import { registerCommands } from './commands';
import { UnicodeFormatterSettings, DEFAULT_SETTINGS, UnicodeFormatterSettingTab } from './settings';
export default class UnicodeFormatterPlugin extends Plugin { export default class UnicodeFormatterPlugin extends Plugin {
settings: UnicodeFormatterSettings;
async onload() { async onload() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()) as UnicodeFormatterSettings;
this.addSettingTab(new UnicodeFormatterSettingTab(this.app, this));
registerCommands(this); registerCommands(this);
} }
} }
+49
View File
@@ -0,0 +1,49 @@
import { App, PluginSettingTab, Setting } from "obsidian";
import type UnicodeFormatterPlugin from "./main";
export interface UnicodeFormatterSettings {
threadMaxChars: number;
threadAddNumbering: boolean;
}
export const DEFAULT_SETTINGS: UnicodeFormatterSettings = {
threadMaxChars: 280,
threadAddNumbering: true,
};
export class UnicodeFormatterSettingTab extends PluginSettingTab {
plugin: UnicodeFormatterPlugin;
constructor(app: App, plugin: UnicodeFormatterPlugin) {
super(app, plugin);
this.plugin = plugin;
}
display(): void {
const { containerEl } = this;
containerEl.empty();
new Setting(containerEl)
.setName("Thread character limit")
.setDesc("Maximum characters per post.")
.addText(text => text
.setValue(String(this.plugin.settings.threadMaxChars))
.onChange(async (value) => {
const num = parseInt(value, 10);
if (!isNaN(num) && num > 0) {
this.plugin.settings.threadMaxChars = num;
await this.plugin.saveData(this.plugin.settings);
}
}));
new Setting(containerEl)
.setName("Add post numbering")
.setDesc("Prefix each post with numbering (e.g. 1/5) when splitting into a thread.")
.addToggle(toggle => toggle
.setValue(this.plugin.settings.threadAddNumbering)
.onChange(async (value) => {
this.plugin.settings.threadAddNumbering = value;
await this.plugin.saveData(this.plugin.settings);
}));
}
}