homelandbags さん 2008年 01月 30日 06時 35分 07秒

woods living leaf the forests pruning and eat by themselves

とし さん 2008年 01月 30日 00時 00分 36秒

>おがわさん
おおっ、、こんなに早く実装して頂けるとは!?
早速、色々試してみます!!

おがわ さん 2008年 01月 29日 21時 55分 42秒

>としさん
感想ありがとうございます。とても参考になります。
oedit 5.9.7.0にて、以下の機能を実現しました。
>@キー割り当て状況を一覧できる仕組み。(マクロで割り当てした分限定)
>BOEdit起動時のコマンドライン引数を取得する関数。


とし さん 2008年 01月 28日 23時 47分 39秒

前投稿で嘘書いてしまいました。もっと速かったです。
訂正しときます。(汗)

■訂正■
誤 …全角100文字×4096回ループで、所要時間5秒程でした。(Celeron 2.40GHz環境)
正 …全角100文字×4096回ループで、所要時間2秒程でした。(Celeron 2.40GHz環境)

とし さん 2008年 01月 27日 21時 03分 21秒

>おがわさん
…自己流『自動ワード選択』マクロ、完成ですっ!!(祝)
おかげ様で、手に負えそうで、欲しいものは、ほぼ作り終える事ができました。
様々な置換や選択をキー1つでこなせる様になり、作業が大変はかどります。
便利なツールを提供して頂き、本当に有難うございました。

1ヶ月余り使ってみた感想ですけど、
■OEdit版Schemeの感想■
・ペアとリストの相互変換公式が頭に入っていれば、意外と何でもなんとかなる。
・継続とか束縛とか、用語がとっつき難いけど、Schemeって意外とメジャーなので情報収集には不自由しない。
 (Gaucheのリファレンス、R5RSの日本語訳ページ辺りが、そのまま取説代わりに使えました)
・『何でも再帰』がSchemeの流儀みたいで、最初は苦労しました。
 『scmlib/init.scm』中のstring->list関数、memq関数辺りが、ループを再帰で書くいいお手本になりました。
・意外とパフォーマンスがいい。
 ・文字列を逆転させる関数を試しに作ってみたのですが、
  全角100文字×4096回ループで、所要時間5秒程でした。(Celeron 2.40GHz環境)
 ・マクロ用途からすると、十分な速度であると感じました。
・意外とメモリを食わない。
 ・Scheme処理系の使用メモリは自作関数30個込みで、対OEdit5.1系比、500KB増し程。
 ・マクロの実行を繰り返しても、それに起因するメモリ浪費等は特にありませんでした。
・動作がかなり安定している。
 不正なマクロコードへのエラー対処は、未だ完全でなく、書き方によっては落ちたりもするけど、
 不規則に落ちるのではなく、再現率100%で落ちるので後を引かない。
 バグ取りが済めば、後は安心して使えました。

あと、将来的にあったらいいなと思えた機能(又は関数)を列挙しときます。(ちょっと欲張りました)
検討項目の末席にでも加えて頂ければ幸いです。
■将来への要望■
@キー割り当て状況を一覧できる仕組み。(マクロで割り当てした分限定)
 例えば、こんなの↓とか。
 ・『(app-set-key <keyname> <proc> [<comment>])』(仕様拡張)
 ・『(app-get-all-key-info)』(新機能)
 使用例
 (define selector (lambda () 〜 )) (app-set-key "F6" selector "自動ワード選択")
 (app-get-all-key-info) ;=>(("F6" "selector" "自動ワード選択") … )◆割り当て分のリストが返る
 ●↑形には全然拘らないです。キー一発で一覧できる(≒ヘルプ表示)なら、どんなでもOK的な。
A1行入力ダイアログを出現させる関数。
 ↓なイメージ。
 (app-input-box <window-title> [<default-str>])
 ・<default-str>…入力欄に初期文字列として選択状態で現れる。(検索ダイアログみたいな)
 ●デバッグとかにも活用できるかと。
BOEdit起動時のコマンドライン引数を取得する関数。
 ・(app-set-event-handler "on-open-file" 〜)関数とコンボで用いると、
  OEdit標準にはない自作オプションとかも処理できて、凄い自由度が上がりそうです。
  例えば、外部アプリから範囲指定付き↓でOEditを起動するとか。
  『oedit.exe /RS53 /CS0 /RE55 /CE40 ファイル名』
Cダイアログからのマクロ実行の中断機能。
 ・デバッグでapp-msg-boxダイアログをループさせた際に、途中で止められず焦りました。
  ダイアログ中でもキャンセルキーが効くと助かるな、と思いました。
  (或いは、×ボタン辺りで中断させられるとか)

最後に、気付いた所だけですが、誤植と抜けの報告。
■誤植?■
【doc/macro_oedit.txt】
135行24桁目…誤『"on-open"』→正『"on-open-file"』

【doc/macro_ref.txt】
182行25桁目…誤『i 1 10』→正『(i 1 10)』
185行23桁目…誤『i 1 10』→正『(i 1 10)』
235行51桁目…誤『(1 . (2 . (3 . ()))』→正『(1 . (2 . (3 . ())))』
263行 5桁目…誤『list』→正『length』
271行 4桁目…誤『(list-tail <list>)』→正『(list-tail <list> <k>)』
367行36桁目…誤『startからendまでの文字列を』→正『start(これを含む)からend(これを含まない)迄の文字列を』
371行30桁目…誤『\#a』→正『#\a』

■抜け?■
【doc/macro_ref.txt】
- (string->number <str>) 文字列から数値を得る。
- (number->string <num>) 数値から文字列を得る。

おがわ さん 2008年 01月 26日 07時 07分 55秒

>Fin.さん
ご報告ありがとうございます。
oedit 5.1.6.5で修正しました。

Fin. さん 2008年 01月 25日 09時 48分 41秒

いつも便利に使わせて頂いております。

oedit にて、妙な動作が発生したので、報告させていただきます。

発生手順
1.縦スクロールが有効になる行数のテキストを開く
2.2画面分割表示にする
3.[ファイル]-[読みなおす]を押す

上記手順により、2画面分割表示の上画面の縦スクロールが出来な
くなります。


OS:XP Sp2
oedit Ver 5.1.6.4

freemailstud さん 2008年 01月 24日 23時 28分 49秒

for the other things even more than in a hollow about I go back

ibmgoogleuni さん 2008年 01月 24日 23時 28分 10秒

huge tree even snapping rewarding

おがわ さん 2008年 01月 24日 05時 30分 40秒

>としさん
ご報告ありがとうございます。
oedit 5.9.6.4で修正しました。

とし さん 2008年 01月 22日 23時 52分 51秒

>おがわさん
ちょっと早いけど、Scheme関連のバグ報告です…。
修正は一息付いてからで、全然構いません。(報告だけさせて下さい・汗)
(環境OEdit Version 5.9.6.3 + XP home SP2)

■症状■
・string->regexp関数の引数として、『正規表現として不適当な表現』文字列を指定した場合に、
 OEditが落ちる。(→事前に、エラーで弾いてくれれば幸いです)
・regexp->string関数の方は、大丈夫みたい。
 (ちゃんと『Error: invalid regexp pattern』で弾いてくれてる)

■検証コード■
(write (string->regexp "a[x]b")) ;=>#/a[x]b/
(write (string->regexp "a\[x\]b")) ;=>#/a[x]b/
(write (string->regexp "a[]b")) ;=>◆落ちる。
(write (string->regexp "a\[\]b")) ;=>◆落ちる。
(write (string->regexp "a\\[\\]b")) ;=>#/a\[\]b/
(write (string->regexp "*")) ;=>◆落ちる。
(write (string->regexp "(")) ;=>◆落ちる。

とし さん 2008年 01月 22日 22時 36分 25秒

>おがわさん
いつも迅速な対応、本当に有難うございます!
自己流ワード選択マクロも、いよいよ大詰めで、テンション上がりまくりです。
頑張って完成させるぞぉ〜〜!!

おがわ さん 2008年 01月 22日 01時 25分 43秒

>ゆうきちさん
ご質問ありがとうございます。
スクロールについて、最終行を超えてスクロールできませんので、
ご希望の動作になりません。
ご要望につきましても、検討させていただきます。

>smiyaさん、kiitos さん
読みなおしたあと不安定になる問題について、oedit 5.1.6.4/5.9.6.3にて、修正しました。

>としさん
ご報告いただいたインタプリタの問題、oedit 5.9.6.3で修正しました。

おがわ さん 2008年 01月 19日 21時 58分 36秒

>はじめてのパパさん
ファイル→テーブル選択メニューの画面で、右下にある「データをロック」する
チェックをはずしてください

>smiyaさん、kiitos さん
報告ありがとうございます。
読みなおすメニューを実行したとき、選択範囲の座標が不正な状態になってました。
次期バージョンで、読みなおすメニュー実行後は、選択範囲をクリアするように
修正したいと思います。

>としさん
報告ありがとうございます。
調査してみます。

とし さん 2008年 01月 19日 16時 52分 47秒

お手数掛けます。Scheme関連でちょっと上手く行かないので、質問宜しくお願いします。
(環境OEdit Version 5.9.6.2 + XP home SP2)

■質問■
・試作段階の『行-文字インデックス』座標系アクセスライブラリ(ファイル名『lib-xy.scm』)を
 別個のファイルとして管理したくて、
 oedit.scm内から(use lib-xy)の様に呼び出した所、OEdit起動毎に
 Error: unbounded variable editor-get-cur-row
 なエラーが出てしまい、上手く動作しません。
 (requireやload関数で試しても、同様の症状でした)
・原因究明の為に、色々調査した結果、どうやらeditor-〜系関数をuseする際に起こる現象の様でした。
・どこか、useの使い方が間違っているのでしょうか?
 (Gaucheのリファレンス読んだのですが、OEdit版より複雑な機構の様で、参考になりませんでした・汗)
・何とか、editor-〜系関数も、正常load出来るようにならないでしょうか?

■検証用コード■
・oedit.scm内に、(use test)とのみ記述する。
・test.scmを、oedit.scmと同じフォルダに配置する。
・test.scm中には、次の1行のみを記述する。
 (define x 〜)
・上記『〜』部を色々変化させて実験した。
 @display      …正常。
 Astring-length   …正常。
 Bapp-msg-box    …正常。
 Ceditor-get-cur-row …エラー。

追加報告。
・write/display両関数が、全角文字定数に対応してないみたい(?)です。
 writeにはデバッグの際に結構助けてもらってます。可能なら、対応宜しくお願い致します。
 (write #\あ)         ;=>現状『#\・』、希望『#\あ』
 (write '(#\あ #\い #\う))   ;=>現状『(#\・ #\「 #\、)』、希望『(#\あ #\い #\う)』
 (display #\あ)        ;=>現状『・』、希望『あ』
 (display '(#\あ #\い #\う))  ;=>現状『(・ 「 、)』、希望『(あ い う)』
 ●↑中の『・「、』3種は、本当は半角だけど全角に変えて掲載してます。
 ●どうやら、SJISの下位1バイト部分が文字定数として出力されてるみたいです。

kiitos さん 2008年 01月 19日 15時 15分 05秒

当環境でもなりました。「コピー」動作は必要ないかもしれません。
選択文字列がある状態でSmiyaさんの条件で変更されたファイルの
読み直しを行うといろいろな場面で落ちる気がします
「Ctrl+V」でも「Ctrl+Z」でも落ちました

XP Sp2
OEdit Version 5.1.6.3

smiya さん 2008年 01月 19日 12時 01分 25秒

いつもありがたく使わせて頂いております.

下記の内容で操作をすると,oeditが落ちてしまいますので報告させていただきます.

"ABC"と言う内容のテキストファイルをoeditで作成
他のエディタなどでそのファイルを開き,"ABC"を"AB"に直して保存(元の文字列より短いことが条件)
oeditで,"ABC"の文字列を,すべて選択→コピー
ファイル→読みなおす を実行
編集→貼り付け をすると落ちてしまいます.

OS:XP,2000でも発生
oedit:ver 5.9.6.1

魔界の仮面弁士 さん 2008年 01月 18日 19時 47分 10秒

>> さらに追加要望なのですが、OSqlEdit の filter コンボボックス向けの機能として、
>> (テーブル/ビュー/列に対して)『コメントに対する絞り込みもサポートする』といった
>> オプションを追加することは可能でしょうか?
> filter機能の拡張の件とView境界のクリック時の動作の件については、
> 検討させていただきます。

コメント絞り込み機能の対応、ありがとうございました。
待ち望んでいた機能です。m(_ _)m

ところで……7.6.9.0 の[ヘルプ]-[バージョン情報]の部分は、
「2000-2008」ではなく、去年のままなのですね。ちょっと気になってしまいました。

ゆうきち さん 2008年 01月 18日 10時 01分 23秒

おがわさん
はじめまして、ゆうきちと申します。

otbedit 4.2.7.4を使用させていただいてます。

質問と要望があります。

使用してると後半の行になるにつれて
画面の下の方になって行きます
ディスプレイにもよりますが、私の環境だと
38行ぐらいを編集しているとちょっとやりづらいです。

マウスのスクロール(上・下)で
中央付近に持ってくる事はできるのでしょうか?


要望:

桁基準線を表示できるようにして欲しい。
折り返しはしないで、基準線だけ表示したいです。

以上勝手なお願いですが
どうぞよろしくお願いします。

とし さん 2008年 01月 16日 20時 01分 20秒

>おがわさん
editor-get-selected-area関数の実装、有難うございます。
早速、例のものの第2段階〜に取り掛かろうと思います。

追記。
新機能の『マクロを実行(クリップボード)』も、タイムリーでした。
現在、『行-文字インデックス』座標系(OEdit標準は『行-桁』座標系)によるアクセスライブラリを試作中
なのですが、コードとテスト用テキストを分離できて非常に助かります。

はじめてのパパ さん 2008年 01月 16日 17時 42分 48秒

質問させていただきます。
psqlgridを使用してデータの参照などを行っていたときの事ですが、
向かいの人と同じユーザ、同じテーブルを参照したら、片方がアクセスの途中で止まったままなのです。
原因を調べていくと、どうやら同じユーザで参照するテーブルも同じだと、
接続の早い者勝ちのようです。。
その後、参照してた者がpsqlgridを閉じると、途中で止まったままのpsqlgridが開いてくれるのです。

同じテーブルを参照するといった行為でも自由に行いたいのですが、
これはpsqlgridの設定があるのでしょうか?
または、DBに対しての設定がなにかしら必要なのでしょうか?

同じユーザを使用して開発しておりますので、
ユーザを追加するなどの処置は行えずちょっと困っております。

ご教示願います。

おがわ さん 2008年 01月 14日 22時 59分 04秒

>としさん
>・上記rxmatch-exを呼び出した際の返り値の中で局所変数mの値は、ずっと活き続けるのか?
>・上記の様な『手続きを返す』様な関数を書いても良いのか?
ご質問について、Schemeインタプリタの仕様では両方ともYesですが、
oeditの実装が不完全なようです。
不安定動作は、次期バージョンで修正します。

とし さん 2008年 01月 14日 22時 56分 53秒

再び連投となります。お許し下さい。
以前、↓コードにて、OEdit Version 5.9.5.1が落ちるという件を報告して、
今は、下記の如くエラー処理される様にして頂いた訳ですが、
(display (cond 100)) ;=>Error: Syntax error in cond

↓コードでもOEditが落ちる事に今気付きました。
(cond (#f 3) 100)

今となっては、もうこんな無茶苦茶なコードを書いたりはしないのですが、
一応、落ちるという事で報告だけさせて頂きます。
(環境OEdit Version 5.9.5.4)

とし さん 2008年 01月 14日 00時 53分 35秒

連投になります。毎度ご面倒お掛けします。(汗)
OEditのSchemeマクロについて、少し教えて頂きたいのと、特定コードの不安定動作について報告致します。
(環境OEdit Version 5.9.5.4)

■質問■
・『(define m (rxmatch #/(.)(.*)/ "ABCD"))(write (rxmatch-substring m 1))』を
 『(define m (rxmatch #/(.)(.*)/ "ABCD"))(write (m 1))』な短縮表記可能にしたくて、
 (define (rxmatch-ex reg str)
  (let ( (m (rxmatch reg str)) )
  (lambda ns (apply rxmatch-substring m ns))))
 の様なコードを書きました。
 関数定義内の局所変数mを利用した手続きを返す形となるのですが、
 OEdit版Schemeでは、この様なコードを許容されますでしょうか?
 より具体的には、
  ・上記rxmatch-exを呼び出した際の返り値の中で局所変数mの値は、ずっと活き続けるのか?
  ・上記の様な『手続きを返す』様な関数を書いても良いのか?
 上手くWeb上で調べられませんでした。宜しくお願いします。

■不安定動作に関する報告■
・上記rxmatch-ex関数を定義した後で、次の3つの実験を行いました。
 @(define m (rxmatch-ex #/(.)(.*)/ "ABCD"))(write (m 1))
 A(define m (rxmatch-ex #/(.)(.*)/ "ABCD"))(write (m 1 2))
 B(define m (rxmatch-ex #/(.)(.*)/ "ABCD"))(write (m))
・結果、AとBで、OEditが落ちてしまいます。(@は正常動作)
・次の2つの変形関数でも上記@〜B実験を行いましたが、同様に、ABでOEditが落ちました。
 D(define (rxmatch-ex reg str)
   (let ( (m (rxmatch reg str)) )
   (lambda (n) (rxmatch-substring m n))))
 E(define $m #f)
  (define (rxmatch-ex reg str)
   (set! $m (rxmatch reg str))
   (lambda (n) (rxmatch-substring $m n)))

とし さん 2008年 01月 09日 20時 45分 54秒

>おがわさん
修正有難うございました。
call/cc関数を使ったマクロも問題なく動作する様になりました。(感謝)
『改行が"\r\n"のテキストをファイルに書き込むと、"\r\r\n"に変換されてしまう』の件ですけど、
仕様変更を確認するついでに色々調べましたので、メモ程度ですが、↓にまとめておきます。
(マクロ作成の際に、ちょっとでも足しになれば、と思いまして)
間違っていたら、御免なさいです。(汗)

■OEdit Version 5.9.5.4時点での挙動・改行コード関連■
@ステータスバーに表示されている現在編集中のファイルの『文字コード/改行コード』は、
 Schemeからは一切参照されていない風。
 Scheme中の文字/改行は、全て『SJIS+CRLF』として扱われている様に思われる。
Aeditor-get-selected-string関数は、改行コードを↓の様に取得する。
 1)通常範囲選択の場合…必ず『\r\n』として取得する。
 2)矩形範囲選択の場合…必ず『\n』として取得する。(矩形右端には必ず『\n』が付く)
Beditor-get-selected-string関数は、文字を必ずSJISとして取得する。
Cdisplay関数は、改行コードを↓の様に処理する。
 1)ファイルに出力する場合
  …手を加えず、そのまま出力。(『\r\n』→『\r\n』、『\r』→『\r』、『\n』→『\n』)
 2)ダイアログに出力する場合
  …『\r\n』『\r』『\n』の何れを用いても、レイアウト上、同等の改行処理が為される。
Ddisplay関数は、文字コードを必ずSJISとして出力する。
Eeditor-paste-string関数は、貼り付け処理の際に改行コードを『\r\n』に一本化する。
 (或いは、OEditの方で、書き込まれた改行を『\r\n』『\r』『\n』→『\r\n』に一本化する)
Feditor-paste-string関数は、OEditが行う様なある種上書き的な矩形貼り付けを再現できない。
 (editor-get-selected-string関数が範囲を取得する時点で、既に矩形情報が失われてしまった可能性)
G正規表現のマッチングでは、
 ・『$』表現は、『改行の直前又は文字列末尾』にマッチする。
 ・正規表現で言う改行とは『\n』の事である風。
 ・例。↓
  (write (regexp-replace-all #/$/ "ABC\rDEF\nGHI\r\nJKL" "&"))
   ;=>"ABC\rDEF&\nGHI\r&\nJKL&"
  (define m (rxmatch #/.*$/ "ABC\rDEF\nGHI\r\nJKL"))(write (rxmatch-num-matches m))
   ;=>1
  (define m (rxmatch #/.*$/ "ABC\rDEF\nGHI\r\nJKL"))(write (rxmatch-substring m))
   ;=>"ABC\rDEF"
  (define m (rxmatch #/(?s).*$/ "ABC\rDEF\nGHI\r\nJKL"))(write (rxmatch-num-matches m))
   ;=>1
  (define m (rxmatch #/(?s).*$/ "ABC\rDEF\nGHI\r\nJKL"))(write (rxmatch-substring m))
   ;=>"ABC\rDEF\nGHI\r\nJKL"


あと、毎度の事ながら、↓にScheme関連の要望を1つ書かせて頂きました。
ご検討して頂ければ幸いです。

■要望■
・現在の選択範囲を(row1 col1 row2 col2)なリスト形か或いは各々個別で取得できる関数がほしい。

ほしい理由なんですけど、実はただ今↓なマクロを作成中でして、今現在その『第1段階』が完成した所なんです。
それで、ここから先へ進む為には、どーしても範囲の始点と終点を知る必要があるんです。
範囲の始点/終点を算出する関数(後述)を自前で作ってはみたのですが、
不恰好な上に不完全で、いよいよ、お手上げとなりました。(苦笑)
素直にOEditに訊けば一発な様な気もしますし、
意外と、使い出がある関数だと思いますんで、ご検討、宜しくお願い致します!

■作成中のマクロ・概要■
・OEditの『Wクリorトリプルクリによるワードの自動選択機能』の自己流版マクロ。
・例えば、『起動時のディレクトリ…"C:\Documents and Settings\toshi\My Documents"』な行がある場合に、
 初期カーソル位置をSettingsの辺りとしてマクロを連続実行して行くと、
 第1選択状態…『Settings\toshi\My』
              ↓↓
 第2選択状態…『C:\Documents and Settings\toshi\My Documents』
              ↓↓
 第3選択状態…『"C:\Documents and Settings\toshi\My Documents"』
 的な段階的範囲選択をしてくれる。

■(editor-get-select-area)関数・代替コード■
;・範囲値の取得は擬似的に行われるので、↓局面では正常に取得できない。
; @複数行にまたがる範囲。(1行範囲にのみ対応)
; Aカーソル位置が、選択範囲の始点又は終点の何れにも位置しない。
; B同じ句が隣接するテキストの境界地点へ向けて、『右→左』方向で範囲選択した場合。
;  例.『012312345』中の『123』(ix:4〜6に位置する方)が、『右→左』方向範囲選択されている状態では、
;    正『(〜 4 〜 7)』ではなく、誤『(〜 1 〜 4)』な値が返る。
(define (editor-get-select-area)
(define row (editor-get-cur-row))
(define col (editor-get-cur-col))
(define str (editor-get-row-string row))
(define ix (string-col->ix str col)) ;◆文字列strの表示上の桁colに相当するインデックス位置ixを算出
(define str-Selected (editor-get-selected-string))
(define str-Selected-len (string-length str-Selected)) ;◆選択文字列の文字数
(define str-Selected-siz (string-size str-Selected)) ;◆選択文字列の表示上の桁数
(define ixs (if (< ix str-Selected-len) 0 (- ix str-Selected-len)))
(if (string=? str-Selected (substring str ixs ix))
(list row (- col str-Selected-siz) row col)
(list row col row (+ col str-Selected-siz))))

おがわ さん 2008年 01月 05日 23時 51分 03秒

>としさん
今年もよろしくお願いします。
不具合の報告ありがとうございます。
インタプリタのガベージコレクタが、call/ccの環境を破壊していました。
次期バージョンで修正します。

とし さん 2008年 01月 01日 21時 28分 29秒

明けましておめでとうございます。本年も宜しくお願い致します。
OEdit Version 5.9.5.3のSchemeマクロにcall/cc関係の不具合(?)が発生する様なので参りました。
正月早々なので、単に報告だけに留めさせて頂きます。
(こちらの勉強不足でしたら、正月明けにでもツッコミ頂ければ幸いです)

■症状■
・call/cc関数を使ったマクロが何度目かの実行時に落ちる、或いは、CPU使用率100%で固まる。
・検証コードは、↓タイプのもの。
 (app-set-key "F12" (lambda ()
 (call/cc (lambda (return)
  〜〜〜
 ))))
・落ちるタイプのコードは何度やっても落ちるし、固まるタイプのものは何度やっても固まる。
・何度目の実行で落ちるかはコード依存。(同一コードなら、何度やっても同じ回数目で必ず不具合となる)
・検証コードの『〜〜〜』部の記述量が大きい程、早期に不具合となる傾向。(絶対ではないが)
・検証コード中のapp-set-key関数部は、あってもなくても症状は変わらない風。
・メモリ使用量は、特に増大して行く風でもない。(安定したまま)

■検証コード■
・ベースコード↓について、『〜〜〜』部を変化させながら実験を行う。
 (app-set-key "F12" (lambda ()
 (call/cc (lambda (return)
  〜〜〜
 ))))
・実験方法は、検証コードを『ツール→マクロを実行(選択範囲)』した後に、
 F12キーを不具合が発生する迄何度も押して行く。
 200回以上のキー押下でも不具合が発生しなければ諦める。
@〜〜〜部が↓の場合。(→69回目にOEditが異常終了)
 (case 5 ((5) ";"))
A〜〜〜部が↓の場合。(→52回目にOEditが異常終了)
 (case 5 ((3) ";") (else #f))
B〜〜〜部が↓の場合。(→42回目にOEditが異常終了)
 (define ext 17)
 (define cs (case ext ((3) ";") (else #f)))
C〜〜〜部が↓の場合。(→86回目にOEditが異常終了)
 (define ext 17)(if (not ext) (return #f))
 (define cs (case ext ((3) ";") (else #f)))
D〜〜〜部が↓の場合。
 ●但し、実行に先立って後述の2サブ関数『case-ex』と『tr』を定義する必要。
 (→ファイル名『test1.css』なら、19回目にマクロ実行中のまま固まる)
 (→新規テキストなら、5回目にOEditが異常終了)
 
 (define fn (editor-get-filename)) ;現在編集中のファイルパス
 (define m (rxmatch #/\.[^.\\]+$/ fn)) ;拡張子に対するマッチング
 (define ext (if m
  (rxmatch-substring m 0) ;拡張子部分を抽出".〜"
  ".txt" ;新規作成中テキスト(=ファイル名なし)の場合は、".txt"と扱う
 ))
 (define cs (case-ex ext ;拡張子に対応する行コメント記号
  ((".txt") " ")
  ((".ini") ";")
  ((".scm") ";")
  ((".rb") "#")
  ((".js") "//")
  ((".htm" ".html") "//")
  ((".bat") "rem")
  (else #f)
 ))
 (if (not cs) (return)) ;登録外の拡張子。(置換処理は不要)
 (define cnt
  (tr '("\\=^(?!\\=z)") `(,cs))
 )
 (app-status-bar-msg cnt "件置換しました")


【サブ関数】(caseのequal?比較版)
(define-macro (case-ex key . clauses)
(let ((key-val (gensym)))
`(let ((,key-val ,key))
(cond
,@(map
(lambda (clause)
(if (equal? (car clause) 'else) ;eq?→equal?改造
clause
`((member ,key-val ',(car clause)) ,@(cdr clause)))) ;memv→member改造
clauses)))))
【サブ関数】(テキスト置換用の小関数)
(define (tr ml rl) (apply + (map editor-replace-selected-string ml rl)))

とし さん 2007年 12月 29日 16時 52分 30秒

>おがわさん

>fatal errorが出た場合、インタプリタの環境が壊れている可能性があるため、
>再起動したほうが良いです
ご返答有難うございました。その様に運用したいと思います。

おがわ さん 2007年 12月 28日 23時 01分 13秒

>としさん
ありがとうございます。

○(rxmatch-substring #f 0)実行時の問題について
rxmatch-substringにrxmatchオブジェクトではなく、#fが渡されたときの処理が
正しくありませんでした。次期バージョンで修正します。

○fatal errorが出た場合、インタプリタの環境が壊れている可能性があるため、
再起動したほうが良いです
現状は安全に復帰できた場合でも、fatal error: no memoryを表示することが
あります。安全な場合は別のメッセージに変更したいと思います。

○(editor-get-selected-string)、(editor-get-all-string)の改行コードについて
改善方法を考えます。
インタプリタ側から改行コードを指定できるようにするか
\r\n -> \r\r\nに変換されないようにするか
などの対策を考えてます。


>みにだぬきさん
ご要望ありがとうございます。
SQL文中の改行の扱いについて、検討させていただきます。


とし さん 2007年 12月 28日 19時 22分 19秒

>おがわさん

>他の方からも矩形選択のコピー時に落ちる問題を報告いただいてましたが、
>今回再現ケースを提示いただき、原因を特定できました。
…おぉ!そうでしたか。報告した甲斐がありました。

あと、毎度小出しにするみたいで恐縮なのですが、
OEdit Version 5.9.5.3のSchemeマクロについて、軽度の不具合が発生したので、報告させて頂きます。
(一部、要望と質問が混じってます)

■症状■
・(rxmatch-substring #f 0)を実行すると、以下のエラーメッセージが出て、
 fatal error: no memory
 その後OEditを終了させようとすると、異常終了となる。
 ●(rxmatch 〜 〜)がマッチしなかった場合に#fが返り得る事を失念したコードを書いてしまった自分の
  初歩的なミスでもあるのですが。(苦笑)

■質問■
・『fatal error: no memory』エラーのおがわさん的な位置付けについて教えて下さい。
 今回の様な事があって、ふと思ったのですが、このエラーは、ひょっとして
  『このエラーがOEditの完全なコントロール下にはない(=OEditが何らかのダメージを負ってしまった)かもしれない』
 可能性を示唆しているのでしょうか?
 例えば、『Error: rxmatch: regexp required: #f』な類のエラーは、事前に引数の型チェックを行った結果
 現れる『完全なコントロール下にある』エラーでOEditは一切ダメージを負っていない…だから、
 そのまま作業を続行してもOK、ですよね?
 では『『fatal error: no memory』の場合はどうなのか、というのが気になりまして。
 今後の運用に活かしたいので、是非教えて下さい。
 もし、OEditの再起動を掛けた方が無難なエラーであるのであれば、その様に運用したいので。

■要望■(検討項目に加えて頂けるだけで本望)
・(editor-get-selected-string)、(editor-get-all-string)両関数の取得する文字列中の改行コード表現に関する要望。
 どちらも、現状は改行コードとして『\r\n』2文字を返す仕様になっています(矩形選択時は『\n』1文字)が、
 これを『\n』1文字で返すように仕様変更して頂けないでしょうか?
 理由は、以下の2点で扱いにくさを感じたからです。
 @ファイル出力の際には『\n』1文字→『\r\n』2文字に変換されて出力される様で、その結果、
  (define s (editor-get-selected-string))
  (define ouf (open-output-file "〜ファイルパス〜"))
  (display s ouf)
  (close-output-port ouf)
  の様な処理を行った際に、『\r\n』→『\r\r\n』変換されて、間延びしたテキストとなってしまう。
 A(rxmatch)関数にて、テキストの1行目(改行除く)にマッチさせる際に、
  『#/^.*$/』検索表現で済みそうな所に、
  『#/^.*?(?=\r$|$)/』だけの記述を要してしまう。(もっと短くなるかもしれませんが)

みにだぬき さん 2007年 12月 28日 12時 03分 16秒

小川さま。 こんにちは。
いつもOsqledit愛用させて頂いてます。
一つ教えて頂きたいのですが。
OsqleditでSQLを実行する際には空白行が1行混じっていても
無視して実行してくれますが、SQL +ではそこでSQLの終わりと
判断されてしまいますよね?
開発はOsqleditで行って、作成したSQLを本番環境にリリースするときには
SQL +を使用しているのですが、先日空白行が紛れ込んでいたSQLを
リリースしてしまった事があり、Where文の途中から下が全くない
VIEWが出来たせいで処理が異常終了してしまいました。
私の注意不足なのですが、今後このようなことがないように
空白行でSQLの終わりと見なすような設定がないかと探してみたのですが
見つけられませんでした。
そういった設定は可能なのでしょうか?
もし出来るものなら、設定しておけば安心なのだけれどと思っています。

よろしくお願い致します。

おがわ さん 2007年 12月 27日 21時 41分 22秒

>としさん
ご報告ありがとうございます。
oedit最新バージョンで修正しました。
他の方からも矩形選択のコピー時に落ちる問題を報告いただいてましたが、
今回再現ケースを提示いただき、原因を特定できました。

とし さん 2007年 12月 26日 22時 20分 19秒

ここの所、この様な投稿ばかりで本当に申し訳ないです。
OEditの矩形選択関連で、不思議な症状を発見しましたので、
そちらの環境でも、一度試してみては頂けないでしょうか?(特にA番の方)
宜しくお願いします。

■症状■
・折り返し表示されているテキストに対する矩形選択について、↓2種の不思議な症状が発生する。
 @コピー(Ctrl+C)→貼り付け(Ctrl+V)した際に、意図したより少ない文字列が貼り付けられる。
 A貼り付けせずに、コピー(Ctrl+C)のみを連続で5〜10回繰り返すと、OEditが勝手に終了する。
  ・異常終了を示すダイアログは一切出ず、Windowsのイベントビューアにも何も記録されない。
  ・編集中のテキストであっても、『ドキュメントを閉じる前に,変更を保存するか確認する…○』設定
   が働かず、何も言わずにOEditが終了してしまう。
・OEdit Version 5.9.5.2とOEdit Version 5.1.6.2のどちらでも発生する。
・今回の件との関連は不明ですが、症状のテストを繰り返していた時で、OEdit終了時に、1度↓エラーが発生した。
 "0x7467c7d6" の命令が "0x38373635" のメモリを参照しました。
 メモリが "read" になることはできませんでした。
 プログラムを終了するには [OK] をクリックしてください
・その際には、イベントビューアにも↓2つのエラーイベントが記録された。
 @エラー発生アプリケーション oedit.exe、バージョン 5.9.5.1、
  エラー発生モジュール comctl32.dll、バージョン 5.82.2900.2982、エラー発生アドレス 0x00007092
 Aエラー発生アプリケーション oedit.exe、バージョン 5.9.5.1、
  エラー発生モジュール msctf.dll、バージョン 5.1.2600.2180、エラー発生アドレス 0x0003ac7d

■環境■
Windows XP Home SP2
Celeron(R) CPU 2.40GHz
メモリ1.00GB
OEditの設定
 表示→右端で折り返す…○
 表示→ツールバー→標準…○
 編集中のテキスト…SJIS、CRLF

■検証実験■
・後述の検証テキスト(論理上のイメージ)について、『外見上』の2行目『6789+123456789+』の『1』位置を始点
 として矩形選択を開始し、『外見上』の3行目『ABCDEFGHI』の『G』位置にて終端する様に囲う。
・その際、選択範囲(=反転して見える部分)は下記の様になっている筈。
【実験@】『矩形選択した状態で、Ctrl+Cを繰り返す』を試みる。
     (→何度目かに、OEditが勝手に終了する)
【実験A】『矩形選択した状態で、Ctrl+Cし、次いで、どこかにCtrl+Vする』を試みる。
     (→実際に貼り付けられるのは、反転して見えた部分より少ない文字列となる)

■検証テキスト(論理上のイメージ)(1行目が長い計3行のテキストです)■
123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
ABCDEFGHI
ABCDEFGHI

■検証テキスト(外見上のイメージ)(外見上は、計4行のテキストに見える)■
123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+12345
6789+123456789+
ABCDEFGHI
ABCDEFGHI

■選択範囲。(反転して見える部分)■
789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
GHI

■コピー(Ctrl+C)して、貼り付け(Ctrl+V)した結果■
789+123456789+1234

とし さん 2007年 12月 26日 01時 39分 00秒

>おがわさん
OEdit Version 5.9.5.2の正常動作、確認致しました。
修正有難うございます。

>(display (cond (100))) ;=>100のようにelseを省略できるのは仕様です。
頑張って探してみたら、おがわさんに言われた通りの事が、R5RSの日本語訳ページに書かれてありました。
これは、厳密にはelse節の代わりになるのではなくて、
 『then値を省略した際には条件自身の返り値がthen値として採用される』(↑の場合、『100』が条件)
という仕様から来ている現象だったんですね。
だから、『(#f)』だけは『(else #f)』の代わりにならないと。(合点)

>(write (macroexpand-1 '(ex "-" 3)))
>とすると、ご希望の結果が表示されると思います。
おおーっ、そうだったのか!
macroexpand-1の問題ではなく、表示に『display』を使っていた自分の問題だったんですね。
勉強になりました。有難うございます!

あと、細かい事ですが、
OEdit Version 5.9.5.2について、下記2箇所において旧バージョン表記のままのようです。
 ・『oedit.exe』のプロパティ→『バージョン情報』タブ→ファイル バージョン:5.9.5.1
 ・OEditのヘルプ→oeditのバージョン情報→OEdit Version 5.9.5.1
一応報告迄。

おがわ さん 2007年 12月 25日 22時 05分 15秒

>けんさん
ご要望ありがとうございます。
検討させていただきます。

>としさん
ご報告ありがとうございます。
oedit 5.9.5.2で下記対応しました。
・cond, macroexpand-1で、oeditが落ちる問題を修正
・case関数で、else句の処理が正しくない問題を修正

(display (cond (100))) ;=>100のようにelseを省略できるのは仕様です。
(display (macroexpand-1 '(ex "-" 3)))の代わりに、
(write (macroexpand-1 '(ex "-" 3)))
とすると、ご希望の結果が表示されると思います。


とし さん 2007年 12月 24日 19時 29分 43秒

補足です。
↓なSchemeマクロを実行した場合でも、100%OEditが落ちるようです。(macroexpand-1の方が原因っぽい)
(define-macro (ex func n) `(,func ,n))
(macroexpand-1 (ex - 3))

実行環境は、WindowsXP Home SP2+OEdit Version 5.9.5.1+マクロを実行(選択範囲)

とし さん 2007年 12月 22日 22時 16分 14秒

お世話になります。
OEdit Version 5.9.5.1のSchemeマクロについて、
バグ(?)かもしれない報告と質問と若干要望のごちゃ混ぜです。
宜しくお願いします。

■質問■
・cond関数についてWebで調べたのですが、
 『(cond (条件1 then値1) … (条件n then値n) (else else値))』
 みたいな書式だと書かれていました。
 でも、試してみたら、OEditのSchemeだと、
 @(display (cond (else 100))) ;=>100
 A(display (cond (100))) ;=>100
 と、Aの書式も出来てしまいます。
 これは、たまたまなのでしょうか?
 それとも、『elseワードを省略してもいい』仕様なんでしょうか?

■バグ(?)かもしれない報告■
・上記cond関数に関連して、こちらの環境で↓を実行すると100%の確率でOEditが落ちてしまいます。
 (display (cond 100))
・case関数が、『scmlib/init.scm』にてcond関数を使って定義されているのを発見したのですが、
 もしかしたら、
  誤?『(if (eq? (car clause) 'else) (cdr clause) …』
   ↓↓
  正?『(if (eq? (car clause) 'else) clause …』
 かもしれない?って気がします。(自信はないですが)
 そう思った理由は、オリジナルのcaseで試すと、
 (display (case 5 ((3) 33) (else #f))) ;=>()
 になったからです。(個人的は、『()』でなく『#f』を予期していた)
 macroexpand-1という関数をcaseに適用してみたら、
 『(else #f)』となりそうな所を『(#f)』に展開している様でした。
 質問の方で値100で試した時は、
 『(cond … (else 100))』と『(cond … (100))』は等価みたいで、
 どちらでもいいように思えたんですけど、
 値#fを用いた時に差として現れました。

■要望■
・macroexpand-1の返り値(展開結果)なんですけど、↓マクロに対して実験@〜Aを行ったんです。
 【テストマクロ】(define-macro (ex func n) `(,func ,n))
 @(display (ex "-" 3)) ;=>Error: illegal function "-"
 A(display (ex #\- 3)) ;=>Error: illegal function #\-
 B(display (ex - 3)) ;=>-3
 C(display (macroexpand-1 '(ex "-" 3))) ;=>現状(- 3)、希望("-" 3)
 D(display (macroexpand-1 '(ex #\- 3))) ;=>現状(- 3)、希望(#\- 3)
 E(display (macroexpand-1 '(ex - 3))) ;=>現状(- 3)、希望(- 3)
 最初、何故エラーとなるのか分からなくて、追試C〜Dを行ったのですが結果が予期通りの『(- 3)』となり、
 原因が中々掴めませんでした。
 結局、実験Bが意図通り動作した事で自分の誤りに気づきましたが、もし、
 macroexpand-1の返り値が、上記『希望』の方だったら、もっと早く誤り気付けたなぁ、と思いました。
 
 そこで要望なのですが、macroexpand-1の返り値を
 上記『希望』(=オブジェクトの型に応じたリテラル表記で返すみたいな)
 の様にして頂く事は可能でしょうか?
 もし可能そうなら、宜しくお願い致します。
 (Scheme処理系的に無茶苦茶な要望だったら、申し訳ないです)

けん さん 2007年 12月 20日 08時 35分 40秒

いつもOEdit利用させていただいてます
軽くて必要な機能はひととおり備えているのでお気に入りのツールと
して利用しています
ありがとうございます

気になる機能があります
選択範囲だけ印刷したい場合は
メモ帳だと「選択した部分」という印刷範囲のページ指定が
できると思いますが
oeditには同等のメニューがないようなので
いつも印刷したい部分だけを切りとりして
メモ帳に貼り付け印刷しています
部分印刷できる機能があったら嬉しいです

とし さん 2007年 12月 19日 23時 37分 00秒

>おがわさん
OEdit Version 5.9.5.1にて、↓の2件の正常動作確認致しました。
修正有難うございました。
・2桁以上の後方参照の件。
・矩形選択関連の正規表現の件。

追伸.
自分用Schemeマクロの作成状況、現在6個。
矩形選択関連が修正されて、何れも矩形対応へ移行させました。(良好です)
今は、現在編集中のファイルを拡張子で見て、自動的に挿入するコメント記号を変化させるマクロに挑戦中。
あと、徐々に追加してほしいなと思えるような関数とかも出て来たので、その内また要望に伺おうと思います。

おがわ さん 2007年 12月 19日 20時 55分 57秒

>としさん
矩形選択時の正規表現の動作について、oedit 5.9.5.1で修正しました。

>おおきさん
ご要望ありがとうございます。検討させていただきます。

おおき さん 2007年 12月 19日 20時 26分 14秒

OTBEditにはお世話になっています。

キー割り当てのカーソル移動で、
「選択範囲を前のスペースへ」「選択範囲を次のスペースへ」
という項目があります。

今現在「選択範囲を次のスペースへ」にキーを割り当てると、

 単語の塊の後端→スペースの塊の後端→単語の塊の後端→…

という動作になりますが、これを、

 単語の塊の後端→単語の塊の後端→単語の塊の後端→…

にしていただけると、求める選択範囲を少ない手順で決められるので変更を要望します。
選択範囲にスペース後端までを含めたいときは、一単語多く選択して「選択範囲を前の
スペースへ」とすれば、これが多く選択した単語部分の選択範囲解除の動作になるので、
スペースの塊も選択範囲に含むことができます。

とし さん 2007年 12月 18日 20時 33分 58秒

>おがわさん
修正して頂けるとの事、感謝します。

あと、補足になるのですが、
『\=$』が矩形選択範囲内のどこにもマッチしないパターンも見つけましたので、一応↓に貼っときます。

■検証用テキスト■
0123
45
678

■検証項目■
A矩形範囲選択
 A)2桁目×1行目〜3行目を囲んで実験。
  1)左上から右下へ
   …『\=A』『\=z』『\=^』『\=$』共に正常動作。
  2)右下から左上へ
   …『\=A』『\=z』『\=^』『\=$』共に正常動作。
  3)右上から左下へ
   …『\=^』のみ正常動作。
    OEditには意味的に、↓な感じに解釈されてる風。
    (『Az^$』は意味的に『\=A』『\=z』『\=^』『\=$』に対応。どれも実際には0巾)
    ^1A$
    ^5$
    ^z7  ◆『\=$』が、この行のどこにもマッチしてない。
    個人的には、↓であってほしい。
    ^A1$
    ^5$
    ^7z$
  4)左下から右上へ
   …『\=^』のみ正常動作。
    (同上)

おがわ さん 2007年 12月 17日 21時 20分 57秒

>としさん
ご報告ありがとうございます。
矩形選択の方向によって、検索結果が変わらないようにしたいと思います。

とし さん 2007年 12月 17日 17時 24分 09秒

訂正。(2箇所)

■訂正@■
(『行巾を超えない』とは、囲み終わりの際のマウスポインタ位置が矩形内に納まるの意)
 ↓↓
(『行巾を超えない』とは、囲い始め/終わりの際のマウスポインタ位置が最終矩形内に納まるの意)

■訂正A■
(但し、囲み終わりの際のマウスポインタ位置が矩形外にはみ出る様にする)
( より具体的には、範囲の右に位置する改行文字より更に右側で囲い終える様にマウス操作)
 ↓↓
(但し、囲み終わり又は囲み始めの際のマウスポインタ位置が矩形外にはみ出る様にする)
( より具体的には、
  左→右へ囲う際は、最終矩形の右に位置する改行文字より更に右側で囲い終える様にマウス操作
  右→左へ囲う際は、最終矩形の右に位置する改行文字より更に右側から囲い始める様にマウス操作)

とし さん 2007年 12月 16日 23時 42分 46秒

いつもお世話になっております。
OEdit Version 5.9.4.7の選択範囲関連の正規表現『\=A』『\=z』『\=^』『\=$』について若干要望があります。
今後、色々と選択範囲に対する定型マクロを組んで行きたいので、
宜しければ、ご検討お願いします。

■要望■
・矩形選択をマウス操作で行う場合についての要望です。
@現在の仕様だと、選択の向きによって『\=A』『\=z』のマッチ位置が異なるようです。
 例えば、『右上→左下』や『左下→右上』なマウス操作で矩形選択した場合に、
 『\=A』『\=z』が望んでいない位置に来ます。(後述)
 できれば、選択の向きに関わらず、常に『\=Aは範囲の上左』『\=zは範囲の下右』
 位置にマッチしてほしいです。
A対象テキストと選択の仕方の兼ね合いで、場合によっては、『\=A』『\=z』が
 選択範囲内に存在しないという現象が発生する。(後述)
 可能なら、ちょっと変わった矩形選択をした場合でも、『\=A』『\=z』が存在して
 いてほしい。

参考迄に、こちらで実験した結果を↓に貼っときます。

■実験方法■
・OEdit Version 5.9.4.7の置換機能を用いて矩形範囲に対して手動置換を試みる。
・具体的には、次の様なテキストに対して、
 『\=A』『\=z』『\=^』『\=$』を何か1文字に置換する事で、
 それぞれのマッチ位置を特定する実験を行いました。
0123
456
78
9012

■実験結果■
@通常範囲選択。
 1)上から下へ
  …『\=A』『\=z』『\=^』『\=$』共に正常動作。
   (画面上左を範囲頭、下右を範囲末、左を範囲行頭、右を範囲行末と扱う)
 2)下から上へ
  …『\=A』『\=z』『\=^』『\=$』共に正常動作。
   (同上)
 【結論】通常範囲選択では、問題は発生しない風。
A矩形範囲選択
 A)行巾を超えないマウス操作で矩形選択する場合。
  (例えば、2桁目〜4桁目×1行目〜4行目を囲んで実験)
  (『行巾を超えない』とは、囲み終わりの際のマウスポインタ位置が矩形内に納まるの意)
  1)左上から右下へ
   …『\=A』『\=z』『\=^』『\=$』共に正常動作。
  2)右下から左上へ
   …『\=A』『\=z』『\=^』『\=$』共に正常動作。
  3)右上から左下へ
   …『\=^』『\=$』のみ正常動作。
    OEditには意味的に、↓な感じに解釈されてる風。
    (『Az^$』は意味的に『\=A』『\=z』『\=^』『\=$』に対応。どれも実際には0巾)
    ^123A$
    ^56$
    ^8$
    ^z012$
    個人的には、↓であってほしい。
    ^A123$
    ^56$
    ^8$
    ^012z$
  4)左下から右上へ
   …『\=^』『\=$』のみ正常動作。
    (同上)
 B)行巾を超えたマウス操作で矩形選択する場合。
  (例えば、2桁目〜4桁目×1行目〜4行目を囲んで実験)
  (但し、囲み終わりの際のマウスポインタ位置が矩形外にはみ出る様にする)
  ( より具体的には、範囲の右に位置する改行文字より更に右側で囲い終える様にマウス操作)
  ( その様にマウス操作しても、外見上は、実験A)と同じ矩形範囲を選択している様に見える)
  1)左上から右下へ
   …『\=z』が異常動作。(『\=z』が範囲のどこにもマッチしてない)
  2)右下から左上へ
   …『\=A』『\=z』『\=^』『\=$』共に正常動作。
  3)右上から左下へ
   …『\=^』『\=$』のみ正常動作。
    OEditには意味的に、↓な感じに解釈されてる風。
    (『Az^$』は意味的に『\=A』『\=z』『\=^』『\=$』に対応。どれも実際には0巾)
    ^123A$
    ^56$
    ^8$
    ^z012$
    個人的には、↓であってほしい。
    ^A123$
    ^56$
    ^8$
    ^012z$
  4)左下から右上へ
   …『\=^』『\=$』のみ正常動作。
    OEditには意味的に、↓な感じに解釈されてる風。
    (『Az^$』は意味的に『\=A』『\=z』『\=^』『\=$』に対応。どれも実際には0巾)
    ^123$  ◆『\=A』が、範囲のどこにもマッチしてない。
    ^56$
    ^8$
    ^z012$
    個人的には、↓であってほしい。
    ^A123$
    ^56$
    ^8$
    ^012z$

おがわ さん 2007年 12月 14日 21時 35分 08秒

>Mirageさん
ご報告ありがとうございます。調査します。

>suさん
具体的にどのような設定をしたいでしょうか?参考にさせてください。

>abcさん
ご要望ありがとうございます。検討させていただきます。

>としさん
質問などありましたら、気軽に書き込んでください。

とし さん 2007年 12月 14日 17時 53分 10秒

…申し訳ないです。自己解決しました。
『"(?!^\=z)^"』→『"(?!^\\=z)^"』すると正常動作しました。
(\のエスケープを失念していた様です)
お騒がせしました。(猛省)

とし さん 2007年 12月 14日 03時 39分 29秒

色々マクロ定義してみたくて、
現在SchemeとOEdit Version 5.9.4.7の両方に挑戦中です。

おがわさんの例題を参考に、↓みたいのを作ったのですが、微妙に上手く行かなくて困ってます。
(app-set-key "F6" (lambda ()
(define cnt
(apply + (map editor-replace-selected-string
'("(?!^\=z)^")
'(" ")
))
)
(app-status-bar-msg cnt "件置換しました")
))

これは、選択した範囲にある各行の先頭に全角空白『 』を挿入する
(但し、『行頭=範囲末尾』の箇所には挿入しない)
マクロなんですけど、上記『但し』の箇所にも挿入されてしまうんです。(汗)

OEditの置換機能を利用して、手動にて
検索文字列『(?!^\=z)^』+置換後の文字列『 』
試行してみると、正常動作するので、
自分の勉強不足なのか、サポートしてない正規表現があるのか、バグなのか
判断付かなくて困ってます。
何かヒントだけで構わないので、アドバイス頂けないでしょうか?
宜しくお願いします。

Return