From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: ** X-Spam-Status: No, score=2.3 required=5.0 tests=AWL,DNS_FROM_RFC_ABUSE, DNS_FROM_SECURITYSAGE,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id CA727BBAF for ; Mon, 3 Nov 2008 15:15:42 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsBAICWDklDWxLCbmdsb2JhbACBdpIgPqwchQqDboNS X-IronPort-AV: E=Sophos;i="4.33,536,1220220000"; d="scan'208";a="31060174" Received: from ip67-91-18-194.z18-91-67.customer.algx.net (HELO server1.bertec.net) ([67.91.18.194]) by mail4-smtp-sop.national.inria.fr with ESMTP; 03 Nov 2008 15:15:42 +0100 Received: from kuba.bertec.net (kuba.bertec.net [192.168.2.16]) by server1.bertec.net (Postfix) with ESMTP id 4B2B4105761 for ; Mon, 3 Nov 2008 09:15:40 -0500 (EST) From: Kuba Ober To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] What does Jane Street use/want for an IDE? What about you? Date: Mon, 3 Nov 2008 10:15:38 -0400 User-Agent: KMail/1.9.10 References: <200810200919.41561.ober.14@osu.edu> <200811010141.55282.jon@ffconsultancy.com> In-Reply-To: <200811010141.55282.jon@ffconsultancy.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200811030915.39597.ober.14@osu.edu> X-Spam: no; 0.00; emacs:01 ocaml:01 ocaml's:01 lexer:01 parser:01 ocaml:01 parser:01 bindings:01 iirc:01 gtk:01 gtk:01 reimplement:01 bindings:01 pointer:01 pointer:01 On Friday 31 October 2008, Jon Harrop wrote: > On Monday 20 October 2008 14:19:40 Kuba Ober wrote: > > what do you guys use for your development environment? > > I use Emacs but I hate it. :) > > What would be the minimal set of functionality that would make you happy > > for an IDE? > > . Written in OCaml using OCaml's own lexer and parser to save effort and > make it possible for others to help develop it without losing their hair. That's perhaps possible in the longer run by linking some OCaml code in. Right now Camelia has its own parser. I could port Camelia to OCaml if someone would first develop Qt bindings for OCaml that would allow me to do in OCaml what I'm doing in C++ so far ;) That's an undertaking bigger than Camelia itself. I will not develop for gtk-anything as lost feature parity with Qt right around the time when Qt 3 came around, IIRC. Qt 4 is leaps and bounds above anything gtk provides, in terms of integrated functionality. This is not meant as a flamebait, I believe it to be an accurate statement of fact. I wish I could use gtk since it's easier to bind with, but I'd end up having to either reimplement parts of Qt, or have to deal with lots of 3rd party libraries, each from a different author who had a different API design mindset. Qt takes care of those integration issues internally and provides a relatively self-consistent API -- this saves a metric crapton of time (I use the darn thing). > . A proper GUI (where options can be set using the mouse). Check ;) > . Mainstream key bindings, e.g. CTRL+S for save. Check ;) > . Jump to definition. Easy to do -- goes on my to-do list. > . Graphical throwback of the type of the subexpression under the mouse > pointer or in the current selection. Camelia does that. > . Graphical throwback of the documentation related to what is under the > mouse pointer. Easy to do -- goes on my to-do list. > . Graphical throwback of errors and, in the case of type errors, optional > highlighting of previous unification points. Camelia does that. > . Refactoring, e.g. changing the name of a definition in all occurrences. Perhaps in version 2.2 ;) > . Autocompletion that handles structural types in LablGTK code and > operators, i.e. when the user types "+" present options for int "+", float > "+.", num "+/" and any other operators that begin with "+". Version 2.2 ;) > . Represent an OCaml project as a tree of modules that happen to have the > first level stored as files. Level 1 is easy to do, but what's on the second and deeper levels in your idea? > . Performant enough to handle projects with hundreds of thousands of lines > of code. Shouldn't be a problem, perhaps as long as you don't put all the lines in one file ;) In the long run I may switch to using QCodeEdit from edyuk, which is supposedly better performing than QPlainTextEdit. This is just hearsay, and anyway before I can switch editors I have to refactor a lot of code to move OCaml-specific functionality out of the editor widget itself. Since I have to do this refactoring whether I switch editors or not, just to make the code saner, the editor change decision can wait without undue consequences (or so I think). > . Parallel so seven of my cores aren't idle while I'm waiting. Everything is done in one thread right now, but over time it can be spread out. Implementing this properly requires refectoring of the code first: right now Camelia is in no shape to attempt that. After 2.0 release there will be time to attack that. > . The ability to hide the tail of +., +/ etc. operators to make numerical > code more readable. Easy to do, can go in for 2.0. > > What are killer features you dream of? > > Only one: an interactive top-level where output is presented via graphical > elements (e.g. a scene graph) and is no longer limited to just ASCII text. > This would give OCaml the graphical capabilities of Mathematica's > awesome "notebook" front-end. How would you like that to work? Do you think about something like ddd, or a different approach? Processing toplevel output is an issue nicely orthogonal to editor and knowledgebase, so this doesn't block on the major refactoring that has to happen on the editor end. Cheers, Kuba