The hints kitten should by default use the URL prefixes from kitty.conf

This commit is contained in:
Kovid Goyal 2020-03-08 13:26:55 +05:30
parent 645890ccc8
commit d84cff0baf
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 22 additions and 8 deletions

View File

@ -21,7 +21,16 @@ from ..tui.handler import Handler, result_handler
from ..tui.loop import Loop from ..tui.loop import Loop
from ..tui.operations import faint, styled from ..tui.operations import faint, styled
URL_PREFIXES = 'http https file ftp'.split()
@lru_cache()
def kitty_common_opts():
import json
v = os.environ.get('KITTY_COMMON_OPTS')
if v:
return json.loads(v)
return {}
DEFAULT_HINT_ALPHABET = string.digits + string.ascii_lowercase DEFAULT_HINT_ALPHABET = string.digits + string.ascii_lowercase
DEFAULT_REGEX = r'(?m)^\s*(.+)\s*$' DEFAULT_REGEX = r'(?m)^\s*(.+)\s*$'
screen_size = screen_size_function() screen_size = screen_size_function()
@ -281,9 +290,14 @@ def escape(chars):
def functions_for(args): def functions_for(args):
post_processors = [] post_processors = []
if args.type == 'url': if args.type == 'url':
url_prefixes = args.url_prefixes
if url_prefixes == 'default':
url_prefixes = kitty_common_opts().get('url_prefixes', ('https', 'http', 'file', 'ftp'))
else:
url_prefixes = url_prefixes.split(',')
from .url_regex import url_delimiters from .url_regex import url_delimiters
pattern = '(?:{})://[^{}]{{3,}}'.format( pattern = '(?:{})://[^{}]{{3,}}'.format(
'|'.join(args.url_prefixes.split(',')), url_delimiters '|'.join(url_prefixes), url_delimiters
) )
post_processors.append(url) post_processors.append(url)
elif args.type == 'path': elif args.type == 'path':
@ -296,8 +310,7 @@ def functions_for(args):
elif args.type == 'word': elif args.type == 'word':
chars = args.word_characters chars = args.word_characters
if chars is None: if chars is None:
import json chars = kitty_common_opts()['select_by_word_characters']
chars = json.loads(os.environ['KITTY_COMMON_OPTS'])['select_by_word_characters']
pattern = r'(?u)[{}\w]{{{},}}'.format(escape(chars), args.minimum_match_length) pattern = r'(?u)[{}\w]{{{},}}'.format(escape(chars), args.minimum_match_length)
post_processors.extend((brackets, quotes)) post_processors.extend((brackets, quotes))
else: else:
@ -435,8 +448,9 @@ a new OS window and :code:`background` run in the background.
--url-prefixes --url-prefixes
default={url_prefixes} default=default
Comma separated list of recognized URL prefixes. Comma separated list of recognized URL prefixes. Defaults, to
the list of prefixes defined in kitty.conf.
--word-characters --word-characters
@ -502,7 +516,7 @@ for details. You can also specify absolute paths to load the script from elsewhe
'''.format( '''.format(
default_regex=DEFAULT_REGEX, url_prefixes=','.join(sorted(URL_PREFIXES)), default_regex=DEFAULT_REGEX,
line='{{line}}', path='{{path}}' line='{{line}}', path='{{path}}'
).format ).format
help_text = 'Select text from the screen using the keyboard. Defaults to searching for URLs.' help_text = 'Select text from the screen using the keyboard. Defaults to searching for URLs.'

View File

@ -732,7 +732,7 @@ class Boss:
data = input_data data = input_data
if isinstance(data, str): if isinstance(data, str):
data = data.encode('utf-8') data = data.encode('utf-8')
copts = {k: self.opts[k] for k in ('select_by_word_characters', 'open_url_with')} copts = {k: self.opts[k] for k in ('select_by_word_characters', 'open_url_with', 'url_prefixes')}
overlay_window = tab.new_special_window( overlay_window = tab.new_special_window(
SpecialWindow( SpecialWindow(
[kitty_exe(), '+runpy', 'from kittens.runner import main; main()'] + args, [kitty_exe(), '+runpy', 'from kittens.runner import main; main()'] + args,