>おがわ様
すみません。私が利用させて頂いているのは、otbeditの方です。
書いてませんでしたっけ。ごめんなさい。
そもそもタブ付きで軽い日本語編集に適したエディタを探していてここに行き着いたものですから。
">"の挿入とか削除とかタマラない機能ですよね。あと、ウソでもUNICODEが扱えるところとか。
OSqlGrid の、[データ]-[グリッドのソート] 機能への要望です。
編集結果をコミットすると、最後に『再検索しますか?』の
確認メッセージが出るかと思いますが、この再検索を行うと、
データの並び順が戻ってしまうため、再度、[グリッドのソート]を
選びなおす手間がかかってしまいます。
そこで要望なのですが、OSqlGrid の[ツール]-[オプション]にて、
『ORDER BY 未指定時の再検索で、前回のソート結果を維持する/しない』
を制御できるような設定項目を付与することは可能でしょうか。
御検討いただければと思います。
>としさん
ご報告ありがとうございます。
oedit 5.9.8.0で修正しました。
>paisleyさん
ご要望ありがとうございます。
oedit 5.9.8.0で対応しました。
度々すいません。
OEdit版Schemeで、ハッシュが上手く機能してないようです。
■環境■
OEdit Version 5.9.7.5+Windows XP home SP2
■バグ(?)報告■
・typeに『'string=?』を指定して作成したハッシュテーブルが時々正常動作しない。
・再現率50%以下です。↓検証コード@全体を囲んで、繰り返し実行してみてもらえますか?
・正常動作したテーブルについては、何度hash-table-getしても正常動作し、
異常動作したテーブルについては、何度hash-table-getしても異常動作する様なので、
↓の何れかが疑われる。
1)make-hash-table関数が時々、正しくないハッシュテーブルを作成している?
2)hash-table-put!関数が時々、正しくない書き込みを行っている?
3)hash-table-get関数/hash-table-exists?関数が、
特定条件下のハッシュテーブルを正しく参照できない?
・typeを『'equal?』にした場合は、問題ない風。
・OEdit Version 5.9.7.4では正常動作してる風。
■検証コード@('string=?版)(不安定動作)■
(define (hash-table-pairs h) (hash-table-map h (lambda (key value) (list key value))))
(define h (make-hash-table 'string=?))
(for-each (cut hash-table-put! h <> 1) '("A" "B" "C"))
(write (hash-table-pairs h))
;=>(("A" 1) ("B" 1) ("C" 1))◆並び順は不定。(5.9.7.4では固定っぽかった)
(write (hash-table-get h "A" #f)) ;=>1でなく、#fとなる事がある。 ◆不安定
(write (hash-table-get h "B" #f)) ;=>1でなく、#fとなる事がある。 ◆不安定
(write (hash-table-get h "C" #f)) ;=>1でなく、#fとなる事がある。 ◆不安定
■検証コードA('equal?版)(正常動作)■
(define (hash-table-pairs h) (hash-table-map h (lambda (key value) (list key value))))
(define h (make-hash-table 'equal?))
(for-each (cut hash-table-put! h <> 1) '("A" "B" "C"))
(write (hash-table-pairs h))
;=>(("A" 1) ("B" 1) ("C" 1))◆並び順は固定。(常にこうなる風)
(write (hash-table-get h "A" #f)) ;=>常に1 ◆正常
(write (hash-table-get h "B" #f)) ;=>常に1 ◆正常
(write (hash-table-get h "C" #f)) ;=>常に1 ◆正常
oeditを愛用させていただいております。
キーワードの設定ですが、cpp/html/java/perl/sql/text以外にも
対応できるようにして頂けないでしょうか。
ここにないファイル(例えばPHPなど)を使いたい時、現状どれか
の設定を潰して代用しているのですが、ややこしいので柔軟に対応
できるとありがたいです。
>りんりん さん
ご要望ありがとうございます。
検討させていただきます。
>ライセンス購入希望さん
お問い合わせありがとうございます。
メールアドレスは変更ありません。
お手数ですが、再度メールしてください。
おがわさま
いつも愛用させていただいております。otbeditへの機能要望です。
タブを複数行にした際、選択されたタブがその列ごと最前面に移動する仕様なのですが、列の移動なしでその場でアクティブなタブ状態になるオプションがあるとうれしいです。
列ごと最前面にくると、ファイルの並びが変わってしまい、次に作業をしたいファイルを見失ってしまうのです。
今2列目の3タブ目をやってるから次は3列目の2タブ目・・・とか。
複数枚数開いて作業をしていると、どこまで作業が終了したのかもわかりやすのです。
(すべて変更するとは限らないので、作業が終わったファイルに「*」がつくとは限らないです。閲覧チェックだけなんかもよくありますので・・・。)
ぜひぜひ、オプションで実現していただけたらと思います。
おがわ様
ファイルを移動したら起動できるようになりました。
ご回答ありがとうございました。
おがわ様
いつも便利なツールを公開していただきありがとうございます。
Osqleditのライセンスを銀行振り込みにて購入したいのですが、license.txtの
メールアドレスに希望を送ったところ返信が帰ってきません。
現在の申し込み先のメールアドレスを教えていただいてもよろしいでしょうか?
>しゅうさん
ご報告ありがとうございます。
Documents and Settingsなどのようにフォルダ名にスペースが含まれていると
起動できないかもしれません。
osqleditのフォルダを、フォルダ名にスペースが無い場所に移動して試してみて
いただけないでしょうか。
おがわ様
お返事ありがとうございます。ご指摘事項確認いたしました。
>(1)osqledit.exeと同じフォルダにosqlgrid.exeが存在するでしょうか?
→同じフォルダに存在しております。
>(2)C:\Documents and Settings\Administrator\My Documents\Osqleditフォルダに
ファイルを作成する権限があるでしょうか?
osqleditからosqlgridを起動するとき、テーブル名などの情報を伝えるために
tmp_osqlgrid.osgというファイルを作成します。
→ファイル作成はできます。現在出先なもので現認できませんが、tmp_osqlgrid.osgというファイルも作成されていたと思います。
>また、OSのバージョンを教えていただけないでしょうか?
→windows XP Proです。
以上、よろしくお願いいたします。
>しゅうさん
下記確認してみてください。
(1)osqledit.exeと同じフォルダにosqlgrid.exeが存在するでしょうか?
(2)C:\Documents and Settings\Administrator\My Documents\Osqleditフォルダに
ファイルを作成する権限があるでしょうか?
osqleditからosqlgridを起動するとき、テーブル名などの情報を伝えるために
tmp_osqlgrid.osgというファイルを作成します。
また、OSのバージョンを教えていただけないでしょうか?
>とし さん
ご報告ありがとうございます。
現象確認しました。
次期バージョンで修正したいと思います。
>かずさん
ご要望ありがとうございます。
検討させていただきます。
おがわさま
ご回答ありがとうございました。
>ロールバック、コミットボタンを付ける予定はありません。
了解致しました。
ショートカットキーの割り当てについては
現在その方法にて対応しておりました。
また、コメントブロック挿入などよく使う機能について
ショートカットを割り当てて使用しているのですが、
自身で忘れがちとなってしまい結局メニューから
探しては辿って使用している次第です。
せっかく便利な機能が多数有るのにも関わらず
その煩雑さから結局使用していない機能も多いです。
要望として、
例えば画面上にカスタムボタンの様な物を用意し、
ユーザが自由にSQLやコマンド、ショートカットを
割り当てられれば便利に感じましたが如何なもんでしょうか?
ご検討の程よろしくお願い致します。
毎度お世話になります。
OEdit版Schemeのバグかもしれない報告です。宜しくお願いします。
■環境■
OEdit Version 5.9.7.4+Windows XP home SP2
■バグかもしれない報告■
・ハッシュ関連。
1)hash-table-type関数が『Error: unbounded variable hash-table-type』となる。
2)キーを『文字』『リスト』とかにすると、上手く動作しない。(仕様だったらすいません)
→確認した分のみですが、『数値』『文字列』は大丈夫みたいです。
■検証コード@■
(define (hash-table-pairs h) (hash-table-map h (lambda (key value) (list key value))))
(define h (make-hash-table 'eqv?))
(write (hash-table-type h)) ;=>Error: unbounded variable hash-table-type
(hash-table-put! h #\A #\a)
(write (hash-table-pairs h)) ;=>((#\A #\a))
(write (hash-table-exists? h #\A)) ;=>#f◆正しくは#tでは?
(write (hash-table-get h #\A #f)) ;=>#f◆正しくは#\aでは?
(write (hash-table-delete! h #\A)) ;=>#f◆#tとなる筈?
(write (hash-table-pairs h)) ;=>((#\A #\a))◆キーが削除されない。
■検証コードA■
(define (hash-table-pairs h) (hash-table-map h (lambda (key value) (list key value))))
(define h (make-hash-table 'equal?))
(hash-table-put! h '(a b) 1)
(write (hash-table-pairs h)) ;=>(((a b) 1))
(write (hash-table-exists? h '(a b))) ;=>#f◆正しくは#tでは?
(write (hash-table-get h '(a b) #f)) ;=>#f◆正しくは1では?
(write (hash-table-delete! h '(a b))) ;=>#f◆#tとなる筈?
(write (hash-table-pairs h)) ;=>(((a b) 1))◆キーが削除されない。
質問してもよろしいでしょうか?
Osqledit(7.6.9.4)からOsqlgrid(3.2.2.1)が起動できません。
以下のメッセージが出ます。
OSqlGridの起動に失敗しました
Command:C:\Documents and Settings\Administrator\My Documents\Osqledit\osqlgrid.exe
Error(87):
なお、Osqlgrid単体では起動できます。
どのようなことが原因として考えられますでしょうか?
>かずさん
ご要望ありがとうございます。
ロールバック、コミットボタンを付ける予定はありません。
ツール→ショートカットSQLの設定メニューで、任意のSQLをキー割り当て
出来ますので、ご利用ください。
ロールバック、コミットがボタンひとつで
できる様にできませんでしょうか?
キー割り当てもできると最高です!
>YOKOさん
ご要望ありがとうございます。
検討させていただきます。
>としさん
いつもありがとうございます。
参考にさせていただきます。
>陳さん
oedit 5.9.7.4で、マクロでAlt+矢印キーの矩形選択操作を出来るようにしました。
ヘルプ→oeditマクロリファレンスのサンプルコードを参照ください。
自作起動オプションを処理するサンプルを↓に貼っときます。
以前投稿されたkkさんの様に、サンプルがあったら参考にしたい的な需要があるかも?なので。
(斯く言う自分も、誰かが貼ってくれたら、是非利用したい派・笑)
;=========================================================================
;●コマンドライン引数(文字列)をバラして、文字列リストにして返す関数。
(define (app-get-command-line-args) (get-args (app-get-command-line-option)))
(define (get-args s)
(define (skip-space)
(define c (peek-char ip))
(if (and (not (eof-object? c)) (char=? c #\space))
(begin (read-char ip) (skip-space))))
(define (get-inner-quote os)
(define c (read-char ip))
(if (or (eof-object? c) (char=? c #\"))
os
(get-inner-quote (string-append os (string c)))))
(define (get-word os)
(define c (peek-char ip))
(cond
((or (eof-object? c) (char=? c #\space)) os)
((char=? c #\")
(begin (read-char ip) (string-append os (get-inner-quote ""))))
(else (get-word (string-append os (string (read-char ip)))))))
(define ip (open-input-string s))
(let loop ( (ol '()) )
(define c (read-char ip))
(cond
((eof-object? c) (close-input-port ip) (reverse ol))
((char=? c #\space) (skip-space) (loop ol))
((char=? c #\") (loop (cons (get-inner-quote "") ol)))
(else (loop (cons (get-word (string c)) ol))))))
;=========================================================================
;●自作起動オプション処理用ハンドラ。
(define (get-template fn) ;◆テンプレ文字列取得用サブ関数。
(call-with-input-file fn (lambda (inf)
(define op (open-output-string))
(define ans (let loop ()
(define c (read-char inf))
(if (eof-object? c)
(get-output-string op)
(begin (write-char c op) (loop)))))
(close-output-port op)
ans)))
(define handle-my-option (lambda () ;◆ハンドラ本体。
(define (option-launcher op)
(cond
((rxmatch #/^\/xc(\d+)-(\d+)$/ op) => (lambda (m)
(editor-set-row-col
(- (string->number (rxmatch-substring m 1)) 1)
(- (string->number (rxmatch-substring m 2)) 1))))
((rxmatch #/^\/xt(.*)$/ op) => (lambda (m)
(define s (get-template (rxmatch-substring m 1)))
(editor-set-row-col 0 0)(editor-paste-string s)))))
(for-each option-launcher (app-get-command-line-args))))
;=========================================================================
;●ハンドラをセット。
(app-set-event-handler "on-open-file" handle-my-option)
Schemeマクロによる自作起動オプションがどの程度使えるのか、大体感触が掴めたので
レポートしたいと思います。
一部要望に近いものも混じりますが、また何かの機会に検討して頂ければ幸いです。
■レポート(OEdit Version 5.9.7.3時点)■
・on-open-fileイベントを捕捉して、自作起動オプションを処理するという試み自体は成功しました。
ただ、OEdit標準起動オプションの様にはいかない局面もありました。
・やや難のある局面。
(↓例中の『/xc〜』は、起動時のカーソル位置を指定する自作オプション)
(↓例中の『/xt〜』は、指定テンプレファイルを挿入した状態でファイルを開く自作オプション)
@ファイル名未指定でOEdit起動する局面。
例.『oedit /xc2-5』
→無題のファイルを開く際には、on-open-fileイベントが発生しません。
→イベントが発生しないので、現時点では処理できない。
A『半角空白を含むパス』を引数とする様な自作オプション処理。
例1『oedit readme.txt /xt"template a.txt"』
→OEditが、『readme.txt』『a.tx』の2つのファイルを開こうとする。
例2『oedit readme.txt /xt "template a.txt"』
→OEditが、『readme.txt』『template a.txt』の2つのファイルを開こうとする。
●結局、app-get-command-line-option関数の返り値として『readme.txt /xt"template a.txt"』
を受けられるので、『"template a.txt"』を『/xt』オプションの引数とみなす事自体は可能。
但し、それ以前に、OEditに『"template a.txt"』や『a.tx』な別個のファイルを
余分に開かれてしまい、意図通りとならない。
B既に開いているファイルを閉じずに別オプションで開き直す局面。
例.『oedit readme.txt /xc2-5』の状態で、『oedit readme.txt /xc10-2』を行う。
→既に開いているファイルを開く際には、on-open-fileイベントが発生しません。
→また、app-get-command-line-option関数の返り値も更新されません。(起動直後の値まま固定)
→イベントが発生せず、コマンドラインの更新もないので、現時点では処理できない。
C『ファイル→開く』にて別ファイルに切り替える局面。
例.『oedit readme.txt /xc2-5』の状態で、『changelog.txt』に切り替える。
→『ファイル→開く』にて別ファイルに切り替える際に、on-open-fileイベントが発生する。
→その際に、app-get-command-line-option関数の返り値が更新されず、
結果として、on-open-fileに触発されて起動時の『/xc2-5』オプションが、また処理される。
→これについては、2度目以降のon-open-fileイベントをスルーする等のユーザ側の細工で
回避できそうです。
■結論■
・現時点では、用途は限定されそうです。
grep/ファイル比較/構文チェック等の行番号&列番号を返し得る外部アプリとは、
比較的、相性が良さそうです。
■将来への要望■
・上記B局面に対応して頂けると、もう一段実用に近付くと思います。
例えば、閉じずに続けて
1)『oedit readme.txt /r10』
2)『oedit readme.txt /r20』
起動すると、OEditプロセスは1つのままで、『/r10』『/r20』が順に効いて行きますよね?
これは推測なんですが、2)番プロセスが起ち上がる際に、既に『readme.txt』が開かれている事
を検知して、1)番プロセスに自身のコマンドライン『oedit readme.txt /r20』を通知している。
その結果、1)番プロセスは『/r20』処理を実現できる。
…そういう仕組みなんじゃないかと思うんです。
これを、自作起動オプションに対しても行える仕組みがあったら、便利かなと思います。
・例えば、可能なら↓な方向とかを検討して頂けたら有難いです。
・app-get-command-line-option関数が取得する元となる値を、状況に応じて変化し得る値に拡張する。
→例えば、上記1)→2)の様な局面では、取得元値が順に
『readme.txt /r10』→『readme.txt /r20』に変化する感じ。
・app-get-command-line-option関数の取得元値が更新された直後に何かイベントを発生させる。
→例えば、『on-commandline-changed』みたいな新イベントの追加とか。
●新イベントを捕捉する事で、上記B局面にも対処できそうです。
はじめまして。
osqledit、毎日愛用させていただいております。
シンプルで使いやすく、私のような初心者でもわかりやすいので
職場で大活躍です。
初めての書き込みでいきなりなのですが・・1つ要望があります。
過去にも同じような要望があったらすみません。
キーワード補完機能で表示される補完候補を複数選択できるように
ならないでしょうか?たとえばCNTLキー押しながら複数選択して
カンマで区切って表示できると、とても嬉しいのですが・・
>もりさん
ご報告ありがとうございます。
状況がよく分からないです。
もう少し詳しく教えてください。
osqleditを最大化した時に少し上下がずれています。
ほかのツール類は普通なんですけどosqleditだけがこうなります。
>おがわさん
凄い分かり易い説明有難うございました!
自分で『式』=『(eval '式)』だと言っておきながら、
『(map display '(1 2 3))』をevalに置き換える際に
正『(eval '(map display '(1 2 3)))』でなく、
誤『(eval '(map display (1 2 3)))』してた感じですね。(汗)
大変お騒がせしました。
evalには、もう少しスキルが上がってから手を付けようと思います。
>としさん
(eval fabc)では、(map call (fa fb fc))となるため
では最初にfaが2つの引数(fb, fc)で実行され、次に
(map call (faの結果))
が実行されます。そのためfaしか実行されません。
(define (func-templete . parm) `(map call (list ,@parm)))
とすれば動作すると思いますが、通常evalはほとんど使わないです。
(oeditのevalはR5RSの仕様どおりの実装ではないため、将来のバージョンで
挙動が変わるかもしれません)
>陳さん
お問い合わせありがとうございます。
矩形選択の操作については、実装するかどうかまだ決めてません。
>K−じゅんさん
ご要望ありがとうございます。
osqledit/psqleditは、データディクショナリへの検索SQLを除いては、
ユーザーが入力していないSQLを隠れて実行しないポリシーで開発しています。
そのためコミット・ロールバックボタンがありません。
はじめまして。
過去に同じような要望が出ているのかもしれませんが、
ツールバーに
コミット・ロールバックのボタンが欲しいです。
対応していただけないでしょうか?
以前、矩形選択はAlt+矢印でダイレクトに出来るようにして欲しいって要望を書いた者ですが、あの話し結局どうなったんでしたっけ。却下されたのかしらん
対応ありがとうございました。
まだSchemeのことが良く分からないので
平行してヴァージョンアップがなされているのはありがたいです
OEdit版Schemeで、ちと煮詰まってる事がありまして、質問させて下さい。
evalが意図通りに機能してくれないんです。
R5RSの説明を読んだ印象では、『式』と『(eval '式)』は等価の様に感じました。
返り値も、『式を評価した値を返す』とありました。
今、『式をリテラルデータとして保持してリスト操作により式を成長させる』
みたいな手法を考えていて、どうもevalの挙動が肝となりそうなんです。
ヒントだけでも構わないので、宜しく解説お願い致します。
■質問■
・↓コードで、@がAの様に『abc』表示とならないのは何故?
(define (fa) (display #\a))
(define (fb) (display #\b))
(define (fc) (display #\c))
(define (call x) (x))
(define (func-templete . parm) `(map call ,parm))
(define fabc (func-templete fa fb fc))(write fabc)
;=>(map call (#<closure> #<closure> #<closure>))
(eval fabc) ;=>a …@
(map call (caddr fabc)) ;=>abc …A
・上記例では、eval中で副作用である表示が3回中1回だけ行われました。
一方、↓例の返り値に注目してみると、何も処理が行われなかった様な振る舞いです。
これは何故?
(define (fa) 1)
(define (fb) 2)
(define (fc) 3)
(define (call x) (x))
(define (func-templete . parm) `(map call ,parm))
(define fabc (func-templete fa fb fc))(write fabc)
;=>(map call (#<closure> #<closure> #<closure>))
(write (eval fabc)) ;=>() …B
(write (map call (caddr fabc))) ;=>(1 2 3) …C
■環境■
OEdit Version 5.9.7.3+Windows XP home SP2
>kiitos さん
ご報告ありがとうございます。
oedit 5.1.6.8で修正しました。
Ver.5.1.6.7なんですが
文字列を選択した状態から「Tab」キーで落ちてしまいます。
確認いただけますでしょうか。
ver.5.1.6.6では起こりません。
>おがわさん
解説有難うございます。
↓こうやって、『仮初めの空ファイル』をスルーしてやれば良かったんですね!(得心)
(app-set-event-handler "on-close-file" (lambda ()
(define fn (editor-get-filename))
(if fn
(if (string=? fn "")
(display "無題ドキュメントを閉じます。")
(begin (display fn)(display "を閉じます。"))))))
あと、解説に倣って処理単位を1から洗い出す事で、ここ数日のもやもやも吹っ飛びました。
↓もやもやコード。
(app-set-event-handler "on-open-file" (lambda ()
(display "opened!-範囲選択前\n")
(editor-set-select-area 3 1 4 2)
(display "opened!-範囲選択後\n")))
(app-set-event-handler "on-selection-changed" (lambda ()
(display "selection-changed!\n")))
●↑コードを『oedit.scm』中に記述して、ファイル名指定にてOEditを起動すると、
↓みたいな挙動をしてたんです。
ファイルが開く→『opened!-範囲選択前』は表示されない→範囲選択される
→『selection-changed!』が2回表示される。(ダイアログ2枚)
→『opened!-範囲選択後』が表示される。(selection-changed!の2回目と同じダイアログ上に)
どうやら、ストリームが面白い感じに効いてた様です。(多分)
display表示が、『逐一表示でなく一括表示』だったのも、今回実験してみて初めて気付きました。
イベント処理中に、別イベントに割り込まれるのも、今回が初体験でした。(笑;)
イベント処理は、ブックマークレットとかでマネ事程度にしかやってなかったので、
色々何かと、今回の事は為になりました。
改めて有難うございました!
because home cutting off let it go. other things snapping
sweet, every acorns as a sapling spent days all what
>としさん
oedit起動時にファイルを開く場合、以下の順序で処理されます。
(1)oedit起動
(2)空のファイル("無題"ドキュメント)を開く
(3)空のファイルを閉じる (ここでon-close-fileイベントが実行されます)
(4)ファイルを開く
"無題"ドキュメントを閉じるときは、(editor-get-filename)が空の文字列を返すので、
それで判定してください。
ただ今、OEditの自作起動オプションに挑戦中です。(ちと苦戦中)
挑戦中に、on-close-fileイベントに関する不可解動作に遭遇したので、
一応報告入れときます。
仕様だったり、こちらの手違いだったらすいません。
(…あっちにこっちにも手を付けて、コードが大混乱中でして・苦笑)
■環境■
OEdit Version 5.9.7.1+Windows XP home SP2
■不可解報告■
・on-close-fileイベントが、ファイルが開かれる直前にもトリガされてる。
■検証コード■
(app-set-event-handler "on-close-file" (lambda () (display "closed!")))
●検証手順…↑コードを『oedit.scm』中に記述して、何かOEditで開いてみる。
>Rionさん
現在のところ、Unicode対応の予定はありません。
将来のバージョンで検討させていただきます。
>としさん
ご報告ありがとうございます。
次期バージョンにて修正します。
毎度ご面倒お掛けします。
OEdit版Schemeのバグ報告(+一部要望)です。宜しくお願い致します。
■環境■
OEdit Version 5.9.7.1+Windows XP home SP2
■バグ報告■
@append関数に引数を1個だけ送った際の返り値が壊れている可能性がある。
【検証例@】
(write (append '(a b))) ;=>((a b))◆不審な返り値。
(define (f x) (write x))(f (append '(a b))) ;=>◆固まる。
(define (f x) (write x))(f '((a b))) ;=>((a b))◆固まらない。
【検証例A】
(write (append 1)) ;=>(1)◆不審(?)な返り値。
(define (f x) (write x))(f (append 1)) ;=>◆固まる。
(define (f x) (write x))(f '(1)) ;=>(1)◆固まらない。
Aregexp-replace-all関数が、全ての行頭『^』にマッチしてくれない。(文頭にのみマッチ)
【検証例】
(write (regexp-replace-all #/^/ "aaa\nbbb\nccc" "&")) ;=>"&aaa\nbbb\nccc" ◆→希望"&aaa\n&bbb\n&ccc"
(write (regexp-replace-all #/$/ "aaa\nbbb\nccc" "&")) ;=>"aaa&\nbbb&\nccc&"◆希望通りの挙動
●ちなみに、OEdit標準の正規表現置換機能にて手動で、
検索文字列『^』+置換後の文字列『&』を行うと、ちゃんと^が3箇所(希望通り)にマッチします。
●あと、『doc/macro_ref.txt』中の581〜582行目、誤植かも?
誤『(regexp-replace-all <regexp> <string> <replace-str>)』
正『(regexp-replace-all <regexp> <string> <substitution>)』
■感想に近い要望■
・app-get-all-keys関数を実装して頂いたおかげで、キーヘルプできてとても快適です。
ちょっとだけ贅沢言わせてもらえるなら、↓になったら更に嬉しいです。
もし気が向きましたら、ご検討お願いします。
1)キー割り当て状況を『keyname順にソート』(現状)でなく、『登録した順』(希望)で取得したい。
【理由】
・マクロを機能グループ毎に分類して、キーヘルプを表示させたいから。
・登録順なら、こちらで意図通りにコントロールできそうだから。
・『keyname順にソート』は、取得した後でも可能だから。
2)全角20文字×10行程だとダイアログ表示が、ワンテンポ遅れる感じです。(Celeron 2.40GHz環境)
可能なら少しレスポンスを上げてほしい。
→現状の速度でも、それ程不満はないです。
他は速いのに何故にここだけ?…と思いまして、書かせて頂きました。
otbeditを使用しております。
Unicode文字に対応する予定はあるでしょうか?
私は機種依存文字、Unicode文字を安全な文字に変換する作業をよく行うのですが、
使い慣れたotbeditで対応したいただけると大変有り難いです。
検討していただければ、幸いです。
ついでにものすごくどうでもいいことですが、XP Professionalじゃない方はPersonal EditionじゃなくてHome Editionでしたね(としさんの書き込みを見て気づきました)。変なバージョンを書いてしまいどうもすみませんでした。
何度も何度も、わがままな要望まで聞いていただく形になってしまい本当にすみません!そして心からありがとうございます!!
これで、oeditが本当にこれ以上ないぐらいの最強ソフトになりました。いつまでも末永く感謝しながらヘビーユーズさせていただこうと思います。
マクロの方ですが、A<=>T, G<=>Cの変換は、確かに関係ない文字を間にかました置換を繰り返すことで容易に実現可能でしたね。こんなものまでわざわざマクロを組んでいただきありがとうございます。
本当に、自分のことながら「このぐらいのマクロ、ちょっと勉強すればすぐ書けるから頑張って」で済ませてしかるべき内容を、ご丁寧にご指導いただき頭があがらない思いです。
これを機に少しコンピュータ言語関連も勉強して、エラー報告など少しでもおがわさんの役に立つことができるよう頑張ろうと思います。ご丁寧に本当ありがとうございました。
>としさん
ご報告ありがとうございます。
矩形選択内にタブがあると不安定になるようです。
次期バージョンで修正します。
>kkさん
以下のようなマクロになります。
oedit.scmに貼り付ければ使えると思います。
範囲選択してから、F6キーでATGC以外を削除、F7キーで逆転、F8キーで相補鎖の
文字列に置き換えます。
A<->Tの変換は、A->x, T->A, x->Tの順に3回置換することで実現してます。
'x'が不都合であれば変更してください。
また、キー割り当ては"F6"などを"Ctrl+Q"などに書き換えれば変更できます。
;; 文字列を逆転する関数
(define (reverse-string str)
(list->string (reverse (string->list str))))
;; ATGC以外の文字を削除
(app-set-key "F6"
(lambda ()
(editor-replace-selected-string "[^ATGC]" "")))
;; 逆転
(app-set-key "F7"
(lambda ()
(editor-paste-string (reverse-string (editor-get-selected-string)))))
;; 相補鎖(A<->T, G<->Cの置換を行い、文字列を逆転)
(app-set-key "F8"
(lambda ()
(begin
(map editor-replace-selected-string
'("A" "T" "x" "G" "C" "y")
'("x" "A" "T" "y" "G" "C"))
(editor-paste-string (reverse-string (editor-get-selected-string))))))
お世話になります。
以前にも修正して頂いたのですが、また別の矩形選択操作で、OEditが落ちるので報告します。
今回のは、ちと謎が多いです。(特に変な選択ではないと思うのですが…??)
■症状■
・特定のテキストをマウスで矩形選択した状態で、コピー(Ctrl+C)を連続すると、1〜6回目位に
『OEditが勝手に終了』或いは『OEdit終了時に異常終了』する。(検証テキストは後述)
・再現条件がシビア(?)なのか、再現率100%と迄はいかない。
・次のルールに従って試行すると、再現率が高まる気がする。(@〜Bは多分必須条件)
@矩形選択は、『左上→右下』又は『左上←右下』方向で行う。
A囲み終わりの際に、マウスカーソルが改行記号よりも右側に位置しない様に囲う。
B囲み終わった際のキャレット位置が検証テキスト4行目末尾に来る様に囲う。
(キャレットが5行目先頭に来る様に囲んではいけない)
C無題テキストの状態で試行するより、一度保存+OEditを終了させてあるテキストで試行する方が、
症状が再現し易い気がする。(気休めだと思うけど)
DD&Dで開くより、関連付け+Wクリで開く方が、早期に症状が現れる傾向?
■環境■
・Windows XP home SP2
OEdit Version 5.9.6.3〜5.9.7.0、OEdit Version 5.1.6.4〜5.1.6.5 (確認した分のみ記載)
・OEditの設定。
編集中のテキスト…SJIS+CRLF
編集モード…TEXT
折り返し設定…『表示→折り返さない…○』又は『表示→右端で折り返す…○』(どちらでも発生)
タブストップ…4
改行を表示/タブを表示/半角空白を表示/現在行に線を表示…○
・検証方法。
・後述のテキスト(4行全部)をマウスにて矩形選択した状態で、コピーを連続試行する。
・事前に、次の準備を済ませておく必要。
・検証用テキストは、タブを全てtに置き換えて掲載してます。(t→タブに置換したもので試行して下さい)
・タブストップ等の設定も忘れずに。
■検証用テキスト@(全4行)(OEditが勝手に終了)■
直すtttttt
コードを指定して読み直すt
いウィンドウtttt
ttttttt
■検証用テキストA(全4行)(OEdit終了時に異常終了)■
み直すtttttt
字コードを指定して読み直すt
しいウィンドウtttt
くttttttt
たびたびのお返事ありがとうございます。
(display 1)を実行したところ、scheme outputダイアログ「1」が出ました!マクロに問題はないようです。
…そしてそして、問題のバイト数表示ですが、選択した瞬間に表示されるということで注意して見てみたところ、表示されていました!!
文字列を選択したらマクロを実行しないといけないと思っており、文字列を選択したらすぐに[ツール]→[マクロを実行]を押していたので、バイト数表示を目にする前に表示が消えてしまっていたために見落としていました。どうもご迷惑おかけ致しました。
※これまで他のテキストエディタを使っていたんですが、正規表現の検索ができることからoeditを使い始めました。以前のエディタに比べ、あらゆる点でoeditが優れている(文字列の折り返しがウィンドウサイズ依存で自動になされること、キーボードショートカットが自在に設定できること、などなど)ので感動していたのですが、この「バイト数表示」だけが以前のエディタと比べてなくなっちゃった機能だな〜、と思っていました。ところがこのマクロによって、ボタンを押さずともバイト数表示されるようになったので、この点でもまた(以前のエディタに比べて唯一の欠点だったのが逆に)優れている点になりました!
素晴らしいソフトを本当にどうもありがとうございます。
※※ついでに要望(というとおこがましいですが、こんな機能があると泣いて喜べる、という自分勝手な願望・妄想です)なんですが、マクロの公開とかはされないのでしょうか…?としさんの以前(1/27)の書き込みで「文字列を逆転させる関数」なるものがあったんですが、こういうのを公開していただけると、私のように自分でマクロを作る力はないけれど便利そうなマクロの恩恵にあやかりたい人が、大変嬉しいと思うのです…。
もちろんおがわさんが公式でやる必要のある内容ではないかもしれないので、ここで言うのはお門違いかもしれませんが…。
勝手ついでに、あるとすごく嬉しいマクロを列記させていただくと、「文字列を逆転させる関数」の他に「A, T, G, C以外の文字を消去する関数」「文字列を逆転させて、さらにA⇔T, G⇔Cを相互変換させる関数」(=DNAの塩基配列の相補鎖を出力する関数のことです。これらの機能は他の単独のアプリケーション(塩基配列変換ソフトSeqConv)を使っているんですが、これをoeditで出来たら素晴らしすぎて感涙ものだなと思いまして…)なんかがあります。
…と、長々と書き連ねて何ですが、あまりにも自分勝手すぎる内容&非常に需要が少ないものだと思うので、わざわざ検討していただくには及ばないです(もしどなたかが作っていただけたなら、非常に、非っ常に喜んで使わせていただきますが…)。
とりあえず、重ね重ねしつこいですが、素晴らしいソフトの作製と、しょうもない質問への的確な回答、本当にありがとうございました!!感謝してもしきれないです。
>kkさん
サンプルのマクロは、マウスなどで範囲選択するとその瞬間のバイト数が
ステータスバーに表示されます。
(メニューでマクロ実行したときには何も起こりません。その後の選択操作で表示されます)
また、oedit.scmをscmlibフォルダに置いた場合は、起動時に自動的に読み込まれますので、
メニューから実行する必要はないです。
うまく出来ない場合、マクロが使える状態にあるか確認してみてください。
oeditに
(display 1)
と記入して、このコードを範囲選択してから、ツールマクロ実行(選択範囲)を
実行してください。
メッセージボックスが表示されれば成功です。
何も起こらない場合、init.scmが参照できないなどの理由で、マクロの初期化に
失敗している可能性があります。
お返事ありがとうございます。
コードを記述したscmファイルはscmlibフォルダに置くとのことで、そのようにやってみたのですが(scmファイルの場所以外は前回の書き込みと全く同じ操作です)、残念ながら表示されませんでした。
ステータスバーは、SJIS, CRLF(\r\n)とか、その右に1行, 1列とか書いてあるスペースですよね?当然そこは表示してありますが、マクロを実行しても特に何も出力されません。ウィンドウサイズは十分大きいと思うので、スペースに問題はないと思います。
ちなみにWindows XP SP2の、Personalが入ったPCとProfessionalが入ったPCの2台で試したのですが、どちらも駄目でした。
何か前述の操作でいけない点などあるのでしょうか?前回書いた操作と全く同じ操作で結果が出力されるのかどうか含め、教えていただけると幸いです。ご迷惑おかけしてどうもすみません。
>kkさん
macro_oedit.txtの記載が間違っていました。
init.scmとoedit.scmは、dataフォルダではなく、scmlibフォルダに置いてください。
また、サンプルコードは、選択範囲のバイト数をウィンドウ下部のステータスバーに
表示します。
ステータスバーが表示されていない場合、表示→ステータスバーメニューで表示
してください。
>ジッジさん
ご要望ありがとうございます。
検討させていただきます。
既存の表に対してSYNONYMを張った時に、“Column”タブに表と同じようにコメントが表示されるようにはならないでしょうか?
マクロについて(非常に初歩的で申し訳ないですが)お尋ねします。
マクロの実行方法が、マニュアルなど読んでもさっぱりどうすればよいのかわかりません。
行いたい処理は「選択範囲のバイト数を表示する」なんですが、幸い付属のmacro_oedit.txtの最後にサンプルコードしてこのコードが載っていたので、それを使おうと思っています。
で、やってみたこととしては、oedit\dataフォルダにoedit.scmというファイルを作成し、テキストエディタで上記のサンプルコード(262-269行目)をコピーして貼り付けました。そしてoeditを起動し、適当な文字列を選択してツール→マクロを実行(ファイル)から作成したoedit.scmを選択したんですが、うんともすんとも言いません。
クリップボードにコードが貼り付けてある状態で「マクロを実行(クリップボード)」を選択しても、コードを選択した状態で「マクロを実行(選択範囲)」をやっても駄目でした。
サンプルコードに何か足りない点がある(出力先を指定しなきゃいけないなど)のかもしれませんが、何分コンピュータ言語に関するリテラシーが皆無なので、全くどこが何の命令で何が足りないのかなどがわかりません。
一つ気になる点としては、macro_oedit.txtに、
2.マクロの初期化
oeditは起動時に以下のファイルを実行し、マクロ環境を初期化します。
<oedit.exeのディレクトリ>\data\init.scm
<oedit.exeのディレクトリ>\data\oedit.scm
と記述があるんですが、dataフォルダには、そのようなファイルはデフォルトでは存在していませんでした。
ただscmlibフォルダを覗いてみたらinit.scmがあったので、これをdataフォルダにコピーして、上記サンプルコードの実行をやったりもしてみたんですが、結果は変わらず何の応答もありませんでした。
ということで、マクロの実行方法について、どのようにすればよいのか(あるいはこの程度のコンピューターリテラシーではマクロ使うのは無理だよ、出直しておいで、といったアドバイスでも良いので)、ご教授いただけたら幸いです。よろしくお願いします。
forts just their community sweet, they had more than It is turtles community about friends spent days