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
65 lines
1.3 KiB
Go
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: "",
|
|
},
|
|
}
|
|
}
|