Forráskód Böngészése

[display] add textDocument/package (#7013)

* [display] add textDocument/package

* Update displayJson.ml
Jens Fischer 7 éve
szülő
commit
87f024e37b
3 módosított fájl, 16 hozzáadás és 8 törlés
  1. 5 1
      src/compiler/displayOutput.ml
  2. 1 1
      src/compiler/main.ml
  3. 10 6
      src/context/displayJson.ml

+ 5 - 1
src/compiler/displayOutput.ml

@@ -833,4 +833,8 @@ let print_fields com fields = match com.json_out with
 		print_fields fields
 	| Some(f,_) ->
 		let j = List.map (CompletionKind.to_json (Genjson.create_context ())) fields in
-		f (jarray j)
+		f (jarray j)
+
+let print_package com pack = match com.json_out with
+	| None -> String.concat "." pack
+	| Some(f,_) -> f (JArray (List.map jstring pack))

+ 1 - 1
src/compiler/main.ml

@@ -901,7 +901,7 @@ with
 	| HelpMessage msg ->
 		message ctx (CMInfo(msg,null_pos))
 	| Display.DisplayPackage pack ->
-		raise (DisplayOutput.Completion (String.concat "." pack))
+		raise (DisplayOutput.Completion (DisplayOutput.print_package ctx.com pack))
 	| Display.DisplayFields fields ->
 		let fields =
 			if !measure_times then begin

+ 10 - 6
src/context/displayJson.ml

@@ -18,6 +18,7 @@ let get_capabilities () =
 		"definitionProvider",JBool true;
 		"hoverProvider",JBool true;
 		"completionProvider",JBool true;
+		"packageProvider",JBool true;
 	]
 
 let parse_input com input =
@@ -64,9 +65,9 @@ let parse_input com input =
 			Common.define_value com Define.Display "1";
 			Parser.use_doc := true;
 		in
-		let read_display_file was_auto_triggered =
+		let read_display_file was_auto_triggered requires_offset =
 			let file = get_string_param "file" in
-			let pos = get_int_param "offset" in
+			let pos = if requires_offset then get_int_param "offset" else (-1) in
 			Parser.was_auto_triggered := was_auto_triggered;
 			Parser.resume_display := {
 				pfile = Path.unique_full_path file;
@@ -80,19 +81,22 @@ let parse_input com input =
 					"capabilities",get_capabilities()
 				])))
 			| "textDocument/completion" ->
-				read_display_file (get_bool_param "wasAutoTriggered");
+				read_display_file (get_bool_param "wasAutoTriggered") true;
 				enable_display DMDefault;
 			| "textDocument/definition" ->
 				Common.define com Define.NoCOpt;
-				read_display_file false;
+				read_display_file false true;
 				enable_display DMDefinition;
 			| "textDocument/hover" ->
 				Common.define com Define.NoCOpt;
-				read_display_file false;
+				read_display_file false true;
 				enable_display DMHover;
+			| "textDocument/package" ->
+				read_display_file false false;
+				enable_display DMPackage;
 			| _ -> raise_method_not_found id name
 		end;
 		com.json_out <- Some(f_result,f_error)
 	in
 	JsonRpc.handle_jsonrpc_error process fail;
-	()
+	()