最近の設定

.xyzzy

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; デフォルトパスの指定
(set-default-directory "D:/home/username/work/src/CURRENT")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ctags
(load-library "ctags")
; ctags.exe へのパス
(setf *ctags-command-path* (merge-pathnames "bin/ctags.exe" (si:system-root)))
; ctags.exe へのその他のオプション
;(setf *ctags-command-option* "")
(global-set-key #\M-. 'ctags-jump-tag)
(global-set-key #\M-\, 'ctags-back-tag-jump)
(global-set-key #\M-/ 'ctags-make-tags-file)
;(global-set-key #\M-/ 'ctags-make-tags-file-recursive)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CSCOPE関連の設定
;; ctagsの方が使い易いので無効化
;(define-key editor::*c-mode-map* '(#\M-.) 'cscope-find-global-definition)
;(define-key editor::*c-mode-map* '(#\M-\,) 'cscope-back-tag-jump)
;(define-key editor::*c-mode-map* '(#\M-/) 'cscope-rebuild-db)
;(define-key cscope::*cscope-result-mode-keymap* '(#\C-n) 'cscope-next-symbol)
;(define-key cscope::*cscope-result-mode-keymap* '(#\C-p) 'cscope-prev-symbol)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; shc.exeを使用してカレントバッファのファイルをコンパイル
;; オプションは別途"#default.sub"を作って定義しておく。
;; 当然だがshc.exeのパスを通しておくこと。
(defun shc-compile () (interactive)
  ;(execute-subprocess (concat "shc -OBjectfile=temp.obj -sub=default.sub " (get-buffer-file-name)) nil "*SHC*" )
  (pipe-command (concat "shc -OBjectfile=temp.obj -sub=#default.sub " (get-buffer-file-name)))
  (delete-file "temp.obj" :if-does-not-exist :skip :if-access-denied :force))
(define-key spec-map #\C-b 'shc-compile)

(defun shc-compile-msg () (interactive)
  (pipe-command (concat "shc -OBjectfile=temp.obj -sub=#default.sub -message " (get-buffer-file-name)))
  (delete-file "temp.obj" :if-does-not-exist :skip :if-access-denied :force))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Artistic StyleでCソース整形 (Artistic Style 1.21専用)
;;
(defun astyle () (interactive)
  (execute-subprocess (concat (merge-pathnames "bin/AStyle.exe" (si:system-root)) " -t4Slpy " (get-buffer-file-name)) nil "*A-Style*" )
  (revert-buffer))
(define-key spec-map #\C-a 'astyle)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C言語関連のコーディングスタイル設定
(setq *c-indent-tabs-mode* t)          ; インデントはタブを使う
;(setq *c-indent-tabs-mode* nil)         ; インデントはスペースを使う

(setq c-indent-level 4)                 ; インデントレベル
(setq c-continued-statement-offset 4)   ; 
(setq c-argdecl-indent 4)               ; 
(setq c-brace-offset -4)                ; 
(setq c-label-offset -0)                ; 
(setq c-comment-indent 0)               ; 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SKK-IME使用時にCtrl+BackSlashで入力方法が変更されてしまうので、
;; Ctrl+Slashをundoに割当てておく。
(global-set-key #\C-/ 'undo)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Copy & Paste はクリップボード経由でないと他アプリとの連携が面倒
;(global-set-key #\C-w 'kill-region-to-clipboard)
;(global-set-key #\M-w 'copy-region-to-clipboard)
;(global-set-key #\C-y 'paste-from-clipboard)

siteinit.l

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; IMEの状態をモードラインに表示
(setq-default mode-line-format "[%i] --%*- %b (%M) [%k:%l] %P %f")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C-x C-wでemacs風の処理をさせる
(defun emacs-write-file (filename)
(interactive "FWrite file: " :title0 "Write File")
(and (rename filename)
(save-buffer)))
(define-key ctl-x-map #\C-w 'emacs-write-file) 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; .xyzzy を lisp-mode で編集する
(pushnew '("\\.xyzzy$" . lisp-mode) *auto-mode-alist*)

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



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Netinstaller
(require "ni/setup")
;; 自動設定を利用する
(ni-autoload)
;; PROXYを通す
(setq ni::*http-proxy-host* "XXXXXXXXXXXXXXXXXXX")  ; PROXY のホスト
(setq ni::*http-proxy-port* 8080)                   ; PROXY のポート


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; xyzzy WIKIからNetinstallに使用する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)