よく使う置換をダイアログから
2003-12-20
昨日いただいたプレゼント。よく使う置換を登録しておいて手軽に使おうという xyzzy 用のlisp です。xyzzyの使い方が分からぬやし 励ましあえ その3 より。とりあえず自分用に設定したもの。
;;; -*- Mode: Lisp; Package: User -*-
;;置換リスト
;;http://pc2.2ch.net/test/read.cgi/software/1063367821/ 771番さん
(defvar *my-replace-list* nil)
(defun my-replace-dialog (&optional (lst *my-replace-list*) noerror)
(interactive)
(multiple-value-bind (result data)
(dialog-box `(dialog 0 0 219 300
(:caption "置換")
(:font 10 "MS Pゴシック")
(:control
(:listbox list nil #x50a10111 7 7 150 282)
(:button IDOK "&OK" #x50010001 162 7 50 14)
(:button IDCANCEL "&Cancel" #x50010000 162 41 50 14)
))
`((list . ,lst)
(list . ,(car lst)))
`(:column (50)))
(when (and result data)
(let ((pattern (nth 2 (assoc 'list data)))
(replace (nth 3 (assoc 'list data)))
(regexp (nth 4 (assoc 'list data))))
(if regexp
(replace-regexp pattern replace noerror)
(replace-string pattern replace noerror))))))
(define-key *global-keymap* #\M-R 'my-replace-dialog);Alt+Shift+R
これを、myreplace.l と名づけて、Siteinit.l に以下のように追加。
(require "myreplace")
んで、.xyzzy に以下のような感じでよく使う置換の文字列を登録しました。
;;置換リスト
(setq *my-replace-list*
'(;("表示名" "置換元" "置換先" regexp(nil以外で正規表現を使う))
(" & -> & に置換" "&" "&")
(" < -> < に置換" "<" "<")
(" > -> > に置換" ">" ">")
("改行のみの行を削除" "^\n" "" t)
("インデント解除" "^[ \t]+" "" t)
))
771さん、どうもありがとうございました。
ついでだから書いておきますが、昔私が同じ事をするのに作ったVZマクロ(何)です。
= jrep.def =
* m
80 ^\ "jrep"
?. !01 (r<0)?.
&SF(pm,9) (r<0)?.
&Ss(r) &Sc(pr,r,pr..-1)
&e(pr)
RX[-, &s
#56 &?("%s",a) #m &?("%s",b) #m "ay"
&m("") &d RX],
00: a"\x \s+$$", b"",
01: a"\x ^$$", b"",
02: a"\x ^", b"> ",
03: a"\x ^\s|^\t", b"",
*p
01 "常用置換",20,4
"0 行末スペース削除 &00"
"1 空白行削除 &01"
"2 引用符挿入 &02"
"3 インデント解除 &03"
*
= End of jrep.def =
「よく使う置換をダイアログから」へコメントをつける
- この記事の永続的 URI ならびに トラックバック ping URI
- http://diary.noasobi.net/2003/12/diary_031220b.html