Not logged in
c2f69bb48c 2010-09-12 charlesch: chain: stringBuffer'
c2f69bb48c 2010-09-12 charlesch: {{
c2f69bb48c 2010-09-12 charlesch:   tib variable: buffer
c2f69bb48c 2010-09-12 charlesch:   @buffer variable: pointer
9af46357c5 2010-09-19 charlesch:   : terminate (  -   ) 0 @pointer ! ;
9af46357c5 2010-09-19 charlesch:   : bs?       ( c-cf ) dup 8 = ;
9af46357c5 2010-09-19 charlesch:   : remove    ( c-   )
9af46357c5 2010-09-19 charlesch:     drop pointer -- @pointer @buffer <if @buffer !pointer then terminate ;
9af46357c5 2010-09-19 charlesch:   : add       ( c-   ) @pointer ! pointer ++ terminate ;
c2f69bb48c 2010-09-12 charlesch: ---reveal---
9af46357c5 2010-09-19 charlesch:   : addToBuffer   ( c-  ) bs? if remove else add then ;
9af46357c5 2010-09-19 charlesch:   : getFromBuffer (  -c ) pointer -- @pointer @ terminate ;
9af46357c5 2010-09-19 charlesch:   : endOfBuffer   (  -a ) repeat @pointer dup @ 0; 2drop pointer ++ again ;
9af46357c5 2010-09-19 charlesch:   : sizeOfBuffer  (  -n ) @pointer @buffer - ;
9af46357c5 2010-09-19 charlesch:   : emptyBuffer   (  -  ) @buffer !pointer terminate ;
9af46357c5 2010-09-19 charlesch:   : setBuffer     ( a-  ) !buffer emptyBuffer ;
c2f69bb48c 2010-09-12 charlesch: }}
c2f69bb48c 2010-09-12 charlesch: ;chain
c2f69bb48c 2010-09-12 charlesch: 
c2f69bb48c 2010-09-12 charlesch: with quotes'
c2f69bb48c 2010-09-12 charlesch: with stringBuffer'
c2f69bb48c 2010-09-12 charlesch: with strings'
c2f69bb48c 2010-09-12 charlesch: 
c2f69bb48c 2010-09-12 charlesch: chain: tabCompletion'
c2f69bb48c 2010-09-12 charlesch: {{
c2f69bb48c 2010-09-12 charlesch:   create completions 100 allot
c2f69bb48c 2010-09-12 charlesch:   completions dup !
c2f69bb48c 2010-09-12 charlesch:   : addCompletion completions ++ @completions ! ;
c2f69bb48c 2010-09-12 charlesch:   : getCompletion @completions @ completions -- ;
c2f69bb48c 2010-09-12 charlesch:   : numCompletions @completions completions - ;
c2f69bb48c 2010-09-12 charlesch:   : findCompletions
c2f69bb48c 2010-09-12 charlesch:     last repeat
c2f69bb48c 2010-09-12 charlesch:       @ 0;
c2f69bb48c 2010-09-12 charlesch:       dup d->name
c2f69bb48c 2010-09-12 charlesch:       tib getLength 0 swap getSubset
c2f69bb48c 2010-09-12 charlesch:       tib compare [ dup addCompletion ] ifTrue
c2f69bb48c 2010-09-12 charlesch:     again ;
c2f69bb48c 2010-09-12 charlesch:   : showCompletions
388bff82d8 2010-09-15       crc:     cr space space completions numCompletions
9af46357c5 2010-09-19 charlesch:     [ getCompletion d->name puts space ] times ;
c2f69bb48c 2010-09-12 charlesch:   : finishCompletion
c2f69bb48c 2010-09-12 charlesch:     numCompletions 0; 1 =
c2f69bb48c 2010-09-12 charlesch:     [ getCompletion d->name tib over getLength 1+ copy endOfBuffer ]
c2f69bb48c 2010-09-12 charlesch:     [ showCompletions ] if ;
c2f69bb48c 2010-09-12 charlesch:   variable delimiter
c2f69bb48c 2010-09-12 charlesch:   : testDelimiter @delimiter = dup [ nip ] ifTrue ;
c2f69bb48c 2010-09-12 charlesch:   : testTrigger 27 = dup [ nip ] ifTrue ;
9af46357c5 2010-09-19 charlesch:   : doTrigger findCompletions finishCompletion cr tib puts drop ;
c2f69bb48c 2010-09-12 charlesch:   : eatLeading ( - ) repeat key dup emit dup @delimiter !if addToBuffer ;then drop again ;
c2f69bb48c 2010-09-12 charlesch:   : newaccept ( "- )
c2f69bb48c 2010-09-12 charlesch:     !delimiter emptyBuffer eatLeading
c2f69bb48c 2010-09-12 charlesch:     repeat
c2f69bb48c 2010-09-12 charlesch:       key dup testDelimiter not 0; drop
c2f69bb48c 2010-09-12 charlesch:       dup testTrigger [ doTrigger ] [ dup emit addToBuffer ] if
c2f69bb48c 2010-09-12 charlesch:     again ;
c2f69bb48c 2010-09-12 charlesch:   ---reveal---
c2f69bb48c 2010-09-12 charlesch:   : start &newaccept &accept :is ;
c2f69bb48c 2010-09-12 charlesch:   : finish &accept :devector ;
c2f69bb48c 2010-09-12 charlesch:   : accept newaccept ;
c2f69bb48c 2010-09-12 charlesch: }}
c2f69bb48c 2010-09-12 charlesch: ;chain
c2f69bb48c 2010-09-12 charlesch: 
c2f69bb48c 2010-09-12 charlesch: global with tabCompletion'
c2f69bb48c 2010-09-12 charlesch: start