.FatalReal

基本,健忘録兼日記。 たまに思っている事とか。

Lisp覚えたい

[AFxw][xyzzy]
afxfazzyが生成するafxfazzy.mnuを使って,履歴を保存するafxfazzy1.mnuを作成し,重複を削除する。
2桁目の数字やアルファベットを削除して,後半部分のみで比較。
最新は常に上部へ追加し,下部に同じ行あれば削除する。

-code-
lisp素人なので,力技。
色々作っていけば,段々と増しになるだろうと期待。



;; 行数指定すると,その行をまるまる取り込み,先頭から2文字削除した文字列をAnsAとして返答
(defun cutstr(x)
(progn
(goto-line x)(goto-bol)
(setq startA (point))
(goto-eol)
(if (= startA (point))
(setq AnsA "\n") ;; 改行コードのみをバインド
(progn
(setq AnsA (buffer-substring startA (point)))
(string-left-trim (substring AnsA 0 2) AnsA) ;; AnsAの左から2文字分削除
)
)
)
)


;; 文字列と行数を受け,比較後,同じなら行を削除
(defun compstr(x strA)
(progn
(if
(string-equal strA (cutstr x))
(progn
(goto-line x)
(goto-bol)
(setq delStart (point))
(goto-eol)
(delete-region delStart (point))
)
)
)
)



;; 本体
(progn
(find-file "D:\\AFxw\\afxfazzy.mnu")
(find-file "D:\\AFxw\\afxfazzy1.mnu")
(insert-buffer "afxfazzy.mnu")
(end-of-buffer)
(setq endColumn (current-line-number))
(setq counterA 1)
(while (> endColumn counterA)
(setq Kouho1 (cutstr counterA))
(forward-line 1)
(while (> endColumn (current-line-number) )
(compstr (current-line-number) Kouho1)
(forward-line 1)
)
(setq counterA (+ counterA 1))
)
(goto-line 1)
(delete-blank-lines-all) ;; 自作。空白行(TAB,SPCのみ含む)を全削除
)




-今後の予定-
xyzzy固有の物を入れ替え,newLispを用いて実行ファイル化

スポンサーサイト

Comment

Contribute of comment


Indication is manager only.(permission)

Trackback

Trackback URL
http://utuse.blog9.fc2.com/tb.php/3037-f2829fd3
Trackback for this entry.(FC2blog user)

FC2Ad

「ひぐらしのなく頃に」オヤシロさまドットコム