@@ -511,10 +511,7 @@ let field_of_string ~raw =
511511 | None -> OpamConsole. error_and_exit `Bad_arguments " No printer for %S" s
512512
513513(* NOTE: upon changes, please update the man page section in opamCommands.ml *)
514- let version_color st nv =
515- let installed = (* (in any switch) *)
516- OpamGlobalState. installed_versions st.switch_global nv.name
517- in
514+ let version_color installed st nv =
518515 let is_available nv = (* Ignore unavailability due to pinning *)
519516 try
520517 OpamFilter. eval_to_bool ~default: false
@@ -545,7 +542,8 @@ let mini_field_printer ?(prettify=false) ?(normalise=false) =
545542 | List l -> OpamPrinter. value_list l
546543 | _ -> OpamPrinter.Normalise. value v
547544
548- let detail_printer ?prettify ?normalise ?(sort =false ) st nv =
545+ let detail_printer ?prettify ?normalise ?(sort =false ) installed st nv =
546+ let version_color = version_color installed in
549547 let open OpamStd.Option.Op in
550548 let (%) s cols = OpamConsole. colorise' cols s in
551549 let root_sty =
@@ -643,12 +641,14 @@ let detail_printer ?prettify ?normalise ?(sort=false) st nv =
643641 OpamStd.Option. default " " hash_opt
644642 | Raw -> OpamFile.OPAM. write_to_string (get_opam st nv)
645643 | All_installed_versions ->
646- OpamGlobalState. installed_versions st.switch_global nv.name |>
647- OpamPackage.Map. mapi (fun nv switches ->
648- Printf. sprintf " %s [%s]"
649- (OpamPackage. version_to_string nv % version_color st nv)
650- (String. concat " " (List. map OpamSwitch. to_string switches))) |>
651- OpamPackage.Map. values |>
644+ let needed = nv.name in
645+ OpamPackage.Map. fold (fun nv switches acc ->
646+ if OpamPackage.Name. equal needed nv.name then
647+ (Printf. sprintf " %s [%s]"
648+ (OpamPackage. version_to_string nv % version_color st nv)
649+ (String. concat " " (List. map OpamSwitch. to_string switches)))::acc
650+ else acc) installed [] |>
651+ List. rev |>
652652 String. concat " "
653653 | Available_versions ->
654654 let available =
@@ -759,8 +759,9 @@ let display st format packages =
759759 OpamConsole. errmsg " %s\n "
760760 (OpamConsole. colorise `red " # No matches found" ))
761761 else
762+ let installed = OpamGlobalState. all_installed_versions st.switch_global in
762763 List. rev_map (fun nv ->
763- List. map (detail_printer ~prettify ~normalise st nv) format.columns)
764+ List. map (detail_printer ~prettify ~normalise installed st nv) format.columns)
764765 packages |>
765766 List. rev |>
766767 add_head |>
@@ -834,10 +835,11 @@ let info st ~fields ~raw ~where ?normalise ?(show_empty=false)
834835 Synopsis ;
835836 Description ;
836837 ] in
838+ let installed = OpamGlobalState. all_installed_versions st.switch_global in
837839 let output_table fields nv =
838840 let tbl =
839841 List. fold_left (fun acc item ->
840- let contents = detail_printer ?normalise ~sort st nv item in
842+ let contents = detail_printer ?normalise ~sort installed st nv item in
841843 if show_empty || contents <> " " then
842844 [ OpamConsole. colorise `blue (string_of_field ~raw item); contents ]
843845 :: acc
@@ -888,7 +890,7 @@ let info st ~fields ~raw ~where ?normalise ?(show_empty=false)
888890 | [] ->
889891 OpamConsole. header_msg " Version-specific details" ;
890892 output_table one_version_fields pkg
891- | [f] -> OpamConsole. msg " %s\n " (detail_printer ?normalise ~sort st pkg f)
893+ | [f] -> OpamConsole. msg " %s\n " (detail_printer ?normalise ~sort installed st pkg f)
892894 | fields -> output_table fields pkg
893895 in
894896 List. iter (fun (name ,_ ) ->
0 commit comments