From 00fd2b850363f336ee20a75d0774f292e65722bb Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Fri, 18 Aug 2023 14:17:39 -0700 Subject: [PATCH] Set unicode.activeVersion when loading UnicodeGraphemeProvider. --- .../xterm-addon-unicode-graphemes/README.md | 3 --- .../src/UnicodeGraphemesAddon.ts | 22 ++++++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/addons/xterm-addon-unicode-graphemes/README.md b/addons/xterm-addon-unicode-graphemes/README.md index 72f1ee27..6c23e343 100644 --- a/addons/xterm-addon-unicode-graphemes/README.md +++ b/addons/xterm-addon-unicode-graphemes/README.md @@ -19,7 +19,4 @@ import { UnicodeGraphemeAddon } from 'xterm-addon-unicode-graphemes'; const terminal = new Terminal(); const unicodeGraphemeAddon = new UnicodeGraphemeAddon(); terminal.loadAddon(unicodeGraphemeAddon); - -// activate the new version -terminal.unicode.activeVersion = '15'; ``` diff --git a/addons/xterm-addon-unicode-graphemes/src/UnicodeGraphemesAddon.ts b/addons/xterm-addon-unicode-graphemes/src/UnicodeGraphemesAddon.ts index 53a92e43..c9154ed6 100644 --- a/addons/xterm-addon-unicode-graphemes/src/UnicodeGraphemesAddon.ts +++ b/addons/xterm-addon-unicode-graphemes/src/UnicodeGraphemesAddon.ts @@ -5,13 +5,29 @@ * UnicodeVersionProvider for V15 with grapeme cluster handleing. */ -import { Terminal, ITerminalAddon } from 'xterm'; +import { Terminal, ITerminalAddon, IUnicodeHandling } from 'xterm'; import { UnicodeGraphemeProvider } from './UnicodeGraphemeProvider'; export class UnicodeGraphemesAddon implements ITerminalAddon { + private _provider?: UnicodeGraphemeProvider; + private _unicode?: IUnicodeHandling; + private _oldVersion: string = ''; + public activate(terminal: Terminal): void { - terminal.unicode.register(new UnicodeGraphemeProvider()); + if (! this._provider) { + this._provider = new UnicodeGraphemeProvider(); + } + const unicode = terminal.unicode; + this._unicode = unicode; + unicode.register(this._provider); + this._oldVersion = unicode.activeVersion; + unicode.activeVersion = '15-graphemes'; + } + + public dispose(): void { + if (this._unicode) { + this._unicode.activeVersion = this._oldVersion; + } } - public dispose(): void { } }