Browse Source

Merge pull request #70 from blink1073/xterm

Switch to Xterm
Dave Willmer 9 năm trước cách đây
mục cha
commit
c2bf6aa472
5 tập tin đã thay đổi với 57 bổ sung49 xóa
  1. 1 1
      package.json
  2. 7 6
      src/terminal/index.ts
  3. 5 0
      src/terminal/theme.css
  4. 1 1
      src/typings.d.ts
  5. 43 41
      typings/xterm/xterm.d.ts

+ 1 - 1
package.json

@@ -21,7 +21,7 @@
     "phosphor-panel": "^1.0.0-rc.1",
     "phosphor-properties": "^2.0.0",
     "phosphor-widget": "^1.0.0-rc.1",
-    "term.js": "0.0.7"
+    "xterm": "^0.33.0"
   },
   "devDependencies": {
     "concurrently": "^2.0.0",

+ 7 - 6
src/terminal/index.ts

@@ -18,9 +18,7 @@ import {
   ResizeMessage, Widget
 } from 'phosphor-widget';
 
-import {
-  Terminal, ITerminalConfig
-} from 'term.js';
+import * as Terminal from 'xterm';
 
 
 /**
@@ -43,6 +41,7 @@ const DUMMY_ROWS = 24;
  */
 const DUMMY_COLS = 80;
 
+
 /**
  * Options for the terminal widget.
  */
@@ -274,6 +273,7 @@ class TerminalWidget extends Widget {
     if (this._dirty) {
       this._snapTermSizing();
     }
+    this._term.focus();
   }
 
   /**
@@ -300,8 +300,8 @@ class TerminalWidget extends Widget {
     this.node.style.color = this.color;
     this._term.element.style.backgroundColor = this.background;
     this._term.element.style.color = this.color;
-    this._sheet.innerHTML = ('.terminal-cursor {background:' + this.color +
-                             ';color:' + this.background + ';}');
+    this._sheet.innerHTML = (`#${this.node.id} .terminal-cursor {background:
+                             ${this.color};color:${this.background};}`);
   }
 
   /**
@@ -413,6 +413,8 @@ function getConfig(options: ITerminalOptions): ITerminalConfig {
   let config: ITerminalConfig = {};
   if (options.cursorBlink !== void 0) {
     config.cursorBlink = options.cursorBlink;
+  } else {
+    config.cursorBlink = true;
   }
   if (options.visualBell !== void 0) {
     config.visualBell = options.visualBell;
@@ -423,7 +425,6 @@ function getConfig(options: ITerminalOptions): ITerminalConfig {
   if (options.scrollback !== void 0) {
     config.scrollback = options.scrollback;
   }
-  config.screenKeys = false;
   return config;
 }
 

+ 5 - 0
src/terminal/theme.css

@@ -10,6 +10,11 @@
 
 
 .jp-TerminalWidget-body {
+  outline: none;
   user-select: text;
   -webkit-user-select: text;
 }
+
+
+@import '~xterm/src/xterm.css';
+

+ 1 - 1
src/typings.d.ts

@@ -6,5 +6,5 @@
 /// <reference path="../typings/ansi_up/ansi_up.d.ts"/>
 /// <reference path="../typings/require/require.d.ts"/>
 /// <reference path="../typings/jupyter-js-widgets/jupyter-js-widgets.d.ts"/>
-/// <reference path="../typings/term.js/term.js.d.ts"/>
+/// <reference path="../typings/xterm/xterm.d.ts"/>
 /// <reference path="../typings/marked/marked.d.ts"/>

+ 43 - 41
typings/term.js/term.js.d.ts → typings/xterm/xterm.d.ts

@@ -2,51 +2,12 @@
 // Project: https://github.com/chjj/term.js
 // Definitions by: Steven Silvester <https://github.com/blink1073>
 
-declare module 'term.js' {
 
-  /**
-   * A terminal configuration.
-   */
-  export
-  interface ITerminalConfig {
-    colors?: string[];
-
-    convertEol?: boolean;
-
-    termName?: string;
-
-    rows?: number;
-
-    cols?: number;
-
-    cursorBlink?: boolean;
-
-    visualBell?: boolean;
-
-    popOnBell?: boolean;
-
-    scrollback?: number;
 
-    screenKeys?: boolean;
-
-    useStyle?: boolean;
-
-    useEvents?: boolean;
-
-    useFocus?: boolean;
-
-    useMouse?: boolean;
-  }
-
-  /**
+/**
    * Typing for a term.js terminal object.
    */
-  export
-  class Terminal {
-
-    static brokenBold: boolean;
-
-    constructor(config: ITerminalConfig);
+  interface Terminal {
 
     options: ITerminalConfig;
 
@@ -74,5 +35,46 @@ declare module 'term.js' {
 
     destroy(): void;
 
+    focus(): void;
   }
+
+  interface TerminalConstructor {
+    new (options?: ITerminalConfig): Terminal;
+    (options?: ITerminalConfig): Terminal;
+    brokenBold: boolean;
+  }
+
+/**
+ * A terminal configuration.
+ */
+interface ITerminalConfig {
+  colors?: string[];
+
+  theme?: string;
+
+  convertEol?: boolean;
+
+  termName?: string;
+
+  geometry?: number[];
+
+  cursorBlink?: boolean;
+
+  visualBell?: boolean;
+
+  popOnBell?: boolean;
+
+  scrollback?: number;
+
+  debug?: boolean;
+
+  cancelEvents?: boolean;
+}
+
+
+declare var Xterm: TerminalConstructor;
+
+
+declare module 'xterm' {
+  export = Xterm;
 }