diff --git a/docs/changelog.rst b/docs/changelog.rst index 2773b581f..c0558ba19 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -82,6 +82,9 @@ Detailed list of changes - macOS: Persist "Secure Keyboard Entry" across restarts to match the behavior of Terminal.app (:iss:`4471`) +- hints kitten: Fix common single letter extension files not being detected + (:iss:`4491`) + 0.24.1 [2022-01-06] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kittens/hints/main.py b/kittens/hints/main.py index b69790325..8e35939ab 100644 --- a/kittens/hints/main.py +++ b/kittens/hints/main.py @@ -40,6 +40,8 @@ def kitty_common_opts() -> KittyCommonOpts: DEFAULT_HINT_ALPHABET = string.digits + string.ascii_lowercase DEFAULT_REGEX = r'(?m)^\s*(.+)\s*$' +FILE_EXTENSION = r'\.(?:[a-zA-Z0-9]{2,7}|[ahcmo])(?!\.)' +PATH_REGEX = fr'(?:\S*?/[\r\S]+)|(?:\S[\r\S]*{FILE_EXTENSION})\b' class Mark: @@ -355,7 +357,7 @@ def functions_for(args: HintsCLIOptions) -> Tuple[str, List[PostprocessorFunc]]: ) post_processors.append(url) elif args.type == 'path': - pattern = r'(?:\S*?/[\r\S]+)|(?:\S[\r\S]*\.[a-zA-Z0-9\r]{2,7})' + pattern = PATH_REGEX post_processors.extend((brackets, quotes)) elif args.type == 'line': pattern = '(?m)^\\s*(.+)[\\s\0]*$' @@ -412,7 +414,7 @@ def parse_input(text: str) -> str: def linenum_marks(text: str, args: HintsCLIOptions, Mark: Type[Mark], extra_cli_args: Sequence[str], *a: Any) -> Generator[Mark, None, None]: regex = args.regex if regex == DEFAULT_REGEX: - regex = r'(?P(?:\S*/\S+?)|(?:\S+[.][a-zA-Z0-9]{2,7})):(?P\d+)' + regex = fr'(?P{PATH_REGEX}):(?P\d+)' yield from mark(regex, [brackets, quotes], text, args)