;--------------------------------------------------------------------- ; cf-mode ; ; $Modtime: 03/07/29 22:58 $ ; $Revision: 2 $ ; ; Copyright (C) Silent Factory 1994. All rights reserved. ; - Yuiti SHINOZAKI - ;--------------------------------------------------------------------- ; ・とりあえずコメントと適当な予約語だけ色ついていればいいでしょ ;--------------------------------------------------------------------- ; 使用方法 ; ; 1.下のようなものを site-lisp.l へ追加する。 ; .xyzzy へ追加したい人はよくわからない。 ; ちなみにバイトコンパイルして動作するかどうかは詳細不明。 ; ; CF モード ;(in-package "editor") ;(export 'cf-mode) ;(autoload 'cf-mode "cf-mode" t) ;(pushnew '("sendmail\\.def$" . cf-mode) *auto-mode-alist* :test 'equal) ;(in-package "user") ; ; 2.書き込んだあと、%XYZZYHOME%/XYZZZY. ファイルを消して、 ; xyzzy を起動すれば取り込まれるはず ; ;--------------------------------------------------------------------- (provide "cf-mode") (in-package "editor") ;--------------------------------------------------------------------- ; グローバル ;--------------------------------------------------------------------- (export '(*cf-mode-hook* *cf-keyword-file*)) (export '(cf-mode)) ;--------------------------------------------------------------------- ; アスタリスクついたヤツ ;--------------------------------------------------------------------- (defvar *cf-mode-hook* nil) (defvar *cf-keyword-file* "cf-mode") (defvar *cf-keyword-hash-table* nil) ; モードマップ (defvar *cf-mode-map* nil) (unless *cf-mode-map* (setq *cf-mode-map* (make-sparse-keymap)) (define-key *cf-mode-map* #\C-h 'backward-delete-char-untabify-or-selection) (define-key *cf-mode-map* #\C-M-q 'indent-sexp) ) ;シンタックス (defvar *cf-mode-syntax-table* nil) (unless *cf-mode-syntax-table* (setq *cf-mode-syntax-table* (make-syntax-table)) (set-syntax-match *cf-mode-syntax-table* #\" #\") (set-syntax-match *cf-mode-syntax-table* #\( #\)) (set-syntax-match *cf-mode-syntax-table* #\[ #\]) (set-syntax-match *cf-mode-syntax-table* #\{ #\}) (set-syntax-symbol *cf-mode-syntax-table* #\$) (set-syntax-symbol *cf-mode-syntax-table* #\/) (set-syntax-symbol *cf-mode-syntax-table* #\\) (set-syntax-symbol *cf-mode-syntax-table* #\@) (set-syntax-symbol *cf-mode-syntax-table* #\:) (set-syntax-symbol *cf-mode-syntax-table* #\|) (set-syntax-whitespace *cf-mode-syntax-table* #\.) (set-syntax-whitespace *cf-mode-syntax-table* #\=) (set-syntax-word *cf-mode-syntax-table* #\-) (set-syntax-word *cf-mode-syntax-table* #\%) (set-syntax-word *cf-mode-syntax-table* #\*) (set-syntax-word *cf-mode-syntax-table* #\_) (set-syntax-start-comment *cf-mode-syntax-table* #\#) (set-syntax-end-comment *cf-mode-syntax-table* #\LFD)) ;--------------------------------------------------------------------- ; 関数 ;--------------------------------------------------------------------- ;--------------------------------------------------------------------- ; エントリーポイント ;--------------------------------------------------------------------- (defun cf-mode () ; 定型 (interactive) (kill-all-local-variables) (setq mode-name "CF") (setq buffer-mode 'cf-mode) ; キーマップ (use-keymap *cf-mode-map*) ; シンタックス (use-syntax-table *cf-mode-syntax-table*) ; キーワード (and *cf-keyword-file* (null *cf-keyword-hash-table*) (setq *cf-keyword-hash-table* (load-keyword-file *cf-keyword-file*))) (when *cf-keyword-hash-table* (make-local-variable 'keyword-hash-table) (setq keyword-hash-table *cf-keyword-hash-table*)) ; 定型 (run-hooks '*cf-mode-hook*))