*link [#mf6606e4]
 -[[ばりやる気のないぺぇじ:http://www.jsdlab.co.jp/~kamei/]]
 -[[capsctrl - xyzzy:http://capsctrl.que.jp/kdmsnr/?xyzzy]]
 -[[みんなの楽しい色設定:http://hie.s64.xrea.com/xyzzy/note/colors.html]]
 -[[xyzzy カスタマイズ/.xyzzy ファイル:http://www.geocities.jp/trick_room/ex_xyzzy.html]]
 -[[xyzzyページ:http://www.jsdlab.co.jp/~kei/xyzzy/]]
 -[[http://osuneko.at.infoseek.co.jp/xyzzy/xyzzy.html]]
 -[[雄猫のがらくた置き場(xyzzy):http://osuneko.at.infoseek.co.jp/xyzzy/xyzzy.html]] -- 花鳥
 -[[xyzzy Wiki:http://xyzzy.s53.xrea.com/wiki/index.php?FrontPage]]
 -[[リファレンス:http://xyzzy.s53.xrea.com/reference/]]
 -[[xyzzy Lisp Programming:http://www.geocities.jp/m_hiroi/xyzzy_lisp.html]]
 -[[HIE no xyzzy:http://hie.s64.xrea.com/xyzzy/]]
 -[[http://cgi.www5a.biglobe.ne.jp/~nhashimo/fswiki/wiki.cgi?page=xyzzy]]
 -[[Tips of "xyzzy":http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/index.html]]
 
 *memo [#h43d6b57]
 -カーソルの点滅を消したい時は 共通設定 => 表示 で「キャレットを点滅」をoffに
 -Ctrl-x \ の動的補完すげー
 -[[outline-tree2:http://ohkubo.s53.xrea.com/xyzzy/index.html#outline-tree2]]すげー
 -migemoも動く
 -list-function便利
 
 *.xyzzy [#hc0bfd51]
 設定例を公開なさっている皆様に感謝
 
 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; personal preference ;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  ;;; misc
  (cd "~/")
  (load-library "isearch") ;; incremental search
  (pushnew '("\\.xyzzy$" . lisp-mode) *auto-mode-alist* :test 'equal)
  
  ;;; key
  (global-set-key '(#\C-x #\C-y) 'paste-from-clipboard)
  (global-set-key #\M-% 'replace-string)
  (global-set-key '(#\C-x #\u) 'undo)
  (global-set-key '(#\C-x #\C-j) 'toggle-ime) ; SKK
  (global-set-key '(#\C-x #\r #\d) 'delete-rectangle)
  (global-set-key '(#\C-x #\r #\k) 'kill-rectangle)
  (global-set-key '(#\C-x #\r #\o) 'open-rectangle)
  (global-set-key '(#\C-x #\r #\t) 'string-rectangle)
  (global-set-key '(#\C-x #\r #\y) 'yank-rectangle)
  (global-set-key '(#\C-x #\r #\w) 'copy-rectangle)
  
  
  ;;; original "view mode"
  ; thanks to http://www.tsg.ne.jp/GANA/D/diary/2002-05.html 2002年05月09日 (木) JST
  (require 'viewmode)
  (define-key filer-keymap #\V 'hi-filer-view)
  (define-key ed::*view-mode-map* #\Left 'previous-page)
  (define-key ed::*view-mode-map* #\Right 'next-page)
  (define-key ed::*view-mode-map* #\C-b 'previous-page)
  (define-key ed::*view-mode-map* #\C-f 'next-page)
  (define-key ed::*view-mode-map* #\SPC 'next-page)
  
  (define-key ed::*view-mode-map* #\RET 'hi-kill-filer-view)
  (define-key ed::*view-mode-map* #\E 'hi-view-mode-to-edit)
  
  (defun hi-kill-filer-view ()
    (interactive)
    (delete-buffer (selected-buffer))
    (open-filer)
  )
  
  (defun hi-filer-view ()
    (find-file (filer-get-current-file))
    (view-mode)
    (si:*activate-toplevel)
  )
  
  (defun hi-view-mode-to-edit ()
    (interactive)
    (setq buffer-read-only nil)
    (setq fname (get-buffer-file-name))
    (delete-buffer (selected-buffer))
    (find-file fname)
    )
  
  
  
  ;;;;;;;;;;;;;
  ;;; KaTeX ;;;
  ;;;;;;;;;;;;;
  
  (push "c:/programs/xyzzy/site-lisp/katex" *load-path*)
  (require "elisp")
  (push '("\\.tex$" . elisp::katex-mode) *auto-mode-alist*)
  (autoload 'elisp::katex-mode "katex" t)
  
  
  ;;;;;;;;;;;;;;;;;;;;;;
  ;;; iswitchbもどき ;;;
  ;;;;;;;;;;;;;;;;;;;;;;
  ;;; http://xyzzy.s53.xrea.com/wiki/?tips%2Fiswitchb%A4%E2%A4%C9%A4%AD
  (global-set-key '(#\C-x #\b) 'iswitchb)
  (defun iswitchb-list-grep (list input)
   "listを input によって絞り込み"  ; 空白区切りは & とみなす
   (remove-if
    #'(lambda (x)
  	   (dolist (s (split-string input " "))
  		 (if (not (string-matchp (regexp-quote s) x))
  			 (return t))))
    list))
   
  (defun iswitchb-buffer-list-init ()
   "iswitchb で選択するバッファ名リストの取り出し(初期値)"
   (remove-if
    #'(lambda (x) (string-match "^ " x)) ; ミニバッファ以外
    (mapcar #'buffer-name
  		   (buffer-list :buffer-bar-order *next-buffer-in-tab-order*))))
  
  (defun iswitchb-buffer-list-init-rotate (list name)
   "list を name が先頭に来るまで回転"
   (when (position name list :test 'string=)
  	(while (< 0 (position name list :test 'string=))
  	  (setq list (append (cdr list) (list (car list))))))
   list)
  
  (defun iswitchb ()
   "バッファの切り替え"
   (interactive)
   (let ((buffer-list
  		 (iswitchb-buffer-list-init-rotate
  		  (iswitchb-buffer-list-init)
  		  (buffer-name (other-buffer))))
  		(input "")
  		(pre-buffer (selected-buffer))
  		(top-buffer (buffer-name (selected-buffer)))
  		(buffer-list-grepd)
  		(c))
  	(loop  ; iswitchb-mode ...
  	  (setq buffer-list-grepd (iswitchb-list-grep buffer-list input))
  	  (message "~S" buffer-list-grepd)
  	  (when (< 0 (length buffer-list-grepd))
  		(when (string/= top-buffer (car buffer-list-grepd))
  		  (setq top-buffer (car buffer-list-grepd))
  		  (switch-to-buffer top-buffer)))
  	  (ed:minibuffer-prompt "iswitchb: ~A" input)
  	  (setq c (read-char ed:*keyboard*))
  	  (case c
  		((#\C-g #\ESC)
  		 (switch-to-buffer pre-buffer) (quit))
  		((#\Left #\Up #\C-r #\Home #\PageDown) ; 'iswitchb-prev-match
  		 (when (< 1 (length buffer-list-grepd))
  		   (while (string= top-buffer (car (iswitchb-list-grep buffer-list input)))
  			 (setq buffer-list (append (last buffer-list) (butlast buffer-list))))))
  		((#\Right #\Down #\C-s #\End #\PageUp) ;'iswitchb-next-match
  		 (when (< 1 (length buffer-list-grepd))
  		   (while (string= top-buffer (car (iswitchb-list-grep buffer-list input)))
  			 (setq buffer-list (append (cdr buffer-list) (list (car buffer-list)))))))
  		((#\C-m #\RET) ;'iswitchb-exit-minibuffer
  		 (return (switch-to-buffer top-buffer)))
  		((#\C-j)
  		 (switch-to-buffer top-buffer))
  		((#\C-a)
  		 (setq input ""))
  		((#\C-h)
  		 (ignore-errors (setq input (substring input 0 -1))))
  		((#\TAB)
  		 (ignore-errors
  		  (multiple-value-bind (result list prefix)
  		      (*do-completion input :buffer-name)
  		    (cond ((eq result :solo-match)
  			   (return (switch-to-buffer top-buffer)))
  			  ((stringp result)
  			   (setf input result))))))
  		(t
  		 (setq input (format nil "~A~A" input c)))
  		))))