@@ -69,13 +69,18 @@ type permissionDialogCmp struct {
69 keyMap KeyMap
69 keyMap KeyMap
72−func NewPermissionDialogCmp(permission permission.PermissionRequest) PermissionDialogCmp {
72+func NewPermissionDialogCmp(permission permission.PermissionRequest, opts *Options) PermissionDialogCmp {
73 // Create viewport for content
77 // Create viewport for content
74 contentViewport := viewport.New()
78 contentViewport := viewport.New()
75 return &permissionDialogCmp{
79 return &permissionDialogCmp{
76 contentViewPort: contentViewport,
80 contentViewPort: contentViewport,
77 selectedOption: 0, // Default to "Allow"
81 selectedOption: 0, // Default to "Allow"
78 permission: permission,
82 permission: permission,
83+ diffSplitMode: opts.isSplitMode(),
79 keyMap: DefaultKeyMap(),
84 keyMap: DefaultKeyMap(),
80 contentDirty: true, // Mark as dirty initially
85 contentDirty: true, // Mark as dirty initially
@@ -643,9 +648,8 @@ func (p *permissionDialogCmp) generateDefaultContent() string {
643func (p *permissionDialogCmp) useDiffSplitMode() bool {
648func (p *permissionDialogCmp) useDiffSplitMode() bool {
644 if p.diffSplitMode != nil {
649 if p.diffSplitMode != nil {
645 return *p.diffSplitMode
650 return *p.diffSplitMode
647− return p.defaultDiffSplitMode
652+ return p.defaultDiffSplitMode
651func (p *permissionDialogCmp) styleViewport() string {
655func (p *permissionDialogCmp) styleViewport() string {
@@ -789,3 +793,24 @@ func (p *permissionDialogCmp) ID() dialogs.DialogID {
789func (p *permissionDialogCmp) Position() (int, int) {
793func (p *permissionDialogCmp) Position() (int, int) {
790 return p.positionRow, p.positionCol
794 return p.positionRow, p.positionCol
797+// Options for create a new permission dialog
798+type Options struct {
799+ DiffMode string // split or unified, empty means use defaultDiffSplitMode
802+// isSplitMode returns internal representation of diff mode switch
803+func (o Options) isSplitMode() *bool {