.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を用いて実行ファイル化

スポンサーサイト

久々に設定を一部変更。

[xyzzy]
一部設定を変更。

1.標準のCalcで基数変更をワンボタン化
[ xyzzyでぇたらいぶらりぃ ]

 ▼電卓::やっぱりBin/Oct/Hexぐらいねぇ

を参照にcalc.lへ追記→バイトコンパイル→再起動で,Calcが少しだけ便利に。


2.全選択(selection,mark)
bufferを全選択するのに,編集→全てを選択左クリック5連打とか,めんどくさいし,いちいちM-x:selection-whole-bufferなんて論外。
使っていないC-x hへバインドする。
ついでにC-x jでリージョンの全選択とする。

以下を.xyzzyに追記。

;; C-x jで全選択(mark)
(global-set-key '(#\C-x #\j) 'mark-whole-buffer)

;; C-x hで全選択(selection)
(global-set-key '(#\C-x #\h) 'selection-whole-buffer)


暫く運用して問題なければsiteinit.lへ移動する。

howm:xyzzy

menuの予定表示(default:7日先)を56日(8週)先へ変更したのでそのやり方をメモ。

変更は,howm本体のhowm-menu.elの,186行目,
(defvar howm-menu-schedule-days 7)
を変更する。

今回の場合は,
(defvar howm-menu-schedule-days 56)
として,S-JIS形式で保存。
(S-JISにしておかないと日本語が文字化する)

xyzzyでバイトコンパイル。

すると,howm-menu.el.lcと言うファイル名になるので,これをhowm-menu.lcへリネームして
\xyzzy\site-lisp\howm\.
へ上書きコピー。
バッファクリアしつつxyzzy起動でOK

[xyzzy]

howm-wrapの問題点は理解した。
さて,1.2.1に再トライだな。

[xyzzy]

howm-wrapリマインダが上手く動かない。
そこで,wikiにあったhowm-wrap1.2.1を導入してみた。
howm自体が動かなくなった…

 elisp-lib::howm-view-save-window-configuration
 関数が定義されていません。


見たいなエラー。
むぅ…
何が悪いのか調査中…

delete-blank-lines-all

C-x C-oで実行されるdelete-blank-linesは,途中に文字列行があると止まる。
(但し,開始行の前後を走査する)
イマイチ使いづらい。
ので,自作。
・実行した行から走査開始。
 (開始行以前は無視)
・途中に文字列行があれば飛ばしつつ,ファイルの最後まで空白行を削除していく。
(defun delete-blank-lines-all ()
  (interactive "*")
  (while (/= (point) (point-max))
	(goto-bol)
	(while (not (looking-at "^[ \t]*$"))
	  (forward-line))
	(setq lines 0)
	(setq from (point))
	(while (and
			(looking-at "^[ \t]*$")
			(forward-line))
		(setq lines (+ lines 1)))
	(unless (zerop lines)
	  (delete-region (point) from))
	(goto-eol)))
Next page

FC2Ad

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