Skip to content

Commit 552e0e4

Browse files
Changed to flash ranges
1 parent 9a2a10f commit 552e0e4

File tree

10 files changed

+75
-59
lines changed

10 files changed

+75
-59
lines changed

cursorless-everywhere-talon/cursorless_everywhere_talon.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import json
2-
from typing import Any, Optional, Union
2+
from typing import Any
33

44
from talon import Context, Module, actions
55

66
from .cursorless_everywhere_types import (
7-
CharacterRangeOffsets,
87
EditorEdit,
98
EditorState,
10-
LineRange,
9+
FlashDescriptorOffsets,
1110
SelectionOffsets,
1211
)
1312

@@ -80,10 +79,9 @@ def private_cursorless_talonjs_run_no_wait(
8079
def private_cursorless_talonjs_get_response_json() -> str: # pyright: ignore [reportReturnType]
8180
"""Returns the response from the last Cursorless command"""
8281

83-
def cursorless_everywhere_set_highlight_ranges(
84-
ranges: list[Union[CharacterRangeOffsets, LineRange]], # pyright: ignore [reportGeneralTypeIssues]
85-
highlightId: Optional[str] = None,
82+
def cursorless_everywhere_flash_ranges(
83+
ranges: list[FlashDescriptorOffsets], # pyright: ignore [reportGeneralTypeIssues]
8684
):
87-
"""Set focused element highlight ranges"""
88-
print("Setting highlight ranges", ranges, highlightId)
85+
"""Flash ranges"""
86+
print("flash ranges", ranges)
8987
actions.skip()

cursorless-everywhere-talon/cursorless_everywhere_types.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ class LineRange(TypedDict):
1818
end: int
1919

2020

21+
GeneralizedRangeOffsets = CharacterRangeOffsets | LineRange
22+
23+
24+
class FlashDescriptorOffsets(TypedDict):
25+
style: str
26+
range: GeneralizedRangeOffsets
27+
28+
2129
class EditorState(TypedDict):
2230
text: str
2331
selections: list[SelectionOffsets]

packages/cursorless-everywhere-talon-core/src/ide/TalonJsCapabilities.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import type { Capabilities, CommandCapabilityMap } from "@cursorless/common";
22

33
const COMMAND_CAPABILITIES: CommandCapabilityMap = {
4-
highlight: { acceptsLocation: true },
5-
64
clipboardCopy: undefined,
75
clipboardPaste: undefined,
86
toggleLineComment: undefined,
@@ -14,6 +12,7 @@ const COMMAND_CAPABILITIES: CommandCapabilityMap = {
1412
showDebugHover: undefined,
1513
extractVariable: undefined,
1614
fold: undefined,
15+
highlight: undefined,
1716
unfold: undefined,
1817
showReferences: undefined,
1918
insertLineAfter: undefined,

packages/cursorless-everywhere-talon-core/src/ide/TalonJsIDE.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { pull } from "lodash-es";
2525
import type { Talon } from "../types/talon.types";
2626
import type { EditorState } from "../types/types";
2727
import { createTextEditor } from "./createTextEditor";
28-
import { setHighlightRanges } from "./setHighlightRanges";
28+
import { flashRanges } from "./flashRanges";
2929
import { TalonJsCapabilities } from "./TalonJsCapabilities";
3030
import { TalonJsClipboard } from "./TalonJsClipboard";
3131
import { TalonJsConfiguration } from "./TalonJsConfiguration";
@@ -134,16 +134,16 @@ export class TalonJsIDE implements IDE {
134134
throw new Error("executeCommand not implemented.");
135135
}
136136

137-
flashRanges(_flashDescriptors: FlashDescriptor[]): Promise<void> {
138-
return Promise.resolve();
137+
flashRanges(flashDescriptors: FlashDescriptor[]): Promise<void> {
138+
return flashRanges(this.talon, flashDescriptors);
139139
}
140140

141141
setHighlightRanges(
142-
highlightId: string | undefined,
143-
editor: TextEditor,
144-
ranges: GeneralizedRange[],
142+
_highlightId: string | undefined,
143+
_editor: TextEditor,
144+
_ranges: GeneralizedRange[],
145145
): Promise<void> {
146-
return setHighlightRanges(this.talon, editor, ranges, highlightId);
146+
throw new Error("setHighlightRanges not implemented.");
147147
}
148148

149149
onDidChangeTextDocument(
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { FlashDescriptor } from "@cursorless/common";
2+
import type { Talon } from "../types/talon.types";
3+
import type { FlashDescriptorOffsets } from "../types/types";
4+
import { toGeneralizedRangeOffsets } from "./toGeneralizedRangeOffsets";
5+
6+
export function flashRanges(
7+
talon: Talon,
8+
flashDescriptors: FlashDescriptor[],
9+
): Promise<void> {
10+
const offsetDescriptors = flashDescriptors.map(
11+
(descriptor): FlashDescriptorOffsets => {
12+
return {
13+
style: descriptor.style,
14+
range: toGeneralizedRangeOffsets(descriptor.editor, descriptor.range),
15+
};
16+
},
17+
);
18+
19+
talon.actions.user.cursorless_everywhere_flash_ranges(offsetDescriptors);
20+
21+
return Promise.resolve();
22+
}

packages/cursorless-everywhere-talon-core/src/ide/setHighlightRanges.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import type { GeneralizedRange, TextEditor } from "@cursorless/common";
2+
import type { GeneralizedRangeOffsets } from "../types/types";
3+
4+
export function toGeneralizedRangeOffsets(
5+
editor: TextEditor,
6+
range: GeneralizedRange,
7+
): GeneralizedRangeOffsets {
8+
if (range.type === "line") {
9+
return range;
10+
}
11+
return {
12+
type: "character",
13+
start: editor.document.offsetAt(range.start),
14+
end: editor.document.offsetAt(range.end),
15+
};
16+
}

packages/cursorless-everywhere-talon-core/src/types/talon.types.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import type { LineRange } from "@cursorless/common";
21
import type {
3-
CharacterRangeOffsets,
42
EditorEdit,
53
EditorState,
4+
FlashDescriptorOffsets,
65
SelectionOffsets,
76
} from "./types";
87

@@ -23,9 +22,8 @@ export interface TalonActions {
2322
cursorless_everywhere_get_editor_state(): EditorState;
2423
cursorless_everywhere_set_selections(selections: SelectionOffsets[]): void;
2524
cursorless_everywhere_edit_text(edit: EditorEdit): void;
26-
cursorless_everywhere_set_highlight_ranges(
27-
ranges: (CharacterRangeOffsets | LineRange)[],
28-
highlightId: string | undefined,
25+
cursorless_everywhere_flash_ranges(
26+
flashDescriptors: FlashDescriptorOffsets[],
2927
): void;
3028
};
3129
}

packages/cursorless-everywhere-talon-core/src/types/types.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import type {
22
Command,
33
CommandResponse,
4+
FlashStyle,
45
IDE,
6+
LineRange,
57
NormalizedIDE,
68
TestHelpers,
79
} from "@cursorless/common";
@@ -20,6 +22,13 @@ export interface CharacterRangeOffsets {
2022
end: number;
2123
}
2224

25+
export type GeneralizedRangeOffsets = CharacterRangeOffsets | LineRange;
26+
27+
export interface FlashDescriptorOffsets {
28+
style: FlashStyle;
29+
range: GeneralizedRangeOffsets;
30+
}
31+
2332
export interface EditorState {
2433
text: string;
2534
languageId?: string;

packages/cursorless-everywhere-talon-e2e/src/talonMock.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type {
22
EditorEdit,
33
EditorState,
4+
FlashDescriptorOffsets,
45
SelectionOffsets,
56
Talon,
67
TalonActions,
@@ -53,9 +54,8 @@ const actions: TalonActions = {
5354
}
5455
_finalEditorState.text = edit.text;
5556
},
56-
cursorless_everywhere_set_highlight_ranges(
57-
_ranges: any[],
58-
_highlightId: string | undefined,
57+
cursorless_everywhere_flash_ranges(
58+
_flashDescriptors: FlashDescriptorOffsets[],
5959
): void {
6060
// Do nothing
6161
},

0 commit comments

Comments
 (0)