History

Make hint character setting more robust

malc committed 6 years ago

Commit 6ee08bd1 parent 3115e1b3 files · +25 −19Browse files

Unified · Split

3 files
  1. config.ml +23 −1
  2. main.ml +1 −18
  3. todo.org +1 −0
config.ml+23−1
@@ -709,6 +709,28 @@ let keys_of_string s = · 708 unmodified lines
709 List.map (key_of_string (Str.regexp "-")) elems709 List.map (key_of_string (Str.regexp "-")) elems
710;;710;;
711 711
712let validatehcs d v =
713 if String.length v > 1 &&
714 let module S = Set.Make (
715 struct type t = char
716 let compare a b = Char.code a - Char.code b
717 end)
718 in
719 let l = String.length v in
720 let rec fold s i =
721 if i = l
722 then true
723 else
724 let e = String.get v i in
725 if S.mem e s
726 then false
727 else fold (S.add e s) (i+1)
728 in
729 fold (S.singleton (String.get v 0)) 1
730 then v
731 else (Format.eprintf "invalid hint charset %S@." v; d)
732;;
733
712let config_of c attrs =734let config_of c attrs =
713 let maxv ?(f=int_of_string) u s = max u @@ f s in735 let maxv ?(f=int_of_string) u s = max u @@ f s in
714 let apply c k v =736 let apply c k v =
@@ -803,7 +825,7 @@ let config_of c attrs = · 88 unmodified lines
803 | "coarse-presentation-positioning" ->825 | "coarse-presentation-positioning" ->
804 { c with coarseprespos = bool_of_string v }826 { c with coarseprespos = bool_of_string v }
805 | "use-document-css" -> { c with usedoccss = bool_of_string v }827 | "use-document-css" -> { c with usedoccss = bool_of_string v }
806 | "hint-charset" -> { c with hcs = v }828 | "hint-charset" -> { c with hcs = validatehcs c.hcs v }
807 | _ -> c829 | _ -> c
808 with exn ->830 with exn ->
809 dolog "error processing attribute (`%S' = `%S'): %s" k v @@ exntos exn;831 dolog "error processing attribute (`%S' = `%S'): %s" k v @@ exntos exn;
main.ml+1−18
@@ -2533,24 +2533,7 @@ let enterinfomode = · 2532 unmodified lines
2533 (fun v -> conf.hfsize <- bound v 5 100);2533 (fun v -> conf.hfsize <- bound v 5 100);
2534 src#string "hint chars"2534 src#string "hint chars"
2535 (fun () -> conf.hcs)2535 (fun () -> conf.hcs)
2536 (fun v ->2536 (fun v -> conf.hcs <- Config.validatehcs conf.hcs v);
2537 if String.length v > 1 &&
2538 let module S =
2539 Set.Make (struct type t = char
2540 let compare a b = Char.code a - Char.code b
2541 end) in
2542 let l = String.length v in
2543 let rec fold s i =
2544 if i = l
2545 then true
2546 else
2547 let e = String.get v i in
2548 if S.mem e s
2549 then false
2550 else fold (S.add e s) (i+1)
2551 in
2552 fold (S.singleton (String.get v 0)) 1
2553 then conf.hcs <- v);
2554 src#string "trim fuzz"2537 src#string "trim fuzz"
2555 (fun () -> irect_to_string conf.trimfuzz)2538 (fun () -> irect_to_string conf.trimfuzz)
2556 (fun v ->2539 (fun v ->
todo.org+1−0
@@ -28,3 +28,4 @@ · 27 unmodified lines
28 28
29 it takes an error in utils making deps dirty and then another...29 it takes an error in utils making deps dirty and then another...
30 (IOW i need to get some sleep before trying to wrap my head around it)30 (IOW i need to get some sleep before trying to wrap my head around it)
31* TODO hintchars validation should report errors differently (how?)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t