Sanitize title and icon names
This commit is contained in:
parent
9e40ec413e
commit
067662de94
@ -12,7 +12,7 @@ from PyQt5.QtCore import QObject, pyqtSignal
|
|||||||
|
|
||||||
from pyte import charsets as cs, control as ctrl, graphics as g, modes as mo
|
from pyte import charsets as cs, control as ctrl, graphics as g, modes as mo
|
||||||
from .data_types import Line, Cursor, rewrap_lines
|
from .data_types import Line, Cursor, rewrap_lines
|
||||||
from .utils import wcwidth, is_simple_string
|
from .utils import wcwidth, is_simple_string, sanitize_title
|
||||||
from .unicode import ignore_pat
|
from .unicode import ignore_pat
|
||||||
|
|
||||||
|
|
||||||
@ -405,14 +405,14 @@ class Screen(QObject):
|
|||||||
|
|
||||||
.. note:: This is an XTerm extension supported by the Linux terminal.
|
.. note:: This is an XTerm extension supported by the Linux terminal.
|
||||||
"""
|
"""
|
||||||
self.title_changed.emit(self._decode(param))
|
self.title_changed.emit(sanitize_title(self._decode(param)))
|
||||||
|
|
||||||
def set_icon_name(self, param):
|
def set_icon_name(self, param):
|
||||||
"""Sets icon name.
|
"""Sets icon name.
|
||||||
|
|
||||||
.. note:: This is an XTerm extension supported by the Linux terminal.
|
.. note:: This is an XTerm extension supported by the Linux terminal.
|
||||||
"""
|
"""
|
||||||
self.icon_changed.emit(self._decode(param))
|
self.icon_changed.emit(sanitize_title(self._decode(param)))
|
||||||
|
|
||||||
def carriage_return(self):
|
def carriage_return(self):
|
||||||
"""Move the cursor to the beginning of the current line."""
|
"""Move the cursor to the beginning of the current line."""
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
# License: GPL v3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
# License: GPL v3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
import termios
|
import termios
|
||||||
import struct
|
import struct
|
||||||
@ -112,3 +113,7 @@ def timeit(name, do_timing=False):
|
|||||||
yield
|
yield
|
||||||
if do_timing:
|
if do_timing:
|
||||||
print('Time for {}: {}'.format(name, monotonic() - st))
|
print('Time for {}: {}'.format(name, monotonic() - st))
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_title(x):
|
||||||
|
return re.sub(r'\s+', ' ', re.sub(r'[\0-\x19]', '', x))
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import codecs
|
|||||||
from . import BaseTest
|
from . import BaseTest
|
||||||
|
|
||||||
from kitty.data_types import Line, Cursor
|
from kitty.data_types import Line, Cursor
|
||||||
from kitty.utils import is_simple_string, wcwidth
|
from kitty.utils import is_simple_string, wcwidth, sanitize_title
|
||||||
|
|
||||||
|
|
||||||
class TestDataTypes(BaseTest):
|
class TestDataTypes(BaseTest):
|
||||||
@ -91,3 +91,4 @@ class TestDataTypes(BaseTest):
|
|||||||
self.assertTrue(is_simple_string(s))
|
self.assertTrue(is_simple_string(s))
|
||||||
self.assertTrue(is_simple_string(d(s.encode('utf-8'))))
|
self.assertTrue(is_simple_string(d(s.encode('utf-8'))))
|
||||||
self.assertFalse(is_simple_string('a1コ'))
|
self.assertFalse(is_simple_string('a1コ'))
|
||||||
|
self.assertEqual(sanitize_title('a\0\01 \t\n\f\rb'), 'a b')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user