* Menu
[[About:self:AboutPage.txt]] | [[Profile:http://iddy.jp/profile/southly/]] | [[まとめ:self:1163859357.txt]] | [[オリジナル:http://ninjinix.x0.com/rn/]] | [[xyzzy:http://raido.sakura.ne.jp/southly/xyzzy/site-lisp/]] | [[あんてな:http://i-know.jp/southly/listall]] | [[■:http://raido.sakura.ne.jp/southly/lisp/ni/view.lisp]] | [[buzz:http://www.google.com/profiles/southly#buzz]]
- 2009-02-20 :
- そこそこまとまっていて役に立つかもしれないもの
- 2007-02-23
- editorパッケージのbuiltin関数
- xyzzy lisp : 候補の絞込みをするpopup-list
- xyzzy lisp : へなちょこ補完その3
- xyzzy lisp : へなちょこ補完その2
- xyzzy lisp : へなちょこ補完
- xyzzy lisp : 位置とサイズの操作
- xyzzy topic : bufbar2, www-search, popup-key, sztab更新
- xyzzy topic : マークを少しは使えるようにするLisp「hmark.l ver.0.1.0.3」
- xyzzy lisp : popup-gmark.l
- xyzzy lisp : global-mark を popup の続き
- xyzzy lisp : global-mark を popup
- xyzzy topic : bufbar2, popup-key, www-search更新
page 0 - << : 0 : >>
* 2009-02-20 :
- やばいなぁ。emacsの設定にハマり始めた。
- 慣れたxyzzyの快適さに微妙に届かないのが気になるんだよなぁ。
- popup-listが恋しい...
* そこそこまとまっていて役に立つかもしれないもの
* 2007-02-23
- あればあったで使いそうですけど > svn
- format周りしかパッチをあてていないので微妙な気も
- popup-listのフォントもいじっていたかも
- bregexp.dllってものがあったんですね。bregex.dllの名前は安直過ぎたなと反省。
- DLLの作り方は大体分かったので次のネタを考え中。
- 思いつかなかったらBrowser.dllあたりを車輪するかな〜
* editorパッケージのbuiltin関数
以下で調べて652個
(let ((count 0))
(do-symbols (sym (find-package "editor") (format t "~%count: ~d~%" count))
(when (and (not (find-symbol (symbol-name sym) "lisp"))
(fboundp sym)
(si:*builtin-function-p (symbol-function sym)))
(format t "~a~%" sym)
(incf count))))
[[(ReadMore...) index.rb?1164371462.txt]]* xyzzy lisp : 候補の絞込みをするpopup-list
http://xyzzy.s53.xrea.com/wiki/index.php?%BC%C1%CC%E4%C8%A2%2F173
上のページにいくつかありますが元のpopup-listと引数が異なっていて置き換えにくいので書き直し。正規表現を使っていなかった佐野さんのがベース。
ちなみに実際に使うときは[[これ:self:1155828305.txt]]みたいに引数にbase(すでに一致している部分)をとらないといけないような気がしてる。
上のページにいくつかありますが元の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に。
ちなみに実際に使うときは[[これ:self:1155828305.txt]]みたいに引数にbase(すでに一致している部分)をとらないといけないような気がしてる。
