以下插件可以使用 this.utils.getPlugin(XXX)
获取到插件示例,之后就可以调用其 API。
// 以 window_tab 为例
// 插件功能:总是切换到第一个标签
class switchFirstTab extends BaseCustomPlugin {
hint => "切换到第一个标签"
callback = () => {
// 获取到window_tab插件的实例
const windowTabInstance = this.utils.getPlugin("window_tab");
// 调用插件示例的switchTab方法,切换到第一个标签
windowTabInstance && windowTabInstance.switchTab(0);
}
}
class windowTabBarPlugin extends global._basePlugin {
// 打开文件路径
openTab = wantOpenPath => {
return null
}
// 切换到第几个tab
switchTab = idx => {
return null
}
// 根据文件路径切换tab
switchTabByPath = path => {
return null
}
// 切换到上一个tab
previousTab = () => {
return null
}
// 切换到下一个tab
nextTab = () => {
return null
}
// 关闭tab
closeTab = idx => {
return null
}
// 关闭当前tab
closeActiveTab = () => {
return null
}
// 新窗口打开
openFileNewWindow = (path, isFolder) => {
return null
}
// 新标签页打开
openFile = filePath => {
return null
}
// 当前标签页打开
OpenFileLocal = filePath => {
return null
}
// 关闭窗口
closeWindow = () => {
return null
}
// 保存当前的所有tab
saveTabs = () => {
return null
}
// 打开保存的tab
openSaveTabs = () => {
return null
}
// type(string):
// 1. new_tab_open: 总是新标签页打开文件
// 2. local_open: 总是在当前标签页打开文件
// 3. save_tabs: 将当前标签页保存起来
// 4. open_save_tabs: 打开保存的标签页
call = type => {
return null
}
}
class windowTabBarPlugin extends global._basePlugin {
// 显示/隐藏模态框
call = () => {
return null
}
}
class multiHighlighterPlugin extends global._basePlugin {
// 给出关键字数组,高亮当前文档的关键字
// args:
// 1. keyArr(Array[string]): 关键字数组
// 2. resfreshResult(Boolean): 是否刷新模态框里的结果
doSearch = (keyArr, refreshResult = true) => {
return null
}
// doSearch 的封装,从input中获取KeyArr
highlight = (refreshResult = true) => {
return null
}
// 清除所有的高亮
clearHighlight = () => {
return null
}
// 展示/隐藏模态框
call = () => {
return null
}
}
class outlinePlugin extends global._basePlugin {
// 切换类别大纲
// Type: fence/image/table/all
collectAndShow = Type => {
return null
}
// 刷新
refresh = () => {
return null
}
// 显示/隐藏
call = () => {
return null
}
}
class commanderPlugin extends global._basePlugin {
// 执行命令时,是否弹出模态框
// always: 总是弹出
// error: 只在异常时弹出
// silent: 总是静默(可以在console中看到)
// args:
// 1. shell(string): 执行命令的shell:cmd/bash、powershell、gitbash、wsl
// 2. cmd(string): 命令
// 3. callback: 执行完命令的回调函数
silentExec = (cmd, shell, callback) => {
return null
}
errorExec = (cmd, shell, callback) => {
return null
}
alwaysExec = (cmd, shell, callback) => {
return null
}
// 显示/隐藏模态框
call = () => {
return null
}
}
class mdPaddingPlugin extends global._basePlugin {
// 提供markdown字符串,将其格式化
// args:
// 1. content(string): markdown字符串
// return:
// 2. formattedContent(string): 格式化后的字符串
formatFile = content => {
return formattedContent
}
// 格式化当前文件
call = () => {
return null
}
}
class readOnlyPlugin extends global._basePlugin {
// 进入/退出只读模式
call = () => {
return nil
}
}
class blurPlugin extends global._basePlugin {
// 进入/退出模糊模式
call = () => {
return nil
}
}
class resizeImagePlugin extends global._basePlugin {
// 缩放图片
// args:
// 1.image(Element): 图片标签,如 document.querySelector("#write img")
// 2.zoomOut(bool): true为缩小,false为放大
// 3.scale(float): 缩放倍率,建议为0.2
zoom = (image, zoomOut, scale) => {
return nil
}
// type(string):
// 1. allow_oversize: 允许/禁止图片超出范围
call = type => {
return null
}
}
class datatablesPlugin extends global._basePlugin {
// 将普通表格转为增强表格
// args:
// 1.target(Element): 表格标签,如 document.querySelector("#write table.md-table")
// return:
// 2. uuid(string): 增强表格的uuid,后续可以使用此uuid将其转化回普通表格
newDataTable = target => {
return uuid
}
// 将增强表格转为普通表格
// args:
// 1. uuid(string): newDataTable 函数返回的uuid
removeDataTable = uuid => {
return null
}
}
class goTopPlugin extends global._basePlugin {
// 置顶/置底
// direction(string): go-bottom、go-top
call = direction => {
return null
}
}
class mindmapPlugin extends global._basePlugin {
// 生成页面的思维导图,并写入剪切板
// Type(string): set_clipboard_mindmap、set_clipboard_graph
call = Type => {
return null
}
}
class autoNumberPlugin extends global._basePlugin {
// type(string):
// 1. disable: 禁用
// 2. enable: 启用
// 3. set_outline: 启用/禁用大纲编号
// 4. set_content: 启用/禁用标题编号
// 5. set_toc: 启用/禁用TOC编号
// 6. set_table: 启用/禁用表格编号
// 7. set_image: 启用/禁用图片编号
// 8. set_fence: 启用/禁用代码块编号
call = type => {
return null
}
}
class fenceEnhancePlugin extends global._basePlugin {
// 复制代码,调整缩进代码,折叠/展开代码
// args:
// target(Element): 如 document.querySelector("#write .md-fences")
copyFence = target => {
return null
}
indentFence = target => {
return null
}
foldFence = target => {
return null
}
// type(string):
// 1. disable_or_enable_fold: 禁用/启用折叠按钮
// 2. disable_or_enable_copy: 禁用/启用复制按钮
// 3. disable_or_enable_indent: 禁用/启用缩进调整按钮
// 4. fold_all: 总是折叠代码块
// 5. expand_all: 总是展开代码块
// 6. set_auto_hide: 自动隐藏/显示按钮
call = type => {
return null
}
}
class collapseParagraphPlugin extends global._basePlugin {
// 切换标题的收缩/展开状态
// args:
// 1. paragraph(Element): 目标标题。 如:document.querySelector(`#write h1`)
// 2. collapsed(Boolean): 为ture则展开,为false则收缩
trigger = (paragraph, collapsed) => {
return null
}
// 给出一个开始标签,展开前面的所有【必要的】标签
// args:
// 1. starth(Element): #write标签下的任意一个直接子标签
rollback = start => {
return null
}
// type(string):
// 1. collapse_all: 折叠全部章节
// 2. expand_all: 展开全部章节
call = type => {
return null
}
}
class truncateTextPlugin extends global._basePlugin {
// 隐藏最前面的文本段,只留下最后 80 段。
hideFront = () => {
return null
}
// 根据当前可视范围显示:根据当前可视范围显示文本段。
hideBaseView = () => {
return null
}
// 重新显示之前隐藏的所有文本段。
showAll = () => {
return null
};
}
class exportEnhancePlugin extends global._basePlugin {
// type(string):
// 1. download_network_image: 导出HTML时下载网络图片
// 2. dont_download_network_image: 导出HTML时不下载网络图片
// 3. disable: 禁用
// 4. enable: 启用
call = type => {
return null
}
}
无
class rightClickMenuPlugin extends global._basePlugin {
// type(string):
// 1. about: 打开帮助页面
// 2. do_not_hide: 右键菜单点击后保持显示/隐藏
// 3. open_setting_folder: 打开插件配置文件
call = type => {
return null
}
}
class fileCounterPlugin extends global._basePlugin {
// 刷新
setAllDirCount = () => {
return nil
}
}
无
无
以下插件可以使用 this.utils.getCustomPlugin(XXX)
获取到插件示例,之后就可以调用其 API。
// 以 pluginUpdater 为例
// 插件功能:每次打开Typora,就自动更新所有插件。
class autoUpdatePlugin extends BaseCustomPlugin {
hint => "自动更新所有插件"
// 每当打开 Typora,就会自动调用 init 方法。
init = () => {
// 获取到pluginUpdater插件的实例
const pluginUpdaterInstance = this.utils.getCustomPlugin("pluginUpdater");
// 调用插件示例的callback方法,更新所有插件
pluginUpdaterInstance && pluginUpdaterInstance.callback();
}
callback = () => null
}
class kanbanPlugin extends BaseCustomPlugin {
// 在当前位置插入默认看板
callback = () => {
return nil
}
}
class fullPathCopy extends BaseCustomPlugin {
// 获取所在的标题路径
// anchorNode(Element): 目标标题。 如:document.querySelector(`#write h1`)
callback = anchorNode => {
return nil
}
}
class extractRangeToNewFile extends BaseCustomPlugin {
// 提取选取文字到新文件
// 注意调用此函数时必须保证鼠标有选区
callback = () => {
return nil
}
}
class templater extends BaseCustomPlugin {
// 弹出文件模板的模态框
callback = () => {
return nil
}
}
class resourceOperation extends BaseCustomPlugin {
// 资源管理
callback = () => {
return nil
}
}
class openInTotalCommander extends BaseCustomPlugin {
// total commander 打开此文件
callback = () => {
return nil
}
}
class pluginUpdater extends BaseCustomPlugin {
// 更新插件
callback = () => {
return nil
}
}