diff --git a/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css b/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css index baff8ac54f920819701cf0f698f4ef519833ade1..d8be6421d11bd410ef636a51c60f805d997de03c 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css +++ b/src/vs/workbench/parts/terminal/electron-browser/media/xterm.css @@ -3,6 +3,14 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +.monaco-workbench .panel.integrated-terminal { + font-feature-settings: "liga" 0; +} + +.monaco-workbench .panel.integrated-terminal.enable-ligatures { + font-feature-settings: "liga" 1; +} + .monaco-workbench .panel.integrated-terminal .xterm { background-color: transparent!important; position: relative; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index e7d4178ae09bcec152f381959bbbd396fd274fbf..052cb0b9e8a55c1642ad9525af3b917017c31ed1 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -59,6 +59,11 @@ configurationRegistry.registerConfiguration({ 'description': nls.localize('terminal.integrated.fontFamily', "Controls the font family of the terminal, this defaults to editor.fontFamily's value."), 'type': 'string' }, + 'terminal.integrated.fontLigatures': { + 'description': nls.localize('terminal.integrated.fontLigatures', "Controls whether font ligatures are enabled in the terminal."), + 'type': 'boolean', + 'default': false + }, 'terminal.integrated.fontSize': { 'description': nls.localize('terminal.integrated.fontSize', "Controls the font size of the terminal, this defaults to editor.fontSize's value."), 'type': 'number', diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.ts index 7e9597787ef19b7c39b90619875642db39d7ca20..a7e1654220c0492f892bc95b03f6f7b0e4d273b9 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.ts @@ -35,6 +35,7 @@ export interface ITerminalConfiguration { osx: string[] }, fontFamily: string, + fontLigatures: boolean, fontSize: number, lineHeight: number } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts index 9b841a51f0332362af7db6bc4beeaf1657d3f281..9b5ab415cef8b2e0d02f7be1daf4fe1deb117e1b 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts @@ -137,6 +137,10 @@ export class TerminalConfigHelper { return this.measureFont(fontFamily, fontSize + 'px', lineHeight === 0 ? 'normal' : lineHeight + 'px'); } + public getFontLigaturesEnabled(): boolean { + return this.configurationService.getConfiguration().terminal.integrated.fontLigatures; + } + public getCursorBlink(): boolean { let editorConfig = this.configurationService.getConfiguration(); return editorConfig.editor.cursorBlinking === 'blink'; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts index f6920f6b8ff3cf805a39d6ba3281f13eac9398ad..5f2fb7b2a67e43ac37a6f880d8280c8312ea8d91 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts @@ -201,6 +201,7 @@ export class TerminalPanel extends Panel { return; } this.terminalInstances[this.terminalService.getActiveTerminalIndex()].setFont(this.configurationHelper.getFont()); + DOM.toggleClass(this.parentDomElement, 'enable-ligatures', this.configurationHelper.getFontLigaturesEnabled()); this.layout(new Dimension(this.parentDomElement.offsetWidth, this.parentDomElement.offsetHeight)); }