-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# top-most EditorConfig file | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
insert_final_newline = true | ||
indent_style = tab | ||
indent_size = 4 | ||
tab_width = 4 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
import { App, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian'; | ||
import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian'; | ||
|
||
interface MyPluginSettings { | ||
mySetting: string; | ||
|
@@ -12,49 +12,72 @@ export default class MyPlugin extends Plugin { | |
settings: MyPluginSettings; | ||
|
||
async onload() { | ||
console.log('loading plugin'); | ||
|
||
await this.loadSettings(); | ||
|
||
this.addRibbonIcon('dice', 'Sample Plugin', () => { | ||
// This creates an icon in the left ribbon. | ||
let ribbonIconEl = this.addRibbonIcon('dice', 'Sample Plugin', (evt: MouseEvent) => { | ||
// Called when the user clicks the icon. | ||
new Notice('This is a notice!'); | ||
}); | ||
// Perform additional things with the ribbon | ||
ribbonIconEl.addClass('my-plugin-ribbon-class'); | ||
|
||
this.addStatusBarItem().setText('Status Bar Text'); | ||
// This adds a status bar item to the bottom of the app. Does not work on mobile apps. | ||
let statusBarItemEl = this.addStatusBarItem(); | ||
statusBarItemEl.setText('Status Bar Text'); | ||
|
||
// This adds a simple command that can be triggered anywhere | ||
this.addCommand({ | ||
id: 'open-sample-modal-simple', | ||
name: 'Open sample modal (simple)', | ||
callback: () => { | ||
new SampleModal(this.app).open(); | ||
} | ||
}); | ||
// This adds an editor command that can perform some operation on the current editor instance | ||
this.addCommand({ | ||
id: 'open-sample-modal', | ||
name: 'Open Sample Modal', | ||
// callback: () => { | ||
// console.log('Simple Callback'); | ||
// }, | ||
id: 'sample-editor-command', | ||
name: 'Sample editor command', | ||
editorCallback: (editor: Editor, view: MarkdownView) => { | ||
console.log(editor.getSelection()); | ||
editor.replaceSelection('Sample Editor Command'); | ||
} | ||
}); | ||
// This adds a complex command that can check whether the current state of the app allows execution of the command | ||
this.addCommand({ | ||
id: 'open-sample-modal-complex', | ||
name: 'Open sample modal (complex)', | ||
checkCallback: (checking: boolean) => { | ||
let leaf = this.app.workspace.activeLeaf; | ||
if (leaf) { | ||
// Conditions to check | ||
let markdownView = this.app.workspace.getActiveViewOfType(MarkdownView); | ||
if (markdownView) { | ||
// If checking is true, we're simply "checking" if the command can be run. | ||
// If checking is false, then we want to actually perform the operation. | ||
if (!checking) { | ||
new SampleModal(this.app).open(); | ||
} | ||
|
||
// This command will only show up in Command Palette when the check function returns true | ||
return true; | ||
} | ||
return false; | ||
} | ||
}); | ||
|
||
// This adds a settings tab so the user can configure various aspects of the plugin | ||
this.addSettingTab(new SampleSettingTab(this.app, this)); | ||
|
||
this.registerCodeMirror((cm: CodeMirror.Editor) => { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
lishid
Author
Collaborator
|
||
console.log('codemirror', cm); | ||
}); | ||
|
||
// If the plugin hooks up any global DOM events (on parts of the app that doesn't belong to this plugin) | ||
// Using this function will automatically remove the event listener when this plugin is disabled. | ||
this.registerDomEvent(document, 'click', (evt: MouseEvent) => { | ||
console.log('click', evt); | ||
}); | ||
|
||
// When registering intervals, this function will automatically clear the interval when the plugin is disabled. | ||
this.registerInterval(window.setInterval(() => console.log('setInterval'), 5 * 60 * 1000)); | ||
} | ||
|
||
onunload() { | ||
console.log('unloading plugin'); | ||
|
||
} | ||
|
||
async loadSettings() { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,20 @@ | ||
{ | ||
"name": "obsidian-sample-plugin", | ||
"version": "0.12.0", | ||
"description": "This is a sample plugin for Obsidian (https://obsidian.md)", | ||
"main": "main.js", | ||
"scripts": { | ||
"dev": "rollup --config rollup.config.js -w", | ||
"build": "rollup --config rollup.config.js --environment BUILD:production" | ||
}, | ||
"keywords": [], | ||
"author": "", | ||
"license": "MIT", | ||
"devDependencies": { | ||
"@rollup/plugin-commonjs": "^18.0.0", | ||
"@rollup/plugin-node-resolve": "^11.2.1", | ||
"@rollup/plugin-typescript": "^8.2.1", | ||
"@types/node": "^14.14.37", | ||
"obsidian": "^0.12.0", | ||
"rollup": "^2.32.1", | ||
"tslib": "^2.2.0", | ||
"typescript": "^4.2.4" | ||
} | ||
"name": "obsidian-sample-plugin", | ||
"version": "0.12.0", | ||
"description": "This is a sample plugin for Obsidian (https://obsidian.md)", | ||
"main": "main.js", | ||
"scripts": { | ||
"dev": "esbuild main.ts --bundle --external:obsidian --outdir=. --target=es2016 --format=cjs --sourcemap=inline --watch", | ||
"build": "esbuild main.ts --bundle --external:obsidian --outdir=. --target=es2016 --format=cjs" | ||
}, | ||
"keywords": [], | ||
"author": "", | ||
"license": "MIT", | ||
"devDependencies": { | ||
"@types/node": "^16.11.1", | ||
"esbuild": "0.13.8", | ||
"obsidian": "^0.12.17", | ||
"tslib": "2.3.1", | ||
"typescript": "4.4.4" | ||
} | ||
} |
This file was deleted.
What is the reason to remove this sample here? :)
I was thinking to build a plugin on the editor, any document recommendation? @lishid