]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Fix #488: Implement configurable tab width
authorParis Kasidiaris <paris@sourcelair.com>
Fri, 20 Jan 2017 14:47:34 +0000 (16:47 +0200)
committerParis Kasidiaris <paris@sourcelair.com>
Fri, 20 Jan 2017 16:18:19 +0000 (16:18 +0000)
demo/index.html
demo/main.js
src/xterm.js

index 764c8442ef1ec6a92a1f71c812f80ff9a5042752..c3721a2886582f4c9baa0268264aa208508d221a 100644 (file)
         <div>
           <h2>Options</h2>
           <p>
-            <label><input type="checkbox" id="option-cursor-blink"> cursorBlink</label>
+            <label>cursorBlink <input type="checkbox" id="option-cursor-blink"></label>
           </p>
           <p>
-            <label>Scrollback <input type="number" id="option-scrollback" value="1000" /></label>
+            <label>scrollback <input type="number" id="option-scrollback" value="1000" /></label>
+          </p>
+          <p>
+            <label>tabStopWidth <input type="number" id="option-tabstopwidth" value="4" /></label>
           </p>
           <div>
                <h3>Size</h3>
index 078b5c8d66b225bc12c4b3ad9ad4652a3bcb0a41..a5f8460ee97822d1c157d1d999829bc68fd49b7d 100644 (file)
@@ -9,7 +9,8 @@ var term,
 var terminalContainer = document.getElementById('terminal-container'),
     optionElements = {
       cursorBlink: document.querySelector('#option-cursor-blink'),
-      scrollback: document.querySelector('#option-scrollback')
+      scrollback: document.querySelector('#option-scrollback'),
+      tabstopwidth: document.querySelector('#option-tabstopwidth')
     },
     colsElement = document.getElementById('cols'),
     rowsElement = document.getElementById('rows');
@@ -32,7 +33,11 @@ optionElements.cursorBlink.addEventListener('change', function () {
   term.setOption('cursorBlink', optionElements.cursorBlink.checked);
 });
 optionElements.scrollback.addEventListener('change', function () {
-  terminal.setOption('scrollback', parseInt(optionElements.scrollback.value, 10));
+  term.setOption('scrollback', parseInt(optionElements.scrollback.value, 10));
+});
+optionElements.tabstopwidth.addEventListener('change', function () {
+  term.setOption('tabStopWidth', parseInt(optionElements.tabstopwidth.value));
+  term.setupStops();
 });
 
 createTerminal();
@@ -44,7 +49,8 @@ function createTerminal() {
   }
   term = new Terminal({
     cursorBlink: optionElements.cursorBlink.checked,
-    scrollback: parseInt(optionElements.scrollback.value, 10)
+    scrollback: parseInt(optionElements.scrollback.value, 10),
+    tabStopWidth: parseInt(optionElements.tabstopwidth.value)
   });
   term.on('resize', function (size) {
     if (!pid) {
index 7f50295fc5eb0c21f2c8249ffcb25179dbffc0ea..3c205adbce0e836b0512f818963438a14b21de34 100644 (file)
@@ -360,7 +360,8 @@ Terminal.defaults = {
   screenKeys: false,
   debug: false,
   cancelEvents: false,
-  disableStdin: false
+  disableStdin: false,
+  tabStopWidth: 8
   // programFeatures: false,
   // focusKeys: false,
 };
@@ -2118,7 +2119,7 @@ Terminal.prototype.setupStops = function(i) {
     i = 0;
   }
 
-  for (; i < this.cols; i += 8) {
+  for (; i < this.cols; i += this.getOption('tabStopWidth')) {
     this.tabs[i] = true;
   }
 };