Skip to content

Commit

Permalink
Support LSP function parameter auto-completion.
Browse files Browse the repository at this point in the history
  • Loading branch information
vicapow committed Feb 28, 2019
1 parent 4dee654 commit 0e66ae1
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions src/common/flow_lsp_conversions.ml
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,35 @@ let flow_completion_to_lsp
let params = Core_list.map ~f:(fun p -> p.param_name ^ ": " ^ p.param_ty) params in
"(" ^ (String.concat ", " params) ^ ")"
in
let kind, itemType, inlineDetail, detail = match item.func_details with
let flow_params_to_lsp_snippet name params =
let params = Core_list.mapi ~f:(fun i p -> "${" ^ string_of_int (i +1 ) ^ ":" ^ p.param_name ^ "}") params in
name ^ "(" ^ (String.concat ", " params) ^ ")"
in
let kind, itemType, inlineDetail, detail, insertText, insertTextFormat, label = match item.func_details with
| Some func_details ->
let kind = Some Function in
let itemType = Some (trunc 30 func_details.return_ty) in
let inlineDetail = Some (trunc 40 (flow_params_to_string func_details.param_tys)) in
let detail = Some (trunc80 item.res_ty) in
kind, itemType, inlineDetail, detail
kind, itemType, inlineDetail, detail, Some (flow_params_to_lsp_snippet item.res_name func_details.param_tys), Some SnippetFormat, item.res_name
| None ->
let kind = None in
let itemType = None in
let inlineDetail = Some (trunc80 item.res_ty) in
let detail = Some (trunc80 item.res_ty) in
kind, itemType, inlineDetail, detail
kind, itemType, inlineDetail, detail, None, Some PlainText, item.res_name
in
{
label = item.res_name;
kind;
label;
detail = detail;
inlineDetail;
itemType;
documentation = None; (* This will be filled in by completionItem/resolve. *)
sortText = None;
filterText = None;
insertText = None;
insertTextFormat = Some PlainText;
insertText;
insertTextFormat;
textEdits = [];
command = None;
data = None;
Expand Down

0 comments on commit 0e66ae1

Please sign in to comment.