|
850 | 850 |
|
851 | 851 | }//resume |
852 | 852 | term.write.xy = (x,y,txt)=>{ |
853 | | - |
854 | | - term.write('\x1b[s'); // Save current spot |
855 | | - term.write(`\x1b[${y};${x}H`); // Jump to top left |
| 853 | + // Save cursor |
| 854 | + term.write('\x1b[s'); |
| 855 | + // Jump to x,y |
| 856 | + term.write(`\x1b[${y};${x}H`); |
856 | 857 | term.write(txt); |
857 | | - term.write('\x1b[u'); // Jump back to where we were |
| 858 | + // restore cursor |
| 859 | + term.write('\x1b[u'); |
858 | 860 |
|
859 | 861 | }//xy |
860 | 862 |
|
861 | | - |
862 | | - |
863 | | - |
| 863 | + term.end_of_text = function(y){ |
| 864 | + // xterm.js uses 0-based indexing for the buffer, |
| 865 | + // but 1-based for ANSI |
| 866 | + var line = term.buffer.active.getLine(y-1); |
| 867 | + if(!line){ |
| 868 | + return 1; |
| 869 | + } |
| 870 | + |
| 871 | + var last = 0; |
| 872 | + for(var i=term.cols-1;i>=0;i--){ |
| 873 | + |
| 874 | + var cell = line.getCell(i); |
| 875 | + // Check if the cell is not empty/whitespace |
| 876 | + if(cell&&cell.getChars().trim()!==''){ |
| 877 | + last = i+1; |
| 878 | + break; |
| 879 | + } |
| 880 | + |
| 881 | + }//for |
| 882 | + return last+1; |
| 883 | + |
| 884 | + }//end_of_text |
| 885 | + |
| 886 | + |
| 887 | + |
864 | 888 | for(let key in colors){ |
865 | 889 |
|
866 | | - if (key === 'reset') continue; |
| 890 | + if(key=='reset')continue; |
867 | 891 |
|
868 | 892 | term.write[key] = (...args)=>term.write(colors[key]+args.join(' ')+colors.reset); |
869 | 893 | term.writeln[key] = (...args)=>term.writeln(colors[key]+args.join(' ')+colors.reset); |
|
1149 | 1173 | }//stop |
1150 | 1174 |
|
1151 | 1175 |
|
1152 | | - function end_of_text(y){ |
1153 | | - // xterm.js uses 0-based indexing for the buffer, |
1154 | | - // but 1-based for ANSI |
1155 | | - var line = term.buffer.active.getLine(y-1); |
1156 | | - if(!line){ |
1157 | | - return 1; |
1158 | | - } |
1159 | | - |
1160 | | - var last = 0; |
1161 | | - for(var i=term.cols-1;i>=0;i--){ |
1162 | | - |
1163 | | - var cell = line.getCell(i); |
1164 | | - // Check if the cell is not empty/whitespace |
1165 | | - if(cell&&cell.getChars().trim()!==''){ |
1166 | | - last = i+1; |
1167 | | - break; |
1168 | | - } |
1169 | | - |
1170 | | - }//for |
1171 | | - return last+1; |
1172 | | - |
1173 | | - }//end_of_text |
1174 | 1176 |
|
1175 | 1177 |
|
1176 | 1178 | //: |
|
0 commit comments