page about wowcamldebug
authorStefano Zacchiroli <zack@debian.org>
Wed, 26 Dec 2007 12:13:19 +0000 (13:13 +0100)
committerStefano Zacchiroli <zack@debian.org>
Wed, 26 Dec 2007 12:13:19 +0000 (13:13 +0100)
hacking/software.mdwn
hacking/software/ocaml-http.mdwn
hacking/software/wowcamldebug.mdwn [new file with mode: 0644]
hacking/software/wowcamldebug/wowcamldebug-0.3.tar.gz [new file with mode: 0644]
hacking/software/wowcamldebug/wowcamldebug-screenshot1.png [new file with mode: 0644]
hacking/software/wowcamldebug/wowcamldebug-screenshot2.png [new file with mode: 0644]
hacking/software/wowcamldebug/wowtell.ml [new file with mode: 0644]
local.css

index 69e05ee..3356fa5 100644 (file)
@@ -72,7 +72,7 @@ package](http://packages.qa.debian.org/gmetadom)]
 * **WOWcamldebug** - integration between the [Vim editor](http://www.vim.org)
 and the [OCaml
 debugger](http://caml.inria.fr/pub/docs/manual-ocaml/manual030.html)
-[[[homepage|wowcamldebug]]]
+[ [[homepage|wowcamldebug]]]
 
 # fire-and-forget hacks
 * **ls2rss** - RSS feed out of a directory listing
index 7fb956c..80d2a5f 100644 (file)
@@ -1,5 +1,5 @@
 [[meta title="OCaml HTTP"]]
-## do it yourself (OCaml) HTTP daemon
+# do it yourself (OCaml) HTTP daemon
 
 **OCaml HTTP** is an [OCaml](http://caml.inria.fr) library freely inspired from
 [Perl's HTTP::Daemon
diff --git a/hacking/software/wowcamldebug.mdwn b/hacking/software/wowcamldebug.mdwn
new file mode 100644 (file)
index 0000000..f91b37d
--- /dev/null
@@ -0,0 +1,80 @@
+# WOnderful (g)Vim oCAML DEBUGger
+<small>(If you're wondering about the second "W" in the name ... Yes!: it's a
+typo, it should be a "V", but the name is prettier with the "W" ;-) )</small>
+
+After trying hard to learn the few emacs keybindings I need in order to use the
+OCaml debugger inside emacs ... I resigned and decided to make
+[`ocamldebug`](http://caml.inria.fr/pub/docs/manual-ocaml/manual030.html) work
+with [(g)vim](http://www.vim.org) too. **WOWcamldebug** is the result.
+
+[[table header="no" class="flow" format="dsv" data="""
+[[img wowcamldebug-screenshot1.png size="375x179" class="flow" alt="wowcamldebug console"]]
+[[img wowcamldebug-screenshot2.png size="375x392" class="flow" alt="wowcamldebug editor"]]
+"""]]
+
+WOWcamldebug is a front end that permits to *use the OCaml debugger within
+(g)vim*.  You can run it as you usually run ocamldebug and it will execute both
+the ocamldebugger itself, permitting usual interaction, and a gvim window which
+will be kept in sync with the current debugging position. The current debugging
+line is highlighted and the cursor is positioned at the current event position
+on that line.
+
+Communication is possible in both directions: from ocamldebug to gvim and vice
+versa. You can simply avoid caring about wowcamldebug and use your ocamldebug
+terminal as usual. Alternatively you can use gvim and the provided (not that
+fancy ...) toolbar for ocamldebug interaction which permits the usual ocamldebug
+motion commands (next, step, backstep and previous) and more fancy actions like
+printing the identifier at cursor position. 
+
+In order to **install** WOWcamldebug you need to download the
+[[tarball|wowcamldebug-0.3.tar.gz]]; follow the instructions in the INSTALL file
+for build and installation. **Using** WOWcamldebug is trivial, just invoke it as
+you would have invoked `ocamldebug` itself. Some additional options are provided
+(e.g. `-source`) and documented via the `-help` command line option.
+
+Warning in order to use editor → debugger communication (all the gvim
+toollbar and menu commands need that) you will need one of:
+
+* vim built with Python support
+* the [[wowtell.ml]] utility (included in the distribution tarball)
+
+which of the two methods is used is decided at runtime, with preference for the
+Python support, if available.
+
+## News
+* [19/08/2005] Fixed a setpgid issue which inhibit proper starting of
+wowcamldebug. Version 0.3 is out including this fix only.
+* [09/02/2004] Finally WOWcamldebug has a release: version 0.2 is out! New
+features includes:
+  * many bug fixes (like CTRL-D and CTRL-C ocamldebug's support)
+  * gvim (ugly) toolbar, improved key bindings and more available commands
+  * support for print and display command in gvim with "print identifier at
+  position" semantics
+  * ocamldebug feedback in gvim's status line
+* [06/02/2004] Added support for `-source` command line option. Using it is now
+possible to specify an ocamldebug script file to be sources at startup
+* [19/10/2003] Added support for editor → debugger communications. All commands
+are available via gvim menus: a standard menu with commands for debugger control
+and a contextual one (right click) with command for adding breakpoint at the
+pointed line
+
+## Download
+* Download [[wowcamldebug-0.3.tar.gz]], it is distributed freely under the terms
+of the GNU General Public License
+
+## TODO
+* add side markers for brekpoints (cfr. agide)
+* discover why current position highlight doesn't work on "let" keywords
+* strange CTRL-C behaviour: `break_debugger` function is invoked once for each
+CTRL-C pressed, but ocamldebug prints "Interrupted" once the first time CTRL-C
+is pressed, twice the second one and so on ...
+* better display of current event: when clicking away to print values is easy to
+forget where the current event was
+* feedback of ocamldebug questions on gvim side
+
+## BUGS
+* wowcamldebug can't distinguish between ocamldebug output and debugged
+program output. Programs writing on stdout one of the ocamldebug prompts (see
+variable "prompts" below) can mess up debugging status.  I know no solutions for
+this bug yet, feel free to suggest one ...
+
diff --git a/hacking/software/wowcamldebug/wowcamldebug-0.3.tar.gz b/hacking/software/wowcamldebug/wowcamldebug-0.3.tar.gz
new file mode 100644 (file)
index 0000000..8138809
Binary files /dev/null and b/hacking/software/wowcamldebug/wowcamldebug-0.3.tar.gz differ
diff --git a/hacking/software/wowcamldebug/wowcamldebug-screenshot1.png b/hacking/software/wowcamldebug/wowcamldebug-screenshot1.png
new file mode 100644 (file)
index 0000000..4795720
Binary files /dev/null and b/hacking/software/wowcamldebug/wowcamldebug-screenshot1.png differ
diff --git a/hacking/software/wowcamldebug/wowcamldebug-screenshot2.png b/hacking/software/wowcamldebug/wowcamldebug-screenshot2.png
new file mode 100644 (file)
index 0000000..dd9bd2c
Binary files /dev/null and b/hacking/software/wowcamldebug/wowcamldebug-screenshot2.png differ
diff --git a/hacking/software/wowcamldebug/wowtell.ml b/hacking/software/wowcamldebug/wowtell.ml
new file mode 100644 (file)
index 0000000..fad6e42
--- /dev/null
@@ -0,0 +1,32 @@
+(*
+ * Copyright (C) <2003-2004> Stefano Zacchiroli <zack@bononia.it>
+ *
+ * WOWcamldebug - WOnderful (g)Vim oCAML DEBUGger
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *)
+
+let send msg file =
+  let fd = Unix.socket Unix.PF_UNIX Unix.SOCK_DGRAM 0 in
+  Unix.connect fd (Unix.ADDR_UNIX file);
+  ignore (Unix.send fd msg 0 (String.length msg) [])
+
+let _ =
+  try
+    send (Sys.argv.(1) ^ "\n") Sys.argv.(2)
+  with Invalid_argument "Array.get" ->
+    print_endline "Usage: wowtell <ocd_command> <wow_socket>";
+    exit 1
+
index 6fce757..b266e61 100644 (file)
--- a/local.css
+++ b/local.css
@@ -13,9 +13,11 @@ h4 { font-size: 105% }
 a { text-decoration: none; }
 a:hover { text-decoration: underline; }
 
-img.flow {
+.flow {
   float: right;
   margin-left: 10px;
+  margin-bottom: 10px;
+  text-align: center;
 }
 
 input {