Show More
@@ -3381,8 +3381,13 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3381 | 3381 | You can also pass a variable name as an argument, e.g. '%paste foo'. |
|
3382 | 3382 | This assigns the pasted block to variable 'foo' as string, without |
|
3383 | 3383 | dedenting or executing it (preceding >>> and + is still stripped) |
|
3384 | ||
|
3385 | Options | |
|
3386 | ------- | |
|
3384 | 3387 | |
|
3385 |
|
|
|
3388 | -r: re-executes the block previously entered by cpaste. | |
|
3389 | ||
|
3390 | -e: echo the pasted text back to the terminal. | |
|
3386 | 3391 | |
|
3387 | 3392 | IPython statements (magics, shell escapes) are not supported (yet). |
|
3388 | 3393 | |
@@ -3390,7 +3395,7 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3390 | 3395 | -------- |
|
3391 | 3396 | cpaste: manually paste code into terminal until you mark its end. |
|
3392 | 3397 | """ |
|
3393 |
opts,args = self.parse_options(parameter_s,'r |
|
|
3398 | opts,args = self.parse_options(parameter_s,'re',mode='string') | |
|
3394 | 3399 | par = args.strip() |
|
3395 | 3400 | if opts.has_key('r'): |
|
3396 | 3401 | self._rerun_pasted() |
@@ -3398,6 +3403,15 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3398 | 3403 | |
|
3399 | 3404 | text = self.shell.hooks.clipboard_get() |
|
3400 | 3405 | block = self._strip_pasted_lines_for_code(text.splitlines()) |
|
3406 | ||
|
3407 | if opts.has_key('e'): | |
|
3408 | # Echo back to terminal. | |
|
3409 | write = self.shell.write | |
|
3410 | write(block) | |
|
3411 | if not block.endswith('\n'): | |
|
3412 | write('\n') | |
|
3413 | write("## -- End pasted text --\n") | |
|
3414 | ||
|
3401 | 3415 | self._execute_block(block, par) |
|
3402 | 3416 | |
|
3403 | 3417 | def magic_quickref(self,arg): |
@@ -7,6 +7,7 b' import os' | |||
|
7 | 7 | import sys |
|
8 | 8 | import tempfile |
|
9 | 9 | import types |
|
10 | from cStringIO import StringIO | |
|
10 | 11 | |
|
11 | 12 | import nose.tools as nt |
|
12 | 13 | |
@@ -261,9 +262,9 b' class TestMagicRun(object):' | |||
|
261 | 262 | # Multiple tests for clipboard pasting |
|
262 | 263 | def test_paste(): |
|
263 | 264 | |
|
264 | def paste(txt): | |
|
265 | def paste(txt, flags=''): | |
|
265 | 266 | hooks.clipboard_get = lambda : txt |
|
266 | _ip.magic('paste') | |
|
267 | _ip.magic('paste '+flags) | |
|
267 | 268 | |
|
268 | 269 | # Inject fake clipboard hook but save original so we can restore it later |
|
269 | 270 | hooks = _ip.IP.hooks |
@@ -294,9 +295,31 b' def test_paste():' | |||
|
294 | 295 | """) |
|
295 | 296 | yield (nt.assert_equal, user_ns['x'], [1,2,3]) |
|
296 | 297 | yield (nt.assert_equal, user_ns['y'], [1,4,9]) |
|
297 | except: | |
|
298 | pass | |
|
299 | 298 | |
|
300 | # This should be in a finally clause, instead of the bare except above. | |
|
301 | # Restore original hook | |
|
302 | hooks.clipboard_get = original_clip | |
|
299 | # Now, test that paste -r works | |
|
300 | user_ns.pop('x', None) | |
|
301 | yield (nt.assert_false, 'x' in user_ns) | |
|
302 | _ip.magic('paste -r') | |
|
303 | yield (nt.assert_equal, user_ns['x'], [1,2,3]) | |
|
304 | ||
|
305 | # Also test paste -e, by temporarily faking the writer | |
|
306 | w = StringIO() | |
|
307 | writer = _ip.IP.write | |
|
308 | _ip.IP.write = w.write | |
|
309 | code = """ | |
|
310 | a = 100 | |
|
311 | b = 200""" | |
|
312 | try: | |
|
313 | paste(code,'-e') | |
|
314 | out = w.getvalue() | |
|
315 | finally: | |
|
316 | _ip.IP.write = writer | |
|
317 | yield (nt.assert_equal, user_ns['a'], 100) | |
|
318 | yield (nt.assert_equal, user_ns['b'], 200) | |
|
319 | yield (nt.assert_equal, out, code+"\n## -- End pasted text --\n") | |
|
320 | ||
|
321 | finally: | |
|
322 | # This should be in a finally clause, instead of the bare except above. | |
|
323 | # Restore original hook | |
|
324 | hooks.clipboard_get = original_clip | |
|
325 |
General Comments 0
You need to be logged in to leave comments.
Login now