self.output_queue = []
self.partial_input = b""
self.password_tries = 0
- self.state = "initial"
+ self.state = "telopt_negotiation"
self.telopts = {}
def quit(self):
self.check_idle()
# if output is paused, decrement the counter
- if self.state == "initial":
+ if self.state == "telopt_negotiation":
if self.negotiation_pause:
self.negotiation_pause -= 1
else:
line = line.strip()
# log non-printable characters remaining
- if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_BINARY,
- mudpy.telnet.HIM):
+ if not mudpy.telnet.is_enabled(
+ self, mudpy.telnet.TELOPT_BINARY, mudpy.telnet.HIM):
asciiline = bytes([x for x in line if 32 <= x <= 126])
if line != asciiline:
logline = "Non-ASCII characters from "
# escape sequence
escape = False
- # track the most recent whitespace we've seen
- # TODO(fungi) exclude non-breaking spaces (\x0a)
- elif unicodedata.category(each_character) in ("Cc", "Zs"):
- if each_character == "\n":
- # the current character is a newline, so reset the relative
- # position too (start a new line)
- rel_pos = 0
- if each_character != "\r":
- # the current character is not a carriage return, so mark it as
- # whitespace (we don't want to break and wrap between CR+LF)
- last_abs_whitespace = abs_pos
- last_rel_whitespace = rel_pos
+ # the current character is a space
+ elif each_character == " ":
+ last_abs_whitespace = abs_pos
+ last_rel_whitespace = rel_pos
+
+ # the current character is a newline, so reset the relative
+ # position too (start a new line)
+ elif each_character == "\n":
+ rel_pos = 0
+ last_abs_whitespace = abs_pos
+ last_rel_whitespace = rel_pos
# the current character meets the requested maximum line width, so we
# need to wrap unless the current word is wider than the terminal (in
# printable character
elif each_character != "\r":
rel_pos += glyph_columns(each_character)
- if unicodedata.category(each_character) in ("Cc", "Zs"):
- # TODO(fungi) exclude non-breaking spaces (\x0a)
+ if each_character in (" ", "\n"):
last_abs_whitespace = abs_pos
last_rel_whitespace = rel_pos