Skip to content

Commit ee7fdcf

Browse files
author
winjo
committed
feat: 支持多行选中
1 parent 96191f8 commit ee7fdcf

3 files changed

Lines changed: 16 additions & 4 deletions

File tree

packages/alex/src/core/editor/editor.module.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,11 +478,23 @@ class EditorSpecialContribution
478478
type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN
479479
) {
480480
const lineNumber = event.target.position!.lineNumber;
481+
const lastLineNumber = this.propsService.props.documentModel.lineNumber;
482+
let nextLineNumber: number | [number, number] = lineNumber;
483+
if (event?.event?.shiftKey && lastLineNumber) {
484+
let startLineNumber = Array.isArray(lastLineNumber)
485+
? lastLineNumber[0]
486+
: lastLineNumber;
487+
if (startLineNumber > nextLineNumber) {
488+
nextLineNumber = [nextLineNumber, startLineNumber];
489+
} else if (startLineNumber < nextLineNumber) {
490+
nextLineNumber = [startLineNumber, nextLineNumber];
491+
}
492+
}
481493
// 非受控
482494
if (!('lineNumber' in this.propsService.props.documentModel)) {
483-
highlightLine(lineNumber);
495+
highlightLine(nextLineNumber);
484496
}
485-
this.propsService.props.documentModel.onLineNumberChange?.(lineNumber);
497+
this.propsService.props.documentModel.onLineNumberChange?.(nextLineNumber);
486498
}
487499
})
488500
);

packages/alex/src/core/editor/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export interface DocumentModel {
2626
/**
2727
* 行号变更事件
2828
*/
29-
onLineNumberChange?: (num: number) => void;
29+
onLineNumberChange?: (num: number | [number, number]) => void;
3030
}
3131

3232
export interface FSDocumentModel extends DocumentModel {

packages/alex/src/integration/editor/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ const App = () => {
107107
</Select>
108108
</div>
109109
<div style={{ display: 'flex' }}>
110-
<div style={{ width: '50%', minHeight: 300 }}>
110+
<div style={{ width: '50%', minHeight: 500 }}>
111111
{project ? (
112112
<EditorRenderer
113113
key={project}

0 commit comments

Comments
 (0)