プラグインの詳細については、catを参照してください。
背景
私は長い経験と多様な経験を持つプログラマーです。 私は非常に長い間Perl5で書いてきましたが、最近までNP ++で書いていました(信じがたいです)。 ある時点でもっと欲しかったのですが、適切なものはありませんでした。 すべてが悪いことを示すもののサンプル:
- Sublimeは、オートコンプリートを備えたNP ++です。
- Eclipse + EPIC-起動またはインストールに関する永続的なバグ。 個人的には、利益よりも多くの問題を抱えていました。
- パドレは素晴らしい仕事ですが、放棄されており、非常に不安定でもあります。 wxWidgetsのUI部分に関連するクラッシュ、フリーズ。
- コモドは最高です。 しかし、Perl5の方向性が発展していないという感覚とそれが何であるかは、すぐに満足しなくなりました。 食欲は食事とともに来ました。
- Vim-申し訳ありませんが、私のものではありません。 Windowsの子とそのすべて。
Perl5の優れたサポートに加えて、機能を拡張できるようにしたかったのは、 カスタムテンプレートエンジンを使用して、カスタムエンジンで実行されているプロジェクトで作業する必要があります(そして、おそらく、Vimでこれを行うことができます)。
しばらくの間、私はPythonで、そしてそれに応じてPyCharmでタスクに取り組みました。 完璧でした。 私が見た中で最高のIDE。 これにより、Perl5をサポートするプラグインを作成することにしました。 私はJavaをまったく知りませんでした...
...主題についての詳細なエッセイがあるかもしれません-「それがどうだったか」。
まとめ
プラグインの最初のバージョンは、次の機能を提供します。
- Perl5モジュールの作成とPerl5インタープリターの選択
- Perl5(ソースフィルターなし)、POD、Mojoliciousテンプレート、埋め込みPerlの解析(Perl5のみを含むphpのようなもの)
- 構文の強調表示
- ハイライトおよびパディングブラケット、引用符、正規表現の区切り記号。
- 文字列、ヒアドキュメント、正規表現の補間
- 関数、メソッド、パッケージ、定数、変数のオートコンプリート
- 関数、変数、クラス、および定数の移行(シンボル/クラスに移動)
- ファイル構造とクラス階層の表示(構造ビュー/階層ビュー)
- DFS / C3による継承のサポート
- 関数と変数のインポートのサポート
- 関数、定数、グローブ、パッケージ、名前空間、字句およびグローバル変数のナビゲーションとリファクタリング
- AUTOLOADedメソッドを許可する
- スクリプト、パッケージ、およびMojoliciousテンプレートのファイルテンプレート
- 複合構造のテンプレート(ライブテンプレート)(余分なブラケットを食べる、Komodo)
- use varsによるグローバル変数の宣言のサポート
- here-docのトークンリファクタリング
- here-docのIntelliLangサポートおよびマーカーテキストに応じた別の言語の自動挿入
- 関数の注釈:#@非推奨、#@メソッド、#@戻り値(戻り値の型を正しく解決するには後者が必要です)
- 名前空間の抽象:#@非推奨
- 変数の型指定サポートの宣言
- 意図:here-docへの文字列変換
- 検査:
- パッケージ:パッケージファイルの欠落、不明なネームスペース、複数のネームスペース宣言、コアネームスペースとの共通部分、厳格/警告の欠落。
- 関数:非推奨、不明な関数、複数の定義、ファッションコール(新しいFoo :: Bar)、未使用の関数/定数/ glob。
- 変数:未使用の変数、未定義の変数、変数の網かけ、埋め込み変数のレキシカルまたはグローバルとしての宣言。
- パッケージプロセッサを実装するための拡張ポイント。 非標準モジュールの機能を説明できます。 たとえば、Mojo :: Baseは、厳密であり、警告であり、基本であり、機能です。
すべてが完璧ではなく、おそらく完成するでしょう。 仕事に必要な最低限のものが作られました。 詳細については、プロジェクトwikiで見つけることができます: github.com/hurricup/Perl5-IDEA/wiki
謝辞
- JetBrainsはすばらしいIDEであり、劣らずすばらしい開発プラットフォームです。 とても興味深い冒険でした。
- JetBrainsの従業員、特にPeter Gromovがフォーラムのヘルプとヒントを提供してくれます。これは最初から非常に必要です。
- 貴重なアドバイスとコードレビューのためのHabraユーザーVISTALL 。
- サンプルとしてよく使用されるErlangプラグインの作成者へ。
- フィードバックや機能リクエストを送信したすべての人に。
計画
ここでは、実現した機能ごとに2つの新しいアイデアが生まれたため、多くのことを書くことができます。 すべての動きは記録されますが、プラグインの将来の運命は多くの異なる要因に依存します。 概念的に計画された:
- パーサーの改善(特にエラー回復)。
- すでに実装されている機能の改善。
- パフォーマンスの最適化
- テストを書く。
- 有名なPerl5フレームワークおよびテンプレートエンジンとの統合。
- PerlBrewとの統合。
- PerlTidy、PerlCritic、CPANなどのライブラリとの統合。
- デバッガー。
- Perl6。 正式な文法の存在に関連して、私は正確に彼から始めようとしていました。 しかし、反対意見がありました。私は言語がまったくわかりません。まだ出てきていません(ちょうどですが)、現時点でのパフォーマンスは望まれていません。 しかし、なぜですか?
参照資料
- JetBrainsリポジトリのプラグイン: plugins.jetbrains.com/plugin/7796
- GitHubプラグイン: github.com/hurricup/Perl5-IDEA