src/Pure/General/symbol_pos.ML
changeset 68177 6e40f5d43936
parent 67464 bc8a76d5839a
child 68298 2c3ce27cf4a8
equal deleted inserted replaced
68174:7c4793e39dd5 68177:6e40f5d43936
   242 fun pad [] = []
   242 fun pad [] = []
   243   | pad [(s, _)] = [s]
   243   | pad [(s, _)] = [s]
   244   | pad ((s1, pos1) :: (rest as (_, pos2) :: _)) =
   244   | pad ((s1, pos1) :: (rest as (_, pos2) :: _)) =
   245       let
   245       let
   246         val end_pos1 = Position.advance s1 pos1;
   246         val end_pos1 = Position.advance s1 pos1;
   247         val d = Int.max (0, Position.distance_of end_pos1 pos2);
   247         val d = Int.max (0, the_default 0 (Position.distance_of (end_pos1, pos2)));
   248       in s1 :: replicate d Symbol.DEL @ pad rest end;
   248       in s1 :: replicate d Symbol.DEL @ pad rest end;
   249 
   249 
   250 val implode = implode o pad;
   250 val implode = implode o pad;
   251 
   251 
   252 fun implode_range (pos1, pos2) syms =
   252 fun implode_range (pos1, pos2) syms =