提交 dcd1aa35 编写于 作者: D Daniel Imms 提交者: GitHub

Merge pull request #35927 from Microsoft/35644_fedora_terminal_bug

Force DejaVu Sans Mono font in terminal on Fedora
......@@ -8,6 +8,7 @@ import * as cp from 'child_process';
import * as os from 'os';
import * as platform from 'vs/base/common/platform';
import * as processes from 'vs/base/node/processes';
import { readFile, fileExists } from 'vs/base/node/pfs';
export const TERMINAL_DEFAULT_SHELL_LINUX = !platform.isWindows ? (process.env.SHELL || 'sh') : 'sh';
export const TERMINAL_DEFAULT_SHELL_OSX = !platform.isWindows ? (process.env.SHELL || 'sh') : 'sh';
......@@ -21,3 +22,20 @@ export const TERMINAL_DEFAULT_SHELL_WINDOWS = isAtLeastWindows10 ? powerShellPat
export interface ITerminalProcessFactory {
create(env: { [key: string]: string }): cp.ChildProcess;
}
if (platform.isLinux) {
const file = '/etc/os-release';
fileExists(file).then(exists => {
if (!exists) {
return;
}
readFile(file).then(b => {
const contents = b.toString();
if (contents.indexOf('NAME=Fedora') >= 0) {
isFedora = true;
}
});
});
}
export let isFedora = false;
\ No newline at end of file
......@@ -14,6 +14,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLaunchConfig, IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY } from 'vs/workbench/parts/terminal/common/terminal';
import { TPromise } from 'vs/base/common/winjs.base';
import Severity from 'vs/base/common/severity';
import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal';
interface IEditorConfiguration {
editor: IEditorOptions;
......@@ -89,7 +90,15 @@ export class TerminalConfigHelper implements ITerminalConfigHelper {
const editorConfig = (<IEditorConfiguration>config).editor;
const terminalConfig = this.config;
const fontFamily = terminalConfig.fontFamily || editorConfig.fontFamily;
let fontFamily = terminalConfig.fontFamily || editorConfig.fontFamily;
// Work around bad font on Fedora
if (!terminalConfig.fontFamily) {
if (isFedora) {
fontFamily = '\'DejaVu Sans Mono\'';
}
}
let fontSize = this._toInteger(terminalConfig.fontSize, 0);
if (fontSize <= 0) {
fontSize = EDITOR_FONT_DEFAULTS.fontSize;
......
......@@ -11,7 +11,7 @@ import { Platform } from 'vs/base/common/platform';
import { TPromise } from 'vs/base/common/winjs.base';
import { TerminalConfigHelper } from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper';
import { EDITOR_FONT_DEFAULTS } from 'vs/editor/common/config/editorOptions';
import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal';
class MockConfigurationService implements IConfigurationService {
public _serviceBrand: any;
......@@ -63,7 +63,11 @@ suite('Workbench - TerminalConfigHelper', () => {
});
configHelper = new TerminalConfigHelper(Platform.Linux, configurationService, null, null, null);
configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontFamily, 'foo', 'editor.fontFamily should be the fallback when terminal.integrated.fontFamily not set');
if (isFedora) {
assert.equal(configHelper.getFont().fontFamily, '\'DejaVu Sans Mono\'', 'Fedora should have its font overridden when terminal.integrated.fontFamily not set');
} else {
assert.equal(configHelper.getFont().fontFamily, 'foo', 'editor.fontFamily should be the fallback when terminal.integrated.fontFamily not set');
}
});
test('TerminalConfigHelper - getFont fontSize', function () {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册