@@@ AboutPage.txt @@@
RandomNote について。
RandomNote について。
2006-11-05 (Sun) 20:19:32
@@@ 1141132537.txt @@@
RandomNote : ChangeLog (改造記録)
-2006-09-08 : spam対策。狙われているページを編集不可に。
-2006-04-25 : RSSのdescriptionまわりとか(うっかり検索履歴を消してしまう(汗 )
-2006-04-12 : へなちょこspam対策 第一弾の修正
-2006-04-02 : RSSをファイルに出力するようにした
-2006-04-02 : なんか細々と
-2006-03-26 : RSSも検索結果に(完成)
-2006-03-23 : RSSも検索結果に(途中まで)
-2006-03-17 : change_logを少し見易くした
-2006-03-04 : へなちょこspam対策 第一弾
-2006-03-03 : 下部にもページリンクを設置
-2006-02-28 : refererの表示をカウント2以上に
-2006-02-28 : 特定leafへのリンクに別名をつける
-2006-02-28 : こまごまとしたこと
-2006-02-22 : コメント欄 (飾り)
-2006-02-22 : RSS周り (RSS auto-discovery & HTTP応答ヘッダ)
-2006-02-19 : NOT検索 (へなちょこ)
-2006-02-13 : ブックマーク
→[[Todo self:1140534666.txt]]
2006-11-05 (Sun) 20:18:19
@@@ 1161833288.txt @@@
xyzzy lisp : clone-buffer
とりあえずこんなところか。
主だったところはsession.lから。
outline-tree2をバッファバーの代わりにしつつ、rename-bufferを良く使う人向け。
もしくは*compilation*バッファとかでうっかりそのまま編集して、undoができず残念な思いをする人向け。
(defun clone-buffer (buffer-name &optional (buffer (selected-buffer)))
(interactive "sClone Buffer: ")
(let ((major buffer-mode)
(minor (mapcan #'(lambda (mode)
(let ((var (and (consp mode) (car mode))))
(and (symbolp var)
(boundp var)
(symbol-value var)
(list var))))
*minor-mode-alist*))
(locals (mapcar #'(lambda (var)
(and (symbolp var)
(local-variable-p var)
(cons var (symbol-value var))))
*buffer-info-variable-list*))
(point (point)))
(set-buffer (create-new-buffer buffer-name))
(insert-buffer buffer)
(funcall major)
(mapc #'(lambda (f) (and (fboundp f) (funcall f))) minor)
(mapc #'(lambda (x)
(when (and (car x) (symbolp (car x)))
(make-local-variable (car x))
(set (car x) (cdr x))))
locals)
(goto-char point)))
メモ:
undo情報をそっくり写せるとうれしいかも。
----
OHKUBO は単純にこういう風にしています。
outline-tree2 では起動時に *after-rename-buffer-hook* が存在したら
フックに引っ掛かるようになってます。
;; rename-buffer (builtin.l)
(in-package "editor")
(defconstant *rename-buffer-org-function* #'rename-buffer)
(defvar *after-rename-buffer-hook* nil)
(defun rename-buffer (buffer-name &optional buffer)
(interactive "sRename buffer: ")
(prog1
(funcall *rename-buffer-org-function* buffer-name buffer)
(run-hook-with-args '*after-rename-buffer-hook* (or buffer (selected-buffer)))))
(export '(*after-rename-buffer-hook*))
(in-package "user")
2006-10-28 (Sat) 07:58:38
@@@ 1161833288.txt @@@
xyzzy lisp : clone-buffer
とりあえずこんなところか。
主だったところはsession.lから。
outline-tree2をバッファバーの代わりにしつつ、rename-bufferを良く使う人向け。
もしくは*compilation*バッファとかでうっかりそのまま編集して、undoができず残念な思いをする人向け。
(defun clone-buffer (buffer-name &optional (buffer (selected-buffer)))
(interactive "sClone Buffer: ")
(let ((major buffer-mode)
(minor (mapcan #'(lambda (mode)
(let ((var (and (consp mode) (car mode))))
(and (symbolp var)
(boundp var)
(symbol-value var)
(list var))))
*minor-mode-alist*))
(locals (mapcar #'(lambda (var)
(and (symbolp var)
(local-variable-p var)
(cons var (symbol-value var))))
*buffer-info-variable-list*))
(point (point)))
(set-buffer (create-new-buffer buffer-name))
(insert-buffer buffer)
(funcall major)
(mapc #'(lambda (f) (and (fboundp f) (funcall f))) minor)
(mapc #'(lambda (x)
(when (and (car x) (symbolp (car x)))
(make-local-variable (car x))
(set (car x) (cdr x))))
locals)
(goto-char point)))
メモ:
undo情報をそっくり写せるとうれしいかも。
2006-10-28 (Sat) 06:51:34
@@@ 1161833288.txt @@@
xyzzy lisp : clone-buffer
とりあえずこんなところか。
主だったところはsession.lから。
outline-tree2をバッファバーの代わりにしつつ、rename-bufferを良く使う人向け。
もしくは*compilation*バッファでうっかりそのまま編集して、undoができず残念な思いをする人向け。
(defun clone-buffer (buffer-name &optional (buffer (selected-buffer)))
(interactive "sClone Buffer: ")
(let ((major buffer-mode)
(minor (mapcan #'(lambda (mode)
(let ((var (and (consp mode) (car mode))))
(and (symbolp var)
(boundp var)
(symbol-value var)
(list var))))
*minor-mode-alist*))
(locals (mapcar #'(lambda (var)
(and (symbolp var)
(local-variable-p var)
(cons var (symbol-value var))))
*buffer-info-variable-list*))
(point (point)))
(set-buffer (create-new-buffer buffer-name))
(insert-buffer buffer)
(funcall major)
(mapc #'(lambda (f) (and (fboundp f) (funcall f))) minor)
(mapc #'(lambda (x)
(when (and (car x) (symbolp (car x)))
(make-local-variable (car x))
(set (car x) (cdr x))))
locals)
(goto-char point)))
メモ:
undo情報をそっくり写せるとうれしいかも。
2006-10-28 (Sat) 03:33:18
@@@ 1161833288.txt @@@
xyzzy lisp : clone-buffer
(defun clone-buffer (buffer-name &optional (buffer (selected-buffer)))
(interactive "sClone Buffer: ")
(set-buffer (create-new-buffer buffer-name))
(insert-buffer buffer))
途中。
モードも同じになるようにする。
できることならundo情報も写したいけど...
2006-10-28 (Sat) 03:31:27
@@@ 1161622066.txt @@@
xyzzy lisp : reopen-file
(in-package "editor")
(defun reopen-file (filename &optional encoding nomsg)
(interactive "fReopen file: \n0zEncoding: " :title0 "Reopen file")
(let ((*expected-fileio-encoding* (or encoding *expected-fileio-encoding*)))
(declare (special *expected-fileio-encoding*))
(when buffer-read-only
(error "書き込み禁止バッファです"))
(setq filename (namestring filename))
(when (special-file-p filename)
(error "~aはデバイスファイルです" filename))
(when (file-directory-p filename)
(error "~aはディレクトリです" filename))
(unless (and (valid-path-p filename)
(file-exist-p filename))
(error "~a\nファイルまたはディレクトリが見つかりません" filename))
(when (and (need-buffer-save-p (selected-buffer))
(not (no-or-yes-p "バッファが変更されています。変更内容を破棄しますか?")))
(return-from read-file nil))
(save-restriction
(widen)
(delete-region 0 (buffer-size))
(or nomsg
(message "Reading file..."))
(multiple-value-bind (nlines noerror)
(insert-file-contents filename t)
(unless noerror
(warn "~a\nメモリが足りなくてすべて読み込めませんでした" filename)
(set-buffer-truncated-p t))
(or nomsg
(message "~d行読み込みました" nlines))
nlines)
)))
(defun revert-buffer-reopen ()
(let ((opoint (point)))
(or (file-visited-p)
(error "ファイル名がありません。"))
(when (let ((buffer-read-only nil))
(declare (special buffer-read-only))
(let* ((filename (get-buffer-file-name))
(nlines (reopen-file filename)))
(find-file-lock-file)
(find-file-notice filename nlines nil))
buffer-read-only)
(setq buffer-read-only t))
(goto-char opoint)))
(setq-default verify-visited-file-modtime :auto)
(setq-default revert-buffer-function #'revert-buffer-reopen)
(add-hook '*create-buffer-hook*
#'(lambda (buf)
(with-set-buffer
(save-excursion
(set-buffer buf)
(setq revert-buffer-function #'revert-buffer-reopen)
(when (string-match (regexp-quote "*Help*") (buffer-name buf))
(set-default-directory (merge-pathnames "lisp/" (si:system-root)))
(lisp-mode)))))
t)
2006-10-26 (Thu) 17:55:48
@@@ 1161622066.txt @@@
xyzzy lisp : reopen-file
(in-package "editor")
(defun reopen-file (filename &optional encoding nomsg)
(interactive "fReopen file: \n0zEncoding: " :title0 "Reopen file")
(let ((*expected-fileio-encoding* (or encoding *expected-fileio-encoding*)))
(declare (special *expected-fileio-encoding*))
(when buffer-read-only
(error "書き込み禁止バッファです"))
(setq filename (namestring filename))
(when (special-file-p filename)
(error "~aはデバイスファイルです" filename))
(when (file-directory-p filename)
(error "~aはディレクトリです" filename))
(unless (and (valid-path-p filename)
(file-exist-p filename))
(error "~a\nファイルまたはディレクトリが見つかりません" filename))
(when (and (need-buffer-save-p (selected-buffer))
(not (no-or-yes-p "バッファが変更されています。変更内容を破棄しますか?")))
(return-from read-file nil))
(save-restriction
(widen)
(delete-region 0 (buffer-size))
(or nomsg
(message "Reading file..."))
(multiple-value-bind (nlines noerror)
(insert-file-contents filename t)
(unless noerror
(warn "~a\nメモリが足りなくてすべて読み込めませんでした" filename)
(set-buffer-truncated-p t))
(or nomsg
(message "~d行読み込みました" nlines))
nlines)
)))
(defun revert-buffer-reopen ()
(let ((opoint (point)))
(or (file-visited-p)
(error "ファイル名がありません。"))
(when (let ((buffer-read-only nil))
(declare (special buffer-read-only))
(let* ((filename (get-buffer-file-name))
(nlines (reopen-file filename)))
(find-file-lock-file)
(find-file-notice filename nlines nil))
buffer-read-only)
(setq buffer-read-only t))
(goto-char opoint)))
(setq-default verify-visited-file-modtime :auto)
(add-hook '*create-buffer-hook*
#'(lambda (buf)
(with-set-buffer
(save-excursion
(set-buffer buf)
(setq revert-buffer-function #'revert-buffer-reopen)
(when (string-match (regexp-quote "*Help*") (buffer-name buf))
(set-default-directory (merge-pathnames "lisp/" (si:system-root)))
(lisp-mode)))))
t)
2006-10-26 (Thu) 13:58:51
@@@ 1161622066.txt @@@
xyzzy lisp : reopen-file
(in-package "editor")
(defun reopen-file (filename &optional encoding nomsg)
(interactive "fReopen file: \n0zEncoding: " :title0 "Reopen file")
(let ((*expected-fileio-encoding* (or encoding *expected-fileio-encoding*)))
(declare (special *expected-fileio-encoding*))
(when buffer-read-only
(error "書き込み禁止バッファです"))
(setq filename (namestring filename))
(when (special-file-p filename)
(error "~aはデバイスファイルです" filename))
(when (file-directory-p filename)
(error "~aはディレクトリです" filename))
(unless (and (valid-path-p filename)
(file-exist-p filename))
(error "~a\nファイルまたはディレクトリが見つかりません" filename))
(when (and (need-buffer-save-p (selected-buffer))
(not (no-or-yes-p "バッファが変更されています。変更内容を破棄しますか?")))
(return-from read-file nil))
(save-restriction
(widen)
(delete-region 0 (buffer-size))
(or nomsg
(message "Reading file..."))
(multiple-value-bind (nlines noerror)
(insert-file-contents filename t)
(unless noerror
(warn "~a\nメモリが足りなくてすべて読み込めませんでした" filename)
(set-buffer-truncated-p t))
(or nomsg
(message "~d行読み込みました" nlines))
nlines)
)))
(defun revert-buffer-reopen ()
(let ((opoint (point)))
(or (file-visited-p)
(error "ファイル名がありません。"))
(when (let ((buffer-read-only nil))
(declare (special buffer-read-only))
(let* ((filename (get-buffer-file-name))
(nlines (reopen-file filename)))
(find-file-lock-file)
(find-file-notice filename nlines nil))
buffer-read-only)
(setq buffer-read-only t))
(goto-char opoint)))
(setq-default verify-visited-file-modtime :auto)
(add-hook '*create-buffer-hook*
#'(lambda (buf)
(with-set-buffer
(save-excursion
(set-buffer buf)
(setq revert-buffer-function #'revert-buffer-reopen)
(when (string-match (regexp-quote "*Help*") (buffer-name buffer))
(set-default-directory (merge-pathnames "lisp/" (si:system-root)))
(lisp-mode)))))
t)
2006-10-24 (Tue) 10:15:25
@@@ 1161316310.txt @@@
xyzzy : モバイルxyzzyの件
ヒストリ変数でパスを指定する場合でのみ問題ということであれば.xyzzy.historyの出力をどうにかすればいいのでは?と思い、書いてみる。
未テストなので注意。
帰ってからテストします。
----
(defun save-history-file ()
(when (and *history-file-loaded*
(integerp *save-history*))
(ignore-errors (run-hooks '*save-history-hook*))
(let ((*package* *package*))
(with-open-file (s (history-file-name)
:direction :output
:if-exists :supersede
:if-does-not-exist :create)
(flet ((put (var value)
(unless (eq *package* (symbol-package var))
(setq *package* (symbol-package var))
(write `(in-package ,(package-name *package*))
:stream s :escape t)
(terpri s))
(if (and (stringp value) (valid-path-p value) (eql 0 (string-matchp (regexp-quote (si:system-root)) value)))
(write `(set-default ',var (merge-pathnames ,(substitute-string (string-downcase value) (string-downcase (si:system-root)) "") (si:system-root))) :stream s :escape t :circle t)
(write `(set-default ',var ',value)
:stream s :escape t :circle t))
(terpri s)))
(save-history-symbol-packages s *history-variable-list*)
(mapcar #'(lambda (var)
(let* ((his (symbol-value var))
(exceed (- (length his) *save-history*)))
(if (> exceed 0)
(setq his (nbutlast his exceed)))
(put var his)))
*minibuffer-history-variables*)
(mapcar #'(lambda (var)
(when (and (symbolp var)
(boundp var))
(put var (default-value var))))
*history-variable-list*)))))
(when *save-resume-info*
(let ((base (resume-file-name-base)))
(dotimes (x 1000)
(with-open-file (s (merge-pathnames (format nil "~a~a" base x)
(user-config-path))
:direction :output
:if-exists nil
:if-does-not-exist :create)
(when s
(save-session-info s)
(return)))))))
2006-10-20 (Fri) 12:54:35
@@@ 1155827953.txt @@@
xyzzy lisp : 候補の絞込みをするpopup-list
http://xyzzy.s53.xrea.com/wiki/index.php?%BC%C1%CC%E4%C8%A2%2F173
上のページにいくつかありますが元のpopup-listと引数が異なっていて置き換えにくいので書き直し。正規表現を使っていなかった佐野さんのがベース。
(defun popup-list-loop (list callback &optional point with-insert)
(let ((str "") (matched list) matched1 selected input)
(loop
(if with-insert (insert str))
(popup-list matched (lambda (x) (setq selected x)) point) ; #\ESC
(refresh-screen)
(while (not (or selected (setq input (read-char-no-hang *keyboard*))))
(do-events))
(if with-insert (delete-region (- (point) (length str)) (point)))
(cond (selected
(funcall callback selected)
(if (eql input #\SPC) (unread-char input))
(return t))
; ((eql input #\ESC) (return nil))
((eql input #\C-h) (unless (zerop (length str)) (setq str (substring str 0 -1))))
((graphic-char-p input) (setq str (format nil "~A~C" str input)))
(t (unread-char input) (return nil)))
(setq matched1 (remove-if (lambda (x)
(or (< (length x) (length str))
(string/= x str :end1 (length str))))
list))
(if (endp matched1) (if with-insert
(progn (funcall callback str) (return t))
(setq str (substring str 0 -1)))
(setq matched matched1)))))
できるだけ元のpopup-listと同じ操作感になるようにしたつもりですが、ウィンドウをESCで閉じたときの動作だけは感知する手段が無くて無理でした。
- 2006-10-19修正。eqで文字を比較するのは処理系依存だったのでeqlに。
2006-10-19 (Thu) 12:45:33
@@@ 1155827953.txt @@@
xyzzy lisp : 候補の絞込みをするpopup-list
http://xyzzy.s53.xrea.com/wiki/index.php?%BC%C1%CC%E4%C8%A2%2F173
上のページにいくつかありますが元のpopup-listと引数が異なっていて置き換えにくいので書き直し。正規表現を使っていなかった佐野さんのがベース。
(defun popup-list-loop (list callback &optional point with-insert)
(let ((str "") (matched list) matched1 selected input)
(loop
(if with-insert (insert str))
(popup-list matched (lambda (x) (setq selected x)) point) ; #\ESC
(refresh-screen)
(while (not (or selected (setq input (read-char-no-hang *keyboard*))))
(do-events))
(if with-insert (delete-region (- (point) (length str)) (point)))
(cond (selected
(funcall callback selected)
(if (eq input #\SPC) (unread-char input))
(return t))
; ((eq input #\ESC) (return nil))
((eq input #\C-h) (unless (zerop (length str)) (setq str (substring str 0 -1))))
((graphic-char-p input) (setq str (format nil "~A~C" str input)))
(t (unread-char input) (return nil)))
(setq matched1 (remove-if (lambda (x)
(or (< (length x) (length str))
(string/= x str :end1 (length str))))
list))
(if (endp matched1) (if with-insert
(progn (funcall callback str) (return t))
(setq str (substring str 0 -1)))
(setq matched matched1)))))
できるだけ元のpopup-listと同じ操作感になるようにしたつもりですが、ウィンドウをESCで閉じたときの動作だけは感知する手段が無くて無理でした。
2006-10-19 (Thu) 12:41:35
@@@ 1161177662.txt @@@
2006-10-18
-[[この件:http://d.hatena.ne.jp/hasegawayosuke/20061017/p1#seemore]]でmixiの技術が信用に値しないことがはっきりしたので方針を変更。
-「隠す必要が無い情報だけ載せる」から「載せる必要が無い情報は隠す」に。
-mixi日記はこのまま封印かな。
-二次方程式の解の公式を忘れてた事に気付くorz...
-つーか二次方程式を解く必要に迫られるってのがちょっとへこむ。ったく、(以下略)
2006-10-18 (Wed) 22:40:17
@@@ 1160710378.txt @@@
Scrapbook : Azarac
http://labs.preferred.jp/azarac/
2006-10-13 (Fri) 12:33:44
@@@ 1159117033.txt @@@
xyzzy lisp : reopen-file
こうかも。
(in-package "editor")
(defun reopen-file (filename &optional encoding nomsg)
(interactive "fReopen file: \n0zEncoding: " :title0 "Reopen file")
(let ((*expected-fileio-encoding* (or encoding *expected-fileio-encoding*)))
(declare (special *expected-fileio-encoding*))
(when buffer-read-only
(error "書き込み禁止バッファです"))
(setq filename (namestring filename))
(when (special-file-p filename)
(error "~aはデバイスファイルです" filename))
(when (file-directory-p filename)
(error "~aはディレクトリです" filename))
(unless (and (valid-path-p filename)
(file-exist-p filename))
(error "~a\nファイルまたはディレクトリが見つかりません" filename))
(when (and (need-buffer-save-p (selected-buffer))
(not (no-or-yes-p "バッファが変更されています。変更内容を破棄しますか?")))
(return-from read-file nil))
(save-restriction
(widen)
(delete-region 0 (buffer-size))
(or nomsg
(message "Reading file..."))
(multiple-value-bind (nlines noerror)
(insert-file-contents filename t)
(unless noerror
(warn "~a\nメモリが足りなくてすべて読み込めませんでした" filename)
(set-buffer-truncated-p t))
(or nomsg
(message "~d行読み込みました" nlines))
nlines)
)))
(defun revert-buffer-reopen ()
(let ((opoint (point)))
(or (file-visited-p)
(error "ファイル名がありません。"))
(when (let ((buffer-read-only nil))
(declare (special buffer-read-only))
(let* ((filename (get-buffer-file-name))
(nlines (reopen-file filename)))
(find-file-lock-file)
(find-file-notice filename nlines nil))
buffer-read-only)
(setq buffer-read-only t))
(goto-char opoint)))
(setq-default revert-buffer-function #'revert-buffer-reopen)
(setq-default verify-visited-file-modtime :auto)
2006-10-13 (Fri) 10:31:14