最終更新: 2012-10-27T00:23+0900
その一(20090808p03)がだらだら長くな
ひどい。「/*」を入力して後ろの行がコメント色一色にな
行をまたぐ色分けに問題があ
脳log[2009-08-08-p03] サクラエデって、たとえば一画面に収まらない長大な複数行文字列があ ったとして、何度も上下にスクロ ールしたり改行を入力したりするだけで色分けが変わ ってしま っていた ィタの正規表現キ ーワ ードを SHJS相当にしたい。 @2010-04-14 バグ修正
本当にそうなら、泥縄式バグ潰し無間地獄へ突入ですな。消火行為が点火に直結した効率のいいマ
まさしく > たぶんこれが関係する。
そのときの変更にこんなコメントが添えられているのを発見した。「IsInsideKeyword()から呼ばれたときは精算したらダメ
別の場所で不必要にキ
変わりうる。一行の色分けは一時(いちどき)に、他の行の色分けを挟んだりせずに終わらせなければいけない。正規表現キ
最終更新: 2011-01-02T16:45+0900
SAKURA Development BBS (ANSI)のログが 10ペ
過去ログを見つけた。>http://groups.yahoo.co.jp/group/sakura-editor/files/User/bbs-log/
Subversionが最初からあ
S:27,*,01/02/11,10:49,, T:横スクロール時の動作 N:げんた M: 現在のこのエディタはWM_HSCROLLが来たら横スクロール量を決定して画面全体を書き直す動作を行います。もし、画面全体を書き直す代わりに新規部分のみを書き直せば高速化すると思われるかも知れませんがそうはいきません。 なぜなら、このエディタは色分け情報をメモリ上に保持していないため、描画の都度行の先頭から調べて色を決定しているからです。その際キーワードの検索も行います。たぶん、これがかなりの処理を必要としているのだと思います。 横スクロール速度を劇的に改善しようと思ったら色分けを予め行ってその情報をメモリに保持するようにしないと難しいのではないでしょうか。
gdippを使
S:114,*,01/03/02, 2:32,, T:コントロールプロセスの起動方法 N:げんた E:genta@i.am M: 外部エディタを監視するプログラムからテキストエディタを使うとき、エディタが常駐していないと起動したプロセスは管理プロセスとなってエディタ画面は別プロセスで動作するため、編集終了の検出が正しく行えない場合があります。 自分が管理プロセスになるのではなく管理プロセスを別に起動して起動完了まで待機するような作りにできればこの問題が解決できるなぁと思いました。
タブモ
S:1446,1440,02/02/01,22:27,, T:Re2:正規表現置換の振舞い N:げんた M: >..*\n$ でやってみたら削除できましたけど…??? よく見たら自分で何気なく変えたところだった. 本当に申し訳ない. 今は普通に動いています. ただ,BREGEXPのせいなのか,^.*$ には先頭から改行コード \r\n の\rの部分までがヒットして\nが残ります. ^.*\n$ だと行全体にヒット.
「改行(.と$の動作に影響する)」= LF(0x0A)の指摘がこのとき既に。セルフリンク>20090922p01
S:1475,1474,02/02/05, 0:47,, T:Re4: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ N:げんた M: ちょっと考え直してみました. ▼初期の私のアイディア ・CShareDataの役割=単にDLL Sharedを得るためのクラス. ・タイプ別設定を共有メモリから追い出す. そのために,タイプ別設定のアクセスをCEditDoc::GetDocumentAttributeに集約. 追い出した後の実装はCEditDoc,またはCEditDocに含まれる新規クラスで行うつもりだった. 共有メモリからタイプ別設定を追い出したい理由は以下の通り. * タイプ別設定が足りなくなり,既に2回最大値を拡張している. * タイプ別設定の領域を予め共有メモリに確保しなくてはならないので,上限の撤廃ができない. * 初回起動時に使うかわからない領域全てを初期化するのは無駄ではないか. 追い出しのアイディア * タイプ別設定はそれぞれ外部ファイルに用意する. * 設定ファイルは必要に応じて読み込まれる. * 変更は現状通りダイアログボックスで行う. * 変更されたらすぐにファイルに保存し,設定変更Broadcastメッセージを投げる. * Broadcastを受け取ったら該当タイプを使用しているか確認. * 使用していたらファイルから再読込し,設定を更新する. >各種設定が共通設定だろうが、タイプ別設定だろうが、気にせずとりあえずCSettingMediatorに問い合わせたり、設定を依頼するだけでよくなったら便利だなぁと思っています。 なるほど.これは良いと思います.最終的には設定情報がどこに格納されているのかも意識する必要が無くなるので,これは私のアイディアと矛盾しません.CEditDoc::GetDocumentAttributeで取得するのをDLLSHAREからCSettingMediator経由に変更すればタイプ別設定のカプセル化の場所が移動します. 私の初期アイディアと組み合わせると,追い出した後の実装というのをCSettingMediatorに依頼することになるでしょう.タイプ一覧の設定,指定タイプの取得,更新などファイルへの書き出し・読み込みタイミングもCSettingMediatorが管理すれば良いような気がします. 上記内容を納得した上で私が確認した限りでは特に問題はないように思います. --- 実装に入る前に設計に対する議論を行うことは有意義だと思います.これまでは議論する相手がいなかったので...(;_;)
タイプ別設定を共有メモリから追い出すアイデ
設定の場所を隠蔽するクラスも構想されている。それのメリ
の 3を、2との差分とすることで基本的な設定の共通化(基本設定による)を図りつつ、設定の読み出しを一本化できること。
S:1606,*,02/02/16, 2:26,, T:ssrc_2002-02-11_p1 N:hor M: ssrc_2002-02-11 からの変更箇所です。ご参考まで。 (省略) □その他のその他 ・[Ctrl+Home]or[Ctrl+End]後に[Down]or[Up]したときの挙動を見直し・・・以下変更個所 1.矩形選択中に[Ctrl+Home]or[Ctrl+End]して[Down]or[Up]したとき以外は普通にカーソル移動 2.選択を解除したあとは普通にカーソル移動 (省略)
フ
S:1759,*,02/03/23,11:01,, T:バックアップごみ箱問題 N:みく M: ネットワークドライブまたはリムーバブルドライブのファイルを ごみ箱に放り込むとOSの仕様により消滅してしまいます。 バックアップしたつもりがされてないという現象を避けるため、 これらのドライブの場合はごみ箱に放り込まないようにしました。 次回版にでも取り込んでください。 どうしてもごみ箱に放り込みたい場合は、 「指定のフォルダに作成する」でフォルダにローカルドライブのフォルダを 指定し、さらに「バックアップをごみ箱に放り込む」を指定してください。 (指定のフォルダにごみ箱を直接指定することはできません)
最近見かけたリム
自分はバ
>Editor.FileSave(); >svn up "working copy" >copy /Y /B "filepath" "working copy/filename" ); >svn add "working copy/filename" >svn commit "working copy/filename" -m "filepath" --force-log --non-interactive'
たかだかテキストフ
S:1980,*,02/04/30, 1:41,, T:半角スペース表示 N:KK M: KKです。 一般掲示板の方で要望のあった 「半角スペースの表示を追加する」 パッチを書いてみました。04-27版へのパッチです。 DispSpc04-27.zip (省略)S:1982,1980,02/04/30, 2:12,, T:Re:半角スペース表示 N:げんた M: 小文字のoの下半分だけを使うという発想が何とも独創的 (^^)
いまの Unicode版も同じ実装。気付かなか
空白記号類は特に明示指定した部分以外はなるべく周辺の指定に合わせるようにしてみた // 2009.05.30 ryoji
sakura/trunk2/view/figures/CFigureStrategy.cpp
ソ
S:2237,*,02/07/03,12:22,, T:クラス、インターフェイスの整理 N:ボロぞうきん M: (省略) 1&2 1行の文字数が3万文字を超えてくると極端に遅くなるので、 行バッファを簡易gapped buffer方式に変更したかったけど、 内部のポインタを書き換え目的に使っている場所があり、 単純にconst化出来なかった。 (省略)
でました。gapped buffer
S:2278,*,02/08/23,20:29,, T:正規表現ライブラリ N:みく M: 比較的新しそうな正規表現ライブラリとして、 こんなのもあるみたいです。 http://www.fides.dti.ne.jp/~oka-t/libraries.html
S:2959,*,03/07/21, 3:35,, T:正規表現ライブラリの不具合 N:げんた M: http://www.fides.dti.ne.jp/~oka-t/history-2001.html でPerlの正規表現の不具合について触れられていた. 試してみると確かに ::1234::5678901234567890::::1234567890:: 888: に対して ^([0-9]+|::)*$ で検索するとフリーズする.(よい子は真似をしないでください) Perl 5.8ではフリーズしなかった.
リンク先が同じ。なんち
S:2562,2559,03/02/11, 1:19,, T:Re: マルチユーザモード(案) N:もか M: ▼ みくさん >実行ファイル名を sakuram.exe とかに改名するとマルチユーザモードになり、 実行ファイル名を 任意の文字列1.exe などにすると文字コードがその数字の文字コード(この場合EUC-JPに)固定されるという機能があるから (省略)
なんぞそれ>「実行フ
S:3140,*,03/09/15,11:53,, T:色分けHTML出力 N:wmlhq M: 強調キーワードなどを使って色分けしたソースコードをsakuraでもHTML/XMLで出力できたら、便利だろうな。「形式を指定してコピー(special copy)」で実装するとか。 <font size=10><pre>//<nobr>comment</nobr> <font color="#576447">int</font> func(); </pre></font>
これは面白そう。もちろんフ
<style> /*<![CDATA[*/ .comment { color: green; background-color: white; font-style: oblique; } /*]]>*/ </style> <span class="comment">//コメント</span>
にするけど。HTML直打ちに近いブログに投稿する以外に、正規表現キ
それにしてもこの wmlhq(自称)という人は……。掲示板の閲覧者はする~かが試されている(笑) 関わりたくはないけど知識とエネルギ
S:3300,3299,03/11/07,21:31,, T:BREGEXP.DLL N:かろと E:karoto@infoseek.jp M: ▼ もかさん > Perl Artistic License > "Freely Available" 内の 2.「バグ修正」か「移植」のための修正 > に該当しそうですが、どうでしょうか? オリジナルのPerlの関数には、行頭から文字列を渡せるようになっていて、 BMatchEx()で、その引数にも値を渡せるようにしただけなので、 変更そのものは簡単なことで、「移植」なんて言うのもおこがましい程度です。 > 微妙に気になるのは、V1.0(VB未対応)で、Exportしてる関数が少ないのと、for SAKURA になってる... V1.0とV1.1の違いって、VB対応だったんですね・・知りませんでした。 Linux版のソースをもってきた関係上、VB対応部分は入ってませんでした。 というわけで、ExportしているVB用関数もありません。 Linuxソースなので、リソース関連のファイルは同梱されてなかったので、適当に作り、 本家のBREGEXPと異なることがわかりやすいように、「for SAKURA」ってのを入れました。(笑) まずいでしょうか? > #いい感じだと欲が出てくるもので、 > #ついでに改行コード周りもDLL側でやってくれないかなぁ(実はやってる?) 実は、同じ事を考えて、内部の以前Perlの関数眺めたのですが、改行は1文字(\n)だと 決めて処理している箇所があり、難しそうだなぁと思いました。 > #UTF-16にも対応してくれないかなぁ ははは・・・さすがに対応済みのDLLを持ってきた方が早いかと・・
「改行は1文字(\n)」が「改行は1文字(\rの後ろではない\n, \r)」になるだけでも十分ではないのかなあ。
$
が行文字列末尾にマ(?:)
が改行文字の後ろにマ調子に乗
みたいにしてできるかも。複数行検索モ
BREGEXP for SAKURAのマ
bool dot_matches_cr() // falseになっていることを確認する。テストは sフラグOFFで行われる。 { BREGEXP* rxp = NULL; const char* const szCR = "\r"; char szErrorMsg[80] = ""; const bool retval = 0 < BMatch("/./", szCR, szCR + 1, &rxp, szErrorMsg); if(rxp != NULL) { BRegfree(rxp); } return retval; } bool dollar_matches_before_cr() // trueになっていることを確認する。テストは mフラグONで行われる。 { BREGEXP* rxp = NULL; const char* const szCR = "\r"; char szErrorMsg[80] = ""; const bool retval = 0 < BMatch("/$/m", szCR, szCR + 1, &rxp, szErrorMsg) && rxp->startp[0] == szCR; if(rxp != NULL) { BRegfree(rxp); } return retval; }
正規表現に関連して、ログからこんな URLも見つけ出してきた。
「COOLなURLは変わらない」ということを、リンク切れを発見するたびに思い出す。この二つの URLはもちろん今も有効。
S:3521,*,04/04/03, 0:28,, T:有効なカーソル位置の謎 N:もか M: あと、有効なカーソル位置ってどの範囲なのか、いまいちわかりません。 私が認識している動作は、フリーカーソルモードか、矩形選択中・終了後の位置としてEOFにまつわる位置だけに絞っても、 1. [EOF]だけの行(データの終端は改行)は行頭以外却下。 2. [EOF]だけのレイアウト行(データの終端は普通の文字)は行頭以外却下。 不思議なのは、レイアウト折り返し時はインデントされないし、カーソル座標表示も変かも。。 3. 普通の文字の後ろについた[EOF]より後ろ(正確には右側かつウィンドウ折り返し線より左側)は有効。 で次の行(EOFマークの次の行だから存在していない行)は不正。 あと、矩形選択で、折り返し位置にカーソルを移動しようとしても、行頭に飛ばされてしまって、最後の1文字が選択できません。 ただし、EOFの表示のみ折り返される場合は、選択できてしまいます。 選択できるようにすると、今度は、論理座標との双方向変換の1対1対応が保証されなくなるので、たぶんこまります。
後半はこれ(20091026p01)関連。なんかもう、ほとんどの問題は既出だという気がしてきた。その都度解決できていれば出てこないはずなのに……。
S:3752,*,04/09/27,17:34,, T:改行コードが食い違う N:もか M: 上書き保存したファイルとエディタが保持しているデータで、改行コードが異なることがあります。 1. 名前をつけて保存で、改行コードを変換する指定で保存 2. リロードされた後、入力改行コード指定により、1.で指定した改行コード以外を選択 3. 改行を入力 4. 上書き保存。このとき、2.で指定された改行コードで保存される この時点でリロードされないので、保存したファイルと、エディタ上のデータで食い違いが発生します。 同様に、Shift_JIS以外では、ファイルとエディタ上のデータで、実際には異なる(=リロードするとデータが変わる)ことがありますが、 こちらは下手にリロードすると、保存時に文字化けした場合は修正するチャンスを失うことになります。S:3753,3752,04/10/02,12:21,, T:Re: 改行コードが食い違う N:げんた M: 現象を確認しました. 要するに名前を付けて保存で指定したコード指定がその後の上書き保存でも生きているのが問題というわけですよね.そもそも保存時のコード指定がメンバ変数としてずっと保持されているのが不思議な気がします. でも改行コードなんか気にしないで,他の文書からコピーしたものを保存したときに常にコードが統一されて欲しいという人もいるかもしれない.かといって保存の都度reloadするのは無駄ですし. ・保存時のコード指定は保存しない ・毎回コードを指定して上書きしたい人はマクロで対応してもらう というのでいいように思います.
これなんかも、すでに自分で遭遇してる現象なんだけど、ず
他にも、「アウトライン解析のプラグイン化」という語がログのごく初期に登場していたり、正規表現ライブラリが最初は jre32.dllであ//k
が入力必須で面倒だ//k
を自動付加するようにしてみたけどまだ \
にエスケ@
や %
などパタ
* BREGEXPの Bは BASP21の Bと同じ BABAの Bのはずで、BASP21は WSHから利用できるオ
最終更新: 2010-07-10T01:01+0900
hitEnd
public boolean hitEnd()
このマ
ッチ ャ ーが行な った最前のマ ッチング操作によ って、入力シ ーケンスの終わりに達していたら、trueを返します。 このメソ
ッドがtrueを返したときは、さらに新たな入力を加えると最後のマ ッチの結果が変わる可能性があります。 requireEnd
public boolean requireEnd()
入力を新たに増やすことによ
って、それまでのマ ッチが不成功に変わるならtrueを返します。 マ
java.util.regex クラス Matcherッチが見つか っていたときにこのメソ ッドがtrueを返したら、さら入力を増やすとそのマ ッチがなくなることを意味します。マ ッチが見つか っていたときにこのメソ ッドがfalseを返したら、さらに入力を増やすとマ ッチが変わるかもしれないが、マ ッチがなくなることはないことを意味します。マ ッチが見つか っていないときにrequireEndを呼ぶことは、無意味です。
まず 1.5 で導入された hitEnd メソ
Java 正規表現アプリケッドと requireEnd メソ ッドですが、 hitEnd メソ ッドはドキ ュメントでは入力の末尾がヒ ットした場合にtrueを返すとありますが、入力というのは領域を指しているようなのですが、末尾というのが最後の文字なのか末尾の位置なのかよく分かりませんでした。例えば aa をマ ッチング対象の入力シ ーケンスとして正規表現 aa でマ ッチングを行 った場合、入力シ ーケンス全体にマ ッチしますが、この場合に hitEnd は false を返します。つまり最後の文字がマ ッチしていても true にはならないようです。ところが正規表現 a+ や a* でマ ッチングを行うと aa と同様に入力シ ーケンス全体にマ ッチしますが、この場合は hitEnd は true となります。つまりマ ッチした部分だけでなく正規表現パタ ーン自体も hitEnd の返す値に影響するようです。 ーシ ョン
どちらも入力が一つの文字列におさま
hitEnd()について想像するなら、
search engineが遷移先を残したまま入力を消費し尽くしたときに hitEnd()が trueになる。それの意味することは、直前のマ
ところで、hitEnd()が trueかつ requireEnd()が trueの場合
requireEnd()はなくても困りはしない。マ
hitEnd()も、マ
そうそうこれこれ。>http://www.mail-archive.com/classpath-patches@gnu.org/msg08501.html
さらに、こ
boolean hitEnd()
(This method is unreliable in Java 1.5; a workaround is presented on page 392.)
This method indicates whether the regex engine tried to inspect beyond the trailing end of the input during the previous match attempt (regardless of whether that attempt was ultimately successful). This includes the inspection done by boundaries such as \b and $.
If hitEnd returns true, more input could have changed the result (changed failure to success, changed success to failure, or changed the span of text matched). On the other hand, false means that the results from the previous attempt were derived solely from the input the regex engine had to work with, and, as such, appending additional text could not have changed the result.
The common application is that if you have a successful match after which hitEnd is true, you need to wait for more input before committing to a decision. If you have a failed match attempt and hitEnd is true, you'll want to allow more input to come in, rather than aborting with a syntax error.
Section 8.4. The Matcher Object
♭ FILEここにもありますよ。 http://sakura.qp.land.to/?OtherDoc%2FIncmLogsto..
♭ ds14050おお っ、2008年4月まである。楽しみが増えました。情報ありがとうございます。