aka:GNU Emacs
- 初期化ファイルの配置
- 基本構成/.emacs.d/init.elで振り分けを実施。
しかし、~/.emacs.d/init-general.elになるべく集約する。
集約できない状況では、~/.emacs.d/init-hoge.elなどを配置しそこに振り分ける。
※~/.emacs.d/init.elはEmacs初期化プロセスにて条件を満たせば読み込まれるが、その他の~/.emacs.d/配下のファイルはユーザが読み込み指定をしなければ読み込まれないことに注意。 - ~/.emacs.d/init.el
できるだけシンプルかつアドホックな振り分けとする。例えば次のとおり。
;; Libraries (require 'cl) ;;; Variables (defvar aka-init-dir "/home/aka/.emacs.d/") ;;; Utility Functions (defun aka-qualify (relative-path) (concat aka-init-dir relative-path)) ;;; Main Procedure (cond ((and (equal system-configuration "mipsel-unknown-linux-gnu") (equal emacs-version "23.1.1")) (load (aka-qualify "init-adhoc"))) (t (load (aka-qualify "init-general"))))
- ~/.emacs.d/init-general.el
- 頭で、環境を判別し、独自定義の環境識別子に紐付ける。
- 初期設定は細分化し、それぞれを関数とする。
- 環境識別子毎に実行する関数を指定する。
- 新しい環境を追加するときに、既存の設定の初期化に影響しないように留意する。
- 基本構成/.emacs.d/init.elで振り分けを実施。
- Emacsパッケージについて
- DebianのEmacsパッケージ管理を基本とする。
- ちなみにDebianのEmacsパッケージ管理は複数のEmacsenへのバイトコンパイルに対応している。
- DebianのEmacsパッケージにて提供されていないものは、ソースからのインストールとする。
- 現状では、手動インストールするものについては、複数のEmacsenへの対応はDebianのやり方と比べると限定的とする。下記のようなディレクトリ構成で対応可能な範囲で実施する。
- ソースからインストールする際の第一義の設置場所は、
~/jail/usr/local/share/emacs/site-lisp ~/jail/usr/local/share/emacs/<version-number>/site-lisp
- 十分に熟れて、サイトワイドにしたい場合は、次の場所に配置。
/usr/local/share/emacs/site-lisp /usr/local/share/emacs/<version-number>/site-lisp
- DebianのEmacsパッケージ管理を基本とする。
- 導入パッケージ (なんとなくプライオリティ順)
- ddskk 13.1-2 (リポジトリのDebianパッケージ)
- apel 10.7-2
- elscreen 1.4.6-4 (リポジトリのDebianパッケージ)
- org-mode 6.36c (上流ソース)
リポジトリのdpkgであるorg-mode(6.05-2)は、Emacs22までにしか対応していないため利用しない。ファイル配置場所として初期化処理において次のものを追加。(add-to-list 'load-path "/home/aka/jail/usr/local/share/emacs/site-lisp/org-6.36c/lisp") (add-to-list 'Info-additional-directory-list "/home/aka/jail/usr/local/share/emacs/site-lisp/org-6.36c/doc")
- paredit 20-2 (リポジトリのDebianパッケージ)
- yasnippet 0.6.1c (上流ソース)
- auto-complete 13 (上流ソース)
- auto-complete-yasnippet (EmacsWikiにメモとして存在)
(require 'auto-complete) (require 'yasnippet) (defun ac-yasnippet-candidate () (let ((table (yas/get-snippet-tables major-mode))) (if table (let (candidates (list)) (mapcar (lambda (mode) (maphash (lambda (key value) (push key candidates)) (yas/snippet-table-hash mode))) table) (all-completions ac-prefix candidates))))) (defface ac-yasnippet-candidate-face '((t (:background "sandybrown" :foreground "black"))) "Face for yasnippet candidate.") (defface ac-yasnippet-selection-face '((t (:background "coral3" :foreground "white"))) "Face for the yasnippet selected candidate.") (defvar ac-source-yasnippet '((candidates . ac-yasnippet-candidate) (action . yas/expand) (limit . 3) (candidate-face . ac-yasnippet-candidate-face) (selection-face . ac-yasnippet-selection-face)) "Source for Yasnippet.") (provide 'auto-complete-yasnippet)
auto-complete-yasnippet.elとして、jail/usr/local/share/emacs/site-lisp/に配置。
- auto-complete-yasnippet (EmacsWikiにメモとして存在)
- 一時廃止:nxhtml 2.08-100425 (上流ソース)
- nxhtmlはXを前提としているかも?
- まともに動かないので、一時廃止。
- css-mode 0.11-5 (リポジトリのDebianパッケージ)
- javascript-mode 2.2.1(上流ソース)
- mmm-mode 0.4.8 (リポジトリのDebianパッケージ)
- ddskk 13.1-2 (リポジトリのDebianパッケージ)
- メモ
- Shift-TABにキーバインドする
(global-set-key (kbd "<S-tab>") 'bbdb-complete-name)
- The basic tips of Keyboard Macro
- Defining a Macro
;; simple C-x ( ... C-x ) ;; recursive C-x ( ... C-u C-x q ... C-M-c ... C-x )
- Executing a Macro
;; simple C-x e C-u 10 C-x e ;; recursive C-x ( ... ; recursive edit C-M-c C-x )
- Editing a Macro
C-x C-k e [select a macro] ... C-c C-c
- The Macro Ring
C-x C-k C-p ; kmacro-cycle-ring-previous C-x C-k C-n ; kmacro-cycle-ring-next C-x C-k C-t ; kmacro-swap-ring C-x C-k C-d ; kmacro-delete-ring-head
- Naming Macros
;; Naming C-x C-k n [name] ;; Executing it M-x name
- Saving a Macro
;; open an elisp file M-x insert-kbd-macro Enter macroname Enter
rio orange
- Defining a Macro
- Shift-TABにキーバインドする