Skip to content

Commit 33a5457

Browse files
authoredJan 6, 2025··
Merge pull request #5277 from Tyriar/ligature_selection__cursor
Disable ligatures when cursor is in range
2 parents d1b01c5 + 112cfbe commit 33a5457

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed
 

‎addons/addon-webgl/src/WebglRenderer.ts

+4
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
381381
let isValidJoinRange: boolean = true;
382382
let lastCharX: number;
383383
let range: [number, number];
384+
let isCursorRow: boolean;
384385
let chars: string;
385386
let code: number;
386387
let width: number;
@@ -407,6 +408,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
407408
row = y + terminal.buffer.ydisp;
408409
line = terminal.buffer.lines.get(row)!;
409410
this._model.lineLengths[y] = 0;
411+
isCursorRow = cursorY === row;
410412
skipJoinedCheckUntilX = 0;
411413
joinedRanges = this._characterJoinerService.getJoinedCharacters(row);
412414
for (x = 0; x < terminal.cols; x++) {
@@ -438,6 +440,8 @@ export class WebglRenderer extends Disposable implements IRenderer {
438440
for (i = range[0] + 1; i < range[1]; i++) {
439441
isValidJoinRange &&= (firstSelectionState === this._model.selection.isCellSelected(this._terminal, i, row));
440442
}
443+
// Similarly, if the cursor is in the ligature, don't join it.
444+
isValidJoinRange &&= !isCursorRow || cursorX < range[0] || cursorX >= range[1];
441445
if (!isValidJoinRange) {
442446
skipJoinedCheckUntilX = range[1];
443447
} else {

‎src/browser/renderer/dom/DomRendererRowFactory.ts

+2
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ export class DomRendererRowFactory {
127127
for (i = range[0] + 1; i < range[1]; i++) {
128128
isValidJoinRange &&= (firstSelectionState === this._isCellInSelection(i, row));
129129
}
130+
// Similarly, if the cursor is in the ligature, don't join it.
131+
isValidJoinRange &&= !isCursorRow || cursorX < range[0] || cursorX >= range[1];
130132
if (!isValidJoinRange) {
131133
skipJoinedCheckUntilX = range[1];
132134
} else {

0 commit comments

Comments
 (0)
Please sign in to comment.