diff -ur v1/argmnt.py v2/argmnt.py --- v1/argmnt.py 2018-10-12 22:26:51.000000000 +0900 +++ v2/argmnt.py 2018-10-13 12:32:24.000000000 +0900 @@ -108,6 +108,12 @@ def get_o_rect(o): return get_frm_rect(o) if frm_visible(o) else get_tx_rect(o) + def get_o_rects(o): + rects = [ get_tx_rect(o) ] + if frm_visible(o): + rects += rect.frame_rects( get_frm_rect(o) ) + return rects + def get_atts(o, buf): if o == e.sel: if e.mode in ('sel', 'move', 'frm_align'): @@ -185,8 +191,8 @@ draw_r2(bak, r) def get_o_under_cursor(): - for o in lst: - if rect.in_rect( e.cur, get_o_rect(o) ): + for o in reversed(lst): + if rect.p_in_rects( e.cur, get_o_rects(o) ): return o return None @@ -317,7 +323,7 @@ return call( o.get(ret), k ) if key.is_ok(k): return call( o.get('ok'), k ) - if key.allow(k) in 'udlr': + if key.is_allow(k): return call( o.get('allow'), k ) return None @@ -401,8 +407,32 @@ s = nkf.cvt(s, nkf_opt) nkf.put_stdout(s + '\n') +def help(): + msg = [ + 'Usage: {} [-txt] [-i] [-o enc] yaml_file', + " yaml_file == '-' or None, use stdin", + ' -txt : result txt to stdout', + ' update yaml data to stdout', + ' -i : in place yaml_file (over write)', + ] + sys.stderr.write( '\n'.join(msg) + '\n' ) + sys.exit(0) + if __name__ == "__main__": - (s, nkf_opt) = nkf.to_str( nkf.get_stdin() ) + if opt.index('-h') >= 0: + help() + + argv = opt.not_opt_argv( ['-o'], ['-txt', '-i', '-h'] ) + fn_i = argv.pop(0) if argv else '-' + + def f_read(fn): + f = open(fn, 'r') + b = f.read() + f.close() + return b + + b = nkf.get_stdin() if fn_i == '-' else f_read(fn_i) + (s, nkf_opt) = nkf.to_str(b) lst = yaml.load(s) y = 0 @@ -426,5 +456,12 @@ lst = list( map( cvt_data_save, lst ) ) u8 = yaml.dump( lst, default_flow_style=False, allow_unicode=True, encoding='utf-8' ) - nkf.put_stdout( nkf.cvt(u8, nkf_opt) if nkf_opt != '-u' else u8 ) + b = nkf.cvt(u8, nkf_opt) if nkf_opt != '-u' else u8 + + if fn_i != '-' and opt.index('-i') >= 0: + f = open(fn_i, 'w') + f.write(b) + f.close() + else: + nkf.put_stdout(b) # EOF diff -ur v1/key.py v2/key.py --- v1/key.py 2018-10-11 23:32:50.000000000 +0900 +++ v2/key.py 2018-10-13 12:32:24.000000000 +0900 @@ -32,7 +32,7 @@ [ 'pu', 'pd', 'pl', 'pr' ], [ esc('5~'), esc('6~'), esc('8~'), esc('7~') ], # allow [ chr(0xf6), ctl('v'), ctl('a'), ctl('e') ], # emacs - [ 'b', ' ', '^', '$' ], # less, vi + [ 'b', 'f', '^', '$' ], # less, vi ]] for tbl in tbls: for lst in tbl[1:]: @@ -47,5 +47,6 @@ is_ok = lambda k: k in ('\n', ' ') is_cancel = lambda k: k in ( chr(0x1b) ) +is_allow = lambda k: allow(k) != '' # EOF diff -ur v1/rect.py v2/rect.py --- v1/rect.py 2018-10-12 22:19:16.000000000 +0900 +++ v2/rect.py 2018-10-13 12:32:24.000000000 +0900 @@ -50,6 +50,12 @@ p2 = p_sub( p2, (1, 1) ) return in_rect(p, ro) and in_rect(p2, ro) +def p_in_rects(p, rects): + for r in rects: + if in_rect(p, r): + return True + return False + def frame_rects(r): (x, y, w, h) = r return [