Allow including config files matching glob patterns in conf files
Fixes #4533
This commit is contained in:
parent
f9a4b6bb0d
commit
6a2522452f
@ -79,6 +79,9 @@ Detailed list of changes
|
|||||||
- macOS: Allow opening text files, images and directories with kitty when
|
- macOS: Allow opening text files, images and directories with kitty when
|
||||||
launched using "Open with" in Finder (:iss:`4460`)
|
launched using "Open with" in Finder (:iss:`4460`)
|
||||||
|
|
||||||
|
- Allow including config files matching glob patterns in :file:`kitty.conf`
|
||||||
|
(:iss:`4533`)
|
||||||
|
|
||||||
- Shell integration: Fix bash integration not working when ``PROMPT_COMMAND``
|
- Shell integration: Fix bash integration not working when ``PROMPT_COMMAND``
|
||||||
is used to change the prompt variables (:iss:`4476`)
|
is used to change the prompt variables (:iss:`4476`)
|
||||||
|
|
||||||
|
|||||||
@ -25,12 +25,14 @@ character. This works only if the ``#`` character is the first character
|
|||||||
in the line.
|
in the line.
|
||||||
|
|
||||||
You can include secondary config files via the :code:`include` directive. If
|
You can include secondary config files via the :code:`include` directive. If
|
||||||
you use a relative path for include, it is resolved with respect to the
|
you use a relative path for :code:`include`, it is resolved with respect to the
|
||||||
location of the current config file. Note that environment variables are
|
location of the current config file. Note that environment variables are
|
||||||
expanded, so :code:`${USER}.conf` becomes :file:`name.conf` if
|
expanded, so :code:`${USER}.conf` becomes :file:`name.conf` if
|
||||||
:code:`USER=name`. For example::
|
:code:`USER=name`. Also, you can use :code:`globinclude` to include files
|
||||||
|
matching a shell glob pattern. For example::
|
||||||
|
|
||||||
include other.conf
|
include other.conf
|
||||||
|
globinclude kitty.d/**/*.conf
|
||||||
|
|
||||||
|
|
||||||
.. note:: Syntax highlighting for :file:`kitty.conf` in vim is available via
|
.. note:: Syntax highlighting for :file:`kitty.conf` in vim is available via
|
||||||
|
|||||||
@ -170,10 +170,16 @@ def parse_line(
|
|||||||
log_error(f'Ignoring invalid config line: {line}')
|
log_error(f'Ignoring invalid config line: {line}')
|
||||||
return
|
return
|
||||||
key, val = m.groups()
|
key, val = m.groups()
|
||||||
if key == 'include':
|
if key in ('include', 'globinclude'):
|
||||||
val = os.path.expandvars(os.path.expanduser(val.strip()))
|
val = os.path.expandvars(os.path.expanduser(val.strip()))
|
||||||
|
if key == 'globinclude':
|
||||||
|
from pathlib import Path
|
||||||
|
vals = tuple(map(lambda x: str(os.fspath(x)), Path(base_path_for_includes).glob(val)))
|
||||||
|
else:
|
||||||
if not os.path.isabs(val):
|
if not os.path.isabs(val):
|
||||||
val = os.path.join(base_path_for_includes, val)
|
val = os.path.join(base_path_for_includes, val)
|
||||||
|
vals = (val,)
|
||||||
|
for val in vals:
|
||||||
try:
|
try:
|
||||||
with open(val, encoding='utf-8', errors='replace') as include:
|
with open(val, encoding='utf-8', errors='replace') as include:
|
||||||
with currently_parsing.set_file(val):
|
with currently_parsing.set_file(val):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user