朝顔日記

よく使う置換をダイアログから

publish
2003-12-20T00:00:00+09:00
tags
はてぶ

昨日いただいたプレゼント。よく使う置換を登録しておいて手軽に使おうという 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以外で正規表現を使う)) 
(" & -> & に置換" "&" "&") 
(" < -> &lt; に置換" "<" "&lt;") 
(" > -> &gt; に置換" ">" "&gt;") 
("改行のみの行を削除" "^\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 らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2003/12/diary_031220b.html