···5959 let matches =
6060 let@ () = S.run in
6161 let@ fp = List.iter @~ dirs in
6262- process_dir (matching_basename (URI_scheme.name uri)) fp
6262+ let@ name = Option.iter @~ URI_scheme.name uri in
6363+ process_dir (matching_basename name) fp
6364 in
6465 try
6566 let first_match = List.hd @@ List.of_seq matches in
+3-3
lib/core/URI_scheme.ml
···1919 |> List.rev
2020 |> List.hd
21212222-let name (uri : URI.t) : string =
2222+let name (uri : URI.t) : string option =
2323 uri
2424 |> URI.path_components
2525 |> List.filter (fun x -> not (x = ""))
2626 |> List.rev
2727- |> List.hd
2727+ |> (List.nth_opt @~ 0)
28282929let split_addr (uri : URI.t) : (string option * int) option =
3030- let name = name uri in
3030+ let@ name = Option.bind @@ name uri in
3131 (* primitively check for address of form YYYY-MM-DD *)
3232 let date_regex = Str.regexp {|^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$|} in
3333 if Str.string_match date_regex name 0 then None
···248248249249let make (path, (data, _): Yuujinchou.Trie.path * (Resolver.P.data * Asai.Range.t option)) =
250250 match data with
251251- | Term syn ->
251251+ | Term [] -> None
252252+ | Term (node :: _) ->
252253 (* NOTE: Eventually we want to analyse the syntax so that, for example,
253254 you can tab through the snippet for a function of arity n*)
254254- let kind = kind (List.hd syn).value in
255255+ let kind = kind node.value in
255256 let insertText = insert_text path in
256257 Some
257258 (
···330331 Some (`String content)
331332 in
332333 let@ uri = Option.bind @@ frontmatter.uri in
333333- let insertText = URI_scheme.name uri in
334334+ let@ uri_name = Option.bind @@ URI_scheme.name uri in
334335 let title_text = render title in
335335- let filterText = insertText ^ " " ^ title_text in
336336 Option.some @@
337337 L.CompletionItem.create
338338 ?documentation
339339- ~label: (Format.(asprintf "%a (%s)" pp_print_string title_text (URI_scheme.name uri)))
340340- ~insertText
341341- ~filterText
339339+ ~label: (Format.(asprintf "%a (%s)" pp_print_string title_text uri_name))
340340+ ~insertText: uri_name
341341+ ~filterText: (uri_name ^ " " ^ title_text)
342342 ()
343343344344let new_addr_completions ~(forest : State.t) : L.CompletionItem.t list =