提交 c01e4a00 编写于 作者: D Daniel Imms

Support terminal blinking cursor

Uses editor.cursorBlinking === 'blink'

Fixes #8085
Fixes #7616
上级 6231851d
......@@ -36,6 +36,43 @@
outline-offset: -1px;
}
.monaco-workbench .panel.integrated-terminal .xterm:focus .terminal-cursor.blinking { animation: blink-cursor 1.2s infinite step-end; }
.vs-dark .monaco-workbench .panel.integrated-terminal .xterm:focus .terminal-cursor.blinking { animation: blink-cursor-dark 1.2s infinite step-end; }
.hc-black .monaco-workbench .panel.integrated-terminal .xterm:focus .terminal-cursor.blinking { animation: blink-cursor-hc-black 1.2s infinite step-end; }
@keyframes blink-cursor {
0% {
background-color: #333;
color: #CCC;
}
50% {
background-color: transparent;
color: #333;
}
}
@keyframes blink-cursor-dark {
0% {
background-color: #CCC;
color: #1e1e1e;
}
50% {
background-color: transparent;
color: #CCC;
}
}
@keyframes blink-cursor-hc-black {
0% {
background-color: #fff;
color: #000;
}
50% {
background-color: transparent;
color: #FFF;
}
}
.monaco-workbench .panel.integrated-terminal .xterm .xterm-bold {
font-weight: bold;
}
......
......@@ -137,6 +137,11 @@ export class TerminalConfigHelper {
return this.measureFont(fontFamily, fontSize + 'px', lineHeight === 0 ? 'normal' : lineHeight + 'px');
}
public getCursorBlink(): boolean {
let editorConfig = this.configurationService.getConfiguration<IConfiguration>();
return editorConfig.editor.cursorBlinking === 'blink';
}
public getShell(): IShell {
let config = this.configurationService.getConfiguration<ITerminalConfiguration>();
let shell: IShell = {
......
......@@ -121,6 +121,13 @@ export class TerminalInstance {
this.terminalDomElement.style.fontSize = this.font.fontSize;
}
public setCursorBlink(blink: boolean): void {
if (this.xterm && this.xterm.cursorBlink !== blink) {
this.xterm.cursorBlink = blink;
this.xterm.refresh(0, this.xterm.rows - 1);
}
}
public focus(force?: boolean): void {
if (!this.xterm) {
return;
......
......@@ -135,6 +135,7 @@ export class TerminalPanel extends Panel {
this.setActiveTerminal(this.terminalInstances.length - 1);
this.toDispose.push(this.themeService.onDidThemeChange(this.updateTheme.bind(this)));
this.toDispose.push(this.configurationService.onDidUpdateConfiguration(this.updateFont.bind(this)));
this.toDispose.push(this.configurationService.onDidUpdateConfiguration(this.updateCursorBlink.bind(this)));
resolve(terminalInstance);
});
}
......@@ -194,6 +195,12 @@ export class TerminalPanel extends Panel {
this.layout(new Dimension(this.parentDomElement.offsetWidth, this.parentDomElement.offsetHeight));
}
private updateCursorBlink(): void {
this.terminalInstances.forEach((instance) => {
instance.setCursorBlink(this.configurationHelper.getCursorBlink());
});
}
public focus(): void {
if (this.terminalInstances.length > 0) {
this.terminalInstances[this.terminalService.getActiveTerminalIndex()].focus(true);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册