ローカル補完テーブル
自作のメジャーモードに静的補完テーブルを追加する方法。静的補完がどうしても必要かといわれると、ちょっと弱い。
- *~mode-abbrev-table*を定義する
- *local-abbrev-table*に定義した~mode-abbrev-tableをセットする。
具体的にはこんな感じ。今回はDeecayさんが配布しているpy-modeに追加してみた(というかpy-modeに静的補完が欲しかった)。
;;; ローカル補完テーブルの定義 (defvar *py-mode-abbrev-table* nil) (unless *py-mode-abbrev-table* (define-abbrev-table '*py-mode-abbrev-table*)) (defun py-mode () (interactive) (kill-all-local-variables) (setq mode-name "py") (setq buffer-mode 'py-mode) (setq build-summary-function 'py-build-summary-of-functions) (use-keymap *py-mode-map*) (use-syntax-table *py-mode-syntax-table*) (and *py-keyword-file* (null *py-keyword-hash-table*) (setq *py-keyword-hash-table* (load-keyword-file *py-keyword-file* t))) (when *py-keyword-hash-table* (make-local-variable 'keyword-hash-table) (setq keyword-hash-table *py-keyword-hash-table*)) (make-local-variable 'indent-tabs-mode) (setq indent-tabs-mode *py-indent-tabs-mode*) (py-menu-update) ;; ローカル補完テーブルの追加 (setq *local-abbrev-table* *py-mode-abbrev-table*) (run-hooks '*py-mode-hook*))