code: def display_hook(prompt, session, context, matches, longest_match_len):
          # type: (str, ShellSession, BundleContext, List[str], int) -> None
          
          # Prepare a line pattern for each match (-1 for the trailing space)
          match_pattern = "{{0: <{}}} from {{1}}".format(longest_match_len - 1)
  
          # Sort matching names
          matches = sorted(match for match in matches)
  
          # Print the match and the associated name
          session.write_line()
          with use_ipopo(context) as ipopo:
              for factory_name in matches:
                  # Remove the spaces added for the completion
                  factory_name = factory_name.strip()
                  bnd = ipopo.get_factory_bundle(factory_name)
                  session.write_line(
                      match_pattern, factory_name, bnd.get_symbolic_name()
                  )
  
          # Print the prompt, then current line
          session.write(prompt)
          session.write_line_no_feed(readline.get_line_buffer())
          readline.redisplay()
docs: Displays the available services matches and the service details
  
          :param prompt: Shell prompt string
          :param session: Current shell session (for display)
          :param context: BundleContext of the shell
          :param matches: List of words matching the substitution
          :param longest_match_len: Length of the largest match