設定例を公開なさっている皆様に感謝
;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 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))) ))))