Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/html-attr'
Browse files Browse the repository at this point in the history
  • Loading branch information
HenryTSZ committed May 23, 2024
2 parents ff2c33b + 85e5e65 commit eed24d5
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions src/textobject/textobject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import { WordType } from './word';
export abstract class TextObject extends BaseMovement {
override modes = [Mode.Normal, Mode.Visual, Mode.VisualBlock];

public static readonly attrRegExp = /[\w.:@-]+=(["']).*?\1|[\w.:@-]+=\{.*?\}/;

public override async execActionForOperator(
position: Position,
vimState: VimState,
Expand Down Expand Up @@ -593,6 +595,50 @@ export class SelectEntireIgnoringLeadingTrailing extends TextObject {
}
}

@RegisterAction
export class SelectAttrs extends TextObject {
keys = ['a', 'r'];

public async execAction(position: Position, vimState: VimState): Promise<IMovement> {
let start = position;
let stop = position;

const range = vimState.document.getWordRangeAtPosition(position, TextObject.attrRegExp);

if (range) {
start = range.start;
stop = range.end;
}

return {
start,
stop,
};
}
}

@RegisterAction
export class SelectInnerAttrs extends TextObject {
keys = ['i', 'r'];

public async execAction(position: Position, vimState: VimState): Promise<IMovement> {
let start = position;
let stop = position;

const range = vimState.document.getWordRangeAtPosition(position, TextObject.attrRegExp);

if (range) {
start = range.start;
stop = range.end.getLeft();
}

return {
start,
stop,
};
}
}

abstract class IndentObjectMatch extends TextObject {
override setsDesiredColumnToEOL = true;

Expand Down

0 comments on commit eed24d5

Please sign in to comment.