1

私はc ++でWebプロジェクトを書いています。私のC ++コードでは、htmlを挿入する必要があります。たとえば、

void CPage::putBaseFooter() {
  if(m_canRender) {
    HTML(
      <!++
      </main>
      <footer>
          <f++ composePageFooter(); ++f>
      </footer>
      </body>
      </html>
      ++!>);
  }
}

つまり、html コード全体が と の間<!++にあり++!>ます (コードは、独自のプリプロセッサを文字列にコンパイルする前に処理されます)

たとえば、独自のマクロプリプロセッサを用意するだけです

<f++ composeHead(); ++f>
<v++ ts.tm_year + 1900++v>
<paged_list++ [day_tasks_control] [/tasks/list] [taskListRenderer]>
...
<++paged_list>
<labeled_control++ [Description] [taskDescription]>
  <textarea></textarea>
<++labeled_control>

教えてください、どうすれば html キーワードをハイライトし、マクロを qt-creator コード エディターに入れることができますか? Kate 用の higlite-xml を書き込もうとしました (c++ ハイライトの継承を使用) が、バックライトが機能しないため、おそらく理解できないものがあります。

これが私のスケッチの構文の強調表示です

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
[
    <!ENTITY space " ">
    <!ENTITY separators ",&#59;">
    <!ENTITY ns_punctuators "!&#37;&space;&amp;()+-/.*&lt;=&gt;?[]{|}~^&separators;">
]>
<!--
  Copyright (c) 2012 by Alex Turbov (i.zaufi@gmail.com)
  -->
<language
    name="C++"
    section="Sources"
    version="1.0"
    kateversion="2.4"
    indenter="cstyle"
    style="C++"
    mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.moc"
    author="Sheridan (gorlov.maxim@gmail.com)"
    license="LGPL"
    priority="11"
  >

<highlighting>

  <list name="InplaceHTML">
    <item> form </item>
    <item> table </item>
    <item> div </item>
    <item> td </item>
    <item> tr </item>
    <item> th </item>
    <item> span </item>
    <item> input </item>
    <item> textarea </item>
    <item> label </item>
    <item> a </item>
    <item> head </item>
    <item> link </item>
    <item> script </item>
  </list>

  <contexts>

    <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
      <IncludeRules context="##C++" />
      <IncludeRules context="DetectInplaceHTML" />
    </context>

    <context attribute="Normal Text" lineEndContext="#stay" name="DetectInplaceHTML">
      <keyword attribute="Inplace HTML" context="#stay" String="InplaceHTML" />
    </context>

  </contexts>

  <itemDatas>
    <itemData name="Normal Text"    defStyleNum="dsNormal" spellChecking="false" />
    <itemData name="Inplace HTML" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0" spellChecking="false" />
  </itemDatas>
</highlighting>

</language>
4

2 に答える 2

0

実際には、同じ言語の蛍光ペンがほとんどないかもしれませんが、優先度が異なります! シンタックス ファイルを見てください: and がありますISO C++(C++これは純粋な C++ シンタックスと Qt4 アドオンです)。また、C++ が純粋なC++ 構文であり、セカンダリである代替のC++ ハイライターもあります。構成設定を使用して、必要に応じて優先度を変更できます。個人的には、 "default" よりも純粋な C++ を使用することを好みます。C++/Qt4C++/Qt4

C++/Customそのため、独自の構文を追加して、その優先度を上げてみてください。純粋な C++構文C++/Qt4を「再利用」する方法については、 を参照してください。

最後に、構文例を考えると、継承された C++ コンテキストに陥る前に拡張機能を検出することをお勧めします。

于 2014-10-14T00:58:18.447 に答える
0

Kate C++ の強調表示は Qt Creator では使用されません。Kate 構成ファイルを変更/拡張しても影響はありません。Qt Creator によって C または C++ として認識されない別の MIME タイプを登録して、そのための Kate ハイライターを作成することもできますが、これが機能するかどうかはわかりません。

于 2014-07-30T23:57:51.303 に答える