
On Thu, Aug 02, 2007 at 06:03:51PM +0200, Andrea Rossato wrote:
Hi,
Hi, as I said is not finished yet: the completion is not working properly. Completions show up, but by pressing Tab the first one will be selected and... well give it a try. A description: basically it is a library for writing prompts. You need to use mkXPrompt with the configuration (a default one is provided), a prompt type, for which you have to declare a type and make it an instance of the XPrompt class, by defining a showXPrompt method (will be used to print the prompt). The completion function is just a String -> IO [String] function. You can used the ones provided by the readline bindings (such as in ShellPrompt) or you can write your own. You can also use mkComplFunFromList: just feed it with a list of possible completion. Have alook at XMonadPrompt or SshPrompt to see how. Completions: the prompt will try to complete each word with the same completion function. This could be changed: giving a list of function, a map so that the function can be chosen with regard to the previous word... I don't know. If that is really going to be needed I can study the problem. History: no history so far, but there will be history support real soon: we need to write the history to a file, though. TODO: finish the completion stuff add history support, clean the code (see below). Aesthetics: the code is quite ugly I know. Actually I thought it was going to be easier to write a prompt. It is not, after all. As you see I'm simple minded: just a huge StateT. At first I was puzzled (actually I still am): I did not know whether I should write a stand alone application or not. The ugly style is also due to the fact that till now I did not take a decision. probably the code could be broken down to smaller pieces, providing useful modules for other kind of stuff. But I don't know, if this is useful after all. Just a final word, dedicated to Tuomo, who is not very popular among the free and open source software communities, lately. It was thank to Tuomo that I discovered Haskell. At first I was exposed to darcs, which Tuomo used for developing Ion, but I didn't care that much, since usable darcs binaries can be easily found. Later I discovered Riot and I felt intrigued by that language: I could almost understand where the code was headed, but I just couldn't read it. It was a real challenge and I took it seriously: first the SICP classes with a ghci prompt under my fingers and then at least a couple of tutorials... I needed to write to understand...;-) And so, after a month and a half of deep study I started hacking the ContactManager that comes as an example of hscurses usage. It's there, I think, that I pick up this ugly style ...;-) And now, a year after, I'm here writing for myself a Ion substitution. Thanks to Tuomo, once again. Have fun. Andrea