RE: caml/mac + alpha

Matias Giovannini (mgiovann@script.org.ar)
21 Oct 1996 11:41:57 -0300

Date: 21 Oct 1996 11:41:57 -0300
From: "Matias Giovannini" <mgiovann@script.org.ar>
Subject: RE: caml/mac + alpha
To: "Bruno Petazzoni" <Bruno.Petazzoni@ac-idf.jussieu.fr>,

> quelqu'un a-t-il interface' caml-light/mac avec l'e'diteur alpha ? =
je n'ai
> pas le courage de plonger dans TCL pour faire le travail... et je =
suis
> certain que quelqu'un l'a de'ja` fait bien mieux que je serais =
capable de
> le faire...

I've written a (sort of) Caml mode definition for Alpha. It's kind of =
useable, though.
I hadn't the time to test the marking procedure. If somebody likes to =
build upon this mode, feel free to do so.

#######################################################################=
########
if {$startingUp} {
addMode Caml dummyCaml {*.ml *.mli} {}
return
}

newModeVar Caml leftFillColumn {4} 0
newModeVar Caml electricSemi {1} 1
newModeVar Caml wordBreak {\w+} 0
newModeVar Caml wordWrap {0} 1
newModeVar Caml funcExpr {^let(\s+rec)?(\s+prefix)?\s+\S+(\s+\w+)*\s*=
=3D} 0
newModeVar Caml wordBreakPreface {\W} 0
newModeVar Caml electricTab {1} 1
newModeVar Caml autoMark 0 1

set CamlCommentRegexp {/\(\*([^\*]|\*[^)])*\*\)/}
set CamlPreRegexp {^\#\s*\w+}
set CamlKeyWords {
and as begin do done downto
else end exception for fun function
if in let match mutable not
of or prefix rec then to
try type value where while with
ref
}
regModeKeywords -b {(*} {*)} -c red -k blue -s green Caml =
$CamlKeyWords
unset CamlKeyWords

#=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

proc dummyCaml {} {}

proc CamlMarkFile {} {
global CamlModeVars
set pos 0
while {![catch {search -s -f 1 -r 1 -m 0 -i 0 =
$CamlModeVars(funcExpr) $pos} res]} {
set start [lindex $res 0]
set end [expr [lindex $res 1] + 1]
set text [getText $start $end]
if {[regexp {let(\s+rec)?(\s+prefix)?\s+(\S+)} $text entire isrec =
ispref fname]} {
set tmp [expr $start + [string first $fname $text]]
set inds($fname) "$tmp [expr $tmp + [string length $fname]]"
}
set pos $end
}
if {[info exists inds]} {
foreach f [lsort -ignore [array names inds]] {
set res $inds($f)
setNamedMark $f [lineStart [lindex $res 0]] [lindex $res 0] =
[lindex $res 1]
}
}
}