Fix :UU and :UU usage in EvEditor. Resolve #3262

This commit is contained in:
Griatch 2024-04-01 14:05:45 +02:00
parent 0c072dab02
commit 763699ea14
5 changed files with 84 additions and 82 deletions

View file

@ -43,7 +43,6 @@ import re
from django.conf import settings
from django.utils.translation import gettext as _
from evennia import CmdSet
from evennia.commands import cmdhandler
from evennia.utils import dedent, fill, is_iter, justify, logger, to_str, utils
@ -468,7 +467,8 @@ class CmdEditorGroup(CmdEditorBase):
linebuffer = self.linebuffer
lstart, lend = self.lstart, self.lend
cmd = self.cmdstring
# preserve the cmdname including case (otherwise uu and UU would be the same)
cmd = self.raw_string[:len(self.cmdstring)]
echo_mode = self.editor._echo_mode
if cmd == ":":

View file

@ -13,7 +13,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(eveditor.CmdLineInput(), "line 1", raw_string="line 1", msg="01line 1")
@ -24,7 +24,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"", # list whole buffer
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01line 1\n02line 2\n"
"03line 3\n04line 4\n05line 5\n"
"[l:05 w:010 c:0034](:h for help)",
@ -32,7 +32,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
":", # list empty range
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01line 1\n02line 2\n"
"03line 3\n04line 4\n05line 5\n"
"[l:05 w:010 c:0034](:h for help)",
@ -40,7 +40,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
":4", # list from start to line 4
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01line 1\n02line 2\n"
"03line 3\n04line 4\n"
"[l:04 w:008 c:0027](:h for help)",
@ -48,7 +48,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"2:", # list from line 2 to end
cmdstring=":",
raw_string=":",
msg="Line Editor []\n02line 2\n03line 3\n"
"04line 4\n05line 5\n"
"[l:04 w:008 c:0027](:h for help)",
@ -56,7 +56,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"-10:10", # try to list invalid range (too large)
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01line 1\n02line 2\n"
"03line 3\n04line 4\n05line 5\n"
"[l:05 w:010 c:0034](:h for help)",
@ -64,7 +64,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"3:1", # try to list invalid range (reversed)
cmdstring=":",
raw_string=":",
msg="Line Editor []\n03line 3\n"
"[l:01 w:002 c:0006](:h for help)",
)
@ -74,14 +74,14 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":h",
raw_string=":h",
msg="<txt> - any non-command is appended to the end of the buffer.",
)
# empty buffer
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
# input a string
@ -102,49 +102,49 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":", # view buffer
raw_string=":", # view buffer
msg="Line Editor []\n01First test line\n"
"02Second test line\n[l:02 w:006 c:0032](:h for help)",
)
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring="::", # view buffer, no linenums
raw_string="::", # view buffer, no linenums
msg="Line Editor []\nFirst test line\n"
"Second test line\n[l:02 w:006 c:0032](:h for help)",
)
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":::", # add single : alone on row
raw_string=":::", # add single : alone on row
msg="Single ':' added to buffer.",
)
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01First test line\n"
"02Second test line\n03:\n[l:03 w:007 c:0034](:h for help)",
)
self.call(
eveditor.CmdEditorGroup(), "", cmdstring=":dd", msg="Deleted line 3." # delete line
eveditor.CmdEditorGroup(), "", raw_string=":dd", msg="Deleted line 3." # delete line
)
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "First test line\nSecond test line")
self.call(eveditor.CmdEditorGroup(), "", cmdstring=":u", msg="Undid one step.") # undo
self.call(eveditor.CmdEditorGroup(), "", raw_string=":u", msg="Undid one step.") # undo
self.assertEqual(
self.char1.ndb._eveditor.get_buffer(), "First test line\nSecond test line\n:"
)
self.call(eveditor.CmdEditorGroup(), "", cmdstring=":uu", msg="Redid one step.") # redo
self.call(eveditor.CmdEditorGroup(), "", raw_string=":uu", msg="Redid one step.") # redo
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "First test line\nSecond test line")
self.call(eveditor.CmdEditorGroup(), "", cmdstring=":u", msg="Undid one step.") # undo
self.call(eveditor.CmdEditorGroup(), "", raw_string=":u", msg="Undid one step.") # undo
self.assertEqual(
self.char1.ndb._eveditor.get_buffer(), "First test line\nSecond test line\n:"
)
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01First test line\n"
"02Second test line\n03:\n[l:03 w:007 c:0034](:h for help)",
)
@ -152,31 +152,31 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"Second",
cmdstring=":dw", # delete by word
raw_string=":dw", # delete by word
msg="Removed Second for lines 1-4.",
)
self.call(eveditor.CmdEditorGroup(), "", cmdstring=":u", msg="Undid one step.") # undo
self.call(eveditor.CmdEditorGroup(), "", raw_string=":u", msg="Undid one step.") # undo
self.call(
eveditor.CmdEditorGroup(),
"2 Second",
cmdstring=":dw", # delete by word/line
raw_string=":dw", # delete by word/line
msg="Removed Second for line 2.",
)
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "First test line\n test line\n:")
self.call(
eveditor.CmdEditorGroup(), "2", cmdstring=":p", msg="Copy buffer is empty." # paste
eveditor.CmdEditorGroup(), "2", raw_string=":p", msg="Copy buffer is empty." # paste
)
self.call(
eveditor.CmdEditorGroup(),
"2",
cmdstring=":y", # yank
raw_string=":y", # yank
msg="Line 2, [' test line'] yanked.",
)
self.call(
eveditor.CmdEditorGroup(),
"2",
cmdstring=":p", # paste
raw_string=":p", # paste
msg="Pasted buffer [' test line'] to line 2.",
)
self.assertEqual(
@ -184,31 +184,31 @@ class TestEvEditor(BaseEvenniaCommandTest):
)
self.call(
eveditor.CmdEditorGroup(), "3", cmdstring=":x", msg="Line 3, [' test line'] cut." # cut
eveditor.CmdEditorGroup(), "3", raw_string=":x", msg="Line 3, [' test line'] cut." # cut
)
self.call(
eveditor.CmdEditorGroup(),
"2 New Second line",
cmdstring=":i", # insert
raw_string=":i", # insert
msg="Inserted 1 new line(s) at line 2.",
)
self.call(
eveditor.CmdEditorGroup(),
"2 New Replaced Second line", # replace
cmdstring=":r",
raw_string=":r",
msg="Replaced 1 line(s) at line 2.",
)
self.call(
eveditor.CmdEditorGroup(),
"2 Inserted-", # insert beginning line
cmdstring=":I",
raw_string=":I",
msg="Inserted text at beginning of line 2.",
)
self.call(
eveditor.CmdEditorGroup(),
"2 -End", # append end line
cmdstring=":A",
raw_string=":A",
msg="Appended text to end of line 2.",
)
@ -229,7 +229,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(
@ -250,7 +250,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":UU",
raw_string=":UU",
msg="Reverted all changes to the buffer back to original state.",
)
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "")
@ -260,7 +260,7 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(eveditor.CmdLineInput(), "line 1.", raw_string="line 1.", msg="01line 1.")
@ -269,20 +269,20 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"2:3",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n02line 2.\n03line 3.\n[l:02 w:004 c:0015](:h for help)",
)
self.call(
eveditor.CmdEditorGroup(),
"1:2 line LINE",
cmdstring=":s",
raw_string=":s",
msg="Search-replaced line -> LINE for lines 1-2.",
)
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "LINE 1.\nLINE 2.\nline 3.")
self.call(
eveditor.CmdEditorGroup(),
"line MINE",
cmdstring=":s",
raw_string=":s",
msg="Search-replaced line -> MINE for lines 1-3.",
)
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "LINE 1.\nLINE 2.\nMINE 3.")
@ -292,14 +292,14 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(eveditor.CmdLineInput(), "line 1.", raw_string="line 1.", msg="01line 1.")
self.call(eveditor.CmdLineInput(), "line 2.", raw_string="line 2.", msg="02line 2.")
self.call(eveditor.CmdLineInput(), "line 3.", raw_string="line 3.", msg="03line 3.")
self.call(
eveditor.CmdEditorGroup(), "", cmdstring=":DD", msg="Cleared 3 lines from buffer."
eveditor.CmdEditorGroup(), "", raw_string=":DD", msg="Cleared 3 lines from buffer."
)
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "")
@ -308,11 +308,11 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(eveditor.CmdLineInput(), "line 1", raw_string="line 1", msg="01line 1")
self.call(eveditor.CmdEditorGroup(), "1:2", cmdstring=":f", msg="Flood filled line 1.")
self.call(eveditor.CmdEditorGroup(), "1:2", raw_string=":f", msg="Flood filled line 1.")
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "line 1")
def test_eveditor_COLON_J(self):
@ -320,16 +320,16 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(eveditor.CmdLineInput(), "line 1", raw_string="line 1", msg="01line 1")
self.call(eveditor.CmdLineInput(), "l 2", raw_string="l 2", msg="02l 2")
self.call(eveditor.CmdLineInput(), "l 3", raw_string="l 3", msg="03l 3")
self.call(eveditor.CmdLineInput(), "l 4", raw_string="l 4", msg="04l 4")
self.call(eveditor.CmdEditorGroup(), "2 r", cmdstring=":j", msg="Right-justified line 2.")
self.call(eveditor.CmdEditorGroup(), "3 c", cmdstring=":j", msg="Center-justified line 3.")
self.call(eveditor.CmdEditorGroup(), "4 f", cmdstring=":j", msg="Full-justified line 4.")
self.call(eveditor.CmdEditorGroup(), "2 r", raw_string=":j", msg="Right-justified line 2.")
self.call(eveditor.CmdEditorGroup(), "3 c", raw_string=":j", msg="Center-justified line 3.")
self.call(eveditor.CmdEditorGroup(), "4 f", raw_string=":j", msg="Full-justified line 4.")
l1, l2, l3, l4 = tuple(self.char1.ndb._eveditor.get_buffer().split("\n"))
self.assertEqual(l1, "line 1")
self.assertEqual(l2, " " * 75 + "l 2")
@ -341,44 +341,44 @@ class TestEvEditor(BaseEvenniaCommandTest):
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":",
raw_string=":",
msg="Line Editor []\n01\n[l:01 w:000 c:0000](:h for help)",
)
self.call(eveditor.CmdLineInput(), "line 1.", raw_string="line 1.", msg="01line 1.")
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":dw",
raw_string=":dw",
msg="You must give a search word to delete.",
)
# self.call(
# eveditor.CmdEditorGroup(),
# raw_string="",
# cmdstring=":i",
# raw_string=":i",
# msg="You need to enter a new line and where to insert it.",
# )
# self.call(
# eveditor.CmdEditorGroup(),
# "",
# cmdstring=":I",
# raw_string=":I",
# msg="You need to enter text to insert.",
# )
# self.call(
# eveditor.CmdEditorGroup(),
# "",
# cmdstring=":r",
# raw_string=":r",
# msg="You need to enter a replacement string.",
# )
self.call(
eveditor.CmdEditorGroup(),
"",
cmdstring=":s",
raw_string=":s",
msg="You must give a search word and something to replace it with.",
)
# self.call(
# eveditor.CmdEditorGroup(),
# "",
# cmdstring=":f",
# raw_string=":f",
# msg="Valid justifications are [f]ull (default), [c]enter, [r]right or [l]eft"
# )
self.assertEqual(self.char1.ndb._eveditor.get_buffer(), "line 1.")