Skip to content

Commit

Permalink
Merge pull request #720 from Hi-Windom/v0.33
Browse files Browse the repository at this point in the history
V0.33
  • Loading branch information
Soltus authored May 12, 2024
2 parents 579597f + 31a2c62 commit e313eba
Show file tree
Hide file tree
Showing 29 changed files with 232 additions and 150 deletions.
24 changes: 13 additions & 11 deletions .vscode/Sillot.code-workspace
Original file line number Diff line number Diff line change
Expand Up @@ -183,17 +183,19 @@
"donjayamanne.githistory",
"DavidAnson.vscode-markdownlint",
// 不适用本工作区 ::结束
"vscjava.vscode-java-pack", // 避免自动推荐,有需要的自己会安装
"vscjava.vscode-gradle", // 避免自动推荐,有需要的自己会安装
"googlecloudtools.cloudcode", // 避免自动推荐,有需要的自己会安装
"github.copilot", // 避免自动推荐,有需要的自己会安装
"ms-kubernetes-tools.vscode-kubernetes-tools", // 避免自动推荐,有需要的自己会安装
"firefox-devtools.vscode-firefox-debug", // 避免自动推荐,有需要的自己会安装
"github.vscode-pull-request-github", // 避免自动推荐,有需要的自己会安装
"ms-vscode-remote.remote-wsl", // 避免自动推荐,有需要的自己会安装
"ms-vscode.PowerShell", // 避免自动推荐,有需要的自己会安装
"DotJoshJohnson.xml", // 避免自动推荐,有需要的自己会安装
"ms-azuretools.vscode-docker", // 避免自动推荐,有需要的自己会安装
// 避免自动推荐,有需要的自己会安装 ::开始
"vscjava.vscode-java-pack",
"vscjava.vscode-gradle",
"googlecloudtools.cloudcode",
"github.copilot",
"ms-kubernetes-tools.vscode-kubernetes-tools",
"firefox-devtools.vscode-firefox-debug",
"github.vscode-pull-request-github",
"ms-vscode-remote.remote-wsl",
"ms-vscode.PowerShell",
"DotJoshJohnson.xml",
"ms-azuretools.vscode-docker",
// 避免自动推荐,有需要的自己会安装 ::结束
"ms-python.vscode-pylance", // 推荐的插件包已集成此插件,无需单独推荐
"maixiaojie.git-emoji-zh", // 该扩展已集成在汐洛扩展
]
Expand Down
2 changes: 1 addition & 1 deletion .vscode/extensions/Sillot/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "sillot",
"displayName": "汐洛 Sillot",
"description": "汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix)为智慧新彖务服务。此插件为汐洛官方插件,提供多功能一体化集成。",
"version": "0.33.1630",
"version": "0.33.1700",
"preview": true,
"repository": "https://github.com/Hi-Windom/Sillot",
"publisher": "Hi-Windom",
Expand Down
94 changes: 7 additions & 87 deletions .vscode/extensions/Sillot/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ import { YamlCompletionItemProvider } from "./provider/yaml";
import { FontMapList, apply花字Transformation } from "./context/花字";
import { C } from "./extension.const";
import { add_module_git_emoji_zh } from "./modules/git_emoji_zh";
import { unwantedRecommendations_check_by_id } from "./task/unwantedRecommendations";
import { add_task_unwantedRecommendations_check_by_id } from "./task/unwantedRecommendations";
import { loadCompletionItemsFromFile, saveCompletionItemsToFile } from "./utils/json";
import { add_task_同步更新版本 } from "./task/同步更新版本";

let lastChangedDocument: vscode.TextDocument | null = null;
let myWebviewPanel: vscode.WebviewPanel | undefined;
Expand All @@ -60,103 +62,21 @@ class fileCompletionItemProvider implements vscode.CompletionItemProvider {
return this.completionItems;
}
}
// 序列化并保存到文件
async function saveCompletionItemsToFile(filePath: string, items: Array<vscode.CompletionItem> | { [key: string]: any }) {
// 使用 json5.stringify 格式化 JSON,使其更易读
const serializedItems = json5.stringify(items, {
space: 2,
quote: '"',
});

// 使用 fs-extra 写入文件
await fs.writeFile(filePath, serializedItems, "utf-8");
}

// 从文件反序列化
async function loadCompletionItemsFromFile(filePath: string): Promise<any> {
// 使用 fs-extra 读取文件
const serializedItems = await fs.readFile(filePath, "utf-8");

// 使用 json5.parse 反序列化 JSON
const items = json5.parse(serializedItems);

// 返回反序列化后的数组
return items;
}

export async function activate(context: vscode.ExtensionContext) {
if (vscode.workspace.workspaceFile) {
unwantedRecommendations_check_by_id(vscode.workspace.workspaceFile.fsPath)
add_task_unwantedRecommendations_check_by_id(vscode.workspace.workspaceFile.fsPath);
}
// 监听扩展状态变化事件
context.subscriptions.push(
vscode.extensions.onDidChange(() => {
if (vscode.workspace.workspaceFile) {
unwantedRecommendations_check_by_id(vscode.workspace.workspaceFile.fsPath)
add_task_unwantedRecommendations_check_by_id(vscode.workspace.workspaceFile.fsPath);
}
})
);
add_module_git_emoji_zh(context)
const disposable555 = vscode.commands.registerCommand("汐洛.同步更新版本", () => {
vscode.window.showInputBox({ prompt: "Enter new version" }).then(async version => {
if (version) {
const wname = vscode.workspace.name;
if (wname && vscode.workspace.workspaceFile) {
const pkgMapFile = `${path.dirname(vscode.workspace.workspaceFile.fsPath)}/${C.PackageJsonMapping}`;
Log.d(wname, pkgMapFile);
if (!(await fs.exists(pkgMapFile))) {
vscode.window.showWarningMessage("package.json 映射不存在,请先添加");
return;
}

const pkgMap: { [key: string]: any } = await loadCompletionItemsFromFile(pkgMapFile);
const paths: string[] = pkgMap[wname];
// 创建快速选择框
const quickPick = vscode.window.createQuickPick();
quickPick.title = "选择要更新版本的文件";
// quickPick.items = [{ label: "Option 1" }, { label: "Option 2" }, { label: "Option 3" }];
quickPick.items = paths.map(path => ({ label: path }));
quickPick.canSelectMany = true; // 允许多选

// 显示快速选择框并等待用户选择
const selectedOptions: string[] = await new Promise(resolve => {
quickPick.onDidAccept(() => {
resolve(quickPick.selectedItems.map(item => item.label));
quickPick.dispose();
});
quickPick.onDidHide(() => {
resolve([]);
quickPick.dispose();
});
quickPick.show();
});

if (selectedOptions.length > 0) {
Log.d(`Version: ${version}, Selected options:${selectedOptions.join(", ")}`);
} else {
resolve();
}
// 遍历映射并更新版本号
selectedOptions.forEach(async (value: string, index: number) => {
Log.d("汐洛.同步更新版本", value);
if (await fs.exists(value)) {
const pkgContent = fs.readJSONSync(value);
pkgContent.version = version;
fs.writeFileSync(value, JSON.stringify(pkgContent, null, 2));
Log.d(`${version} -> ${value}`);
} else {
vscode.window.showWarningMessage(`已跳过无效映射 ${value}`);
}
});
vscode.window.showInformationMessage("Version updated in all package.json files.");
} else {
vscode.window.showWarningMessage("当前不在工作区环境");
}
}
});
});

context.subscriptions.push(disposable555);
add_module_git_emoji_zh(context);
add_task_同步更新版本(context);

const addMappingDisposable = vscode.commands.registerCommand("汐洛.addPackageJsonMapping", async (uri: vscode.Uri) => {
if (uri?.fsPath.endsWith("package.json")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as vscode from "vscode";
import fs from "fs-extra";
import json5 from "json5";

export async function unwantedRecommendations_check_by_id(profilePath: string) {
export async function add_task_unwantedRecommendations_check_by_id(profilePath: string) {
const serializedItems = await fs.readFile(profilePath, "utf-8");
const wp_json = json5.parse(serializedItems);
if (wp_json.extensions?.unwantedRecommendations) {
Expand Down
81 changes: 81 additions & 0 deletions .vscode/extensions/Sillot/src/task/同步更新版本.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import * as vscode from "vscode";
import fs from "fs-extra";
import path, { resolve } from "path";
import { Log } from "../utils/log";
import { C } from "../extension.const";
import { loadCompletionItemsFromFile } from "../utils/json";

export function add_task_同步更新版本(context: vscode.ExtensionContext) {
const disposable = vscode.commands.registerCommand("汐洛.同步更新版本", async () => {
const wname = vscode.workspace.name;
if (wname && vscode.workspace.workspaceFile) {
const pkgMapFile = `${path.dirname(vscode.workspace.workspaceFile.fsPath)}/${C.PackageJsonMapping}`;
Log.d(wname, pkgMapFile);
if (!(await fs.exists(pkgMapFile))) {
vscode.window.showWarningMessage("package.json 映射不存在,请先添加");
return;
}
const pkgMap: { [key: string]: any } = await loadCompletionItemsFromFile(pkgMapFile);
const paths: string[] = pkgMap[wname];

// 创建快速选择框
const quickPick = vscode.window.createQuickPick();
quickPick.title = "选择要更新版本的文件";
quickPick.items = paths.map(path => ({ label: path }));
quickPick.canSelectMany = true; // 允许多选

// 显示快速选择框并等待用户选择
const selectedOptions: string[] = await new Promise(resolve => {
quickPick.onDidAccept(() => {
resolve(quickPick.selectedItems.map(item => item.label));
quickPick.dispose();
});
quickPick.onDidHide(() => {
resolve([]);
quickPick.dispose();
});
quickPick.show();
});

if (selectedOptions.length === 0) {
// 如果用户没有选择任何选项,则直接返回
return;
}

// 获取用户选择的路径的版本号
const versionPromises = selectedOptions.map(async (value: string) => {
if (await fs.exists(value)) {
const pkgContent = fs.readJSONSync(value);
return pkgContent.version;
}
return null; // 如果文件不存在,返回null
});

Promise.all(versionPromises).then(versions => {
// 过滤掉null值
const validVersions = versions.filter(version => version !== null);
vscode.window.showInputBox({ prompt: `输入新版本: (当前版本: ${validVersions.join(", ")})` }).then(async version => {
if (version) {
// 遍历映射并更新版本号
selectedOptions.forEach(async (value: string, index: number) => {
Log.d("汐洛.同步更新版本", value);
if (await fs.exists(value)) {
const pkgContent = fs.readJSONSync(value);
pkgContent.version = version;
fs.writeFileSync(value, JSON.stringify(pkgContent, null, 2));
Log.d(`${version} ->${value}`);
} else {
vscode.window.showWarningMessage(`已跳过无效映射 ${value}`);
}
});
vscode.window.showInformationMessage("所有 package.json 文件的版本已更新。");
}
});
});
} else {
vscode.window.showWarningMessage("当前不在工作区环境");
}
});

context.subscriptions.push(disposable);
}
29 changes: 29 additions & 0 deletions .vscode/extensions/Sillot/src/utils/json.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import type * as vscode from "vscode";
import fs from "fs-extra";
import json5 from "json5";
import path, { resolve } from "path";
import { Log } from "../utils/log";

// 序列化并保存到文件
export async function saveCompletionItemsToFile(filePath: string, items: Array<vscode.CompletionItem> | { [key: string]: any }) {
// 使用 json5.stringify 格式化 JSON,使其更易读
const serializedItems = json5.stringify(items, {
space: 2,
quote: '"',
});

// 使用 fs-extra 写入文件
await fs.writeFile(filePath, serializedItems, "utf-8");
}

// 从文件反序列化
export async function loadCompletionItemsFromFile(filePath: string): Promise<any> {
// 使用 fs-extra 读取文件
const serializedItems = await fs.readFile(filePath, "utf-8");

// 使用 json5.parse 反序列化 JSON
const items = json5.parse(serializedItems);

// 返回反序列化后的数组
return items;
}
2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sillot",
"version": "0.33.1630",
"version": "0.33.1700",
"syv": "3.0.14",
"sypv": "[]",
"description": "Build Your Eternal Digital Garden",
Expand Down
2 changes: 2 additions & 0 deletions app/src/assets/scss/component/_typography.scss
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,8 @@
margin: 0 auto;
max-width: 100%;
user-select: none;
word-break: keep-all;
white-space: nowrap;

& > span:nth-child(1),
& > span:nth-child(3) {
Expand Down
6 changes: 6 additions & 0 deletions app/src/assets/scss/protyle/_protyle.scss
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@
.b3-slider {
width: var(--b3-dynamicscroll-width);
display: block;

&::-webkit-slider-runnable-track,
&::-webkit-slider-thumb {
background-color: var(--b3-border-color);
box-shadow: none;
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/layout/dock/Files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -921,7 +921,7 @@ export class Files extends Model {
// 文件展开时,刷新
liElement.nextElementSibling.remove();
}
const arrowElement = liElement.querySelector(".b3-list-item__arrow")
const arrowElement = liElement.querySelector(".b3-list-item__arrow");
arrowElement.classList.add("b3-list-item__arrow--open");
arrowElement.parentElement.classList.remove("fn__hidden");
liElement.insertAdjacentHTML("afterend", `<ul>${fileHTML}</ul>`);
Expand Down
11 changes: 11 additions & 0 deletions app/src/mobile/dock/MobileOutline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {getEventName} from "../../protyle/util/compatibility";
import type {App} from "../../index";
import {closePanel} from "../util/closePanel";
import {checkFold} from "../../util/noRelyPCFunction";
import {hasClosestBlock} from "../../protyle/util/hasClosest";

export class MobileOutline {
private tree: Tree;
Expand Down Expand Up @@ -83,6 +84,16 @@ export class MobileOutline {
this.openNodes[blockId] = this.tree.getExpandIds();
}

if (window.siyuan.mobile.editor?.protyle?.toolbar.range) {
const blockElement = hasClosestBlock(window.siyuan.mobile.editor.protyle.toolbar.range.startContainer);
if (blockElement) {
const currentElement = this.element.querySelector(`[data-node-id="${blockElement.dataset.nodeId}"]`);
if (currentElement) {
currentElement.classList.add("b3-list-item--focus");
return;
}
}
}
if (currentId) {
currentElement = this.element.querySelector(`[data-node-id="${currentId}"]`);
if (currentElement) {
Expand Down
1 change: 1 addition & 0 deletions app/src/protyle/export/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,7 @@ const renderPDF = async (id: string) => {
config: {
appearance: { mode: 0, codeBlockThemeDark: "${window.siyuan.config.appearance.codeBlockThemeDark}", codeBlockThemeLight: "${window.siyuan.config.appearance.codeBlockThemeLight}" },
editor: {
allowHTMLBLockScript: ${window.siyuan.config.editor.allowHTMLBLockScript},
fontSize: ${window.siyuan.config.editor.fontSize},
codeLineWrap: true,
codeLigatures: ${window.siyuan.config.editor.codeLigatures},
Expand Down
6 changes: 5 additions & 1 deletion app/src/protyle/hint/extend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,13 @@ export const hintSlash = (key: string, protyle: IProtyle) => {
value: '<div data-type="NodeAttributeView" data-av-type="table"></div>',
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconDatabase"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.database}</span></div>`,
}, {
filter: ["文档", "子文档", "wendang", "wd", "ziwendang", "zwd", "xjwd"],
filter: ["文档", "wendang", "wd", "xjwd", "new doc"],
value: Constants.ZWSP + 4,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconFile"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.newFile}</span><span class="b3-menu__accelerator">${updateHotkeyTip(window.siyuan.config.keymap.general.newFile.custom)}</span></div>`,
}, {
filter: ["子文档", "ziwendang", "zwd", "xjzwd", "create sub doc"],
value: Constants.ZWSP + 6,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconFile"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.newSubDoc}</span></div>`,
}, {
value: "",
html: "separator",
Expand Down
12 changes: 11 additions & 1 deletion app/src/protyle/hint/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
getSelectionPosition
} from "../util/selection";
import {genHintItemHTML, hintEmbed, hintRef, hintSlash} from "./extend";
import {getSavePath} from "../../util/newFile";
import {getSavePath, newFile} from "../../util/newFile";
import {upDownHint} from "../../util/upDownHint";
import {setPosition} from "../../util/setPosition";
import {getContenteditableElement, hasNextSibling, hasPreviousSibling} from "../wysiwyg/getBlock";
Expand Down Expand Up @@ -615,6 +615,16 @@ ${genHintItemHTML(item)}
range.deleteContents();
return;
} else if (value === Constants.ZWSP + 4) {
// 新建文档
newFile({
app: protyle.app,
notebookId: protyle.notebookId,
useSavePath: true,
currentPath: protyle.path,
});
return;
} else if (value === Constants.ZWSP + 6) {
// 新建子文档
const newSubDocId = Lute.NewNodeID();
fetchPost("/api/filetree/createDoc", {
notebook: protyle.notebookId,
Expand Down
Loading

0 comments on commit e313eba

Please sign in to comment.