;;; -*- Mode: Lisp; Package: editor -*- ;;; env.l --- xyzzy 環境設定。 ;; ;; Created: [2006/10/26] ;; Last updated: [2008/10/27] ;;; Commentary: ;;; Change Log: ;;; Code: (provide "env") (in-package "editor") (setf ;; タイトルバーの表示 title-bar-format "xyzzy" ;; ステータスバーに内部コード、Unicode、行番号、桁位置、時間 表示 *status-bar-format* "cupT" ;; バッファ移動をツールバー表示順に *next-buffer-in-tab-order* t ) ;;==================================== ;; Tab に使う文字 (setq-default display-first-tab-char #\^) (setq-default display-rest-tab-char nil) ;; Tab に使う文字 ;;==================================== ;; Fill 幅 (setq-default fill-column 80) ;; 指定フレームのときはファイルを "Frame 1" で開く (add-hook '*before-find-file-hook* #'(lambda (filename) (when (member (pseudo-frame-name (selected-pseudo-frame)) *my-frame-list* :test #'equal ) (unless (find-pseudo-frame "Frame 1") (new-pseudo-frame "Frame 1") ) (select-pseudo-frame (find-pseudo-frame "Frame 1")) ) ) ) ;; xyzzy 終了時セッション保存 (add-hook '*kill-xyzzy-hook* #'(lambda () (save-session (merge-pathnames "session" (user-config-path) ) t ) ) ) ;; Bcc++, C++ Builder, VC++ 対応 Error Jump (setf *error-regexp* (compile-regexp "^[ \t]*\\(.+\\)[::][ \t]*\\([0-9]+\\)\\([:: \t]\\|$\\)\\|^\\(.+\\)[ \t]*(\\([0-9]+\\))\\|^.*[ \t]*[EW].+[ \t]+\\(.+\\)[ \t]+\\(.+\\):[ \t]+" ) *error-regexp-regnum* '(lambda () (cond ( (match-beginning 1) (values 1 2) ) ( (match-beginning 4) (values 4 5) ) ( t (values 6 7) ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 関連付け (add-hook '*before-find-file-hook* #'(lambda (file-name) (let ( (let-type (pathname-type file-name)) ) (cond ( ;; セッションファイル (string-equal let-type "ssn") (load-session file-name) (selected-buffer) ) ) ) ) ) ;; Emacs Lisp ファイル (pushnew '("\\.el$" . lisp-mode) *auto-mode-alist* :test 'equal) ;;; 関連付け ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; *scratch* ;;; ;; 削除しない ;;; (add-hook '*query-kill-buffer-hook* ;;; #'(lambda () ;;; (if (and (not *kill-buffer-kills-scratch*) ;;; (equal (buffer-name (selected-buffer)) "*scratch*") ;;; ) ;;; nil ;;; t ;;; ) ;;; ) ;;; ) ;;; ;;; ;; 終了時に保存 ;;; (add-hook '*kill-xyzzy-hook* ;;; #'(lambda () ;;; (set-buffer (find-buffer "*scratch*")) ;;; (write-file (merge-pathnames "scratch" ;;; (user-config-path) ;;; ) ;;; ) ;;; ) ;;; ) ;;; ;;; ;; 起動時に読込 ;;; (add-hook '*post-startup-hook* ;;; #'(lambda () ;;; (let ( ;;; (let-file (merge-pathnames "scratch" ;;; (user-config-path) ;;; ) ;;; ) ;;; ) ;;; (when (file-exist-p let-file) ;;; (set-buffer (find-buffer "*scratch*")) ;;; (insert-file-contents let-file t) ;;; ) ;;; ) ;;; ) ;;; ) ;;; *scratch* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 編集行色づけ (add-hook '*find-file-hooks* #'(lambda () (enable-post-buffer-modified-hook t) ) ) (add-hook 'post-buffer-modified-hook #'(lambda (buffer operation from to undo-p) (let ( (let-pos from) ) (save-excursion (goto-char let-pos) (while (<= let-pos to) (goto-bol) (set-text-attribute (point) (point) 'modified-line :foreground 0 :background 3 :prefix (code-char (+ (rem (current-line-number) 10) (char-code #\0) ) ) :extend t ) (if (not (next-line)) (return) ) (setf let-pos (point)) ) ) ) ) ) (add-hook '*after-save-buffer-hook* #'(lambda () (delete-text-attributes 'modified-line) ) ) ;;; 編集行色づけ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; env.l ends here