|
Packit |
bd2e5d |
let cCAMLtoTKtextMark x = TkToken x;;
|
|
Packit |
bd2e5d |
let cTKtoCAMLtextMark x = x;;
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
let cCAMLtoTKtextTag x = TkToken x;;
|
|
Packit |
bd2e5d |
let cTKtoCAMLtextTag x = x;;
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
##ifdef CAMLTK
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
(* TextModifiers are never returned by Tk *)
|
|
Packit |
bd2e5d |
let ppTextModifier = function
|
|
Packit |
bd2e5d |
CharOffset n ->
|
|
Packit |
bd2e5d |
if n > 0 then "+" ^ (string_of_int n) ^ "chars"
|
|
Packit |
bd2e5d |
else if n = 0 then ""
|
|
Packit |
bd2e5d |
else (string_of_int n) ^ "chars"
|
|
Packit |
bd2e5d |
| LineOffset n ->
|
|
Packit |
bd2e5d |
if n > 0 then "+" ^ (string_of_int n) ^ "lines"
|
|
Packit |
bd2e5d |
else if n = 0 then ""
|
|
Packit |
bd2e5d |
else (string_of_int n) ^ "lines"
|
|
Packit |
bd2e5d |
| LineStart -> " linestart"
|
|
Packit |
bd2e5d |
| LineEnd -> " lineend"
|
|
Packit |
bd2e5d |
| WordStart -> " wordstart"
|
|
Packit |
bd2e5d |
| WordEnd -> " wordend"
|
|
Packit |
bd2e5d |
;;
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
let ppTextIndex = function
|
|
Packit |
bd2e5d |
| TextIndexNone -> ""
|
|
Packit |
bd2e5d |
| TextIndex (base, ml) ->
|
|
Packit |
bd2e5d |
match cCAMLtoTKindex index_text_table base with
|
|
Packit |
bd2e5d |
| TkToken ppbase -> List.fold_left (^) ppbase (List.map ppTextModifier ml)
|
|
Packit |
bd2e5d |
| _ -> assert false
|
|
Packit |
bd2e5d |
;;
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
let cCAMLtoTKtextIndex i =
|
|
Packit |
bd2e5d |
TkToken (ppTextIndex i)
|
|
Packit |
bd2e5d |
;;
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
##else
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
(* TextModifiers are never returned by Tk *)
|
|
Packit |
bd2e5d |
let cCAMLtoTKtextIndex (i : textIndex) =
|
|
Packit |
bd2e5d |
let ppTextModifier = function
|
|
Packit |
bd2e5d |
| `Char n ->
|
|
Packit |
bd2e5d |
if n > 0 then "+" ^ (string_of_int n) ^ "chars"
|
|
Packit |
bd2e5d |
else if n = 0 then ""
|
|
Packit |
bd2e5d |
else (string_of_int n) ^ "chars"
|
|
Packit |
bd2e5d |
| `Line n ->
|
|
Packit |
bd2e5d |
if n > 0 then "+" ^ (string_of_int n) ^ "lines"
|
|
Packit |
bd2e5d |
else if n = 0 then ""
|
|
Packit |
bd2e5d |
else (string_of_int n) ^ "lines"
|
|
Packit |
bd2e5d |
| `Linestart -> " linestart"
|
|
Packit |
bd2e5d |
| `Lineend -> " lineend"
|
|
Packit |
bd2e5d |
| `Wordstart -> " wordstart"
|
|
Packit |
bd2e5d |
| `Wordend -> " wordend"
|
|
Packit |
bd2e5d |
in
|
|
Packit |
bd2e5d |
let ppTextIndex (base, ml : textIndex) =
|
|
Packit |
bd2e5d |
match cCAMLtoTKtext_index base with
|
|
Packit |
bd2e5d |
TkToken ppbase ->
|
|
Packit |
bd2e5d |
String.concat ~sep:"" (ppbase :: List.map ~f:ppTextModifier ml)
|
|
Packit |
bd2e5d |
| _ -> assert false
|
|
Packit |
bd2e5d |
in
|
|
Packit |
bd2e5d |
TkToken (ppTextIndex i)
|
|
Packit |
bd2e5d |
;;
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
##endif
|