func CreateWinEventHandler()

in winterm/win_event_handler.go [39:74]


func CreateWinEventHandler(fd uintptr, file *os.File, opts ...Option) ansiterm.AnsiEventHandler {
	infoReset, err := GetConsoleScreenBufferInfo(fd)
	if err != nil {
		return nil
	}

	h := &windowsAnsiEventHandler{
		fd:         fd,
		file:       file,
		infoReset:  infoReset,
		attributes: infoReset.Attributes,
	}
	for _, o := range opts {
		o(h)
	}

	if isDebugEnv := os.Getenv(ansiterm.LogEnv); isDebugEnv == "1" {
		logFile, _ := os.Create("winEventHandler.log")
		logger := log.New(logFile, "", log.LstdFlags)
		if h.logf != nil {
			l := h.logf
			h.logf = func(s string, v ...interface{}) {
				l(s, v...)
				logger.Printf(s, v...)
			}
		} else {
			h.logf = logger.Printf
		}
	}

	if h.logf == nil {
		h.logf = func(string, ...interface{}) {}
	}

	return h
}