.xyzzyについて
普段使ってる環境のバックアップもかねて、さらしてみる
.xyzzy
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 開発関連のサポート定義 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; c-modeの設定 (setq c-indent-level 4) (setq c-continued-statement-offset 4) (setq c-argdecl-indent 0) (setq c-brace-offset -4) (setq c-label-offset -4) (setq c-comment-indent 0) ;; インデントをTABにする (setq *c-indent-tabs-mode* t) ;; cc-modeの設定 (setq c++-indent-level 4) (setq c++-continued-statement-offset 4) (setq c++-argdecl-indent 0) (setq c++-brace-offset -4) (setq c++-brace-imaginary-offset 0) (setq c++-label-offset -4) (setq c++-comment-indent 0) ;; インデントをTABにする (setq *c++-indent-tabs-mode* t) ;; 常にTABキーでタブを入力 ;(let )((keymap (make-sparse-keymap))) ; (define-key keymap #\TAB 'self-insert-command) ; (add-hook '*create-buffer-hook* ; #'(lambda (buffer) ; (set-minor-mode-map keymap buffer)))) ;; Artistic Styleによるソース整形 (defun astyle () (interactive) (filter-buffer (concat (merge-pathnames "bin/AStyle.exe" (si:system-root)) " -s4Sbpy " )) ) ; C-c C-aで実行 (define-key spec-map #\C-a 'astyle) ;; diffをファイラーでファイル選択できるように (defun my-filer-diff-file () (let )((file1 (ed::filer-fetch-file nil nil))( (file2 (ed::filer-fetch-file nil t))) (unless (and file1 file2) (error "diffするファイルを指定して")) (diff file1 file2) (and (find-buffer ed::*diff-new-buffer-name*) (find-buffer ed::*diff-old-buffer-name*) (filer-cancel)))) (define-key filer-keymap #\M-f 'my-filer-diff-file) ;;; diff-mode で paren が反応しないようにする (add-hook 'ed::*diff-mode-hook* 'turn-off-paren) ;;; ruby-modeの設定 (load-library "ruby-debug") ;debugモードを使うなら (load-library "ruby-misc") ;その他を使うなら ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ファイルとの関連付け ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 環境関連定義 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Netinstaller ;;;;;;;;;;;;;;;;;;;;;;;;; (require "ni/setup") ;; 自動設定を利用する (ni-autoload) ;; PROXYを通す場合 (setq ni::*http-proxy-host* "proxy.example.com") ; PROXY のホスト (setq ni::*http-proxy-port* 8080) ; PROXY のポート ;; netinstallerのsiteを最新にする (defun ni::add-site-from-wiki () (interactive) (let ((s (ni::http-get-url "http://xyzzy.s53.xrea.com/wiki/index.php?cmd=source&page=NetInstaller%2F%C7%DB%C9%DB%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%B0%EC%CD%F7"))) (ni::load-site-data) (mapcar (lambda (x) (ignore-errors (ni::site-add x))) (set-difference (remove-if 'null (mapcar (lambda (i) (and (string-match "^:[^|]+|\\(http:.*\\)$" i) (apply #'concat (mapcar (lambda (x) (let )((tmp (split-string x #\;))) (if (equal (car tmp) "amp") (apply #'concat "&" (cdr tmp))( (car tmp)))) (split-string (match-string 1) #\&))))) (let (out) (while (handler-case (progn (push (read-line s) out) t) (quit (c) (return-from ni::add-site-from-wiki))( (error (c) nil))) (nreverse out)))) (mapcar (lambda (x) (cdr (assoc "src" x :test 'equal))) ni::*site-data*) :test 'equal))) t) ;;ここがキーバインド (define-key ni::*site-map* #\N 'ni::add-site-from-wiki) ;;;;;;;;;;;;;;;;;;;; ;; Netinstaller End ;;;;;;;;;;;;;;;;;;;; ;; お隣とdiff ;(require "diff-buffer") ;;backupを取得するフォルダ指定 (require "backup") (setq *backup-directory* "c:/tools/XyzzyBackup") (setq *hierarchic-backup-directory* nil) ;;grep結果をダブルクリックでも開く(普段はF10,F11) (defun grep-mouse-left-press () (interactive) (let )((click (mod *last-mouse-click-count* 6))) (if (= click 2) (first-error) (mouse-left-press)))) (defvar *grep-map* nil) (unless *grep-map* (setq *grep-map* (make-sparse-keymap))( (define-key *grep-map* #\LBtnDown 'grep-mouse-left-press))( (add-hook 'ed::*grep-hook* #'(lambda () (use-keymap *grep-map*))) (add-hook 'ed::*grepd-hook* #'(lambda () (use-keymap *grep-map*))) ;;browserexを使う (require "browserex") (global-set-key #\M-F8 'bx:navigate) (global-set-key #\M-F9 'bx:browserex-set-focus-browser) (global-set-key #\M-F10 'bx:browserex-set-focus-editor) (global-set-key #\M-F12 'bx:close-browser) (global-set-key #\RBtnUp 'bx:browserex-mouse-menu-popup) (global-set-key #\Apps 'bx:browserex-apps-popup) (global-set-key #\M-Up 'bx:browserex-scroll-up) (global-set-key #\M-Down 'bx:browserex-scroll-down) (global-set-key #\M-Left 'bx:browserex-scroll-left) (global-set-key #\M-Right 'bx:browserex-scroll-right) (global-set-key #\M-PageUp #'(lambda () (interactive) (bx:browserex-scroll-up :unit :page))) (global-set-key #\M-PageDown #'(lambda () (interactive) (bx:browserex-scroll-down :unit :page))) (global-set-key #\M-Home #'(lambda () (interactive) (bx:browserex-scroll-up :unit :all))) (global-set-key #\M-End #'(lambda () (interactive) (bx:browserex-scroll-down :unit :all))) (global-set-key #\M-S-Left 'bx:go-back-browser) (global-set-key #\M-S-Home 'bx:go-home-browser) (setq bx:*browser-start-page* "http://www.google.co.jp/search?hl=ja&q=") ;;;;; ;; igsearch ;;;;; ;(setf *igsearch-init-state* :migemo) ; 最初はmigemo (setf *igsearch-escape-sequence* t) ; エスケープシーケンスを理解する (setf *igsearch-next-buffer-use-olt2* t) ; バッファ移動はolt2の順で ;;;;; ;; highlight ;;;;; (require "highlight") ;; 以下はデフォルトキーバインド ;(global-set-key '(#\C-c #\h #\w) 'highlight-current-word) ;(global-set-key '(#\C-c #\h #\r) 'highlight-regexp) ;(global-set-key '(#\C-c #\h #\c) 'highlight-clear) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; どっかから拾ってきた使える関数 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; ;;ファンクションキー設定 ;;;;;;;;;;;;;;;;;;;;;;;;; ;; F3 = タグback (global-set-key #\F3 'ctags-back-tag-jump) (set-function-bar-label #\F3 "タグback") ;; F4 = タグjump (global-set-key #\F4 'ctags-jump-tag) (set-function-bar-label #\F4 "タグjump") ;; F7 = cscopeタグback (global-set-key #\F7 'cscope-back-tag-jump) (set-function-bar-label #\F7 "cscopeタグback") ;; C-F3 = grep (global-set-key #\C-F3 'grep) (set-function-bar-label #\C-F3 "grep-file") ;; C-F4 = grep-dialog (global-set-key #\C-F4 'grep-dialog) (set-function-bar-label #\C-F4 "grep-dialog") ;; C-F5 highlight-regexp (global-set-key #\C-F5 'highlight-regexp) (set-function-bar-label #\C-F5 "強調 w/ regexp") ;; C-F6 = kill-matched-buffers (global-set-key #\C-F6 'kill-matched-buffers) (set-function-bar-label #\C-F6 "選択バッファkill") ;; C-F7 kill-all-buffers (global-set-key #\C-F7 'kill-all-buffers) (set-function-bar-label #\C-F7 "全バッファ閉じる") ;; C-F8 kill-buffer (global-set-key #\C-F8 'kill-buffer) (set-function-bar-label #\C-F8 "バッファ閉じる") ;; C-F9 diff (global-set-key #\C-F9 'diff) (set-function-bar-label #\C-F9 "diff") ;; C-F10 cscope-find-functions-called (global-set-key #\C-F10 'cscope-find-functions-called) (set-function-bar-label #\C-F10 "呼んでる関数") ;; C-F11 replace-regexp (global-set-key #\C-F11 'replace-regexp) (set-function-bar-label #\C-F11 "置換 w/ regexp") ;; C-F12 replace-regexp (global-set-key #\C-F12 'replace-dialog) (set-function-bar-label #\C-F12 "置換dialog") ;; Shift-F7 untabify-selection (global-set-key #\S-F7 'untabify-selection) (set-function-bar-label #\S-F7 "選択範囲TAB解除") ;; Shift-F8 selection-whole-buffer (global-set-key #\S-F8 'selection-whole-buffer) (set-function-bar-label #\S-F8 "すべて選択") ;; Shift-F10 rss (global-set-key #\S-F10 'rss) (set-function-bar-label #\S-F10 "RSS") ;; Shift-F11 insert-date-string (global-set-key #\S-F11 'insert-date-string) (set-function-bar-label #\S-F11 "日付挿入") ;; Shift-F12 CalMemo (global-set-key #\S-F12 'calmemo) (set-function-bar-label #\S-F12 "CalMemo") ;; M-F2 re-builder (global-set-key #\M-F2 're-builder) (set-function-bar-label #\M-F2 "re-builder") ;; M-F3 www (global-set-key #\M-F3 'www) (set-function-bar-label #\M-F3 "www") ;; M-F9 KamailV3 (global-set-key #\M-F9 'kamail3) (set-function-bar-label #\M-F9 "KamailV3") ;; M-F10 KamailV3 Open/Close (global-set-key #\M-F10 'kamail3-toggle) (set-function-bar-label #\M-F10 "Kamail O/C") ;; M-F12 remember (global-set-key #\M-F12 'remember) (set-function-bar-label #\M-F12 "備忘録") |< ** siteinit.l >| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; siteinitl. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;開発関連 ;;;;;;;;;; ;; cvs-mode (require "cvs") ;; indent-to-token+ (require "indent-to-token+") ; M-iで選択範囲(リージョンではない)に対して実行 (global-set-key #\M-i 'indent-to-token+) ;; ctags (load-library "ctags") ; ctags.exe へのパス (setf *ctags-command-path* (merge-pathnames "etc/ctags.exe" (si:system-root))); ; ctags.exe へのその他のオプション (setf *ctags-command-option* "--jcode=sjis") ; キーバインド ;(global-set-key #\M-. 'ctags-jump-tag) ;(global-set-key #\M-\, 'ctags-back-tag-jump) (global-set-key #\M-/ 'ctags-make-tags-file-recursive) (global-set-key #\M-? 'ctags-select-stack) ;;; parentag (require "paren") (turn-on-global-paren) (setq *c-mode-hook* '(lambda () (setq *paren-highlight-only-paren* nil) (setq *paren-paren-attribute* '(:underline nil :bold t)))) ;; 対応する括弧の対に向けてジャンプ (defun match-paren (&optional arg) "Go to the matching parenthesis if on parenthesis otherwise insert %." (interactive "p") (cond )((looking-at "[([{]") (forward-sexp 1) (backward-char))( )((looking-at "[])}]") (forward-char) (backward-sexp 1))( (t (self-insert-command (or arg 1))))) (global-set-key #\C-5 'match-paren) ;;インクリメンタルサーチ (require "isearch") ;; comment-regionの代用 (from kia's website) (autoload 'comment-out-region "comment" t nil) (global-set-key '(#\C-c #\q) 'comment-out-region) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ファイルとの関連付け ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;.xyzzyをlisp-modeで編集 (pushnew '("\\.xyzzy$" . lisp-mode) *auto-mode-alist*) ;; *.vbsをbasic-modeで編集 (pushnew '("\\.vbs$" . basic-mode) *auto-mode-alist*) ;; *.rbをruby-modeで編集 (load-library "ruby") (pushnew '("\\.rb$" . ruby-mode) *auto-mode-alist*) ;; インデント量を変える ;;(setq *ruby-indent-column* 3) ;(load-library "ruby-lister") ;; rtags.rbまでのパス ;(setq *ruby-lister-rtags-path* "C:/ruby/rtags.rb") ;(load-library "ruby-debug") ;debugモードを使うなら ;(load-library "ruby-doc") ;rdモードを使うなら ;(load-library "ruby-misc") ;その他を使うなら ;; ri.rbまでのパス ;(setq *ruby-information-command* "C:/cygwin/usr/local/bin/ri.rb") (setq *ruby-information-command* "C:/ruby-1.8/bin/ri.bin") ;;;;;;;;;;;;;;;;;;;; ;; 環境関連 ;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Netinstaller ;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;; ;; Netinstaller End ;;;;;;;;;;;;;;;;;;;; ;;sql-modeにて--をコメント行とする (in-package "editor") (add-hook '*sql-mode-hook* #'(lambda () (set-syntax-start-c++-comment *sql-mode-syntax-table* #\-) (set-syntax-end-c++-comment *sql-mode-syntax-table* #\LFD))) (in-package "user") ;; lisp-modeに色づけ (in-package "editor") (defvar *lisp-keyword-hash-table* nil) (defun use-lisp-keyword () "キーワード色付け" (if (null *lisp-keyword-hash-table*) (setq *lisp-keyword-hash-table* (load-keyword-file "lisp"))) (when *lisp-keyword-hash-table* (make-local-variable 'keyword-hash-table) (setq keyword-hash-table *lisp-keyword-hash-table*))) (add-hook '*lisp-mode-hook* #'(lambda () (use-lisp-keyword) (define-key *lisp-mode-map* #\C-. 'lisp-complete-symbol))) (add-hook '*lisp-interaction-mode-hook* #'(lambda () (use-lisp-keyword) (define-key *lisp-interaction-mode-map* #\C-. 'lisp-complete-symbol))) (in-package "user") ;;;;; ;; www-mode ;;;;; (autoload 'www "www/www" t) ;通常起動 (autoload 'www-open-url "www/www" t) ;URL指定起動 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; どっかから拾ってきた使える関数 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 正規表現で指定したバッファをざっくり殺す (defun kill-matched-buffers (regex) (interactive "sRegexp: ") (when (and regex (string-match "[^ \t\n\r]" regex))( (let )((l (buffer-list))( (ml nil)) (dolist (b l) (when (string-match regex (buffer-name b))( (push b ml))) (cond )((and (eq (length ml) 0))( (msgbox "該当するバッファ無し"))( )((and (eq (length l) (length ml))( (not (yes-or-no-p "全てのバッファを殺す?")))) )((not (yes-or-no-p "~{~A~%~}を殺す?" (mapcar 'buffer-name ml)))) (t (dolist (b ml) (kill-buffer b))))))) ;; M-x で入力したコマンドにショートカットキーがあれば教える (defun execute-extended-command (command &optional raw arg) (interactive "0CM-x: \nP\np") (let ((*prefix-args* raw) (*prefix-value* arg)) (setq *last-complex-command* nil) (setq *this-command* command) (command-execute command (and (interactive-p) (not *executing-macro*) #'ed::record-complex-command))( ;ここから上書き (let )((global (command-keys command *global-keymap* nil))( (local (command-keys command *global-keymap* (local-keymap))) (minor (command-keys command *global-keymap* (local-keymap) (minor-mode-map)))) (when minor (message "You can run the command '~A' with ~S (~A)" command (key-to-string (car minor))( (cond (global "global") (local "local") (t "minor"))) (sit-for 3))))) ;; リージョンと選択範囲をトグルで変換 (defun exchange-region-and-selection () "リージョンと選択範囲をトグルで変換" (interactive) (let (start end) (case (get-selection-type) ((1 2) (setq start (selection-mark))( (setq end (selection-point))( (if (> start end) (rotatef start end))( (stop-selection) (set-mark start) (goto-char end)) (3 (error "矩形選択はリージョンに変換できません"))( (t (if (mark t) (progn (setq start (mark))( (setq end (point))( (if (> start end) (rotatef start end))( (start-selection 2 t start) (goto-char end)) (error "マークがないので選択範囲に変換できません")))))) (global-set-key '(#\C-c #\s) 'exchange-region-and-selection) ;; siteinit.l のバイトコンパイル&ダンプファイルの削除(XP対応) (defun compile-and-delete-dump-file () (interactive) (and (find-buffer "siteinit.l") (eval-buffer "siteinit.l"))( (byte-compile-file (concat (si:system-root) "site-lisp/siteinit.l"))( (let )((dumpfile (concat (si:system-root) "xyzzy." (case (os-platform) (windows-xp "wxp") (windows-2000 "w2k") (windows-nt "wnt") (windows-me "wme") (windows-98 "w98") (windows-95 "w95") (win32s "32s") (t "unknown"))))) (if (string-matchp "xyzzy.unknown" dumpfile) (message "Distinction of os-platform cannot be performed.") (and (file-exist-p dumpfile) (delete-file dumpfile))))) (global-set-key '(#\C-c #\b) 'compile-and-delete-dump-file)