88import sys
99
1010from .environment import env
11+ from re import compile as re
12+
13+
14+ encoding = re (r'#[^\w]+coding:\s+utf.*$' )
1115
1216
1317def run_code ():
14- """ Run python code in current buffer. """
18+ """ Run python code in current buffer.
19+
20+ :returns: None
21+
22+ """
1523
1624 errors , err = [], ''
1725 line1 , line2 = env .var ('a:line1' ), env .var ('a:line2' )
1826 lines = __prepare_lines (line1 , line2 )
27+ for ix in (0 , 1 ):
28+ if encoding .match (lines [ix ]):
29+ lines .pop (ix )
1930
2031 context = dict (
2132 __name__ = '__main__' , input = env .user_input , raw_input = env .user_input )
@@ -42,14 +53,14 @@ def run_code():
4253 else :
4354 err = sys .stderr .getvalue ()
4455
45- output = sys .stdout .getvalue (). strip ()
46- output = env .prepare_value (output )
56+ output = sys .stdout .getvalue ()
57+ output = env .prepare_value (output , dumps = False )
4758 sys .stdout , sys .stderr = stdout_ , stderr_
4859
4960 errors += [er for er in err .splitlines () if er and "<string>" not in er ]
5061
5162 env .let ('l:traceback' , errors [2 :])
52- env .let ('l:output' , [s for s in output .split ('\n ' ) if s ])
63+ env .let ('l:output' , [s for s in output .split ('\n ' )])
5364
5465
5566def __prepare_lines (line1 , line2 ):
0 commit comments