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:
Kovid Goyal 2017-12-03 21:31:51 +05:30
parent 70f71e8ada
commit 52ecdfe3a9
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 6 additions and 3 deletions

View File

@ -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:

View File

@ -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\\')