.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)