###Todo
+- Check all functions if more maybe's are needed to handle NULL
+- Implement history expansion functions
- Use builtin Maybe if available, otherwise fall back on own Maybe
- Complete history api implementation
- Control over tabcompletion, right now it completes on filenames.
writeHistory :: !String !*env -> (!Bool, !*env)
appendHistory :: !Int !String !*env -> (!Bool, !*env)
historyTruncateFile :: !String !Int !*env -> (!Bool, !*env)
+
+//History Expansion
+historyExpand :: !String !*env -> (!String, !Int, !*env)
+getHistoryEvent :: !String !Int !Int !*env -> (!String, !*env)
+historyTokenize :: !String !*env -> ([String], !*env)
+historyArgExtract :: !Int !Int !String !*env -> (!String, !*env)
historyTruncateFile i s e = code {
ccall cleanWriteHistory "SI:I:A"
}
+
+historyExpand :: !String !*env -> (!String, !Int, !*env)
+getHistoryEvent :: !String !Int !Int !*env -> (!String, !*env)
+historyTokenize :: !String !*env -> ([String], !*env)
+historyArgExtract :: !Int !Int !String !*env -> (!String, !*env)