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=1.0 required=5.0 tests=AWL,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 discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 2E92CBC0A for ; Wed, 14 Mar 2007 18:10:53 +0100 (CET) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.186]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l2EHAqkX029428 for ; Wed, 14 Mar 2007 18:10:52 +0100 Received: by nf-out-0910.google.com with SMTP id a25so286294nfc for ; Wed, 14 Mar 2007 10:10:52 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=eJ68jPRFXNX/TI8nK1sHd7hfZaobff2gzMOwcw8mPnlotuNVRh4NcxdkAACmTGOuwnE6H6rA4yde/HKvIKigh9cdRJiMZWhaWQL369aj9IK+t5ztI+QfY67PJQoVM5ScXuduli4y6xFSFesvp5VIZZfDfFviv0c0tdtybMDolPk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=k2SjZA23sdVXXV2rd4kjTWDzds5ZfIF9REgFHVYBTvu2ngy6gGCHnCr4mYfdGJqyjty4xAyRUfQ+36cv6uGB5PqRjsHhXb3nWkgaVf1sgUANp3hujfzgAk0su5unA1pNqKymenD/HAQJKCO9zP+mzofVizHudFl/yV2c5WGLmsY= Received: by 10.78.124.13 with SMTP id w13mr1320036huc.1173892251068; Wed, 14 Mar 2007 10:10:51 -0700 (PDT) Received: by 10.82.136.14 with HTTP; Wed, 14 Mar 2007 10:10:50 -0700 (PDT) Message-ID: <4a708d20703141010x54fffb3bve4bb1f1eaa214e85@mail.gmail.com> Date: Wed, 14 Mar 2007 18:10:50 +0100 From: "Lukasz Stafiniak" To: caml Subject: Postulates for OCaml Development Environment (under Emacs) MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-j-chkmail-Score: MSGID : 45F82C9C.000 on discorde : j-chkmail score : X : 0/20 1 0.000 -> 1 X-Miltered: at discorde with ID 45F82C9C.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; lukasz:01 ocaml:01 emacs:01 camlp:01 emacs:01 buffer:01 failwith:01 failwith:01 c-c:01 ocamldoc:01 syntax:01 camlp:01 unifying:01 lukasz:01 rec:01 I propose some brain-storming on IDE issues. 1. Parse with Camlp4 for all functionality: indentation and Emacs Code Browser-like features. Augmented with information from .annot files. 2. Use heuristics to repair unfinished code, like here (example should be better, I'm sorry): replace in the background (not in the buffer) let rec fib n = if then 1 else fib(n-1) + ;; with let x01 = ref None;; let x02 = ref None;; let f01() = match !x01 with Some x -> x | None -> failwith "x01";; let f02() = match !x02 with Some x -> x | None -> failwith "x02";; let rec fib n = if (f01()) then 1 else fib(n-1) + (f02());; Report types for unfinished code as well with C-c C-t. 3. Follow-to-definition and show-where-used for identifiers. 4. Customize `allout-mode' to use ocamldoc syntax. 5. Did I mention context-aware complete? Based on the AST returned by Camlp4 together with .annot files. Perhaps unifying types to get a clean list of candidates. Best Regards, Lukasz