@@ -61,6 +61,9 @@ m.attributes = {}
6161function m .register (method )
6262 return function (attrs )
6363 m .attributes [method ] = attrs
64+ if attrs .capability then
65+ cap .filling (attrs .capability )
66+ end
6467 proto .on (method , attrs [1 ])
6568 end
6669end
@@ -101,7 +104,7 @@ m.register 'initialize' {
101104 end
102105
103106 return {
104- capabilities = cap .getIniter (),
107+ capabilities = cap .getProvider (),
105108 serverInfo = {
106109 name = ' sumneko.lua' ,
107110 },
@@ -261,6 +264,9 @@ m.register 'textDocument/didChange' {
261264}
262265
263266m .register ' textDocument/hover' {
267+ capability = {
268+ hoverProvider = true ,
269+ },
264270 abortByFileUpdate = true ,
265271 --- @async
266272 function (params )
@@ -299,6 +305,9 @@ m.register 'textDocument/hover' {
299305}
300306
301307m .register ' textDocument/definition' {
308+ capability = {
309+ definitionProvider = true ,
310+ },
302311 abortByFileUpdate = true ,
303312 --- @async
304313 function (params )
@@ -338,6 +347,9 @@ m.register 'textDocument/definition' {
338347}
339348
340349m .register ' textDocument/typeDefinition' {
350+ capability = {
351+ typeDefinitionProvider = true ,
352+ },
341353 abortByFileUpdate = true ,
342354 --- @async
343355 function (params )
@@ -377,6 +389,9 @@ m.register 'textDocument/typeDefinition' {
377389}
378390
379391m .register ' textDocument/references' {
392+ capability = {
393+ referencesProvider = true ,
394+ },
380395 abortByFileUpdate = true ,
381396 --- @async
382397 function (params )
@@ -404,6 +419,9 @@ m.register 'textDocument/references' {
404419}
405420
406421m .register ' textDocument/documentHighlight' {
422+ capability = {
423+ documentHighlightProvider = true ,
424+ },
407425 abortByFileUpdate = true ,
408426 function (params )
409427 local core = require ' core.highlight'
@@ -428,6 +446,11 @@ m.register 'textDocument/documentHighlight' {
428446}
429447
430448m .register ' textDocument/rename' {
449+ capability = {
450+ renameProvider = {
451+ prepareProvider = true ,
452+ },
453+ },
431454 abortByFileUpdate = true ,
432455 --- @async
433456 function (params )
@@ -631,6 +654,11 @@ m.register 'completionItem/resolve' {
631654}
632655
633656m .register ' textDocument/signatureHelp' {
657+ capability = {
658+ signatureHelpProvider = {
659+ triggerCharacters = { ' (' , ' ,' },
660+ },
661+ },
634662 abortByFileUpdate = true ,
635663 --- @async
636664 function (params )
@@ -677,6 +705,9 @@ m.register 'textDocument/signatureHelp' {
677705}
678706
679707m .register ' textDocument/documentSymbol' {
708+ capability = {
709+ documentSymbolProvider = true ,
710+ },
680711 abortByFileUpdate = true ,
681712 --- @async
682713 function (params )
@@ -723,6 +754,17 @@ m.register 'textDocument/documentSymbol' {
723754}
724755
725756m .register ' textDocument/codeAction' {
757+ capability = {
758+ codeActionProvider = {
759+ codeActionKinds = {
760+ ' ' ,
761+ ' quickfix' ,
762+ ' refactor.rewrite' ,
763+ ' refactor.extract' ,
764+ },
765+ resolveProvider = false ,
766+ },
767+ },
726768 abortByFileUpdate = true ,
727769 function (params )
728770 local core = require ' core.code-action'
@@ -757,6 +799,17 @@ m.register 'textDocument/codeAction' {
757799}
758800
759801m .register ' workspace/executeCommand' {
802+ capability = {
803+ executeCommandProvider = {
804+ commands = {
805+ ' lua.removeSpace' ,
806+ ' lua.solve' ,
807+ ' lua.jsonToLua' ,
808+ ' lua.setConfig' ,
809+ ' lua.autoRequire' ,
810+ },
811+ },
812+ },
760813 --- @async
761814 function (params )
762815 local command = params .command :gsub (' :.+' , ' ' )
@@ -780,6 +833,9 @@ m.register 'workspace/executeCommand' {
780833}
781834
782835m .register ' workspace/symbol' {
836+ capability = {
837+ workspaceSymbolProvider = true ,
838+ },
783839 abortByFileUpdate = true ,
784840 --- @async
785841 function (params )
@@ -826,7 +882,29 @@ m.register 'textDocument/semanticTokens/full' {
826882 end
827883}
828884
885+ local function toArray (map )
886+ local array = {}
887+ for k in pairs (map ) do
888+ array [# array + 1 ] = k
889+ end
890+ table.sort (array , function (a , b )
891+ return map [a ] < map [b ]
892+ end )
893+ return array
894+ end
895+
896+
829897m .register ' textDocument/semanticTokens/range' {
898+ capability = {
899+ semanticTokensProvider = {
900+ legend = {
901+ tokenTypes = toArray (define .TokenTypes ),
902+ tokenModifiers = toArray (define .TokenModifiers ),
903+ },
904+ range = true ,
905+ full = false ,
906+ },
907+ },
830908 --- @async
831909 function (params )
832910 log .debug (' textDocument/semanticTokens/range' )
@@ -843,6 +921,9 @@ m.register 'textDocument/semanticTokens/range' {
843921}
844922
845923m .register ' textDocument/foldingRange' {
924+ capability = {
925+ foldingRangeProvider = true ,
926+ },
846927 abortByFileUpdate = true ,
847928 --- @async
848929 function (params )
@@ -915,6 +996,9 @@ m.register '$/status/click' {
915996}
916997
917998m .register ' textDocument/formatting' {
999+ capability = {
1000+ documentFormattingProvider = true ,
1001+ },
9181002 --- @async
9191003 function (params )
9201004 local uri = files .getRealUri (params .textDocument .uri )
@@ -949,6 +1033,9 @@ m.register 'textDocument/formatting' {
9491033}
9501034
9511035m .register ' textDocument/rangeFormatting' {
1036+ capability = {
1037+ documentRangeFormattingProvider = true ,
1038+ },
9521039 --- @async
9531040 function (params )
9541041 local uri = files .getRealUri (params .textDocument .uri )
@@ -983,6 +1070,12 @@ m.register 'textDocument/rangeFormatting' {
9831070}
9841071
9851072m .register ' textDocument/onTypeFormatting' {
1073+ capability = {
1074+ documentOnTypeFormattingProvider = {
1075+ firstTriggerCharacter = ' \n ' ,
1076+ moreTriggerCharacter = nil , -- string[]
1077+ },
1078+ },
9861079 abortByFileUpdate = true ,
9871080 --- @async
9881081 function (params )
0 commit comments