Commit Graph

332 Commits

Author SHA1 Message Date
Alex Hoppen
bfdcccd9a3 In HoverResponse Decode single MarkedString as [MarkedString] with one element 2019-12-12 17:17:35 -08:00
Alex Hoppen
4273342301 Update WorkspaceFoldersRequest to match version 3.14 of the LSP spec 2019-12-12 17:17:35 -08:00
Alex Hoppen
2b0f71a945 Update WorkspaceEdit to match version 3.14 of the LSP spec 2019-12-12 17:17:35 -08:00
Alex Hoppen
c3e70b5933 Update ServerCapabilities to match version 3.14 of the LSP spec 2019-12-12 17:17:35 -08:00
Ben Langmuir
156139f0e4 Merge pull request #202 from ahoppen/match-spec
Update the struct definitions to match version 3.14 of the LSP spec
2019-12-06 15:19:17 -08:00
Ben Langmuir
b38e2414d2 Merge pull request #197 from ahoppen/code-completion-new-fields
Add textEdit to code completion responses
2019-12-06 13:06:18 -08:00
Alex Hoppen
2422ddc8cd Add the textEdit parameter to code completion responses 2019-12-06 10:51:13 -08:00
Alex Hoppen
5f0b2bca3d Update decoding error message for HoverRequest to match others 2019-12-06 08:31:44 -08:00
Alex Hoppen
82be88f696 Update ReferencesRequest to match version 3.14 of the LSP spec 2019-12-06 08:31:44 -08:00
Alex Hoppen
7ebf103645 Update ImplementationRequest to match version 3.14 of the LSP spec 2019-12-06 08:31:44 -08:00
Alex Hoppen
de7d1e55fa Make unknown case of WorkspaceSettingsChange have an LSPAny associated value 2019-12-06 08:31:19 -08:00
Alex Hoppen
bcadf01539 Update DocumentSymbolRequest to match version 3.14 of the LSP spec 2019-12-06 08:31:19 -08:00
Alex Hoppen
711d7827dd Update DefinitionRequest to match version 3.14 of the spec 2019-12-06 08:31:19 -08:00
Alex Hoppen
fa012d7386 Update CompletionItem to match version 3.14 of the spec 2019-12-06 08:31:19 -08:00
Alex Hoppen
a75a288a45 Update Completion to match version 3.14 of the spec 2019-12-06 08:31:19 -08:00
Alex Hoppen
585213b569 Update ClientCapabilities to match version 3.14 of the spec 2019-12-04 16:33:24 -08:00
Ben Langmuir
a9e0e9270e Merge pull request #204 from benlangmuir/custom-code-nil
Upgrade CustomCodable to handle optional values using encodeIfPresent
2019-12-04 10:27:14 -08:00
Ben Langmuir
d13fcbeaae Merge pull request #198 from johnno1962/thread-fix
Fix for very rare sourcekit-lsp crash.
2019-12-04 10:27:07 -08:00
Ben Langmuir
d2cfe7e847 Upgrade CustomCodable to handle optional values using encodeIfPresent
The LSP spec requires us to omit keys for nil values rather than using
the JSON `null` constant in most places. This change to CustomCodable
allows us to do it automatically using CustomCodable, removing one of
the limitations of the property wrapper.

The idea for the adding overloads of `encode` and `decode` came from
https://forums.swift.org/t/pre-pitch-codable-customization-using-propertywrappers/30244/
2019-12-04 08:49:19 -08:00
Ben Langmuir
0459ee5a5e Merge pull request #201 from ahoppen/hover-marked-string
Support MarkedStrings in Hover responses
2019-12-03 16:14:42 -08:00
Alex Hoppen
03dde148a9 Support MarkedStrings in Hover responses 2019-12-03 15:07:17 -08:00
Alex Hoppen
f167126c8d Fix typo: JSONRPCConnection should be spelled with two 'n' 2019-11-29 10:20:02 -08:00
John Holdsworth
8c377dd036 Fix for very rare sourcekit-lsp crash. 2019-11-26 10:42:37 +01:00
Ben Langmuir
d78d6fb405 Fix deadlock in exit -> onExit -> close -> closeHandler -> sync 2019-11-21 11:56:38 -08:00
Ben Langmuir
ac630e4617 Be more resilient about trying to flush the index on shutdown
Not all editors send shutdown/exit messages, particularly when you quit
the application (as opposed to a single editor window), so we sprinkle
`prepareForShutdown()` into the connection closed handler as well. I
verified manually in such an editor that this lets us save the index on
quit.
2019-11-21 11:56:38 -08:00
Ben Langmuir
dfe2a6bc76 [jsonrpc] Move close handler to start
Since the connection and message handler have a reciprocal need to know
about each other, move the closeHandler so that it has the opportunity
to call a method on the message handler if desired.
2019-11-21 11:56:37 -08:00
Ben Langmuir
6c66f8021c [index] Attempt to save index on shutdown
If the client is well-behaved and sends a shutdown request, we close the
index in order to flush it to disk. This should speed up reopening the
same project when it is already indexed.
2019-11-21 11:56:37 -08:00
Ben Langmuir
8a88e9d5f2 [gardening] Changes per review
* Rename Extensions.swift
* Move import where it is used
2019-11-20 09:41:48 -08:00
Ben Langmuir
ab4a25d581 [BSP] Use URI instead of URL
Similar to LSP, BSP also uses URI. We were handling this correctly
everywhere except one test that was using a string with no scheme.
2019-11-20 09:41:48 -08:00
Alex Hoppen
558d7fc664 Change backing storage of DocumentURI to URL
URL can in fact store URIs, it just doesn't have a very nice API to
interact with them. As long as we only operate on absoluteString, we
should be fine though. So instead of implementing the logic for
detecting file URLs ourselves, we can just use a URL as storage for
DocumentURI.
2019-11-20 09:41:48 -08:00
Alex Hoppen
aefa1688e4 Add support for semantic functionality for non-URL files in FallbackBuildSystem
In the fallback build system use the URIs pseudo path to construct
compiler arguments. For non-file URIs this means passing the raw URI as
the filename. We were already testing non-existing file-URLs like /a.txt
and arbitrary URIs seem to allow semantic functionality as well.
2019-11-20 09:41:48 -08:00
Alex Hoppen
5c839f8640 Add support for non-URL URIs
According to the LSP specification, arbitrary URIs can be used as
document identifiers. Instead of internally assuming that all URIs are
URLs, use a DocumentURI enum to represent URIs. These can either be file
URLs or other URIs whose value as treated as an opaque string.
2019-11-20 09:41:48 -08:00
Ben Langmuir
775e198f77 Rename LSPSupport -> LSPLogging to reflect reduced scope
Ideally we can someday migrate this to something more standard such as
swift-log, and make it explicit how to control logging for the JSONRPC
module.
2019-11-19 11:08:31 -08:00
Ben Langmuir
10ae122f17 Sink Int extension to JSONRPC
This is the only user of this code, and it's not particularly great.
Sink it to reduce dependency surface area.
2019-11-19 10:52:23 -08:00
Ben Langmuir
b0f06b9743 Simplify ascii digit/space checks
We explicitly do not want to handle non-ascii unicode "numbers", etc.
2019-11-19 10:47:05 -08:00
Ben Langmuir
f83a9f4476 Sink Result to SKSupport
It's not being used for anything interesting in LSP layers, so sink it
to minimize dependencies.
2019-11-19 10:31:15 -08:00
Ben Langmuir
ec3fd7f940 Sink firstIndex to its only user in JSONRPC
This isn't a particularly good implementation and it only has one user.
Move it down to reduce dependency surface area.
2019-11-19 10:19:09 -08:00
Alex Hoppen
2d5b3cda9c Remove unnecessary dependency declarations in Package.swift 2019-11-14 15:12:16 -08:00
Alex Hoppen
3eafe7851a Make LSPSupport independent of tools-support-core 2019-11-14 15:11:50 -08:00
Alex Hoppen
05ecd26d08 Reorganize the repository into a set of bare LSP modules and SourceKit modules
We will be able to split the LSP modules off later. These LSP modules
will provide the ability to write custom LSP servers and clients in
Swift. The sourcekit-lsp repository will build on top of this new
package to provide an LSP implementation that creates a language server
for Swift and C-based-languages.
2019-11-14 10:35:06 -08:00
Alex Hoppen
25cd302cad Remove dependency of LanguageServerProtocol on SKSupport
Apart from removing unnecessary imports, the following changes were
performed:
- Move CancellationToken from SKSupport to LanguageServerProtocol
- Move CustomCodable to its own module
  - CustomCodable belongs in LanguageServerProtocol but moving it there
    causes compilation to fail. As a workaround, move it to its own
    module
2019-11-13 12:02:14 -08:00
Ben Langmuir
1b204f70ec Merge pull request #190 from rmaz/disableclangdindex
Disable clangd indexing
2019-11-13 09:19:44 -08:00
Alex Hoppen
1fde01efc0 Move LanguageServer to SKCore 2019-11-12 16:58:25 -08:00
Richard Howell
c56bcee9d7 disable clangd indexing 2019-11-12 16:11:36 -08:00
Alex Hoppen
4b3c571db6 Eliminate _IndirectConnection and replace it by closure
This allows us to move the semaphore logic out of the message to the connection where it belongs.
2019-11-12 15:04:44 -08:00
buttaface
14f54f4c9b Add new platform for TSCUtility
The macOS smoke test for apple/swift-package-manager#2396 fails without this addition.
2019-11-03 20:56:02 +05:30
David Goldman
74af4873c7 Fix issue preventing DocumentSymbols from working with clangd
- Clangd uses the HierarchicalDocumentSymbolSupport field of the
  documentSymbol capabilities, if we don't pass it through clangd
  will change its behavior potentially resulting in a response
  error (e.g. in Visual Studio Code)
2019-11-01 15:41:22 -05:00
Ben Langmuir
2c043e9250 Merge pull request #179 from rmaz/indexdbpath
Set index db path from build server response
2019-10-30 16:10:29 -07:00
Richard Howell
130d81c96f make event kind optional 2019-10-21 11:24:07 -07:00
Richard Howell
4c59633e2d add test case 2019-10-21 10:39:22 -07:00