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
709709 List.map (key_of_string (Str.regexp "-")) elems
710710 ;;
711711
712+let 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+
712734 let config_of c attrs =
713735 let maxv ?(f=int_of_string) u s = max u @@ f s in
714736 let apply c k v =
@@ -803,7 +825,7 @@ let config_of c attrs = · 88 unmodified lines
803825 | "coarse-presentation-positioning" ->
804826 { c with coarseprespos = bool_of_string v }
805827 | "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 }
807829 | _ -> c
808830 with exn ->
809831 dolog "error processing attribute (`%S' = `%S'): %s" k v @@ exntos exn;
main.ml+1−18
@@ -2533,24 +2533,7 @@ let enterinfomode = · 2532 unmodified lines
25332533 (fun v -> conf.hfsize <- bound v 5 100);
25342534 src#string "hint chars"
25352535 (fun () -> conf.hcs)
2536− (fun 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);
2536+ (fun v -> conf.hcs <- Config.validatehcs conf.hcs v);
25542537 src#string "trim fuzz"
25552538 (fun () -> irect_to_string conf.trimfuzz)
25562539 (fun v ->
todo.org+1−0
@@ -28,3 +28,4 @@ · 27 unmodified lines
2828
2929 it takes an error in utils making deps dirty and then another...
3030 (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