diff --git a/mycli/clibuffer.py b/mycli/clibuffer.py index fe8e7d29..d3f1af4b 100644 --- a/mycli/clibuffer.py +++ b/mycli/clibuffer.py @@ -37,7 +37,7 @@ def _multiline_exception(text): text.lower().startswith('delimiter') or # Ended with the current delimiter (usually a semi-column) - text.endswith(str(special.delimiter)) or + text.endswith(special.delimiter.current) or text.endswith('\\g') or text.endswith('\\G') or diff --git a/mycli/clitoolbar.py b/mycli/clitoolbar.py index 16ade731..03e39cf2 100644 --- a/mycli/clitoolbar.py +++ b/mycli/clitoolbar.py @@ -13,7 +13,7 @@ def get_toolbar_tokens(): result.append(('class:bottom-toolbar', ' ')) if mycli.multi_line: - delimiter = str(special.delimiter) + delimiter = special.delimiter.current result.append( ( 'class:bottom-toolbar', diff --git a/mycli/packages/special/delimitercommand.py b/mycli/packages/special/delimitercommand.py index db37d7d5..a7dc7979 100644 --- a/mycli/packages/special/delimitercommand.py +++ b/mycli/packages/special/delimitercommand.py @@ -8,7 +8,7 @@ class DelimiterCommand(object): def __init__(self): self._delimiter = ';' - + def _split(self, sql): """Temporary workaround until sqlparse.split() learns about custom delimiters.""" @@ -45,10 +45,10 @@ def queries_iter(self, input): sql = sql.strip(delimiter) else: trailing_delimiter = False - + yield sql - # if the delimiter was changed by the last command, + # if the delimiter was changed by the last command, # re-split everything, and if we previously stripped # the delimiter, append it to the end if self._delimiter != delimiter: @@ -78,5 +78,6 @@ def set(self, arg, **_): self._delimiter = delimiter return [(None, None, None, "Changed delimiter to {}".format(delimiter))] - def __str__(self): + @property + def current(self): return self._delimiter diff --git a/mycli/sqlexecute.py b/mycli/sqlexecute.py index d4c2742e..4cfb200c 100644 --- a/mycli/sqlexecute.py +++ b/mycli/sqlexecute.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + import logging import pymysql import sqlparse diff --git a/test/test_special_iocommands.py b/test/test_special_iocommands.py index 7e2ebed3..7ca33839 100644 --- a/test/test_special_iocommands.py +++ b/test/test_special_iocommands.py @@ -1,4 +1,6 @@ # coding: utf-8 +from __future__ import unicode_literals + import os import stat import tempfile @@ -267,4 +269,9 @@ def test_set_delimiter(): delimiter = mycli.packages.special.delimiter for delim in ('foo', 'bar'): delimiter.set(delim) - assert str(delimiter) == delim + assert delimiter.current == delim + + +def teardown_function(): + delimiter = mycli.packages.special.delimiter + delimiter.set(';')