意外なことに、Geany IDEではHTMLとXMLのペアのタグを強調表示できないことがわかりました。 つまり カーソルをタグの中央に置くと、このタグとそのペア(開始または終了)が強調表示されます。 グーグルは、実際には機能がなく、ウィッシュリストにあることを示しました。
ためらうことなく、私はそのような機会を追加することにしました。 もっと知りたい、結果を議論/批判したり、調査に参加したり、Geany 1.24がリリースされる前に追加すべきことをアドバイスしたい場合は、猫にようこそ!
この記事はGeanyのプラグインを作成するためのマニュアルではないことをすぐに言わなければなりません。 これらはすべてわかりやすく、公式ドキュメントで詳細に説明されています。
実装の最初のステップ
公式マニュアルに記載されている「Hello World」プラグインが期待どおりに機能し、すべての有用な機能を実行することを確認してから、アルゴリズムについて考え始めました。 Notepad ++でのこの機能の実装をスパイすることにしました。 その過程で、GeanyとNotepad ++は1つのエンジンScintillaを使用するという興味深い発見をしました。 このことから、Notepad ++はさらに適切であると思われました。適切な機能を備えているだけでなく、適切なエンジンにも実装されています。
その結果、Notepad ++はいくつかの理由で私には向いていませんでした。
- Notepad ++コードはGPLで配布されていますが、BSDでプラグインを開きたいと思いました。
- メモ帳++では、STLを使用してC ++で記述されたxmlMatchedTagsHighlighterコンポーネントがタグのタグ付けを行います。 私はCで実装したかったのですが、Geanyプロジェクトではこの言語が好まれています。 これはメーリングリストで活発に議論されていますが、これまでのところ。
- Notepad ++での機能の実装は、面倒でandいように思えました。 そして、移植したいという願望よりも発展したいという願望が勝っていました。
アルゴリズムに関するいくつかの言葉
...正確に言えば、欲望を描くフローチャートはそうではありませんでした。 終了タグを見つけるためのアルゴリズムを以下に説明します。 オープナーの検索も同じ方法で機能しますが、ドキュメントの検索のみです。
- カーソルがタグの中央にあるかどうかを確認します。
- その場合、タグ名を定義します。
- タグのタイプを確認してください:オープンまたはクローズ。
- たとえば、オープナー。 そのため、閉じ括弧に対して相対的に移動し、位置がタグの中央にあるかどうかを確認します。
- 位置がタグに該当せず、開いている場合、名前が手順2で定義した名前と一致する場合、タグを開くカウンターを増やします。
- タグが閉じており、名前が手順2で定義された名前と一致する場合、タグを閉じるカウンターを増やします。
- 開始タグと終了タグのカウントが一致する場合、ペアが見つかります。
- 目的の位置を強調表示します。
実装はどのように見えるか
ソースコードは既にGeanyのmasterブランチにあります。 githubで見ることができます。
ケースで試してみたい人、メールで私に書いてくれた人のために、アセンブルされたプラグインをブログ (Linux用の64ビットアセンブリ)に投稿しました。
以前は、リリースに含まれるプラグインのみが公式Webサイトで公開されていました。 IRCコミュニティと相談した後、この問題を修正した後、Geany 1.24がリリースされる前からPairTagHihlighter がサイトに登場しました 。
どうする
- ペアになっていないタグのリストを追加し、それらをまったく強調表示したり、別のスタイルで強調表示したりしないでください。
- XMLドキュメントのプラグインを含めます。 現時点では、これはHTMLにのみ含まれており、歴史的に発生しています。
ユーザーが何を優先しているかを知ることも興味深いです。 私はすべてをすることを約束しませんが、時々私は楽しみのためにプレーしたいです。 私は4月にプラグインのコードを書き直しましたが、今は再びそれに戻りました。
更新する
調査で「強調表示スタイルの変更」または「その他」を選択した場合、何を意味するのかをコメントで知らせることをお勧めします。 テレパシーするのは難しいです:)