問題タブ [language-server-protocol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Linux で iOS フレームワークの VSCode エディター補完を追加する方法
Mac から離れている間でも、VSCode を使用して Linux マシンで Swift コードのドラフトを作成できるようにしたいと考えています。sourcekit-lspしかし、iOS SDK からモジュールを認識させることができません。
私は時々 Mac にアクセスしますが、ほとんどは Linux マシンを使用しています。そのため、Mac でアプリをビルドできますが、VSCode を使用して Linux マシンで Swift コードを事前にドラフトできるようにしたいと考えています。
sourcekit-lspしかし、iOS SDK からモジュールを認識させることができません。TypeScript 開発者の場合と似てreferences.d.tsいますが、迅速で、VSCode/sourcekit-lsp のみがそれを気にします。
テキストエディタで調べたところ、必要なものを提供しているように見えるさまざまなファイルがXcode.app見つかりましたが、それらを見る方法がわかりません。.modulemap.swiftinterfacesourcekit-lsp
強調しておきますが、私はLinux マシンで iOS コードをコンパイルできるとは思っていませんし、そうしたいとも思っていません。私のトラブルシューティングでは、
swift buildより意味のあるエラーを見つけるためだけに使用しました。私は実際のビルドが行われるとは思っていません - それが Mac の目的です。UIKit などのネイティブ モジュールのオートコンプリートを VSCode で使用できるようにしたいだけなので、後でそれを Mac にコピーしてテストできます。
奇妙なワークフローですが、私が今アクセスできるものです。
設定
フレームワーク/SDK にアクセスできるように、Xcode 11 ベータ版をダウンロードして解凍しました。sourcekit-lspただし、さまざまなフレームワークのヘッダーを理解する方法が見つからないようです。
また、swift は の下にインストールされ/usr/local/bin/swift-5.1-DEVELOPMENT-SNAPSHOT-2019-06-21-a-ubuntu18.04ます。
sourcekit-lspは多くのエラーをログに記録しないため、うまくいけば何かが見つかるまで、できるだけ「動作」に近づくように何度も試行することにしましたswift build。sourcekit-lsp
試行錯誤
これまで、さまざまなコマンドを試してきました。しかし、私はこれまでに得た最高の進歩をたどります。
swiftcSDK と iOS ターゲットを指定することから始めました。-sdk Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -target arm64-apple-ios13.0
これにより、モジュールが見つからないというエラーが修正されました(実行したときswift build)
これは含まれていない迅速なライブラリであると推測したので、にコピーXcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneosしました。これにより/usr/local/bin/swift-5.1-DEVELOPMENT-SNAPSHOT-2019-06-21-a-ubuntu18.04/usr/lib/swift/iphoneos、実際に上記のエラーが修正されます。
私が立ち往生している場所
今、swift build私に新しいエラーを与えます:
さらに、VSCode に戻ると、モジュールのインポート ( などFoundation) にカーソルを合わせると、別のエラーが発生します。
これらのエラーを修正しようとしましたが、成功しませんでした。働く必要はありませんが、UIKit などを使用するコードを書けるようswift buildにしたいだけです。sourcekit-lsp
Package.swift
typescript - Language Server Protocol を使用して TS をシンボルに解析するにはどうすればよいですか?
私はこのテーマに慣れていないので、重要な用語をいくつか間違っている可能性があります。typescript ファイルをそのコンポーネント シンボルに解析したいと思います。私が想像するものの非常に大雑把な例を挙げると、以下を参照してください。
次のようなものを作成します。
このシンボル化/トークン化は言語サーバーの初期化フェーズの一部であり、この問題から収集しようとしていると確信しています ( https://github.com/Microsoft/language-server-protocol/issues/33 )。
しかし、初期化に関するドキュメント ( https://microsoft.github.io/language-server-protocol/specification#initialize ) を読みましたが、返されるシンボルまたはトークンについて何も (ctrl-f) 見つけることができませんでした。
少し前に私は Monaco と仕事をしていましたが、言語サーバーの主な目的はコードのトークン化とリンク/ナビゲートを標準化することであることを知っているので、これが適切なツールであると確信しています。しかし、ドキュメントは非常に密集しており、コードの解析よりもコードの相互作用に重点を置いているようです。
Language Server Protocol を使用して TS をシンボルに解析するにはどうすればよいですか?
編集:これがプロジェクト自体である場合に備えて、言及することをお勧めします:これまたは何かの完全なコードを探しているわけではありません。何が起こっているかについての大雑把な概要と、関連するドキュメントへのリンク/抜粋です。
編集 2: ここで非常によく似た質問 ( TypeScript: get syntax tree ) を見つけましたが、それは言語サーバーについて言及しておらず、それより前の時代から来たようです。
編集 3: 私が探していた適切な用語は AST のようです。TypeScript ( https://ts-ast-viewer.com/ )用の本当にクールなツールをオンラインで見つけました。
