Detailed changes
@@ -123,7 +123,8 @@ type LSPConfig struct {
}
type TUIOptions struct {
- CompactMode bool `json:"compact_mode,omitempty" jsonschema:"description=Enable compact mode for the TUI interface,default=false"`
+ CompactMode bool `json:"compact_mode,omitempty" jsonschema:"description=Enable compact mode for the TUI interface,default=false"`
+ DiffMode string `json:"diff_mode,omitempty" jsonschema:"description=Diff mode for the TUI interface,enum=unified,enum=split"`
// Here we can add themes later or any TUI related options
}
@@ -69,13 +69,18 @@ type permissionDialogCmp struct {
keyMap KeyMap
}
-func NewPermissionDialogCmp(permission permission.PermissionRequest) PermissionDialogCmp {
+func NewPermissionDialogCmp(permission permission.PermissionRequest, opts *Options) PermissionDialogCmp {
+ if opts == nil {
+ opts = &Options{}
+ }
+
// Create viewport for content
contentViewport := viewport.New()
return &permissionDialogCmp{
contentViewPort: contentViewport,
selectedOption: 0, // Default to "Allow"
permission: permission,
+ diffSplitMode: opts.isSplitMode(),
keyMap: DefaultKeyMap(),
contentDirty: true, // Mark as dirty initially
}
@@ -643,9 +648,8 @@ func (p *permissionDialogCmp) generateDefaultContent() string {
func (p *permissionDialogCmp) useDiffSplitMode() bool {
if p.diffSplitMode != nil {
return *p.diffSplitMode
- } else {
- return p.defaultDiffSplitMode
}
+ return p.defaultDiffSplitMode
}
func (p *permissionDialogCmp) styleViewport() string {
@@ -789,3 +793,24 @@ func (p *permissionDialogCmp) ID() dialogs.DialogID {
func (p *permissionDialogCmp) Position() (int, int) {
return p.positionRow, p.positionCol
}
+
+// Options for create a new permission dialog
+type Options struct {
+ DiffMode string // split or unified, empty means use defaultDiffSplitMode
+}
+
+// isSplitMode returns internal representation of diff mode switch
+func (o Options) isSplitMode() *bool {
+ var split bool
+
+ switch o.DiffMode {
+ case "split":
+ split = true
+ case "unified":
+ split = false
+ default:
+ return nil
+ }
+
+ return &split
+}
@@ -215,7 +215,9 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return a, cmd
case pubsub.Event[permission.PermissionRequest]:
return a, util.CmdHandler(dialogs.OpenDialogMsg{
- Model: permissions.NewPermissionDialogCmp(msg.Payload),
+ Model: permissions.NewPermissionDialogCmp(msg.Payload, &permissions.Options{
+ DiffMode: config.Get().Options.TUI.DiffMode,
+ }),
})
case permissions.PermissionResponseMsg:
switch msg.Action {
@@ -387,6 +387,14 @@
"type": "boolean",
"description": "Enable compact mode for the TUI interface",
"default": false
+ },
+ "diff_mode": {
+ "type": "string",
+ "enum": [
+ "unified",
+ "split"
+ ],
+ "description": "Diff mode for the TUI interface"
}
},
"additionalProperties": false,