問題タブ [scintilla]
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.
c# - メモリをあまり使用せずに .NET テキスト/シンティラ ボックスから行を読み取るには?
巨大なファイルの読み取りをうまく処理する C# プログラムを作成する必要があります。
たとえば、60 MB 以上のファイルがあります。そのすべてを scintilla ボックスに読み込んで、sci_log と呼びましょう。このプログラムは、この機能とその他の機能で約 200 MB のメモリを使用しています。これでも問題ありません (このファイルを開くために Notepad++ が使用するメモリ量よりも少ない)。
別のシンティラ ボックス、sci_splice があります。ユーザーが検索語を入力すると、プログラムはファイル (またはファイルの長さが十分に小さい場合は sci_log です。両方の方法で発生するため問題ではありません) を検索して、regexp.match を見つけます。一致が見つかると、その行を以前に一致した文字列と連結し、一時的なカウント変数を増やします。count が 100 (または 150、または 200、実際には任意の数) の場合、出力を sci_splice に入れ、GC.Collect() を呼び出し、次の 100 行に対して繰り返します (count = 0 を設定し、文字列を null にします)。
自宅のラップトップからこれを書いているので、今はコードを持っていませんが、これに関する問題は、大量のメモリを使用していることです。200MB のメモリ使用量は 1GB をはるかに超え、終わりが見えません。これは、多くの正規表現が一致する検索でのみ発生するため、文字列に関連するものです。しかし問題は、GC がそのメモリを解放しないかどうかです。また、なぜこんなに高くなるのですか?なぜ 3 倍以上になるのか意味がありません (最悪の場合)。その 200mB のすべてがメモリ内のログに過ぎなかったとしても、実行しているのは各行を読み取って保存することだけです (最悪の場合)。
さらにテストを重ねた結果、Scintilla が行を追加する際に大量のメモリを使用することに何か問題があるようです。行の最初の読み取りでは、一瞬で最大 850mB のメモリ スパイクが発生します。出力をページングするだけでよいと思います。
c# - System.Design はどこに行ったのですか?
私は ScintillaNet を使用している C# プロジェクトを作成しています。
参照されているアセンブリ「ScintillaNet」は、現在ターゲットとなっているフレームワーク「.NETFramework,Version=v4」にない「System.Design、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a」に依存しているため、解決できませんでした。 .0,プロファイル=クライアント". ターゲット フレームワークにないアセンブリへの参照を削除するか、プロジェクトの再ターゲットを検討してください。
への参照を追加しようとしSystem.Design
ましたが、リストに存在しません。どこかにダウンロードする必要がありますか?Microsoft Visual Studio 10 を使用しています。
c# - Scintillaカスタム構文の強調表示が機能しない
C#で作成したScintillaコントロールがあり、構文の強調表示が機能しません。フォントが正しく設定され、ファイルがロードされていることがわかりますが、構文の強調表示がまったく機能しません。
構成ファイルは次のとおりです。
langs.xmlで。(コードはここに収まりません。)誰かがこれが機能しない理由を教えてもらえますか?
lexer - 新しいレクサーをscintilla/sciteに追加します(...そして最終的にはwxPython StyledTextCtrl)
シンチラにレクサーを追加した人はいますか?
私はhttp://www.scintilla.org/SciTELexer.htmlで短い指示に従ってきましたが、http: //www.scintilla.org/ScintillaDoc.html#BuildingScintilla(Changing Set of Lexers)で秘密の追加の指示を発見しました。 )。
すべてがコンパイルされ、レクサーをSciTEに問題なく追加できますが、ColouriseMapfileDocメソッドが呼び出されません(printfは出力を生成しません)。たとえばColouriseLuaDocレクサーに同じコードを追加すると、すべてが正常になります(printfは出力を生成します)。
具体的には
- で
scintilla/include/Scintilla.iface
、追加val SCLEX_MAPFILE=99
- そして、品詞クラスID
- scintilla / includeディレクトリで実行し、ファイルが変更
HFacer.py
されたことを確認します。SciLexer.h
- 関数
LexMapfile.cxx
で作成ColouriseMapfileDoc
ファイルの最後で、レクサーIDと名前を関数に関連付けました。
LexerModule lmMapfile(SCLEX_MAPFILE、ColouriseMapfileDoc、 "mapfile");
実行
LexGen.py
してすべてのmakefileを生成します(秘密の指示に従って)- クローンを作成して新しいSciTEプロパティファイルを作成しました
scite/src/others.properties
- いくつかのスタイルを設定する
- の定義に追加
scite/src/SciTEGlobal.properties
されました。$(filter.conf)
open.filter
- この言語をSciTEの言語メニューに追加しました。
- ScintillaとSciTEの両方を構築しました。
- 不平を言って呪われた。
ステップ12を除いて、私は何を間違っていますか?
c# - ScintillaNetでPASTE操作をオーバーライドするには?
ScintillaNetの Scintilla コントロールを使用していますが、貼り付け操作を制御する必要があります (いくつかのことを確認したり、貼り付けるテキストを更新したりできるようにするため)。
Scintilla コントロールのサブクラスを作成し、WndProc メソッドをオーバーライドしようとしました。次に、WM_PASTE メッセージ (0x0302) を傍受しましたが、うまくいきませんでした。私はそれを決して捕まえません。
私が使用するコードは次のとおりです。
何か案が?
keyboard-shortcuts - notepad ++ですべてのキーボードショートカットをリセットするにはどうすればよいですか?
SCI_DELETEBACKのショートカットを削除したため、バックスペースキーは実際に文字を削除するのではなく、バックスペース文字を出力するようになりました。
なんらかの理由で、このキーを再割り当てすることはできません(おそらく、誰もそれを変更しようとするほど愚かではないと想定しているためです)。
理想的には、バックスペースキーをSCI_DELETEBACKコマンドに再割り当てしたいのですが、ロットをリセットする方が簡単だと思います。
私が間違っていることを証明してください!
ありがとう
c++ - 自分でソースコードエディタを作りたいのですが、良い選択は何ですか?
私は、次のような単純なものを決して提供しない数十のエディターを持っています。
- タイプキーワードとインストラクションキーワードを区別して、色を変えられるようにします。
- qt gtkなどの標準的なGUIライブラリを使用するクロスプラットフォームであること(notepad ++、はい、私はほとんどあなたを嫌います)。
- 重複行、コメント選択、適切な検索-置換などの十分なキーボードショートカット。
- 行全体を選択するための数直線マージンのシングルクリックなどのまともなタスク緩和機能。
- 脳をコンパイルするコードは1つのものであるため、Scintillaまたは十分に異なる別のレクサーで、さまざまなものを強調表示します。私が重要だと思うものを目ですばやく識別します。
HTMLやCSSではなく、C、C ++、おそらくPythonなどの非常に基本的な言語をサポートしたいだけです。
Scintillaは、これらの言語を強調するだけの良い選択であり、レクサーは本当に必要ですか?
QTは、私がやりたいようなテキストエディタをプログラムするのに十分ではありませんか?QScintillaがあることは知っていますが、レクサーを統合するlibを使用すべきではない理由はありますか?Scintillaがこんなに良いlibなのはなぜですか?
QTはそのような編集者にとって良い選択ですか?(また、ProFontをエディターにハード埋め込みして、OS間のフォントの問題を解消したいと思います)。
編集:要するに、私は、notepad++と同じ構文のハイライト機能だけを備えたエディターを作りたいと思っています。それが私の主な目標であり、QScintillaの使用は私が思っていたよりも少し難しいかもしれません...
EDIT2:ええと、私はtextadeptを見つけました、それはそれほど知られていませんが、かなり素晴らしいです。字句解析プログラムを作成できませんでした。ウィンドウの下で行うことが他にあるため、残念ながらMacでは低速です。どうやら、Mac用のSciteの公式ビルドはありません。
c++ - テキストエディタAPI。実験的なIDE用のScintilla。他に何か使っていますか?
今週の終わりにScintilla/Notepad++APIを発見しました。Notepad ++プラグイン用の優れたテンプレートvcprojがオンラインで利用できるので、疑似コードソースを非常に高速に試してみることができます。
有望に見えるAPIを公開しているScintillaのドキュメントを簡単に見てきました。時々それは私にとってまだぼんやりしていて、時には私が期待/夢見ているほど機能が充実していないこともありますが、それは今のところ本当に無意味な詳細です。
さて、今度は自分の好きな言語を試してみましょう。今のところ、「エンティティ」というニックネームを付けています。そして、そのための軽量IDEを設計するよりも何をすべきか。
だから私はNotepad++/Scintilla環境に多くの時間を投資するつもりです。
私はEmacsに慣れたことがないので、Emacsの使用については考えていません。
しかし、Scintilla以外のタイプのテキストエディターAPIを使用する場合、それは私の言語経験であるため、できればC ++で...他にどのテキストエディターAPIを使用しますか/使用しましたか?
深く掘り下げる前に、自分の選択を確認したいだけです。
c++ - QScintilla: 新しいレクサーを作成する方法、または既存のものを変更する方法は?
C++ ハイライトのデフォルトの字句解析器はあまり具体的ではありません。
少なくとも別の色を指定できるようにしたい:
型キーワード (void、int、float など) 命令キーワード (if while do return for など) クラス関連キーワード (テンプレート クラスの仮想フレンド) 型修飾子キーワード (static const extern unsigned など)
LexerCPPソースでこれを見つけました:
等
私はこれを試しました-qscilexercpp.cppをコピーして新しいファイル名qscilexercxx.cppに貼り付けます-上記のコードをスイッチで適切なスイッチに置き換えます:
適切な列挙型を作成した後:
既存のものの終わりに。
現在、私のテキストのほとんどは黒です。返されたキーワードの enum と char 配列の間のリンクについて何かを見逃していたと確信しています...
誰かが私を何かに案内したり、助けたりできますか?
c++ - C++シンチラレクサーをカスタマイズする
さまざまなキーワードセットを認識するようにscintillaに指示するにはどうすればよいですか?notepad ++と同じように、色を変えたいです。