1
0
mirror of https://github.com/elisspace/ObsidianTweaks.git synced 2026-08-30 08:02:10 +00:00
Files
ObsidianTweaks/src/main.ts
Jeppe Klitgaard dca00ed9b5 Version 0.2.0
2021-06-12 23:20:20 +01:00

235 lines
5.9 KiB
TypeScript
Executable File

import { App, Plugin, PluginSettingTab, Setting } from 'obsidian'
import { SelectionHelper } from 'SelectionHelper'
import { BetterFormatting } from 'BetterFormatting'
import { DirectionalMove } from 'DirectionalMove'
import { DirectionalCopy } from 'DirectionalCopy'
import { ToggleHeading, Heading } from 'ToggleHeading'
import { DEBUG_HEAD, Direction } from 'Constants'
import { DEFAULT_SETTINGS, ObsidianTweaksSettings, ObsidianTweaksSettingTab} from 'Settings'
export default class ObsidianTweaksPlugin extends Plugin {
public settings: ObsidianTweaksSettings
private selectionHelper: SelectionHelper
private betterFormatting: BetterFormatting
private directionalMove: DirectionalMove
private directionalCopy: DirectionalCopy
private toggleHeading: ToggleHeading
async onload() {
console.log("Loading Obsidian Tweaks...")
await this.loadSettings()
this.selectionHelper = new SelectionHelper(this.app, this)
this.betterFormatting = new BetterFormatting(this.app, this)
this.directionalMove = new DirectionalMove(this.app, this)
this.directionalCopy = new DirectionalCopy(this.app, this)
this.toggleHeading = new ToggleHeading(this.app, this)
// SelectionHelper
this.addCommand({
id: 'select-line',
name: 'Select Current Line(s)',
callback: () => {
this.selectionHelper.selectLine()
}
})
this.addCommand({
id: 'select-word',
name: 'Select Current Word(s)',
callback: () => {
this.selectionHelper.selectWord()
}
})
// Better formatting
this.addCommand({
id: 'better-formatting-bold-underscore',
name: 'Better Toggle Bold (underscores)',
callback: () => {
this.betterFormatting.toggleWrapper("__", "__")
}
})
this.addCommand({
id: 'better-formatting-bold-asterisk',
name: 'Better Toggle Bold (asterisks)',
callback: () => {
this.betterFormatting.toggleWrapper("**", "**")
}
})
this.addCommand({
id: 'better-formatting-italics-underscore',
name: 'Better Toggle Italics (underscore)',
callback: () => {
this.betterFormatting.toggleWrapper("_", "_")
}
})
this.addCommand({
id: 'better-formatting-italics-asterisk',
name: 'Better Toggle Italics (asterisk)',
callback: () => {
this.betterFormatting.toggleWrapper("*", "*")
}
})
this.addCommand({
id: 'better-formatting-code',
name: 'Better Toggle Code',
callback: () => {
this.betterFormatting.toggleWrapper("`", "`")
}
})
this.addCommand({
id: 'better-formatting-comment',
name: 'Better Toggle Comment',
callback: () => {
this.betterFormatting.toggleWrapper("%%", "%%")
}
})
this.addCommand({
id: 'better-formatting-highlight',
name: 'Better Toggle Highlight',
callback: () => {
this.betterFormatting.toggleWrapper("==", "==")
}
})
this.addCommand({
id: 'better-formatting-strikethrough',
name: 'Better Toggle Strikethrough',
callback: () => {
this.betterFormatting.toggleWrapper("~~", "~~")
}
})
this.addCommand({
id: 'better-formatting-math-inline',
name: 'Better Toggle Math (Inline)',
callback: () => {
this.betterFormatting.toggleWrapper("$", "$")
}
})
this.addCommand({
id: 'better-formatting-math-block',
name: 'Better Toggle Math (Block)',
callback: () => {
this.betterFormatting.toggleWrapper("$$", "$$")
}
})
// Directional Move
this.addCommand({
id: 'move-left',
name: 'Move Selection Left',
callback: () => {
this.directionalMove.directionalMove(Direction.Left)
}
})
this.addCommand({
id: 'move-right',
name: 'Move Selection Right',
callback: () => {
this.directionalMove.directionalMove(Direction.Right)
}
})
// Directional Copy
this.addCommand({
id: 'copy-line-up',
name: 'Copy Current Line(s) Up',
callback: () => {
this.directionalCopy.directionalCopy(Direction.Up)
}
})
this.addCommand({
id: 'copy-line-down',
name: 'Copy Current Line(s) Down',
callback: () => {
this.directionalCopy.directionalCopy(Direction.Down)
}
})
this.addCommand({
id: 'copy-line-left',
name: 'Copy Current Line(s) Left',
callback: () => {
this.directionalCopy.directionalCopy(Direction.Left)
}
})
this.addCommand({
id: 'copy-line-right',
name: 'Copy Current Line(s) Right',
callback: () => {
this.directionalCopy.directionalCopy(Direction.Right)
}
})
// Set heading
this.addCommand({
id: 'toggle-heading-1',
name: 'Toggle Heading - H1',
callback: () => {
this.toggleHeading.toggleHeading(Heading.H1)
}
})
this.addCommand({
id: 'toggle-heading-2',
name: 'Toggle Heading - H2',
callback: () => {
this.toggleHeading.toggleHeading(Heading.H2)
}
})
this.addCommand({
id: 'toggle-heading-3',
name: 'Toggle Heading - H3',
callback: () => {
this.toggleHeading.toggleHeading(Heading.H3)
}
})
this.addCommand({
id: 'toggle-heading-4',
name: 'Toggle Heading - H4',
callback: () => {
this.toggleHeading.toggleHeading(Heading.H4)
}
})
this.addCommand({
id: 'toggle-heading-5',
name: 'Toggle Heading - H5',
callback: () => {
this.toggleHeading.toggleHeading(Heading.H5)
}
})
this.addCommand({
id: 'toggle-heading-6',
name: 'Toggle Heading - H6',
callback: () => {
this.toggleHeading.toggleHeading(Heading.H6)
}
})
this.addSettingTab(new ObsidianTweaksSettingTab(this.app, this))
}
onunload() {
console.log("Unloading Obsidian Tweaks...")
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData())
}
async saveSettings() {
await this.saveData(this.settings)
}
debug(str: string) {
if (this.settings.debug) {
console.log(DEBUG_HEAD + str)
}
}
}