準備
OEditのscmlibフォルダにoedit.scmを作ります。xyzzyにおける.xyzzyみたいなものらしい。
次に、OEditの(ぷち)資料室 - Schemeサンプルソースからxlib-base.scmとxlib-event.scmをダウンロードし、scmlibフォルダに保存します。
oedit.scm
先ほど作成したoedit.scmに以下をコピペ
(use xlib-base) ;◆汎用基礎関数ライブラリ
(use xlib-event) ;◆拡張ハンドラ操作ライブラリ
;▼コマンドライン引数(文字列)をバラして、文字列リストにして返す関数▼
(define (apx-get-command-line-args) (get-args (app-get-command-line-option)))
(define (get-args s)
(define (skip-space) ;◆半角空白をスキップ。(その次位置へ)
(define c (peek-char ip))
(if (eqv? c #\space) (begin (read-char ip) (skip-space)))
)
(define (get-inner-quote os) ;◆"~"内の文字列を取得。(その次位置へ)
(define c (read-char ip))
(if (or (eof-object? c) (eqv? c #\"))
os
(get-inner-quote (string-append os (string c)))
)
)
(define (get-word os) ;◆単語を取得。(その次位置へ)
(define c (peek-char ip))
(cond
((or (eof-object? c) (eqv? c #\space)) os)
((eqv? 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))
((eqv? c #\space) (skip-space) (loop ol))
((eqv? c #\") (loop (cons (get-inner-quote "") ol)))
(else (loop (cons (get-word (string c)) ol)))
)
)
)
;▼自作起動オプション処理用ハンドラ▼
(define handle-my-option (lambda ()
(define (option-launcher ops)
(cond
((equal? ops "/howm") (define s (sys-strftime "\= \n\n\n[%Y-%m-%d %H:%M]" (sys-localtime (sys-time))))(editor-paste-string s)(editor-set-row-col 0 2))
((rxmatch #/^\/xa(\d+)-(\d+)-(\d+)-(\d+)$/ ops) => (lambda (m)
(editor-set-select-area
(- (string->number (rxmatch-substring m 1)) 1)
(- (string->number (rxmatch-substring m 2)) 1)
(- (string->number (rxmatch-substring m 3)) 1)
(- (string->number (rxmatch-substring m 4)) 1)
)))
((rxmatch #/^\/xc(\d+)-(\d+)$/ ops) => (lambda (m)
(editor-set-row-col
(- (string->number (rxmatch-substring m 1)) 1)
(- (string->number (rxmatch-substring m 2)) 1)
)))
)
)
(for-each option-launcher (apx-get-command-line-args))
))
;▼on-open-fileイベントハンドラとしてセット▼
(app-add-event-handler "on-open-file-first" handle-my-option)
;▼ howm追加▼
(app-set-key "Ctrl+3" (lambda() (howm-add)))
(define (howm-add)
(begin
(define howm-editor-path (string-append (app-get-tool-dir) "oedit.exe"))
(define fn (editor-get-filename)) ;◆現在編集中のテキストのファイルパス
(if (and fn (string>? fn "")) ;◆カレントファイルのあるディレクトリにファイルを作成。無題ならば起動ディレクトリに作成する
(define howm-path
(string-append (regexp-replace #/^(.*\\).*$/ fn "$1") (sys-strftime "%Y-%m-%d-%H%M%S" (sys-localtime (sys-time))) ".howm /howm"))
(define howm-path (string-append (sys-strftime "%Y-%m-%d-%H%M%S" (sys-localtime (sys-time))) ".howm /howm")))
(win-exec howm-editor-path howm-path )))
howm追加より上が、howmの起動オプションを追加するためのもの。起動オプションに/howmがあれば、howmの書式をコピペするようにしてます。ほぼOEditの(ぷち)資料室 - メモ|OEdit関連の自作起動オプションのコピペです。
howm追加のところは僕が書いたもの。Ctrl+3を押せば、新規にhowmファイルを作成します。(app-set-key "Ctrl+3" (lambda() (howm-add)))の"Ctrl+3"の箇所を書き換えることで、別のキーに割り当てることができます。
PPxの設定
次に、PPxから新規作成でhowmファイルを作れるようにします。
まず、TORO's Libraryに行ってPaper Plane xUI Text Moduleをダウンロード。その中にあるPPXTEXT.DLLをPPxフォルダに置きます。
あとは、以下のようなコマンドをキーかメニューかに登録すればおk。
%Ob D:\bin\oedit\oedit.exe %*nowdatetime(Y-N-D-HMS).howm /howm
参考にしたサイト
あとはDocフォルダ内のmacro_ref.txtを読みましょう

0 件のコメント:
コメントを投稿