Support strikethrough text style
This commit is contained in:
@@ -636,6 +636,12 @@ describe('InputHandler', () => {
|
||||
await inputHandler.parseP('\x1b[28m');
|
||||
assert.equal(!!inputHandler.curAttrData.isInvisible(), false);
|
||||
});
|
||||
it('strikethrough', async () => {
|
||||
await inputHandler.parseP('\x1b[9m');
|
||||
assert.equal(!!inputHandler.curAttrData.isStrikethrough(), true);
|
||||
await inputHandler.parseP('\x1b[29m');
|
||||
assert.equal(!!inputHandler.curAttrData.isStrikethrough(), false);
|
||||
});
|
||||
it('colormode palette 16', async () => {
|
||||
assert.equal(inputHandler.curAttrData.getFgColorMode(), 0); // DEFAULT
|
||||
assert.equal(inputHandler.curAttrData.getBgColorMode(), 0); // DEFAULT
|
||||
|
||||
@@ -2478,6 +2478,9 @@ export class InputHandler extends Disposable implements IInputHandler {
|
||||
} else if (p === 8) {
|
||||
// invisible
|
||||
attr.fg |= FgFlags.INVISIBLE;
|
||||
} else if (p === 9) {
|
||||
// strikethrough
|
||||
attr.fg |= FgFlags.STRIKETHROUGH;
|
||||
} else if (p === 2) {
|
||||
// dimmed text
|
||||
attr.bg |= BgFlags.DIM;
|
||||
@@ -2503,6 +2506,9 @@ export class InputHandler extends Disposable implements IInputHandler {
|
||||
} else if (p === 28) {
|
||||
// not invisible
|
||||
attr.fg &= ~FgFlags.INVISIBLE;
|
||||
} else if (p === 29) {
|
||||
// not strikethrough
|
||||
attr.fg &= ~FgFlags.STRIKETHROUGH;
|
||||
} else if (p === 39) {
|
||||
// reset fg
|
||||
attr.fg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);
|
||||
|
||||
Vendored
+1
@@ -117,6 +117,7 @@ export interface IAttributeData {
|
||||
isInvisible(): number;
|
||||
isItalic(): number;
|
||||
isDim(): number;
|
||||
isStrikethrough(): number;
|
||||
|
||||
// color modes
|
||||
getFgColorMode(): number;
|
||||
|
||||
@@ -33,13 +33,14 @@ export class AttributeData implements IAttributeData {
|
||||
public extended = new ExtendedAttrs();
|
||||
|
||||
// flags
|
||||
public isInverse(): number { return this.fg & FgFlags.INVERSE; }
|
||||
public isBold(): number { return this.fg & FgFlags.BOLD; }
|
||||
public isUnderline(): number { return this.fg & FgFlags.UNDERLINE; }
|
||||
public isBlink(): number { return this.fg & FgFlags.BLINK; }
|
||||
public isInvisible(): number { return this.fg & FgFlags.INVISIBLE; }
|
||||
public isItalic(): number { return this.bg & BgFlags.ITALIC; }
|
||||
public isDim(): number { return this.bg & BgFlags.DIM; }
|
||||
public isInverse(): number { return this.fg & FgFlags.INVERSE; }
|
||||
public isBold(): number { return this.fg & FgFlags.BOLD; }
|
||||
public isUnderline(): number { return this.fg & FgFlags.UNDERLINE; }
|
||||
public isBlink(): number { return this.fg & FgFlags.BLINK; }
|
||||
public isInvisible(): number { return this.fg & FgFlags.INVISIBLE; }
|
||||
public isItalic(): number { return this.bg & BgFlags.ITALIC; }
|
||||
public isDim(): number { return this.bg & BgFlags.DIM; }
|
||||
public isStrikethrough(): number { return this.fg & FgFlags.STRIKETHROUGH; }
|
||||
|
||||
// color modes
|
||||
public getFgColorMode(): number { return this.fg & Attributes.CM_MASK; }
|
||||
|
||||
@@ -110,13 +110,14 @@ export const enum Attributes {
|
||||
|
||||
export const enum FgFlags {
|
||||
/**
|
||||
* bit 27..31 (32th bit unused)
|
||||
* bit 27..32
|
||||
*/
|
||||
INVERSE = 0x4000000,
|
||||
BOLD = 0x8000000,
|
||||
UNDERLINE = 0x10000000,
|
||||
BLINK = 0x20000000,
|
||||
INVISIBLE = 0x40000000
|
||||
INVISIBLE = 0x40000000,
|
||||
STRIKETHROUGH = 0x80000000,
|
||||
}
|
||||
|
||||
export const enum BgFlags {
|
||||
|
||||
Reference in New Issue
Block a user