X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=ReadLine.icl;h=07b90acc85c9faedc4ee3f0a01c43fe7c9197ad2;hb=251d586b62c3cc188233c85eb21290c2bd23c104;hp=b377371d0ad228f659d105e10e78ecfdb1e6e4f2;hpb=b5a37e9821e01208e7186c1f4b660892027e806f;p=CleanReadLine.git diff --git a/ReadLine.icl b/ReadLine.icl index b377371..07b90ac 100644 --- a/ReadLine.icl +++ b/ReadLine.icl @@ -45,7 +45,30 @@ historyGetHistoryState e historySetHistoryState :: !HistoryState !*env -> !*env -historySetHistoryState hs e = abort "Not Implemented" +historySetHistoryState {entries,offset,flags} e +# e = initNewHistoryState offset flags (length entries) e +# e = setItems entries 0 e += commit e + where + initNewHistoryState :: !Int !Int !Int !*env -> !*env + initNewHistoryState o f l e = code { + ccall cleanInitNewHistoryState "III:V:A" + } + setItems :: ![HistoryItem] !Int !*env -> !*env + setItems [] _ e = e + setItems [x:xs] i e + # e = setItem i x.line x.timestamp e + = setItems xs (i+1) e + + setItem :: !Int !String !String !*env -> !*env + setItem i l t e = code { + ccall cleanSetNewHistoryEntry "ISS:V:A" + } + + commit :: !*env -> !*env + commit e = code { + ccall cleanCommitSetHistory ":V:A" + } //History List Management addHistory :: !String !*env -> !*env