tf5-5.0beta8/.git/
tf5-5.0beta8/.git/info/
tf5-5.0beta8/.git/logs/
tf5-5.0beta8/.git/logs/refs/heads/
tf5-5.0beta8/.git/objects/00/
tf5-5.0beta8/.git/objects/01/
tf5-5.0beta8/.git/objects/04/
tf5-5.0beta8/.git/objects/05/
tf5-5.0beta8/.git/objects/07/
tf5-5.0beta8/.git/objects/09/
tf5-5.0beta8/.git/objects/0a/
tf5-5.0beta8/.git/objects/0c/
tf5-5.0beta8/.git/objects/0e/
tf5-5.0beta8/.git/objects/12/
tf5-5.0beta8/.git/objects/13/
tf5-5.0beta8/.git/objects/14/
tf5-5.0beta8/.git/objects/16/
tf5-5.0beta8/.git/objects/17/
tf5-5.0beta8/.git/objects/19/
tf5-5.0beta8/.git/objects/1c/
tf5-5.0beta8/.git/objects/1d/
tf5-5.0beta8/.git/objects/1e/
tf5-5.0beta8/.git/objects/1f/
tf5-5.0beta8/.git/objects/20/
tf5-5.0beta8/.git/objects/21/
tf5-5.0beta8/.git/objects/23/
tf5-5.0beta8/.git/objects/27/
tf5-5.0beta8/.git/objects/29/
tf5-5.0beta8/.git/objects/2a/
tf5-5.0beta8/.git/objects/2b/
tf5-5.0beta8/.git/objects/2f/
tf5-5.0beta8/.git/objects/30/
tf5-5.0beta8/.git/objects/33/
tf5-5.0beta8/.git/objects/34/
tf5-5.0beta8/.git/objects/35/
tf5-5.0beta8/.git/objects/39/
tf5-5.0beta8/.git/objects/3c/
tf5-5.0beta8/.git/objects/3d/
tf5-5.0beta8/.git/objects/3f/
tf5-5.0beta8/.git/objects/40/
tf5-5.0beta8/.git/objects/41/
tf5-5.0beta8/.git/objects/42/
tf5-5.0beta8/.git/objects/44/
tf5-5.0beta8/.git/objects/46/
tf5-5.0beta8/.git/objects/47/
tf5-5.0beta8/.git/objects/48/
tf5-5.0beta8/.git/objects/4a/
tf5-5.0beta8/.git/objects/4d/
tf5-5.0beta8/.git/objects/4f/
tf5-5.0beta8/.git/objects/53/
tf5-5.0beta8/.git/objects/54/
tf5-5.0beta8/.git/objects/58/
tf5-5.0beta8/.git/objects/5b/
tf5-5.0beta8/.git/objects/5c/
tf5-5.0beta8/.git/objects/5e/
tf5-5.0beta8/.git/objects/5f/
tf5-5.0beta8/.git/objects/60/
tf5-5.0beta8/.git/objects/61/
tf5-5.0beta8/.git/objects/62/
tf5-5.0beta8/.git/objects/63/
tf5-5.0beta8/.git/objects/66/
tf5-5.0beta8/.git/objects/67/
tf5-5.0beta8/.git/objects/6c/
tf5-5.0beta8/.git/objects/6e/
tf5-5.0beta8/.git/objects/72/
tf5-5.0beta8/.git/objects/73/
tf5-5.0beta8/.git/objects/75/
tf5-5.0beta8/.git/objects/77/
tf5-5.0beta8/.git/objects/7a/
tf5-5.0beta8/.git/objects/7b/
tf5-5.0beta8/.git/objects/7c/
tf5-5.0beta8/.git/objects/7e/
tf5-5.0beta8/.git/objects/7f/
tf5-5.0beta8/.git/objects/81/
tf5-5.0beta8/.git/objects/84/
tf5-5.0beta8/.git/objects/86/
tf5-5.0beta8/.git/objects/87/
tf5-5.0beta8/.git/objects/88/
tf5-5.0beta8/.git/objects/8b/
tf5-5.0beta8/.git/objects/8c/
tf5-5.0beta8/.git/objects/8f/
tf5-5.0beta8/.git/objects/91/
tf5-5.0beta8/.git/objects/93/
tf5-5.0beta8/.git/objects/96/
tf5-5.0beta8/.git/objects/97/
tf5-5.0beta8/.git/objects/99/
tf5-5.0beta8/.git/objects/9a/
tf5-5.0beta8/.git/objects/9b/
tf5-5.0beta8/.git/objects/9c/
tf5-5.0beta8/.git/objects/9d/
tf5-5.0beta8/.git/objects/9e/
tf5-5.0beta8/.git/objects/a1/
tf5-5.0beta8/.git/objects/a3/
tf5-5.0beta8/.git/objects/a4/
tf5-5.0beta8/.git/objects/a6/
tf5-5.0beta8/.git/objects/a7/
tf5-5.0beta8/.git/objects/a8/
tf5-5.0beta8/.git/objects/a9/
tf5-5.0beta8/.git/objects/ab/
tf5-5.0beta8/.git/objects/ac/
tf5-5.0beta8/.git/objects/ae/
tf5-5.0beta8/.git/objects/b1/
tf5-5.0beta8/.git/objects/b2/
tf5-5.0beta8/.git/objects/b3/
tf5-5.0beta8/.git/objects/b7/
tf5-5.0beta8/.git/objects/b9/
tf5-5.0beta8/.git/objects/bb/
tf5-5.0beta8/.git/objects/bc/
tf5-5.0beta8/.git/objects/bd/
tf5-5.0beta8/.git/objects/bf/
tf5-5.0beta8/.git/objects/c0/
tf5-5.0beta8/.git/objects/c1/
tf5-5.0beta8/.git/objects/c2/
tf5-5.0beta8/.git/objects/c3/
tf5-5.0beta8/.git/objects/c5/
tf5-5.0beta8/.git/objects/c7/
tf5-5.0beta8/.git/objects/ca/
tf5-5.0beta8/.git/objects/ce/
tf5-5.0beta8/.git/objects/d1/
tf5-5.0beta8/.git/objects/d3/
tf5-5.0beta8/.git/objects/d4/
tf5-5.0beta8/.git/objects/d5/
tf5-5.0beta8/.git/objects/d8/
tf5-5.0beta8/.git/objects/d9/
tf5-5.0beta8/.git/objects/dc/
tf5-5.0beta8/.git/objects/dd/
tf5-5.0beta8/.git/objects/e1/
tf5-5.0beta8/.git/objects/e4/
tf5-5.0beta8/.git/objects/e5/
tf5-5.0beta8/.git/objects/e6/
tf5-5.0beta8/.git/objects/e7/
tf5-5.0beta8/.git/objects/e8/
tf5-5.0beta8/.git/objects/ea/
tf5-5.0beta8/.git/objects/eb/
tf5-5.0beta8/.git/objects/ed/
tf5-5.0beta8/.git/objects/ee/
tf5-5.0beta8/.git/objects/ef/
tf5-5.0beta8/.git/objects/f0/
tf5-5.0beta8/.git/objects/f4/
tf5-5.0beta8/.git/objects/f5/
tf5-5.0beta8/.git/objects/f6/
tf5-5.0beta8/.git/objects/f8/
tf5-5.0beta8/.git/objects/f9/
tf5-5.0beta8/.git/objects/fa/
tf5-5.0beta8/.git/objects/fb/
tf5-5.0beta8/.git/objects/fc/
tf5-5.0beta8/.git/objects/fd/
tf5-5.0beta8/.git/refs/heads/
tf5-5.0beta8/.git/refs/tags/
tf5-5.0beta8/autom4te.cache/
tf5-5.0beta8/macos/
tf5-5.0beta8/unix/
tf5-5.0beta8/win32/
;;; Commands that are useful when bound to keys.

;;; /kb_backward_kill_line    delete from cursor to beginning of line
;;; /kb_kill_word	      delete from cursor to end of punctuated word
;;; /kb_backward_kill_word    delete from cursor to start of punctuated word
;;; /kb_capitalize_word	      capitialize current word
;;; /kb_downcase_word	      convert current word to lowercase
;;; /kb_upcase_word	      convert current word to uppercase
;;; /kb_transpose_chars	      swap current character with previous character
;;; /kb_last_argument	      insert last word of previous line
;;; /kb_expand_line	      /eval and replace current line
;;; /kb_goto_match	      move cursor to matching parenthesis or bracket
;;; /kb_up_or_recallb	      up within logical line or recallb to previous line
;;; /kb_down_or_recallf	      down within logical line or recallf to next line

/loaded __TFLIB__/kbfunc.tf

;;; Don't give the warning if this file is reloaded
/purge ~hook_redef_dokey

/def -i -ag -mregexp -h'NOMACRO ^key_' no_named_key_macro = \
    /echo -p %% The key "@{B}%PR@{n}" is undefined; \
	you may use "@{B}/def key_%PR = <commands>@{n}" to define it.  \
	See "@{B}/help keys@{n}".

;;; /dokey functions.

/def -i dokey_bspc	= /@test kbdel(kbpoint() - (kbnum?:1))
/def -i dokey_bword	= /@test regmatch("[^ ]* *$$", kbhead()), \
			        kbdel(kbpoint() - strlen({P0}))
/def -i dokey_dch	= /@test kbdel(kbpoint() + (kbnum?:1))
/def -i dokey_deol	= /@test kbdel(kblen())
/def -i dokey_dline	= /@test kbgoto(0), kbdel(kblen())
/def -i dokey_down	= /@test kbgoto(kbpoint() + wrapsize * (kbnum?:1))
/def -i dokey_dword	= /kb_kill_word
/def -i dokey_end	= /@test kbgoto(kblen())
/def -i dokey_home	= /@test kbgoto(0)
/def -i dokey_left	= /@test kbgoto(kbpoint() - (kbnum?:1))
/def -i dokey_lnext	= /dokey lnext
/def -i dokey_newline	= /dokey newline
/def -i dokey_pause	= /dokey pause
/def -i dokey_recallb	= /dokey recallb
/def -i dokey_recallbeg	= /dokey recallbeg
/def -i dokey_recallend	= /dokey recallend
/def -i dokey_recallf	= /dokey recallf
/def -i dokey_redraw	= /dokey redraw
/def -i dokey_right	= /@test kbgoto(kbpoint() + (kbnum?:1))
/def -i dokey_searchb	= /dokey searchb
/def -i dokey_searchf	= /dokey searchf
/def -i dokey_socketb	= /fg -c$[-kbnum?:-1]
/def -i dokey_socketf	= /fg -c$[+kbnum?:1]
/def -i dokey_up	= /@test kbgoto(kbpoint() - wrapsize * (kbnum?:1))
/def -i dokey_wleft	= /test kbgoto(kb_nth_word(-(kbnum?:1)))
/def -i dokey_wright	= /test kbgoto(kb_nth_word(kbnum?:1))
/def -i dokey_page	= /test morescroll(winlines() * (kbnum?:1))
/def -i dokey_pageback	= /test morescroll(-winlines() * (kbnum?:1))
/def -i dokey_hpage	= /test morescroll(winlines() * (kbnum?:1) / 2)
/def -i dokey_hpageback	= /test morescroll(-winlines() * (kbnum?:1) / 2)
/def -i dokey_line	= /test morescroll(kbnum?:1)
/def -i dokey_lineback	= /test morescroll(-(kbnum?:1))
/def -i dokey_flush	= /dokey flush
/def -i dokey_selflush	= /dokey selflush

/def -i dokey_pgup	= /dokey_pageback
/def -i dokey_pgdn	= /dokey_page


/def -i kb_backward_kill_line = /@test kbdel(0)

/def -i kb_nth_word = \
    /let _i=%{1-1}%; \
    /let point=$[kbpoint()]%; \
    /while (_i<0) /@test point:=kbwordleft(point), ++_i%; /done%; \
    /while (_i>0) /@test point:=kbwordright(point), --_i%; /done%; \
    /return point

/def -i kb_kill_word = /@test kbdel(kb_nth_word(kbnum?:1))
/def -i kb_backward_kill_word = /@test kbdel(kb_nth_word(-(kbnum?:1)))

/def -i kb_capitalize_word = \
    /let _old_insert=$[+insert]%;\
    /set insert=0%;\
    /repeat -S $[kbnum>0?+kbnum:1] \
	/@test kbgoto(kbwordright()), kbgoto(kbwordleft()) %%;\
	/let end=$$[kbwordright()]%%;\
	/@test input(toupper(substr(kbtail(), 0, 1))) %%;\
	/@test input(tolower(substr(kbtail(), 0, end - kbpoint()))) %;\
    /set insert=%{_old_insert}

/def -i kb_downcase_word = \
    /let _old_insert=$[+insert]%;\
    /set insert=0%;\
    /repeat -S $[kbnum>0?+kbnum:1] \
	/@test input(tolower(substr(kbtail(), 0, kbwordright() - kbpoint()))) %;\
    /set insert=%{_old_insert}

/def -i kb_upcase_word = \
    /let _old_insert=$[+insert]%;\
    /set insert=0%;\
    /repeat -S $[kbnum>0?+kbnum:1] \
	/@test input(toupper(substr(kbtail(), 0, kbwordright() - kbpoint()))) %;\
    /set insert=%{_old_insert}

/def -i kb_transpose_chars = \
    /if ( kbpoint() <= 0 ) /beep 1%; /return 0%; /endif%; \
    /let _old_insert=$[+insert]%;\
    /set insert=0%;\
;   Can't use /dokey_left because it would use %kbnum.
    /@test kbgoto(kbpoint() - (kbpoint()==kblen()) - 1)%; \
    /@test input(strcat(substr(kbtail(),1,kbnum>0?kbnum:1), \
	substr(kbtail(),0,1)))%; \
    /set insert=%{_old_insert}

/def -i kb_last_argument = \
    /input $(/last $(/recall -i - -$[1 + (kbnum>0?kbnum:1)]))

/def -i kb_expand_line = \
    /eval /grab $(/recall -i 1)

/def -i kb_goto_match = \
    /let _match=$[kbmatch()]%; \
    /@test (_match < 0) ? beep() : kbgoto(_match)

/def -i kb_collapse_space = \
    /if (regmatch("^  +", kbtail())) \
        /@test kbdel(kbpoint() + strlen({P0}) - 1)%; \
    /endif%; \
    /if (kbtail() =/ " *" & regmatch(" +$", kbhead())) \
        /@test kbdel(kbpoint() - strlen({P0}))%; \
    /endif

/def -i kb_toggle_limit = \
    /if /limit%; /then /unlimit%; /else /relimit%; /endif

/def -i kb_up_or_recallb = \
    /if (kbpoint() < wrapsize) \
	/dokey_recallb%; \
    /else \
	/dokey_up%; \
    /endif

/def -i kb_down_or_recallf = \
    /if (mod(kbpoint(), wrapsize) == mod(kblen(), wrapsize)) \
	/dokey_recallf%; \
    /else \
	/dokey_down%; \
    /endif

/eval /def -ip%maxpri -mregexp -h'REDEF macro (dokey|kb)_' ~hook_redef_dokey = \
    /echo -e %%% Warning: redefining the %%2 macro is not recommended; \
	instead, you should probably redefine the /key_* macro that calls it.  \
	See /help keys.