Merge pull request #271 from carlosflorencio/feat/json-viewer-word-wrap

feat: add JSON viewer word wrap setting and toggle keybinding
This commit is contained in:
Jorge Rojas
2026-02-04 21:55:57 -04:00
committed by GitHub
5 changed files with 17 additions and 4 deletions
+1
View File
@@ -26,6 +26,7 @@ func defaultConfig() *Config {
SidebarOverlay: false,
MaxQueryHistoryPerConnection: 100,
TreeWidth: 30,
JSONViewerWordWrap: false,
},
}
}
+1
View File
@@ -172,6 +172,7 @@ var Keymaps = KeymapSystem{
Bind{Key: Key{Char: 'Z'}, Cmd: cmd.ShowRowJSONViewer, Description: "Toggle JSON viewer"},
Bind{Key: Key{Char: 'z'}, Cmd: cmd.ShowCellJSONViewer, Description: "Toggle JSON viewer"},
Bind{Key: Key{Char: 'y'}, Cmd: cmd.Copy, Description: "Copy value to clipboard"},
Bind{Key: Key{Char: 'w'}, Cmd: cmd.ToggleJSONViewerWrap, Description: "Toggle word wrap"},
},
},
}
+3
View File
@@ -73,6 +73,7 @@ const (
ToggleSidebar
ShowRowJSONViewer
ShowCellJSONViewer
ToggleJSONViewerWrap
// Connection
NewConnection
@@ -221,6 +222,8 @@ func (c Command) String() string {
return "ShowRowJSONViewer"
case ShowCellJSONViewer:
return "ShowCellJSONViewer"
case ToggleJSONViewerWrap:
return "ToggleJSONViewerWrap"
case ExportCSV:
return "ExportCSV"
}
+11 -4
View File
@@ -20,13 +20,15 @@ type JSONViewer struct {
TextView *tview.TextView
Pages *tview.Pages
primitiveToFocus tview.Primitive
wrapEnabled bool
}
func NewJSONViewer(pages *tview.Pages) *JSONViewer {
wrapEnabled := app.App.Config().JSONViewerWordWrap
textView := tview.NewTextView().
SetDynamicColors(true).
SetScrollable(true).
SetWrap(false)
SetWrap(wrapEnabled)
textView.SetBorder(true).SetTitle(" JSON Viewer ")
flex := tview.NewFlex().
@@ -38,9 +40,10 @@ func NewJSONViewer(pages *tview.Pages) *JSONViewer {
AddItem(nil, 0, 1, false)
jsonViewer := &JSONViewer{
Flex: flex,
TextView: textView,
Pages: pages,
Flex: flex,
TextView: textView,
Pages: pages,
wrapEnabled: wrapEnabled,
}
pages.AddPage(pageNameJSONViewer, jsonViewer, true, false)
@@ -58,6 +61,10 @@ func NewJSONViewer(pages *tview.Pages) *JSONViewer {
logger.Error("Error copying JSON to clipboard", map[string]any{"error": err.Error()})
}
return nil
} else if command == commands.ToggleJSONViewerWrap {
jsonViewer.wrapEnabled = !jsonViewer.wrapEnabled
jsonViewer.TextView.SetWrap(jsonViewer.wrapEnabled)
return nil
}
return event
})
+1
View File
@@ -12,6 +12,7 @@ type AppConfig struct {
SidebarOverlay bool
MaxQueryHistoryPerConnection int
TreeWidth int
JSONViewerWordWrap bool
}
type Connection struct {