2016-10-27 4 views
0

私は特定の行にあるときに倍数の行のハイライトを得ることができます誰か教えてくださいできますか?highligthingパートエースエディタを

複数の行にブロックコメント "/ ** /"がある場所を作成します。私は変数、構造体、および予約語のハイライターも持っています。これは "ブロックコメント"になります。

私は次の「hightlightルール」があります。アプリで

"dialog_string_start": [ 
      { 
       token : "keyword", 
       regex : /acts\s+/, 
       next : "dialog_acts" 
      }, 
      { 
       token : "cadena-a-traducir", 
       regex : /\S/, 
       next : "dialog" 
      }, 
      { 
       defaultToken : "string", 
       caseInsensitive: true 
      } 
     ], 
     "dialog_acts": [ 
      { 
       token : "text", 
       regex : /[a-zA-Z0-9\.\_\-\,\s]+/, 
       next : "dialog_string_start" 
      }, 
      { 
       defaultToken : "text", 
       caseInsensitive: true 
      } 
     ], 
     "dialog": [ 
      { 
       token : "cadena-a-traducir", 
       regex : /$|^/, 
       next : "start" 
      }, 
      { 
       defaultToken : "cadena-a-traducir", 
       caseInsensitive: true 
      } 
     ], 
     "multi_line_comment": [ 
      { 
       token : "comment", 
       regex : /\*\//, 
       next : "start" 
      }, 
      { 
       defaultToken : "comment", 
       caseInsensitive: true 
      } 
     ], 
     "single_line_comment": [ 
      { 
       token : "comment", 
       regex : /$|^/, 
       next : "start" 
      }, 
      { 
       defaultToken : "comment", 
       caseInsensitive: true 
      } 
     ]// this is only a part 

を、私はgithubのから「開いているファイル」缶と「対話」と「dialog_inline」hightlightsからテキストを変更します。

ファイルを開くときに、これらの行にある同じ表現を使用してコンテンツをループします。

これまでの作業は問題ありません。私が直面しています問題は、私は「ダイアログ」は、このようなコメントブロックにあるかどうかを確認する方法がわからないということです。

/* start comment 
my dialogs' line 

私はラインのこれらの種類をチェックすると、私がチェックする必要がありますこれがコメントになっている場合は無視して、どうすればいいのか分かりません。

私はTokenizerクラスとgetLineTokensメソッドを使用しようとしました。 このメソッドは配列を返しますが、これが "コメントブロック"であるとは言いませんでした。これがダイアログか変数か他のものかを示します。 Here the tokenizer documentation

(私の英語は読んでも役に立たない場合は申し訳ありません)

PD:電子デスクトップアプリで働いているため、アプリを表示できません。

+0

ハイライトを行うコードとコメントブロックのコードをアップロードできますか? – Thanasis

+0

このフォームの質問は、わかりやすく問題を記述していないため、終了する可能性があります。そして、あなたのコードは、エースのコードよりも多くあります。問題を示すサンプルページを追加してみる必要があります –

+0

@ Thanasisはコードを準備しています。ありがとう。 – jrodriguez

答えて

0

私はこのlinkにこのコードを発見し、私はそれはあなたが探しているものだと思う:

"comment"      
: {"type":"comment","tokens":[ 
    // line comment 
    // start, end delims (null matches end-of-line) 
    [ "//", null ], 
    // block comments 
    // start, end delims 
    [ "/*", "*/" ] 
]} 
0

私はエディタがロードし、交換している間に、最終的なバックグラウンドのトークンを読んで何もできないと考えています。私は代わりに翻訳された行を確認できませんでした。

どうして私はこれをやっていません。私の解決策(今のところ)は、エースエディタの最初のクリックでバックグラウンドトークンを確認することでした。その時点で、ライントークンが実際に読み込まれ、私はそれを確認することができます。

 checkGutters:function(){ 
     if(!window.checkgutters) 
     { 
       for (linea in $traductor.gutters){ 
        nroLinea = $traductor.gutters[linea]; 

        token = $traductor.editorActual.session.bgTokenizer.getTokens(nroLinea); 
        if(typeof(token[0])!='undefined' && token[0].type=='comment') 
        { 
         $traductor.editorActual.session.removeGutterDecoration(nroLinea,'gutter-traduccion'); 
        } 

       }//fin for 
       window.checkgutters=true; 
     } 
    } 

"$ traductor"は、エディタ上のすべてを管理するjavascriptオブジェクトです。 "$ traductor.editorActual"はエースエディタのインスタンスです。 "$ traductor.gutters"は配列です。私が前にガッタを追加した線を置いていました。次に、これらの配列をループし、バックグラウンドトークンが「コメント」である溝を取り除きます。私はそれを修正できる唯一の方法です。

token = $traductor.editorActual.session.bgTokenizer.getTokens(nroLinea); 

リターン「テキスト」と前にノー「コメント」:私は、雨どい、行を追加していたときに

ので、このコードは、できません。ファイルが完全にロードされ、ユーザーがエースエディタをクリックすると、コードは正常に動作します。

ありがとうございました。

関連する問題