かvimのtaglistプラグインショーに役立つ情報javascript?
-
22-09-2019 - |
質問
私は最近、放置でマウスを動的に高速生成プラットフォーム固有のGUIの編集者や犯全vim.の経験についてお話したいと思い幻想がいくっついているんですが可能です。
としても不動の人気を誇taglist明(オCtagsしていくも可能です。の語り-自由な形状、構造、taglistがお迎えに一部の機能をオープンしましたので--のみ定義されたフォーマット:
function FUNCNAME (arg1, arg2) {
な変数や関数オブジェクトの定義のように:
var myFunc = function (arg1, arg2) {
でインターネットで調べるビットを見つけ、以下の定義に設定ctagsは、くつろぎいただけます私は~/.ctagsファイル:
--langdef=js
--langmap=js:.js
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\{/\1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/,function/
--regex-js=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*([^])])/\1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\[/\1/,array/
--regex-js=/([^= ]+)[ \t]*=[ \t]*[^""]'[^'']*/\1/,string/
--regex-js=/([^= ]+)[ \t]*=[ \t]*[^'']"[^""]*/\1/,string/
その後、ctagsは、コマンドラインからファンタスティックだった。またこれらの関数やオブジェクトしないといけないというのです。
問題は、taglist.vimプラグインな見方の新しい結果を得た。私は私のjavascriptファイルvimやhit:TlistToggleにとって全く同じには少数の機能ん。かの日付/時刻パターン文字"u"を更新リストは、何の効果もありません。
掘り込taglist.vimのためのシェア:
" java language
let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' .
\ 'f:field;m:method'
" javascript language
let s:tlist_def_javascript_settings = 'javascript;f:function'
...といういみでは特定種類の出力からctagsユーティリティの整備が可能です。残念なことに、私は知もtaglistはvim一般(い)を発見はどのような変更を行うものですべての方に素晴らしいctagsコマンドラインの結果を示vim.
援をお願いいたします。
解決
わかった!私はダブにtaglist.vimコードを少し、アドバイスをお聞かせ下さるものであること
taglist.vim力ctagsはfiletypeるvimです。でも、~/.ctagsスニペットからは、googleが提供私も定義し、新しい"js"言語に適用するファイル終了です。js,taglistが強ctagsの"JavaScript"filetypeるvimを使用はされていれctagsています。
このセクションの変更は~/.ctagsファイルからんどろ風mikiモデルを作ってみを掲載し上す:
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*new[ \t]+Object\(/\1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\{/\1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/f,function/
--regex-JavaScript=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*\([^\]\)]*\)/\1/f,function/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*new[ \t]+Array\(/\1/a,array/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\[/\1/a,array/
--regex-JavaScript=/([^= ]+)[ \t]*=[ \t]*[^""]'[^'']*/\1/s,string/
--regex-JavaScript=/([^= ]+)[ \t]*=[ \t]*[^'']"[^""]*/\1/s,string/
変わる既存JavaScript言語定義に直接設けるのではなく新しい言語の定義内ctags.現在、taglib力vimの登録filetypeの新しい定義を使用します。も欠けており、これまでの掲載~/.ctagsライン"にしたような"文字とアルに記彼の答えは、その国にとって良いとは限らないを含む私の最新版です。
から、以下の入~/.vimrcを活性化する新しいタイプ:
let g:tlist_javascript_settings = 'javascript;s:string;a:array;o:object;f:function'
すべての正規表現ラインな完璧なうコストパフォーマンスの必要な調整のため、多くの誤検知するこ素敵な出された定数です。が、少なくとも、私のいる).
編集: 追加される方は活性化型なの編集プラグインは、大幅に向上させ、主ctags機能の正規表現を避ける一部の偽ブ.
編集2: のまま配列やオブジェクトの定義にctags regex.
他のヒント
またこのポストは、google検索が研究成果に優れ、私を改良していきたいと考えています。この結果をベルギー-ルクセンブルグハッキングにソリューション:
.ctags
--regex-JavaScript=/^var[ \t]+([a-zA-Z0-9_$]+) = \[/\1/a,array/
--regex-JavaScript=/^var[ \t]+([a-zA-Z0-9_$]+) = \{/\1/o,object/
--regex-JavaScript=/^var[ \t]+([a-zA-Z0-9_$]+) = (^{^[)+/\1/r,var/
--regex-JavaScript=/^[ \t]*(this\.)?([A-Za-z0-9_$()]+)[ \t]*[:=][ \t]*function[ \t]*\(\)/\2/u,function/
--regex-JavaScript=/^[ \t]*function ([a-z0-9]+[A-Za-z0-9_]*)/\1/u,function/
--regex-JavaScript=/^[ \t]*([A-Za-z0-9]+)\.prototype\.([a-z0-9]+[A-Za-z0-9_]*)/\1 : \2/u,function/
--regex-JavaScript=/^[ \t]*function ([A-Z]+[A-Za-z0-9_]*)/\1/o,object/
.vimrc
let g:tlist_javascript_settings = 'javascript;r:var;s:string;a:array;o:object;u:function'
このくいますが誤検知を追加します特徴として、トレードオフのためく一部の問題regexes.これからも頑張の更新を発見した場合はんだ。
編集:しっか作っく今;私はこのような結果は強固である。大きな欠であることにはない)コンマで区切られた変数を規定します。このように起きる。ものである。:)
ることにも注意します。vimrc.こんめんフリーク;で何とかtaglistはctagsは何かとあのデフォルト値の設定、ない場合は変更で、多くのdouble値が機能varsに関して、ドライブに私は狂った(だスーパーディテ..:P)
編集:以上にインポート.でピックアップ試作関数宣言を、しないのか。
の-ベストプラクティスソリューションも新しく、綺麗とくに位置するこのJavaScriptのソースコードの閲覧/タグのリストでVimを使用Mozilla DoctorJS (旧称 jsctags).
自分の回答はその問題についての詳細.
楽しめます。:)
は私がずっとjavascriptやタグリストを使用していませんでしたが、:help taglist-extend
を見、それはあなたの定義は次のようになります。
let tlist_js_settings = 'js;f:function;m:method'
これはctagsの「種類」機能および方法「M」の「F」であると仮定されます。あなたのタグファイルを見ているし、好きなものを「種類」列のルックスを参照してください。
:一例として、私のCコードタグファイルには、この行を含んでいますADC_CR1_AWDCH_0 .\LibraryModules\CMSIS\Headers\stm32f10x.h 2871;" d
これは、「D」は定義された名前のためのctagsの「種類」である行2871.に記載されているファイルであるシンボル#define
のADC_CR1_AWDCH_0
あります。うまくいけば、それはあなたが軌道に乗るには十分に得られます。
余談として、私はそれが正常に働いてまで、それは価値があなたのファイル「myfile.mjs」を命名し、js:.mjs
にごlangmapを変更される場合がありますので、オーバーライドは、正しく動作するかどうかはわかりません。そして、少なくとも、あなたがあなたの問題は、ファイルの誤認や実際の解析に関連しているかどうかを知っているよ。
彼の質問や研究のためのトム・フロストへこんにちはおかげで、私はあなたの最終的な答えの第四行の正規表現ではほとんど問題があると思います:
--regex-JavaScript=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*\([^\]\)]*\)/\1/f,function/
は私のために働いていません、私はそれを少し引っ張り、今、[OK]を動作します
--regex-JavaScript=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*\([^\)]*\)/\1/f,function/
PD。 ?
- :他の人の回答を正規表現は、ここでは、少なくとも私にとっては全くない仕事を掲載しましたは、オリジナルポストとそれに関するヘルプタグリスト利用のctagsのようにjsの 『言語を私が定義するJavaScriptのサポートに建てられた』 ctagsのから重複したエントリを避けるために。私はまた、(引用符、「これ。」、「.prototype」)必ずタグ名は、いくつかのあまり有用ビットから取り除かれていることを確認します。私は、オブジェクト/配列/文字列の/ var正規表現を使用していないが、それは他の提案と私の正規表現を組み合わせることは簡単です。
〜/ .ctagsます:
--langdef=js
--langmap=js:.js
--regex-js=/["']?(this\.)?([A-Za-z0-9_$]+)["']?((\.prototype)?(\.[A-Za-z0-9_$]+))?[ \t]*[:=][ \t]*function/\2\5/f,function/
--regex-js=/function[ \t]+([A-Za-z0-9_$]+)/\1/f,function/
〜/ .vimrcとます:
let g:tlist_javascript_settings = 'js;f:function'