--HG--
branch : pmacs2
This commit is contained in:
Erik Osheim 2009-10-21 17:53:34 -04:00
commit c64d639dee
3 changed files with 25 additions and 19 deletions

View File

@ -1222,9 +1222,8 @@ if __name__ == "__main__":
# ok, now run our app
try:
d = {'jump_to_line': opts.goto, 'init_mode': opts.mode,
'init_cmds': opts.cmds}
curses.wrapper(run_app, buffers, **d)
curses.wrapper(run_app, buffers, jump_to_line=opts.goto,
init_mode=opts.mode, init_cmds=opts.cmds)
err = 0
except:
# restore terminal state before printing an error

View File

@ -3,7 +3,9 @@ import re
import StringIO
import sys
import traceback
import completer
import util
from method import Method
import method.move
import mode.mini
@ -66,23 +68,12 @@ class ConsoleExec(Method):
limit = min([w.width for w in b.windows]) - len(PAD)
if output:
newlines = []
lines = []
for line in output.split('\n'):
i = 0
while i + limit < len(line):
j = limit
while j > 0 and line[i + j] != ' ':
j -= 1
if j == 0:
newlines.append(PAD + line[i:i + limit])
i += limit
else:
newlines.append(PAD + line[i:i + j])
i += j + 1
newlines.append(PAD + line[i:])
assert newlines[-1] == PAD
newlines[-1] = ''
b.insert_lines(b.get_buffer_end(), newlines, force=True)
lines.extend([PAD + l for l in util.wrap_lines(line, limit)])
if lines[-1] == PAD:
lines[-1] = ''
b.insert_lines(b.get_buffer_end(), lines, force=True)
for w2 in b.windows:
w2.goto_end(force=True)

16
util.py
View File

@ -152,3 +152,19 @@ def communicate(cmd, stdin=None, stderr=False, shell=True):
out, err = pipe.communicate(input=stdin)
result = pipe.wait()
return result, decode(out or ''), decode(err or '')
def wrap_lines(s, limit):
'''given a string, return an iterator of wrapped lines'''
i = 0
while i + limit < len(s):
j = limit
while j > 0 and s[i + j] != ' ':
j -= 1
if j == 0:
yield s[i:i + limit]
i += limit
else:
yield s[i:i + j]
i += j + 1
if s[i:]:
yield s[i:]