パーサーの名前: javascript
ctagsの実行に使用したコマンドライン:
$ ctags --options=NONE Units/parser-javascript.r/js-async2.d/input-more-async.js
入力ファイルの内容:
$ cat Units/parser-javascript.r/js-async2.d/input-more-async.js
class ES6Class {
anotherAsyncMethod = async attrs => {}
}
満足できないタグ出力:
$ cat tags
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
!_TAG_PROGRAM_AUTHOR Universal Ctags Team //
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL https://ctags.io/ /official site/
!_TAG_PROGRAM_VERSION 0.0.0 /00be957/
ES6Class Units/parser-javascript.r/js-async2.d/input-more-async.js /^class ES6Clas
s {$/;" c
期待するタグ出力:
わからない? 基本的には上記ですが、非同期クラスメソッドのタグが付いています
ctagsのバージョン:
$ ctags --version
Universal Ctags 0.0.0(00be957), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Jul 8 2018, 17:27:03
URL: https://ctags.io/
Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +case-inse
nsitive-filenames
ctagsバイナリを取得するにはどうすればよいですか: homebrew
私はこれに自分で取り組んでみましたが、自分で始めるには十分ではありません。 余談ですが、私はコミュニティチャットを探しに行きましたが、皆さんが問題を使用してコミュニケーションしていることに気付きました(したがってこの問題)。
私が試したこと:
$ git diff --cached
diff --git a/Units/parser-javascript.r/js-async2.d/expected.tags b/Units/parser-javascript.r/js
-async2.d/expected.tags
index 18b00b08..8f058db6 100644
--- a/Units/parser-javascript.r/js-async2.d/expected.tags
+++ b/Units/parser-javascript.r/js-async2.d/expected.tags
@@ -7,3 +7,4 @@ method1 input.js /^ method1 : function() {$/;" m class:Class
method2 input.js /^ method2 : async function() {$/;" m class:Class
method3 input.js /^ method3() {$/;" m class:Class
method4 input.js /^ async method4() {$/;" m class:Class
+anotherAsyncMethod input.js /^anotherAsyncMethod = async attrs => {}$/;" m
class:ES6Class
diff --git a/Units/parser-javascript.r/js-async2.d/input-more-async.js b/Units/parser-javascrip
t.r/js-async2.d/input-more-async.js
new file mode 100644
index 00000000..42fcfd36
--- /dev/null
+++ b/Units/parser-javascript.r/js-async2.d/input-more-async.js
@@ -0,0 +1,3 @@
+class ES6Class {
+ anotherAsyncMethod = async attrs => {}
+}
余談ですが、このコードがどのように機能するかについての記事はありますか? 私はAC開発者ではありませんが、jsパーサーに非同期タグを追加した他のPRを調べたところ、 Units/
以外のロジックに大きな変更はありませんexpected.tags
ファイルからタグ定義を導出するために黒魔術を使用していますか?! 私がどのように助けることができるかについての助けはクールだろう!
attrs
タグを取得しない理由は、 async
ではありませんが、JSパーサーは現在使用したメソッド構文を理解していません。 私もよく知らないのですが、サポートを追加するために勉強してみます。
async
を削除しても、メソッドにタグを付けるのに役立たないことを確認できます。
余談ですが、このコードがどのように機能するかについての記事はありますか? 私はAC開発者ではありませんが、jsパーサーに非同期タグを追加した他のPRを調べたところ、
Units/
以外のロジックに大きな変更はありませんexpected.tags
ファイルからタグ定義を導出するために黒魔術を使用していますか?! 私がどのように助けることができるかについての助けはクールだろう!
残念ながら、コード自体よりも多くのドキュメントはなく、できればいくつかのコメントが含まれています。 しかし、いいえ、それは黒魔術をあまり使用していません。 async
"support"(41c2c77ea6da1f42fcd891948de04d7b1ad2c958)を追加したコミットは、javaScriptパーサーにいくつかのコードを追加しました。キーワードとしてasync
を追加し、さらに4か所で特別に処理しました。
公平を期すために、それは非標準の構文です。 静的/インスタンスプロパティはまだ石に設定されていません。 しかし、何も追加しないと便利だと思います。
パーサーにsap
キーワードがあり、認識できないことに気づきました。@ b4nはどうなっていますか? 私はとても興味があります😄
公平を期すために、それは非標準の構文です。 静的/インスタンスプロパティはまだ石に設定されていません。 しかし、何も追加しないと便利だと思います。
非標準の構文に関する詳細情報はどこで入手できますか?
LANG=JavaScript
; 私たちu-ctags開発者は、 $LANG
専門家ではありません。 関連する言語の参照、標準/非標準情報、標準化のステータス、小さな入力例、入力に対して出力される具体的な予想タグ、
この問題に取り組むには、この機能を使用する大規模なコードベースや、ユーザーの影響などが必要です。
この情報は私を駆り立てます。
(上記の文を.github / ISSUE_TEMPLATE.mdのどこかに置く必要があります。)
パーサーでsapキーワードが認識できないことに気づきましたが、@ b4nは何ですか? 私はとても好奇心が強い笑顔です
キーワードは、Universal-ctagsがフォークされたExuberant-ctagsから継承されます。
JavaScriptパーサーにOpenUI5またはSAPUI5サブパーサーを紹介したいと思います。
SAPUI5のJavaScriptパーサーで定義されているすべての種類は、サブパーサーに移動する必要があります。
@jayceekay 、 async
説明するドキュメントのURLなどを知りたいのですが。
それが一般的な標準にない場合は、サブパーサーを導入することを検討します。
async
Class
にget
またはset
場合、 async
は壊れます。 以下のサンプルコードを確認してください。
class Test {
async before() { // ctags will recognize this
}
get xx() {
return 1;
}
async after() { // ctags will NOT recognize this
}
set yy(val) {
return 2;
}
async after2() { // ctags will NOT recognize this
}
};
また、 async
、 xx
、 yy
も無視されます。
再現されていません。
[jet@living]/tmp% u-ctags --version
u-ctags --version
Universal Ctags 0.0.0(0730e66d), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Jul 25 2019, 03:06:32
URL: https://ctags.io/
Optional compiled features: +wildcards, +regex, +iconv, +debug, +option-directory, +xpath, +json, +interactive, +sandbox, +yaml, +aspell, +packcc
[jet@living]/tmp% cat /tmp/foo.js
cat /tmp/foo.js
class Test {
async before() { // ctags will recognize this
}
get xx() {
return 1;
}
async after() { // ctags will NOT recognize this
}
set yy(val) {
return 2;
}
async after2() { // ctags will NOT recognize this
}
};
[jet@living]/tmp% u-ctags -o - /tmp/foo.js
u-ctags -o - /tmp/foo.js
Test /tmp/foo.js /^class Test {$/;" c
after /tmp/foo.js /^ async after() { \/\/ ctags will NOT recognize this$/;" m class:Test
after2 /tmp/foo.js /^ async after2() { \/\/ ctags will NOT recognize this$/;" m class:Test
before /tmp/foo.js /^ async before() { \/\/ ctags will recognize this$/;" m class:Test
xx /tmp/foo.js /^ get xx() {$/;" G class:Test
yy /tmp/foo.js /^ set yy(val) {$/;" S class:Test
[jet@living]/tmp% u-ctags --options=NONE -o - /tmp/foo.js
u-ctags --options=NONE -o - /tmp/foo.js
u-ctags: Notice: No options will be read from files or environment
Test /tmp/foo.js /^class Test {$/;" c
after /tmp/foo.js /^ async after() { \/\/ ctags will NOT recognize this$/;" m class:Test
after2 /tmp/foo.js /^ async after2() { \/\/ ctags will NOT recognize this$/;" m class:Test
before /tmp/foo.js /^ async before() { \/\/ ctags will recognize this$/;" m class:Test
xx /tmp/foo.js /^ get xx() {$/;" G class:Test
yy /tmp/foo.js /^ set yy(val) {$/;" S class:Test
[jet@living]/tmp%
自作のユニバーサルctagsバージョンは古く、今のところアップグレードできません。
@ KazuakiM 、@ maple-leafによって報告されたHomebrewに関する問題を見て
@ maple-leaf
ユニバーサルctagsをアンインストールしてから、再インストールしました。
または、 brew reinstall universal-ctags
試してください。
opeログ)
https://gist.github.com/KazuakiM/69f58a05f07e3f6dd6ea3d76bc977bea
もう一度言っていただけますか?
@masatake @KazuakiM brew reinstall universal-ctags
を試してみましたが、うまくいきました。 homebrewはHEADバージョンをアップグレードできないようです、問題: https :
@ maple-leaf
ありがとう、 uninstall & install --HEAD
を試してみますか?
$ brew uninstall universal-ctags
$ brew install --HEAD universal-ctags
@KazuakiM試したばかりで、動作します。