debug mode

This commit is contained in:
Liam Galvin 2018-11-04 20:31:32 +00:00
parent 6a643a763e
commit c7ef0874aa
6 changed files with 32 additions and 11 deletions

View File

@ -413,6 +413,14 @@ func (buffer *Buffer) convertViewLineToRawLine(viewLine uint16) uint64 {
return uint64(int(viewLine) + (rawHeight - int(buffer.viewHeight)))
}
func (buffer *Buffer) convertRawLineToViewLine(rawLine uint64) uint16 {
rawHeight := buffer.Height()
if int(buffer.viewHeight) > rawHeight {
return uint16(rawLine)
}
return uint16(int(rawLine) - (rawHeight - int(buffer.viewHeight)))
}
// Width returns the width of the buffer in columns
func (buffer *Buffer) Width() uint16 {
return buffer.viewWidth
@ -938,19 +946,14 @@ func (buffer *Buffer) ResizeView(width uint16, height uint16) {
}
}
fromBottom := buffer.viewHeight - buffer.cursorY
buffer.viewWidth = width
buffer.viewHeight = height
if buffer.cursorY >= buffer.viewHeight-1 {
buffer.cursorY = buffer.viewHeight - 1
} else {
buffer.cursorY = (buffer.viewHeight - fromBottom) + uint16(cursorYMovement)
if int(buffer.cursorY) >= buffer.Height() {
buffer.cursorY = uint16(buffer.Height() - 1)
}
cY := uint16(len(buffer.lines) - 1)
if cY >= buffer.viewHeight {
cY = buffer.viewHeight - 1
}
buffer.cursorY = cY
// position cursorX
line = buffer.getCurrentLine()

View File

@ -33,6 +33,7 @@ type GUI struct {
mouseDown bool
overlay overlay
terminalAlpha float32
showDebugInfo bool
}
func New(config *config.Config, terminal *terminal.Terminal, logger *zap.SugaredLogger) *GUI {
@ -250,6 +251,21 @@ func (gui *GUI) Render() error {
gui.renderOverlay()
if gui.showDebugInfo {
gui.textbox(2, 2, fmt.Sprintf(`Debug Panel
===========
Cursor: %d,%d
View Size: %d,%d
Buffer Size: %d lines
`,
gui.terminal.GetLogicalCursorX(),
gui.terminal.GetLogicalCursorY(),
gui.terminal.ActiveBuffer().ViewWidth(),
gui.terminal.ActiveBuffer().ViewHeight(),
gui.terminal.ActiveBuffer().Height(),
))
}
gui.window.SwapBuffers()
}

View File

@ -47,6 +47,9 @@ func (gui *GUI) key(w *glfw.Window, key glfw.Key, scancode int, action glfw.Acti
case glfw.KeyC:
gui.window.SetClipboardString(gui.terminal.ActiveBuffer().GetSelectedText())
return
case glfw.KeyD:
gui.showDebugInfo = !gui.showDebugInfo
gui.terminal.SetDirty()
case glfw.KeyG:
keywords := gui.terminal.ActiveBuffer().GetSelectedText()
if keywords != "" {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 614 B

View File

View File

@ -289,13 +289,12 @@ func (terminal *Terminal) SetSize(newCols uint, newLines uint) error {
terminal.size.Width = uint16(newCols)
terminal.size.Height = uint16(newLines)
terminal.ActiveBuffer().ResizeView(terminal.size.Width, terminal.size.Height)
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(terminal.pty.Fd()),
uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(&terminal.size)))
if err != 0 {
return fmt.Errorf("Failed to set terminal size vai ioctl: Error no %d", err)
}
terminal.ActiveBuffer().ResizeView(terminal.size.Width, terminal.size.Height)
return nil
}