From cffbd03336348508dfb8d647a593c24b9bc89878 Mon Sep 17 00:00:00 2001 From: Simon Van Casteren Date: Wed, 8 Jan 2020 10:13:39 +0100 Subject: Return only unique diags + better formatting --- src/lsp.sml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/lsp.sml') diff --git a/src/lsp.sml b/src/lsp.sml index e00bd850..ef12bbac 100644 --- a/src/lsp.sml +++ b/src/lsp.sml @@ -258,16 +258,23 @@ fun elabFile (state: state) (fileName: string): ({ decls: Elab.decl list, envBef end end +fun uniq (comp: 'b -> 'b -> bool) (bs: 'b list) = + case bs of + [] => [] + | (l as b :: bs') => b :: uniq comp (List.filter (comp b) bs') + fun elabFileAndSendDiags (state: state) (toclient: LspSpec.toclient) (documentUri: LspSpec.documentUri): unit = let val fileName = #path documentUri val res = elabFile state fileName + fun eq_diag d1 d2 = #range d1 = #range d2 andalso #message d1 = #message d2 + val diags = uniq eq_diag (#2 res) in (case #1 res of NONE => () | SOME fs => (State.insertElabRes fileName (#envBeforeThisModule fs) (#decls fs)); - #publishDiagnostics toclient { uri = documentUri , diagnostics = #2 res}) + #publishDiagnostics toclient { uri = documentUri , diagnostics = diags}) end fun scanDir (f: string -> bool) (path: string) = -- cgit v1.2.3