feat: Initial clean release of CHM
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
这个提交包含在:
@@ -0,0 +1,52 @@
|
||||
import { syntaxTree } from '@codemirror/language';
|
||||
import { EditorSelection, EditorState, SelectionRange } from '@codemirror/state';
|
||||
|
||||
// Expands and returns a copy of [sel] to the smallest container node with name in [nodeNames].
|
||||
const growSelectionToNode = (
|
||||
state: EditorState, sel: SelectionRange, nodeNames: string|string[]|null,
|
||||
): SelectionRange => {
|
||||
if (!nodeNames) {
|
||||
return sel;
|
||||
}
|
||||
|
||||
const isAcceptableNode = (name: string): boolean => {
|
||||
if (typeof nodeNames === 'string') {
|
||||
return name === nodeNames;
|
||||
}
|
||||
|
||||
for (const otherName of nodeNames) {
|
||||
if (otherName === name) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
let newFrom = null;
|
||||
let newTo = null;
|
||||
let smallestLen = Infinity;
|
||||
|
||||
// Find the smallest range.
|
||||
syntaxTree(state).iterate({
|
||||
from: sel.from, to: sel.to,
|
||||
enter: node => {
|
||||
if (isAcceptableNode(node.name)) {
|
||||
if (node.to - node.from < smallestLen) {
|
||||
newFrom = node.from;
|
||||
newTo = node.to;
|
||||
smallestLen = newTo - newFrom;
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
// If it's in such a node,
|
||||
if (newFrom !== null && newTo !== null) {
|
||||
return EditorSelection.range(newFrom, newTo);
|
||||
} else {
|
||||
return sel;
|
||||
}
|
||||
};
|
||||
|
||||
export default growSelectionToNode;
|
||||
在新工单中引用
屏蔽一个用户