Created
September 12, 2010 03:07
-
-
Save lsparrish/575798 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with strings' | |
with quotes' | |
{ | |
create str0 512 allot | |
create str1 512 allot | |
: NewCompare | |
[ toLower dup getLength 1+ str0 swap copy ] dip | |
toLower dup getLength 1+ str1 swap copy | |
str0 str1 default: compare ; | |
&NewCompare is compare | |
} | |
WITHOUT WITHOUT | |
WITH Quotes' | |
: alias D' DUP @D->CLASS [ @D->XT : , ` ; ] DIP RECLASS ; | |
WITHOUT | |
ALIAS GetLength StrLen | |
CHAIN: Buffer' | |
{{ | |
: buffer TIB ; | |
buffer VARIABLE: pointer | |
: CleanEnding 0 @pointer ! ; | |
---REVEAL--- | |
: PutToBuffer @pointer ! pointer ++ CleanEnding ; | |
: GetFromBuffer pointer -- @pointer @ CleanEnding ; | |
: EndOfBuffer REPEAT @pointer @ 0; pointer ++ AGAIN ; | |
: SizeOfBuffer @pointer buffer - ; | |
: EmptyBuffer buffer !pointer CleanEnding ; | |
}} | |
;CHAIN | |
WITH Buffer' WITH Quotes' WITH Strings' | |
CHAIN: TabCompletion' | |
{{ | |
VARIABLE completions 100 ALLOT | |
completions dup ! | |
: AddToCompletions completions ++ @completions ! ; | |
: GetFromCompletions @completions @ completions -- ; | |
: NumOfCompletions @completions completions - ; | |
: FindCompletions LAST REPEAT @ 0; | |
DUP D->NAME TIB GETLENGTH 0 SWAP GETSUBSET | |
TIB COMPARE [ DUP AddToCompletions ] IFTRUE AGAIN ; | |
: ShowCompletions completions NumOfCompletions | |
[ GetFromCompletions D->NAME TYPE SPACE ] LOOP ; | |
: FinishCompletion NumOfCompletions 1 = | |
[ GetFromCompletions D->NAME TIB OVER GETLENGTH 1+ COPY EndOfBuffer ] | |
[ ShowCompletions ] IF ; | |
VARIABLE delimiter | |
: TestDelimiter @delimiter = ; | |
: TestTrigger 27 = ; | |
: DoTrigger FindCompletions FinishCompletion CR TIB TYPE ; | |
---REVEAL--- | |
: accept ( "- ) !delimiter EmptyBuffer REPEAT | |
KEY DUP TestDelimiter NOT 0; DROP | |
DUP TestTrigger [ DoTrigger ] [ DUP EMIT PutToBuffer ] IF AGAIN ; | |
}} | |
;CHAIN | |
WITHOUT WITHOUT WITHOUT | |
WITH TabCompletion' | |
: foo 32 ACCEPT TIB TYPE ; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment