Files
iris-context/internal/config/defaults.go
T
VERSE a885c7462a feat(config): ui width, auto exec, selection and navigation configs (#80)
closes #67

So I made an auto-exec confg `auto-exec = true`
(e32c0ba6ed69f3c764353e58b8fbacf160f37d5a) which means:
- If you want your command in the prompt to be executed right away, you
can set this = false (for example, you are typing `nvim ~/.conf` but
IRIS is suggesting `nvim ~/.config`, it will ignore the suggestion and
exec what you are typing, this is current default behavior)
- If you want to auto execute full command which is being suggested, you
can set this = true (this is the opposite of above, when you are typing
`nvim ~/.conf` but IRIS is suggesting `nvim ~/.config`, it will auto
exec `nvim ~/.config` instead, but sometime you want to exec what you
are typing instead of the suggestion right?, just press esc or shift tab
to hide the menu and it will)

---

Select keybinding to replace tab
(0dc01cba8c610e8d6fd8c50f6a71bdcc061a098f)
`select = "ctrl+y"`

Some users may love nvim keybinding or emacs, so I bring navigation
keybinding to be configurable (0dc01cba8c610e8d6fd8c50f6a71bdcc061a098f)
```
navigate-up = "ctrl+k"
navigate-down = "ctrl+j"
```
---

I also added a option for UI width
(dfa3b810a7be406fe4652b3886020f37bb166811)
`max-width = 80`
- If you configure `max-width` to be larger than the actual width of the
current terminal, Iris will automatically "compress" the window to match
the terminal's width (meaning it will never overflow and break the
interface)
- If you configure `max-width` too small (e.g 10), the interface will
have cramped text, making it look very bad. So, I've set a minimum safe
min limit of 40. If the configured value is smaller than this, Iris will
automatically use 40

Small note: If you set `max-width = 0` (or leave it blank), it will
automatically use Iris's default standard size of 76. SO you can
confidently customize it without fear of breaking the UI (I hope so
lmao)

---

Added a fallback to ensure Iris never crashes or loses shortcuts if the
user accidentally deletes keybinding configuration lines or
intentionally assigns empty strings " "
(f682c9bf623f3ed46ad0763221145604dbd91b07)

Fix typo `toggle_mode` to `toggle-mode`
(b39be6673e552735fa65a6c9807510c83b4d9cdd)

if you have a better config design, please tell me, I always listen to
your idea
2026-07-31 10:49:10 +07:00

65 lines
1.3 KiB
Go

package config
import "time"
func DefaultConfig() *Config {
return &Config{
Core: CoreConfig{
Version: 1,
Shell: "",
ShellLogin: false,
Mode: "last",
Debug: false,
ExpandAlias: true,
AutoExecute: false,
},
UI: UIConfig{
Style: "modern",
GhostText: true,
ShowHiddenFiles: false,
MaxSuggestions: 100,
MaxHeight: 15,
MaxWidth: 0, // 0 means no limit, fallback to terminal width
NerdFonts: true,
},
Git: GitConfig{
FilterActiveBranch: true,
DeduplicateBranches: true,
},
Updater: UpdaterConfig{
CheckOnStartup: true,
Channel: "stable",
CheckInterval: Duration(24 * time.Hour),
},
AI: AIConfig{
Enabled: false,
Provider: "",
DebounceMS: 500,
MinIntervalMS: 1000,
Providers: nil,
SuggestOnEmpty: SuggestOnEmptyConfig{
Enabled: false,
DebounceMS: 800,
MinIntervalMS: 5000,
},
},
Keybindings: KeybindingsConfig{
ToggleMode: "ctrl+r",
ToggleMenu: "shift+tab",
SelectSuggestion: "tab",
NavigateUp: "up",
NavigateDown: "down",
},
}
}
func DefaultState() *State {
return &State{
LastMode: "spec",
Updater: UpdaterState{
LastCheckTime: time.Time{},
SeenVersion: "",
},
}
}