浏览代码

Merge branch 'add-X-sequence'

Alec The Rabbit 6 年之前
父节点
当前提交
b3ffeffaac
共有 1 个文件被更改,包括 24 次插入2 次删除
  1. 24 2
      colorable_windows.go

+ 24 - 2
colorable_windows.go

@@ -12,8 +12,6 @@ import (
 	"strings"
 	"syscall"
 	"unsafe"
-
-	"github.com/mattn/go-isatty"
 )
 
 const (
@@ -635,6 +633,30 @@ loop:
 			}
 			procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
 			procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
+		case 'X':
+			n := 0
+			if buf.Len() > 0 {
+				n, err = strconv.Atoi(buf.String())
+				if err != nil {
+					continue
+				}
+			}
+			procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))
+			var cursor coord
+			var count, written dword
+			cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}
+			// switch n {
+			// case 0:
+			// 	count = dword(csbi.size.x - csbi.cursorPosition.x)
+			// case 1:
+			// 	cursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y}
+			// 	count = dword(csbi.size.x - csbi.cursorPosition.x)
+			// case 2:
+			// 	cursor = coord{x: csbi.window.left, y: csbi.cursorPosition.y}
+			// 	count = dword(csbi.size.x)
+			// }
+			procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
+			procFillConsoleOutputAttribute.Call(uintptr(handle), uintptr(csbi.attributes), uintptr(n), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
 		case 'm':
 			procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))
 			attr := csbi.attributes