Fix incorrect termcap query responses
Did not realize that the responses had to be processed via tparm() i.e. they should be the actual bytes not the textual representation of them. This broke the backspace key in vim.
This commit is contained in:
parent
70f71e8ada
commit
52ecdfe3a9
@ -436,7 +436,7 @@ def get_capabilities(query_string):
|
||||
ans = []
|
||||
try:
|
||||
for q in query_string.split(';'):
|
||||
name = unhexlify(q).decode('utf-8')
|
||||
name = qname = unhexlify(q).decode('utf-8')
|
||||
if name == 'TN':
|
||||
val = names[0]
|
||||
else:
|
||||
@ -444,10 +444,13 @@ def get_capabilities(query_string):
|
||||
val = queryable_capabilities[name]
|
||||
except KeyError:
|
||||
try:
|
||||
val = queryable_capabilities[termcap_aliases[name]]
|
||||
qname = termcap_aliases[name]
|
||||
val = queryable_capabilities[qname]
|
||||
except Exception as e:
|
||||
safe_print(ERROR_PREFIX, 'Unknown terminfo property:', name)
|
||||
raise
|
||||
if qname in string_capabilities and '%' not in val:
|
||||
val = key_as_bytes(qname).decode('ascii')
|
||||
ans.append(q + '=' + hexlify(str(val).encode('utf-8')).decode('ascii'))
|
||||
return b'\033P1+r' + ';'.join(ans).encode('utf-8') + b'\033\\'
|
||||
except Exception:
|
||||
|
||||
@ -198,7 +198,7 @@ class TestParser(BaseTest):
|
||||
q = hexlify(b'kind').decode('ascii')
|
||||
pb('a\033P+q{}\x9cbcde'.format(q), 'a', ('screen_request_capabilities', 43, q), 'bcde')
|
||||
self.ae(str(s.line(0)), 'abcde')
|
||||
self.ae(c.wtcbuf, '\033P1+r{}={}\033\\'.format(q, '5c455b313b3242').encode('ascii'))
|
||||
self.ae(c.wtcbuf, '\033P1+r{}={}\033\\'.format(q, '1b5b313b3242').encode('ascii'))
|
||||
c.clear()
|
||||
pb('\033P$q q\033\\', ('screen_request_capabilities', ord('$'), ' q'))
|
||||
self.ae(c.wtcbuf, b'\033P1$r1 q\033\\')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user