問題タブ [codemirror-modes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 同じページで codemirror を使用して複数言語のソース コードを強調表示する方法は?
さまざまな言語 (HTML、CSS、Javascript、jQuery) のさまざまなソース コードを強調表示する必要があるチュートリアル ページを作成しています。
現在、私が言及した場合、それは1つの言語を強調していますmode:"jQuery"
コードの一部を HTML として強調表示し、一部を CSS として強調表示し、一部を jQuery などとして強調表示したい.どうすればよいですか?
私の現在のコード:
// コードミラー関数**
これは、同じページで強調したいことです
// CSS モードでコードを強調表示します
// HTML モードでコードを強調表示
// jQueryモードでコードをハイライト
ユーザーが検出するように選択していないため、自動モードまたは自動選択を使用できません。モードが手動である可能性があることに言及する必要があります。同じ関数を使用してこれを達成するにはどうすればよいですか?
codemirror - codemirror シンプル モードを使用したインデント ベースの解析の実装
codemirror シンプル モードを使用して、インデント ベースの言語用のパーサーを実装したいと考えています。デデントを一致させるにはどうすればよいですか。つまり、行がデデントされたときにパーサーの状態を変更したいと考えています。
javascript - トークンを使用して CodeMirror で特定の行を読み取り専用にする方法
トークンを試して使用し、特定のコード行を読み取り専用にしたいと考えています。例えば;
// コメント行を編集可能にし、残りを読み取り専用にしたい。私はこれに完全に慣れていないので、助けが必要です。どうもありがとうございました。
javascript - Codemirror: 独自モジュールのキーワード
codemirror 用の独自のスクリプト言語用に、owm モジュールを作成しようとしています。
私はこのテストコードを持っています:
そして、私たちのキーワードのいくつかは次のとおりです。
- 窓
- SELECT_MULTIPLE
- NO_SIZE
- 促す
- 日にち
- ボタン
- 選択する
- SystemObject
- 電話
- PutObject
私の正規表現では、cons と呼ばれる配列をすべてのキーワードと共に使用します。
次に、次のようにすべての配列エントリを結合します。
そこまではすべてうまくいきます。私が取得した正規表現は、通常の JavaScript の match() で機能します。jQuery を使用してサイトのテキストをフェッチし、正規表現を使用して、必要なものを取得しました。
しかし、私がするとき:
Codemirror では、SessionDate の Date も一致します。
これが私のCodemirrorモード全体です:
編集:
求められたように、ここに作業中のプランカーがあります:
http://plnkr.co/edit/bPyuJd?p=preview
ご覧のとおり、キーワード「SessionDate」はありませんが、キーワード「Date」により、「SessionDate」の「Date」も強調表示されます。
javascript - Codemirror モードの作り方
ウェブサイト用のテキスト エディターが必要だったので、最近 codemirror を始めたばかりですが、プログラムについてはよくわかりません。エディターを JavaScript モードで動作させましたが、エディター用の構文を作成する必要があります。これは、エディター用のモードを作成する必要があることを意味すると思いますが、これを行うのに問題があります。マニュアルを数回読みましたが、おそらくこのような作業をしたことがないため、何かがうまくいきません。とにかく今は、単純な加算、減算、および乗算関数を作成して、コツをつかむ必要があります。誰かが私をこれで転がすことができれば、私は非常に感謝しています.
javascript - オーバーレイを特定の範囲に制限するにはどうすればよいですか?
特定の範囲 (たとえば、3 行目の 44 列目から 8 行目の 5 列目まで) にのみ適用されるオーバーレイをエディターに追加したいと考えています。
問題は、オーバーレイがステートレスであるため、メソッド内の現在の行を見つける方法を思い付くことができなかったためtoken()
、現在の行を状態に保存できないことです。
multiplex.js
との拡張機能を詳しく調べ、overlay.js
ネストされたモードがどのように機能するかを理解しようとしましたが、これらのツールを使用してここで役立つ方法を見つけることができませんでした。基本モードを乱すことなく、これをオーバーレイのように動作させたいことを覚えておいてください。
私の代替手段は、追加されたクラスの要素をスキャンし、手動で変更し、 と を使用element.getBoundingClientRect()
しcm.coorsChar()
てそれらの位置を確認することです。しかし、これは醜く、手動で更新する必要があり、マークされた要素が範囲の境界にまたがるとバグが発生します。これを適切に解決する方法について何か考えはありますか?
codemirror - CodeMirror でオーバーレイの実行を遅らせる
オーバーレイ トークン化の開始時間を制御する方法はありますか? もう 1 つのオプションは、オーバーレイが実行されないようにし、後でアクティブにすることです。オーバーレイを削除して追加すると、ドキュメント全体が 2 回処理されるため、これはあまり役に立ちません。
背景: トークン化がコードの再評価に依存するコード エディターを構築しています。コードの再評価は、エディターの応答性を維持するために遅延されます。