@@ -69,13 +69,18 @@ type permissionDialogCmp struct {
6969 keyMap KeyMap
7070}
7171
72−func NewPermissionDialogCmp(permission permission.PermissionRequest) PermissionDialogCmp {
72+func NewPermissionDialogCmp(permission permission.PermissionRequest, opts *Options) PermissionDialogCmp {
73+ if opts == nil {
74+ opts = &Options{}
75+ }
76+
7377 // Create viewport for content
7478 contentViewport := viewport.New()
7579 return &permissionDialogCmp{
7680 contentViewPort: contentViewport,
7781 selectedOption: 0, // Default to "Allow"
7882 permission: permission,
83+ diffSplitMode: opts.isSplitMode(),
7984 keyMap: DefaultKeyMap(),
8085 contentDirty: true, // Mark as dirty initially
8186 }
@@ -643,9 +648,8 @@ func (p *permissionDialogCmp) generateDefaultContent() string {
643648func (p *permissionDialogCmp) useDiffSplitMode() bool {
644649 if p.diffSplitMode != nil {
645650 return *p.diffSplitMode
646− } else {
647− return p.defaultDiffSplitMode
648651 }
652+ return p.defaultDiffSplitMode
649653}
650654
651655func (p *permissionDialogCmp) styleViewport() string {
@@ -789,3 +793,24 @@ func (p *permissionDialogCmp) ID() dialogs.DialogID {
789793func (p *permissionDialogCmp) Position() (int, int) {
790794 return p.positionRow, p.positionCol
791795}
796+
797+// Options for create a new permission dialog
798+type Options struct {
799+ DiffMode string // split or unified, empty means use defaultDiffSplitMode
800+}
801+
802+// isSplitMode returns internal representation of diff mode switch
803+func (o Options) isSplitMode() *bool {
804+ var split bool
805+
806+ switch o.DiffMode {
807+ case "split":
808+ split = true
809+ case "unified":
810+ split = false
811+ default:
812+ return nil
813+ }
814+
815+ return &split
816+}