Changeset 8435
- Timestamp:
- 03/27/08 12:20:36 (5 years ago)
- Location:
- lang/perl/tiarra/trunk
- Files:
-
- 2 modified
-
tiarra-conf.el (modified) (10 diffs, 1 prop)
-
tiarra-conf.l (modified) (7 diffs, 1 prop)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/tiarra/trunk/tiarra-conf.el
- Property svn:mime-type set to text/plain; charset=EUC-JP
r3010 r8435 3 3 ;; $Id$ 4 4 ;; ---------------------------------------------------------------------------- 5 ;; tiarra.conf �����⡼�ɡ�5 ;; tiarra.conf編集用モード。 6 6 ;; ---------------------------------------------------------------------------- 7 7 8 ;; �����ޥå�(defvar tiarra-conf-mode-map 8 ;; キーマップ 9 (defvar tiarra-conf-mode-map 9 10 (let ((map (make-keymap))) 10 11 (define-key map "\M-n" 'tiarra-conf-next-block) … … 15 16 "Keymap for tiarra conf mode.") 16 17 17 ;; ��ʸ���(defvar tiarra-conf-mode-syntax-table nil 18 ;; 構文定義 19 (defvar tiarra-conf-mode-syntax-table nil 18 20 "Syntax table used while in tiarra conf mode.") 19 21 (if tiarra-conf-mode-syntax-table 20 () ; ��ʸ�ơ��֥뤬����������ʤ�22 () ; 構文テーブルが既存ならば變更しない 21 23 (setq tiarra-conf-mode-syntax-table (make-syntax-table)) 22 24 (modify-syntax-entry ?{ "(}") 23 25 (modify-syntax-entry ?} "){")) 24 26 25 ;; ά����(defvar tiarra-conf-mode-abbrev-table nil 27 ;; 略語定義 28 (defvar tiarra-conf-mode-abbrev-table nil 26 29 "Abbrev table used while in tiarra conf mode.") 27 30 (define-abbrev-table 'tiarra-conf-mode-abbrev-table ()) 28 31 29 ;; �եå�32 ;; フック 30 33 (defvar tiarra-conf-mode-hook nil 31 34 "Normal hook runs when entering tiarra-conf-mode.") … … 43 46 (setq major-mode 'tiarra-conf-mode) 44 47 45 ;; �ե���������� (make-local-variable 'font-lock-defaults) 48 ;; フォントロックの設定 49 (make-local-variable 'font-lock-defaults) 46 50 (setq tiarra-conf-font-lock-keywords 47 51 (list '("^[\t ]*#.*$" 48 . font-lock-comment-face) ; ������ '("^[\t ]*@.*$" 49 . font-lock-warning-face) ; @ʸ 52 . font-lock-comment-face) ; コメント 53 '("^[\t ]*@.*$" 54 . font-lock-warning-face) ; @文 50 55 '("^[\t ]*\\+[\t ]+.+$" 51 . font-lock-type-face) ; + �⥸�塼�� '("^[\t ]*-[\t ]+.+$" 52 . font-lock-constant-face) ; - �⥸�塼�� '("^[\t ]*\\([^:\n]+\\)\\(:\\).*$" 56 . font-lock-type-face) ; + モジュール 57 '("^[\t ]*-[\t ]+.+$" 58 . font-lock-constant-face) ; - モジュール 59 '("^[\t ]*\\([^:\n]+\\)\\(:\\).*$" 53 60 (1 font-lock-variable-name-face) ; key 54 61 (2 font-lock-string-face)) ; ':' 55 62 '("^[\t ]*[^{}\n]+" 56 . font-lock-function-name-face))) ; �֥���̾63 . font-lock-function-name-face))) ; ブロック名 57 64 (setq font-lock-defaults '(tiarra-conf-font-lock-keywords t)) 58 65 59 ;; mmm-mode���� (if (featurep 'mmm-auto) 66 ;; mmm-modeの設定 67 (if (featurep 'mmm-auto) 60 68 (progn 61 69 (mmm-add-group … … 75 83 76 84 (defun tiarra-conf-next-token () 77 "�����ȥХåե��θ��ߤΥ�����������鼡�Υȡ����������֤��� 78 �����������Υȡ�������Ϥ���֤ذ�����롣 79 80 ������Τϼ��Τ䤦�ʥꥹ�ȤǤ��롣 81 \(\"�ȡ�����'��) 82 ��: 83 pair -> ������ͤΥڥ� 84 label -> �֥����Υ��� blockstart -> �֥����γ��ϵ�� blockend -> �֥����ν�λ��� 85 �ȡ����������nil�����" 85 "カレントバッファの現在のカーソル位置から次のトークンを探して返す。 86 カーソルはそのトークンの終はりの位置へ移動する。 87 88 返されるのは次のやうなリストである。 89 \(\"トークン\" '種類) 90 種類: 91 pair -> キーと値のペア 92 label -> ブロックのラベル 93 blockstart -> ブロックの開始記號 94 blockend -> ブロックの終了記號 95 96 トークンが無ければnilを返す。" 86 97 (catch 'tiarra-conf-next-token 87 ;; �ޤ��϶�ȥ����Ȥ�Ф��� 88 ;; @ʸ��RE��ODE���Ф��� 89 ;; �ġĤ������ֺǾ����פλȤؤʤ�Elisp-Regex�� ;; �ɤ�����PRE�˰������������ʬ�������� 90 ;; ��ơ� 98 ;; まずは空白とコメントを飛ばす。 99 ;; @文も%PREも%CODEも飛ばす。 100 ;; ……しかし「最小一致」の使へないElisp-Regexで 101 ;; どうやつて%PREに一致させたものだか分からない。 102 ;; 助けて。 91 103 (or (re-search-forward "^\\([\n\t ]\\|#.*\\|@.*\\)*" nil t 1) 92 104 (throw 'tiarra-conf-next-token nil)) 93 105 94 ;; "����: �"�η���Ǥ������Ԥν��Ϥ��Ǥ��ȡ����� (let* ((keychar "[^{}:\n\t ]") ; �����Ȥ��Ƶ��ʸ�� (pair (concat keychar "+[\t ]*:.*")) ; ������ͤΥڥ� 106 ;; "キー: 値"の形式であれば、行の終はりまでがトークン。 107 (let* ((keychar "[^{}:\n\t ]") ; キーとして許される文字 108 (pair (concat keychar "+[\t ]*:.*")) ; キーと値のペア 95 109 96 ;; Ϣ�����ĤΥ����ϡ����Ȥ��ƥ����˵�� 97 (labelchar "\\([^-{}\n\t ]\\|::\\)") ; �֥���̾�Ȥ��Ƶ��ʸ�� (label (concat "\\(\\(\\+\\|-\\)[\t ]+\\)?" labelchar "+")) ;; �֥����Υ��� 98 (blockstart "{") ;; �֥����γ��� (blockend "}") ;; �֥����ν�λ 110 ;; 連續する二つのコロンは、特例としてラベル名に許す。 111 (labelchar "\\([^-{}\n\t ]\\|::\\)") ; ブロック名として許される文字 112 (label (concat "\\(\\(\\+\\|-\\)[\t ]+\\)?" labelchar "+")) ;; ブロックのラベル 113 114 (blockstart "{") ;; ブロックの開始 115 (blockend "}") ;; ブロックの終了 99 116 100 117 type) … … 111 128 112 129 (defun tiarra-conf-next-block (&optional n) 113 " �������ܤΥ֥����ΰ�֤إ�������������롣114 n �Ͼ������ǡ�������줿����1'��115 �֥�����������Ĥ����ϡ����Υ������ϰ�֤����"130 "次からn番目のブロックの位置へカーソルを移動する。 131 nは省略可能で、省略された場合は`1'。 132 ブロックが見付かつた場合は、そのラベルの開始位置を返す。" 116 133 (interactive "p") 117 134 (catch 'tiarra-conf-next-block … … 123 140 (throw 'tiarra-conf-next-block nil)) 124 141 125 ;; ���������Ԥ���ذ����142 ;; カーソルを行の先頭へ移動。 126 143 (beginning-of-line) 127 144 128 145 (let (result token) 129 ;; label ������ǥȡ����������146 ;; labelが來るまでトークンを探す。 130 147 (while (progn 131 148 (setq token (tiarra-conf-next-token)) 132 ;; token ��nil�ޤ���abel�ʤ齪λ��149 ;; tokenがnilまたはlabelなら終了。 133 150 (if (or (null token) 134 151 (eq (cadr token) 'label)) 135 152 nil 136 ;; label�ʳ��Υȡ�����Τǡ����� t))) 153 ;; label以外のトークンなので、再度檢索。 154 t))) 137 155 (if (null token) 138 ;; �ȡ���������������ǽ��Ϥꡣ156 ;; トークンが無い。ここで終はり。 139 157 nil 140 158 (setq result (point)) 141 ;; "{" �μ������ư��159 ;; "{"の次の非空白文字へ移動。 142 160 (re-search-forward "{" nil t 1) 143 161 (re-search-forward "[^\n\t ]" nil t 1) 144 162 (backward-char) 145 163 146 ;; n ��2�ʾ��ä���������164 ;; nが2以上だったらもう一度。 147 165 (if (> n 1) 148 166 (tiarra-conf-next-block (1- n)) … … 150 168 151 169 (defun tiarra-conf-prev-block (&optional n) 152 " ������ܤΥ֥����ΰ�֤إ�������������롣153 n �Ͼ������ǡ�������줿����1'��154 �֥�����������Ĥ����ϡ����Υ������ϰ�֤����"170 "前からn番目のブロックの位置へカーソルを移動する。 171 nは省略可能で、省略された場合は`1'。 172 ブロックが見付かつた場合は、そのラベルの開始位置を返す。" 155 173 (interactive "p") 156 174 (catch 'tiarra-conf-prev-block … … 161 179 (throw 'tiarra-conf-prev-block (tiarra-conf-next-block (* -1 n)))) 162 180 163 ;; �ޤż��Υ֥�������ơ����ΰ�֤�����롣nil�ʤ�l��ɤ���181 ;; まづ次のブロックを探して、その位置を記録する。nilならnilで良い。 164 182 (let ((next-block-pos 165 183 (save-excursion (tiarra-conf-next-block))) 166 184 current-block-pos) 167 ;; ���Ťĥ����������ᤷ�Ĥġ��ּ��Ρץ֥�������Ƥߤ롣168 ;; next-block-pos ��������ߤ���������դ����顢�����ǻߤ���185 ;; 一行づつカーソルを前に戻しつつ、「次の」ブロックを探してみる。 186 ;; next-block-posよりも前に存在するブロックを見付けたら、そこで止める。 169 187 (while (progn 170 188 (beginning-of-line) 171 189 (if (= (point) (point-min)) 172 ;; �������ˤ���ʤ���190 ;; これ以上前には戻れない。 173 191 nil 174 ;; �ޤ���롣192 ;; まだ戻れる。 175 193 (previous-line) 176 194 (setq current-block-pos 177 195 (save-excursion (tiarra-conf-next-block))) 178 ;; �ǽ���������ּ��Ρץ֥�����nil��Ĥ��ꡢ179 ;; �����������ּ��Ρץ֥����Ⱥǽ����줬�ۤĤƤ𤿤ꤹ��180 ;; ��������ƽ�λ���롣�Ǥʤ���Ʊ����������196 ;; 最初に見付けた「次の」ブロックがnilだつたり、 197 ;; 今囘見付けた「次の」ブロックと最初のそれが異つてゐたりすれば 198 ;; これを返して終了する。でなければ同じ事を繰返す。 181 199 (eq current-block-pos next-block-pos)))) 182 200 183 ;; n ��2�ʾ��Ĥ���������201 ;; nが2以上だつたらもう一度。 184 202 (if (> n 1) 185 ;; ��������������᤹203 ;; カーソル位置を先頭へ戻す 186 204 (progn (beginning-of-line) 187 205 (tiarra-conf-prev-block (- n 2))) 188 ;; ��������Ŭ��ʰ�֤ذ������������� ;; tiarra-conf-next-block��֡� 206 ;; カーソルを適切な位置へ移動させる爲だけに 207 ;; tiarra-conf-next-blockを呼ぶ。 189 208 (tiarra-conf-next-block) 190 209 current-block-pos)))) 191 210 192 211 (defun tiarra-conf-join (delimitor sequence) 193 "perl ��oin(delimitor, sequence)�������"212 "perlのjoin(delimitor, sequence)と同じ。" 194 213 (let (result join) 195 214 (setq join (lambda (elem) … … 201 220 202 221 (defun tiarra-conf-jump-to-block () 203 " ����onf��ˤ�������������Ϥ������ξ��˥����פ��륳�ޥ��"222 "そのconf中にあるブロックの名前を入力し、その場所にジャンプするコマンド。" 204 223 (interactive) 205 (let (comp-list ;; competing-read �ǻȤ�list ("�֥���̾" . label�ȡ�����������206 parsing-block-stack ;; (" �֥���̾" ...)224 (let (comp-list ;; competing-readで使ふalist ("ブロック名" . labelトークンの直後の位置) 225 parsing-block-stack ;; ("ブロック名" ...) 207 226 blockname-to-jump 208 227 point-to-jump) 209 228 (save-excursion 210 ;; ���������ե������Ƭ�� (goto-char (point-min)) 211 ;; ���Ťĥȡ�������ƹԤ���label���鵭Ͽ���롣 229 ;; カーソルをファイルの先頭へ 230 (goto-char (point-min)) 231 ;; 一つづつトークンを見て行く。labelを見たら記録する。 212 232 (while (let (token type blockname) 213 233 (setq token (tiarra-conf-next-token)) 214 234 (if (null token) 215 ;; �⤦�ȡ����������235 ;; もうトークンが無い。 216 236 nil 217 237 (setq type (cadr token)) 218 238 (cond ((eq type 'label) 219 ;; �̎ގێ���(���ώ�)������239 ;; ブロック(・∀・)カイシ 220 240 (setq blockname (car token)) 221 (if (string-match "^[-+][\t ]+" blockname) ; + ��ϼ���241 (if (string-match "^[-+][\t ]+" blockname) ; +や-は取る。 222 242 (setq blockname (replace-match "" nil nil blockname))) 223 243 (push blockname parsing-block-stack) … … 228 248 (point)))))) 229 249 ((eq type 'blockend) 230 ;; �̎ގێ���(�����)�������؎���250 ;; ブロック(・A・)シュウリョウ 231 251 (pop parsing-block-stack))) 232 252 t))) 233 ;; �֥���̾�����234 (let ((completion-ignore-case t)) ; ��Ū�ˤ����ˤ���ưŪ�������פ����ġ�253 ;; ブロック名を聞く。 254 (let ((completion-ignore-case t)) ; 一時的にこの變數をtに。動的スコープは便利だね…。 235 255 (setq blockname-to-jump (completing-read 236 " �����פ�������: "256 "ジャンプするブロック: " 237 257 comp-list nil t))) 238 258 (setq point-to-jump (cdr (assoc blockname-to-jump comp-list)))) 239 259 (if point-to-jump 240 ;; Ŭ��ʰ�֤إ����������260 ;; 適切な位置へカーソルを移動 241 261 (progn 242 262 (goto-char point-to-jump) -
lang/perl/tiarra/trunk/tiarra-conf.l
- Property svn:mime-type set to text/plain; charset=Shift_JIS
r3010 r8435 3 3 ;; $Id$ 4 4 5 ;;tiarra-conf.l (tiarra-conf.el �̈ڐA)5 ;;tiarra-conf.l (tiarra-conf.elの移植) 6 6 ;;Copyright (C) 2003 Noboruhi 7 7 … … 9 9 ;;Version: 0.0.0.1 10 10 11 ;; �g���� 12 ;; 1. tiarra-conf.l(���̃t�@�C��)��zzy����X�g�[�������f�B���N�g��)/site-lisp/ �ɃR�s�[ 13 ;; 2. �K�v��������C�g�R���p�C�� 14 ;; 3. ���W���[���o�^���� 15 ;; [.xyzzy �̏ꍇ] 11 ;; 使い方: 12 13 ;; 1. tiarra-conf.l(このファイル)を(xyzzyをインストールしたディレクトリ)/site-lisp/ にコピー 14 ;; 2. 必要だったらバイトコンパイル 15 ;; 3. モジュール登録する。 16 ;; [.xyzzy の場合] 16 17 ;; (export 'ed::tiarra-conf-mode "ed") 17 18 ;; (autoload 'tiarra-conf-mode "tiarra-conf" t) 18 ;; [siteinit.l �̏ꍇ]19 ;; [siteinit.lの場合] 19 20 ;; (in-package "editor") 20 21 ;; (export 'tiarra-conf-mode) 21 22 ;; (autoload 'tiarra-conf-mode "tiarra-conf" t) 22 23 ;; (in-package "user") 23 ;; 4.xyzzy ��N��24 ;; 4.xyzzyを再起動 24 25 25 ;; �J�X�^�}�C�Y:26 ;; カスタマイズ: 26 27 27 ;; �F�̕ύX28 ;; 色の変更 28 29 ;; (setq ed::*tiarra-conf-font-lock-comment-face* '(:comment)) 29 30 ;; (setq ed::*tiarra-conf-font-lock-warning-face* '((:keyword :comment :bold))) … … 36 37 ;; Changes: 37 38 ;; [Version 0.0.0.1] 38 ;; �E���ŁB�������Ȃ��A�������Ȃ��B39 ;; ・初版。何も引かない、何も足さない。 39 40 ;; 40 41 … … 42 43 (in-package "editor") 43 44 44 ;; �L�[�}�b�v45 ;; キーマップ 45 46 (defvar *tiarra-conf-mode-map* nil 46 47 "Keymap for tiarra conf mode.") … … 50 51 (setq *tiarra-conf-mode-map* (make-sparse-keymap))) 51 52 52 ;; �\����53 ;; 構文定義 53 54 (defvar *tiarra-conf-mode-syntax-table* nil 54 55 "Syntax table used while in tiarra conf mode.") … … 58 59 59 60 60 ;; �����`61 ;; 略語定義 61 62 (defvar *tiarra-conf-mode-abbrev-table* nil 62 63 "Abbrev table used while in tiarra conf mode.") … … 65 66 66 67 67 ;; �t�b�N68 ;; フック 68 69 (defvar *tiarra-conf-mode-hook* nil 69 70 "Normal hook runs when entering tiarra-conf-mode.") 70 71 71 ;; �t�H���g���b�N�̐ݒ�(defvar *tiarra-conf-font-lock-comment-face* '(:comment)) 72 ;; フォントロックの設定 73 (defvar *tiarra-conf-font-lock-comment-face* '(:comment)) 72 74 (defvar *tiarra-conf-font-lock-warning-face* '((:keyword :comment :bold))) 73 75 (defvar *tiarra-conf-font-lock-type-face* '((:keyword 0)))
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)