;;; -*- Mode: Lisp; Package: EDITOR -*- ;;; ;;; Privoxyのアクション設定ファイル(*.action)とフィルタ設定ファイル(*.filter) ;;; を編集するためのモードです。 ;;; ;;; 使い方: ;;; ・privoxy-mode.l を site-lisp フォルダに置く ;;; ・Privoxy(キーワードファイル)を etc フォルダに置く。 ;;; ・siteinit.l または .xyzzy に次のように書く。 ;;; ;;; (require "privoxy-mode") ;;; (push '("\\.action$" . privoxy-mode) *auto-mode-alist*) ;;; (push '("\\.filter$" . privoxy-mode) *auto-mode-alist*) ;;; (provide "privoxy-mode") (in-package "editor") (export '(*privoxy-mode-hook* *privoxy-mode-map* *privoxy-mode-syntax-table* *privoxy-mode-abbrev-table* privoxy-mode)) ;;; フック (defvar *privoxy-mode-hook* nil) ;;; キーマップ (defvar *privoxy-mode-map* nil) (unless *privoxy-mode-map* (setq *privoxy-mode-map* (make-sparse-keymap)) ) ;;; キーワード (defvar *privoxy-keyword-hash-table* nil) (defvar *privoxy-keyword-file* "Privoxy") ;;; シンタックステーブル (defvar *privoxy-mode-syntax-table* nil) (unless *privoxy-mode-syntax-table* (setq *privoxy-mode-syntax-table* (make-syntax-table)) (set-syntax-escape *privoxy-mode-syntax-table* #\\) (set-syntax-symbol *privoxy-mode-syntax-table* #\_) (set-syntax-symbol *privoxy-mode-syntax-table* #\-) (set-syntax-symbol *privoxy-mode-syntax-table* #\+) (set-syntax-match *privoxy-mode-syntax-table* #\{ #\}) (set-syntax-start-comment *privoxy-mode-syntax-table* #\#) (set-syntax-end-comment *privoxy-mode-syntax-table* #\LFD nil t)) ;;; 略称テーブル (defvar *privoxy-mode-abbrev-table* nil) (unless *privoxy-mode-abbrev-table* (define-abbrev-table '*privoxy-mode-abbrev-table*)) ;;; 正規表現キーワード (defvar privoxy-regexp-keywords (compile-regexp-keyword-list '( ("^\\(FILTER:\\)[ \t]*\\([0-9a-z-_]+\\)[ \t]*\\(.*\\)$" t ((1 . (:keyword 0)) (2 . (:keyword 1)) (3 . :string))) ("^{{\\(settings\\|alias\\)}}$" t ((1 . (:keyword 2)) )) ("{\\([a-z][a-z0-9-_]*\\)}" t ((1 . (:keyword 1)) )) ))) ;;; privoxy-mode (defun privoxy-mode () (interactive) (kill-all-local-variables) (setq buffer-mode 'privoxy-mode) (setq mode-name "privoxy") (use-keymap *privoxy-mode-map*) (use-syntax-table *privoxy-mode-syntax-table*) (and *privoxy-keyword-file* (null *privoxy-keyword-hash-table*) (setq *privoxy-keyword-hash-table* (load-keyword-file *privoxy-keyword-file* t))) (when *privoxy-keyword-hash-table* (make-local-variable 'keyword-hash-table) (setq keyword-hash-table *privoxy-keyword-hash-table*)) (make-local-variable 'regexp-keyword-list) (setq regexp-keyword-list privoxy-regexp-keywords) (setq *local-abbrev-mode* *privoxy-mode-abbrev-table*) (setq comment-start "#") (setq comment-end "") (setq comment-start-skip "#[ \t]*") (run-hooks '*privoxy-mode-hook*))