@@ -14,13 +14,13 @@ import (
1414 "github.com/arduino/arduino-cli/executils"
1515 "github.com/arduino/arduino-language-server/sourcemapper"
1616 "github.com/arduino/arduino-language-server/streams"
17- "github.com/arduino/arduino-language-server/textutils"
1817 "github.com/arduino/go-paths-helper"
1918 "github.com/fatih/color"
2019 "github.com/pkg/errors"
2120 "go.bug.st/json"
2221 "go.bug.st/lsp"
2322 "go.bug.st/lsp/jsonrpc"
23+ "go.bug.st/lsp/textedits"
2424)
2525
2626var globalCliPath string
@@ -944,17 +944,17 @@ func (ls *INOLanguageServer) TextDocumentDidChangeNotifFromIDE(logger jsonrpc.Fu
944944
945945 logger .Logf ("didChange(%s)" , inoParams .TextDocument )
946946 for _ , change := range inoParams .ContentChanges {
947- logger .Logf ("> %s" , change )
947+ logger .Logf (" > %s" , change )
948948 }
949949
950950 if cppParams , err := ls .didChange (logger , inoParams ); err != nil {
951- logger .Logf ("--E Error: %s" , err )
951+ logger .Logf ("Error: %s" , err )
952952 } else if cppParams == nil {
953- logger .Logf ("--X Notification is not propagated to clangd" )
953+ logger .Logf ("Notification is not propagated to clangd" )
954954 } else {
955- logger .Logf ("LS --> CL NOTIF didChange(%s@%d)" , cppParams .TextDocument )
955+ logger .Logf ("to Clang: didChange(%s@%d)" , cppParams .TextDocument )
956956 for _ , change := range cppParams .ContentChanges {
957- logger .Logf (" > %s" , change )
957+ logger .Logf (" > %s" , change )
958958 }
959959 if err := ls .Clangd .conn .TextDocumentDidChange (cppParams ); err != nil {
960960 // Exit the process and trigger a restart by the client in case of a severe error
@@ -1015,27 +1015,28 @@ func (ls *INOLanguageServer) PublishDiagnosticsNotifFromClangd(logger jsonrpc.Fu
10151015 ls .readLock (logger , false )
10161016 defer ls .readUnlock (logger )
10171017
1018- logger .Logf ("from clang %s (%d diagnostics):" , cppParams .URI , cppParams .Diagnostics )
1018+ logger .Logf ("%s (%d diagnostics):" , cppParams .URI , len ( cppParams .Diagnostics ) )
10191019 for _ , diag := range cppParams .Diagnostics {
1020- logger .Logf ("> %d:%d - %v : %s" , diag .Range .Start . Line , diag .Range . Start . Character , diag . Severity , diag .Code )
1020+ logger .Logf (" > %s - %s : %s" , diag .Range .Start , diag .Severity , string ( diag .Code ) )
10211021 }
10221022
10231023 // the diagnostics on sketch.cpp.ino once mapped into their
10241024 // .ino counter parts may span over multiple .ino files...
10251025 allInoParams , err := ls .cpp2inoDiagnostics (logger , cppParams )
10261026 if err != nil {
1027- logger .Logf (" Error converting diagnostics to .ino: %s" , err )
1027+ logger .Logf ("Error converting diagnostics to .ino: %s" , err )
10281028 return
10291029 }
10301030
10311031 // Push back to IDE the converted diagnostics
1032+ logger .Logf ("diagnostics to IDE:" )
10321033 for _ , inoParams := range allInoParams {
1033- logger .Logf ("to IDE: %s (%d diagnostics):" , inoParams .URI , len (inoParams .Diagnostics ))
1034+ logger .Logf (" - %s (%d diagnostics):" , inoParams .URI , len (inoParams .Diagnostics ))
10341035 for _ , diag := range inoParams .Diagnostics {
1035- logger .Logf (" > %d:%d - %v : %s" , diag .Range .Start . Line , diag . Range . Start . Character , diag .Severity , diag .Code )
1036+ logger .Logf (" > %s - %s : %s" , diag .Range .Start , diag .Severity , diag .Code )
10361037 }
10371038 if err := ls .IDE .conn .TextDocumentPublishDiagnostics (inoParams ); err != nil {
1038- logger .Logf (" Error sending diagnostics to IDE: %s" , err )
1039+ logger .Logf ("Error sending diagnostics to IDE: %s" , err )
10391040 return
10401041 }
10411042 }
@@ -1216,7 +1217,7 @@ func (ls *INOLanguageServer) refreshCppDocumentSymbols(logger jsonrpc.FunctionLo
12161217 symbolsCanary := ""
12171218 for _ , symbol := range cppDocumentSymbols {
12181219 logger .Logf (" symbol: %s %s %s" , symbol .Kind , symbol .Name , symbol .Range )
1219- if symbolText , err := textutils .ExtractRange (ls .sketchMapper .CppText .Text , symbol .Range ); err != nil {
1220+ if symbolText , err := textedits .ExtractRange (ls .sketchMapper .CppText .Text , symbol .Range ); err != nil {
12201221 logger .Logf (" > invalid range: %s" , err )
12211222 symbolsCanary += "/"
12221223 } else if end := strings .Index (symbolText , "{" ); end != - 1 {
@@ -1298,7 +1299,7 @@ func (ls *INOLanguageServer) ino2cppTextDocumentItem(logger jsonrpc.FunctionLogg
12981299func (ls * INOLanguageServer ) didChange (logger jsonrpc.FunctionLogger , inoDidChangeParams * lsp.DidChangeTextDocumentParams ) (* lsp.DidChangeTextDocumentParams , error ) {
12991300 // Clear all RangeLengths: it's a deprecated field and if the byte count is wrong the
13001301 // source text file will be unloaded from clangd without notice, leading to a "non-added
1301- // docuemtn " error for all subsequent requests.
1302+ // document " error for all subsequent requests.
13021303 // https://github.com/clangd/clangd/issues/717#issuecomment-793220007
13031304 for i := range inoDidChangeParams .ContentChanges {
13041305 inoDidChangeParams .ContentChanges [i ].RangeLength = nil
@@ -1308,14 +1309,12 @@ func (ls *INOLanguageServer) didChange(logger jsonrpc.FunctionLogger, inoDidChan
13081309
13091310 // Apply the change to the tracked sketch file.
13101311 trackedInoID := inoDoc .URI .AsPath ().String ()
1311- trackedInoDoc , ok := ls .trackedInoDocs [trackedInoID ]
1312- if ! ok {
1312+ if doc , ok := ls .trackedInoDocs [trackedInoID ]; ! ok {
13131313 return nil , unknownURI (inoDoc .URI )
1314- }
1315- if updatedTrackedInoDoc , err := textutils .ApplyLSPTextDocumentContentChangeEvent (trackedInoDoc , inoDidChangeParams .ContentChanges , inoDoc .Version ); err != nil {
1314+ } else if updatedDoc , err := textedits .ApplyLSPTextDocumentContentChangeEvent (doc , inoDidChangeParams ); err != nil {
13161315 return nil , err
13171316 } else {
1318- ls .trackedInoDocs [trackedInoID ] = updatedTrackedInoDoc
1317+ ls .trackedInoDocs [trackedInoID ] = updatedDoc
13191318 }
13201319
13211320 logger .Logf ("Tracked SKETCH file:----------+\n " + ls .trackedInoDocs [trackedInoID ].Text + "\n ----------------------" )
0 commit comments