The recent evolution of utop, lambda-term, zed and underneath projects

Hi, dear OCaml guys! We’ve been keeping quiet for more than one year though utop, lambda-term, zed and some related projects were still evolving during the period of time. This is because of two reasons:

  1. The new feature had nothing to do with the fields where most OCaml developers are working on:

    Recognizing, editing, fuzzy searching for Character Variation(mainly for ancient CJK characters).

    Nevertheless, the new feature brought us a good side effect – the long-existing Issue with asian charset was resolved. UTop users will notice the refinement naturally, so no announcement was needed.

  2. I didn’t deem the first few new editions of zed 2 and lambda-term 2 stable enough.

3.0 era

This time, we are entering zed 3, lambda-term 3 era. The features introduced since zed 2, lambda-term 2 are quite stable now and the new feature coming to us will have a bit more impact, especially to vim users. So it’s worthwhile to draft an announcement:

VI Editing Mode

OCaml guys, hope you enjoy this.

List of notable changes:

  • zed 2:

    • wide, combined glyph(Character Variation, IPA, CJK …)
    • add wanted_column support for wide width character
  • lambda-term 2:

    • wide, combined glyph(Character Variation, IPA, CJK …)
    • add horizontal scrolling support for wide width character
  • zed 3:

    • add new actions for convenience
  • lambda-term 3:

    • LTerm_read_line: add initial support for vi editing mode:
    • motions:
      • h l 0 ^ $
      • j k gg G
      • w W e E b B ge gE
      • f F t T
      • aw iw aW iW
      • include or inner ( ), [ ], { }, < >, ’ and "
      • generic quote: aq? iq? where ? could be any character
      • bracket matching: jump back and forth between matched brackets
    • delete, change, yank with motions
    • paste: p P
    • line joining: J
  • utop 2.5

    • #use_output directive

for a full list of the changes, please visit the homepages of each project.

Projects underneath:

  • charInfo_width: Determine column width for a character
  • mew & mew_vi: Modal editing witch & Its VI interpreter complement. In a word, modal editing engine generators.

What’s next

VI Editing Mode

  1. Visual mode
  2. register support and more vi compatible


We’ve recorded more then 100 thousand entries about the structure of CJK characters, what does a character consist of, how does the sub-assemblies glue together etc. And as a complement to charInfo_width, we may release a new project called charInfo_structure :wink: