| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import type { editor as monacoEditor } from 'monaco-editor'
- export type EditorSelection = {
- selection: string
- beforeSelection: string
- afterSelection: string
- startLineNumber: number
- endLineNumber: number
- }
- export function getEditorSelectionParts(
- editor: monacoEditor.IStandaloneCodeEditor
- ): EditorSelection | null {
- const selection = editor.getSelection()
- const model = editor.getModel()
- if (!model || !selection) return null
- const allLines = model.getLinesContent()
- const noSelection =
- selection.startLineNumber === selection.endLineNumber &&
- selection.startColumn === selection.endColumn
- if (noSelection) {
- return {
- selection: allLines.join('\n'),
- beforeSelection: '',
- afterSelection: '',
- startLineNumber: selection.startLineNumber,
- endLineNumber: selection.endLineNumber,
- }
- }
- const startLineIndex = selection.startLineNumber - 1
- const endLineIndex = selection.endLineNumber
- const beforeLines = allLines.slice(0, startLineIndex)
- const afterLines = allLines.slice(endLineIndex)
- return {
- selection: allLines.slice(startLineIndex, endLineIndex).join('\n'),
- beforeSelection: beforeLines.length > 0 ? beforeLines.join('\n') + '\n' : '',
- afterSelection: afterLines.length > 0 ? '\n' + afterLines.join('\n') : '',
- startLineNumber: selection.startLineNumber,
- endLineNumber: selection.endLineNumber,
- }
- }
|