mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 14:18:26 +02:00
themes kitten: When using the Default theme as an auto switch theme include all the actual settings values
Fixes #8124
This commit is contained in:
@@ -84,6 +84,11 @@ consumption to do the same tasks.
|
|||||||
Detailed list of changes
|
Detailed list of changes
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
|
0.38.1 [future]
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- themes kitten: When using the *Default* theme as an auto switch theme include all the actual settings values (:iss:`8124`)
|
||||||
|
|
||||||
0.38.0 [2024-12-15]
|
0.38.0 [2024-12-15]
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|||||||
@@ -583,7 +583,7 @@ def load_ref_map() -> dict[str, dict[str, str]]:
|
|||||||
def generate_constants() -> str:
|
def generate_constants() -> str:
|
||||||
from kittens.hints.main import DEFAULT_REGEX
|
from kittens.hints.main import DEFAULT_REGEX
|
||||||
from kittens.query_terminal.main import all_queries
|
from kittens.query_terminal.main import all_queries
|
||||||
from kitty.colors import ThemeFile
|
from kitty.colors import ThemeFile, default_theme
|
||||||
from kitty.config import option_names_for_completion
|
from kitty.config import option_names_for_completion
|
||||||
from kitty.fast_data_types import FILE_TRANSFER_CODE
|
from kitty.fast_data_types import FILE_TRANSFER_CODE
|
||||||
from kitty.options.utils import allowed_shell_integration_values, url_style_map
|
from kitty.options.utils import allowed_shell_integration_values, url_style_map
|
||||||
@@ -629,6 +629,7 @@ var DocTitleMap = map[string]string{serialize_go_dict(ref_map['doc'])}
|
|||||||
var AllowedShellIntegrationValues = []string{{ {str(sorted(allowed_shell_integration_values))[1:-1].replace("'", '"')} }}
|
var AllowedShellIntegrationValues = []string{{ {str(sorted(allowed_shell_integration_values))[1:-1].replace("'", '"')} }}
|
||||||
var QueryNames = []string{{ {query_names} }}
|
var QueryNames = []string{{ {query_names} }}
|
||||||
var CommentedOutDefaultConfig = "{serialize_as_go_string(commented_out_default_config())}"
|
var CommentedOutDefaultConfig = "{serialize_as_go_string(commented_out_default_config())}"
|
||||||
|
var DefaultColorTheme = `{default_theme()}`
|
||||||
var KittyConfigDefaults = struct {{
|
var KittyConfigDefaults = struct {{
|
||||||
Term, Shell_integration, Select_by_word_characters, Url_excluded_characters, Shell string
|
Term, Shell_integration, Select_by_word_characters, Url_excluded_characters, Shell string
|
||||||
Wheel_scroll_multiplier int
|
Wheel_scroll_multiplier int
|
||||||
|
|||||||
@@ -525,7 +525,11 @@ func (self *handler) on_accepting_key_event(ev *loop.KeyEvent) error {
|
|||||||
|
|
||||||
scheme := func(name string) error {
|
scheme := func(name string) error {
|
||||||
ev.Handled = true
|
ev.Handled = true
|
||||||
self.themes_list.CurrentTheme().SaveInFile(utils.ConfigDir(), name)
|
{
|
||||||
|
theme := self.themes_list.CurrentTheme()
|
||||||
|
theme.GenerateDefaultSettings()
|
||||||
|
theme.SaveInFile(utils.ConfigDir(), name)
|
||||||
|
}
|
||||||
self.update_recent()
|
self.update_recent()
|
||||||
self.lp.Quit(0)
|
self.lp.Quit(0)
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -187,3 +187,16 @@ def patch_colors(
|
|||||||
if default_bg_changed:
|
if default_bg_changed:
|
||||||
boss.default_bg_changed_for(w.id)
|
boss.default_bg_changed_for(w.id)
|
||||||
w.refresh()
|
w.refresh()
|
||||||
|
|
||||||
|
|
||||||
|
def default_theme() -> str:
|
||||||
|
from kitty.options.definition import definition
|
||||||
|
from kitty.options.types import defaults, option_names
|
||||||
|
ans = []
|
||||||
|
|
||||||
|
for name in option_names:
|
||||||
|
defval = getattr(defaults, name)
|
||||||
|
if isinstance(defval, Color) or name in nullable_colors or name == 'transparent_background_colors':
|
||||||
|
defval = definition.option_map[name].defval_as_string
|
||||||
|
ans.append(f'{name} {defval}')
|
||||||
|
return '\n'.join(ans)
|
||||||
|
|||||||
@@ -22,8 +22,10 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"kitty"
|
||||||
"kitty/tools/cli"
|
"kitty/tools/cli"
|
||||||
"kitty/tools/config"
|
"kitty/tools/config"
|
||||||
|
"kitty/tools/tty"
|
||||||
"kitty/tools/tui/loop"
|
"kitty/tools/tui/loop"
|
||||||
"kitty/tools/tui/subseq"
|
"kitty/tools/tui/subseq"
|
||||||
"kitty/tools/utils"
|
"kitty/tools/utils"
|
||||||
@@ -541,6 +543,7 @@ type Theme struct {
|
|||||||
zip_reader *zip.File
|
zip_reader *zip.File
|
||||||
is_user_defined bool
|
is_user_defined bool
|
||||||
path_for_user_defined_theme string
|
path_for_user_defined_theme string
|
||||||
|
generate_default_settings bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Theme) Name() string { return self.metadata.Name }
|
func (self *Theme) Name() string { return self.metadata.Name }
|
||||||
@@ -549,6 +552,14 @@ func (self *Theme) Blurb() string { return self.metadata.Blurb }
|
|||||||
func (self *Theme) IsDark() bool { return self.metadata.Is_dark }
|
func (self *Theme) IsDark() bool { return self.metadata.Is_dark }
|
||||||
func (self *Theme) IsUserDefined() bool { return self.is_user_defined }
|
func (self *Theme) IsUserDefined() bool { return self.is_user_defined }
|
||||||
|
|
||||||
|
func (self *Theme) GenerateDefaultSettings() func() {
|
||||||
|
orig := self.generate_default_settings
|
||||||
|
self.generate_default_settings = true
|
||||||
|
return func() {
|
||||||
|
self.generate_default_settings = orig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Theme) load_code() (string, error) {
|
func (self *Theme) load_code() (string, error) {
|
||||||
if self.zip_reader != nil {
|
if self.zip_reader != nil {
|
||||||
f, err := self.zip_reader.Open()
|
f, err := self.zip_reader.Open()
|
||||||
@@ -586,6 +597,8 @@ func (self *Theme) SaveInDir(dirpath string) (err error) {
|
|||||||
return utils.AtomicUpdateFile(path, bytes.NewReader(utils.UnsafeStringToBytes(code)), 0o644)
|
return utils.AtomicUpdateFile(path, bytes.NewReader(utils.UnsafeStringToBytes(code)), 0o644)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var debugprintln = tty.DebugPrintln
|
||||||
|
|
||||||
func (self *Theme) SaveInFile(config_dir, config_file_name string) (err error) {
|
func (self *Theme) SaveInFile(config_dir, config_file_name string) (err error) {
|
||||||
_ = os.MkdirAll(config_dir, 0o755)
|
_ = os.MkdirAll(config_dir, 0o755)
|
||||||
path := filepath.Join(config_dir, config_file_name)
|
path := filepath.Join(config_dir, config_file_name)
|
||||||
@@ -593,6 +606,10 @@ func (self *Theme) SaveInFile(config_dir, config_file_name string) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if self.generate_default_settings && self.Name() == "Default" {
|
||||||
|
code += "\n" + kitty.DefaultColorTheme
|
||||||
|
}
|
||||||
|
|
||||||
return utils.AtomicUpdateFile(path, bytes.NewReader(utils.UnsafeStringToBytes(code)), 0o644)
|
return utils.AtomicUpdateFile(path, bytes.NewReader(utils.UnsafeStringToBytes(code)), 0o644)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user