415 | | = Emacs ガイド(案)- vine-default について = |
416 | | |
417 | | == system-wide な設定 == |
418 | | |
419 | | Emacs を起動すると、site-start.el を読み終われば、 |
420 | | すぐに ~/.emacs.el を読み込みます。 |
421 | | site-start.el は Vine Linux の distribution-wide な設定ファイルのため、 |
422 | | 4.2 以前で system-wide な設定を施すためには、 |
423 | | RPMパッケージがアップデートされるたびに site-start.el を編集する必要がありました。 |
424 | | |
425 | | そこで 5.0 では、 |
426 | | 直接 site-start.el を変更しなくても、 |
427 | | system-wide な設定をできるようにしました。 |
428 | | |
429 | | system-wide な設定ファイルは、 |
430 | | Emacs のメジャーバージョンが XX の場合、 |
431 | | /etc/emacs/emacs-XX-local.el |
432 | | に配置されています。 |
433 | | Emacs-XX を起動したとき、 |
434 | | もし /etc/emacs/emacs-XX-local.el が存在すれば、 |
435 | | site-start.el の一番最後に読み込まれます。 |
436 | | したがって、distribution-wide な設定よりも emacs-XX-local.el が優先されます。 |
437 | | |
438 | | |
439 | | == Vine Linux のデフォルト設定:vine-default == |
440 | | |
441 | | このドキュメントは [http://ml.vinelinux.org/vineseed/msg00320.html VineSeed:17162] を改編して作成しました。 |
442 | | |
443 | | Vine Linux の Emacs 23 では、 |
444 | | Emacs 上で動作するアプリケーションのパッケージをインストールしたら、 |
445 | | ユーザ初期設定ファイル ~/.emacs.el に何も設定を記述しなくても、 |
446 | | そのアプリケーションがある程度使えるように、 |
447 | | あらかじめ設定を用意し、その設定を自動的に読み込むようにしています。 |
448 | | この Emacs における Vine Linux のデフォルト設定を vine-default と呼ぶことにします。 |
449 | | |
450 | | === 使い方 === |
451 | | |
452 | | vine-default は、/usr/share/emacs-23.x/site-lisp 以下に格納されています。 |
453 | | * vine-default-base.el:Emacs の基本的な設定 |
454 | | * vine-default-faces.el:Emacs のフォントやカラーの設定 |
455 | | * ''package''/vine-default-''package''.el:''package'' の設定 |
456 | | |
457 | | Emacs を起動すると、デフォルトで vine-default の boolean が t になっているので、 |
458 | | vine-default を読み込みます。 |
459 | | |
460 | | もし vine-default をすべて無効にしたい場合は、 |
461 | | ~/.emacs.el に |
462 | | {{{ |
463 | | (setq vine-default nil) |
464 | | }}} |
465 | | を設定します。 |
466 | | この場合は、メニューバーと言語ロケール以外は何も設定されていません。 |
467 | | |
468 | | vine-default のうち、いくつかの設定を無効にすることができます。 |
469 | | 各 vine-default は、vine-default-''name'' の boolean が定義されていて、 |
470 | | デフォルトでは t になっています。 |
471 | | |
472 | | 例えば、vine-default-base, vine-default-faces, |
473 | | vine-default-yatex, vine-default-mew を無効にしたい場合は、 |
474 | | ~/.emacs.el に |
475 | | {{{ |
476 | | (setq vine-default-base nil |
477 | | vine-default-faces nil |
478 | | vine-default-yatex nil |
479 | | vine-default-mew nil |
480 | | ) |
481 | | }}} |
482 | | を設定します。 |
483 | | |
484 | | いくつかのEmacs Lispパッケージのみを有効にしたいときは、一旦すべての vine-default を無効にした上で、いくつかの vine-default を有効にしてください。 |
485 | | |
486 | | 例えば、vine-default.yatex, vine-default-tamago のみを有効にしたい場合は、 |
487 | | ~/.emacs.el に |
488 | | {{{ |
489 | | (setq vine-default nil) |
490 | | |
491 | | (requires 'vine-default-yatex) |
492 | | |
493 | | (requires 'vine-default-tamago) |
494 | | }}} |
495 | | を設定します。 |
496 | | |
497 | | |
498 | | === 設定されている vine-default の閲覧 === |
499 | | |
500 | | Emacs 上からインストールされている elisp パッケージにあらかじめ設定されている vine-default の設定を閲覧できます。 |
501 | | |
502 | | Emacs 上で |
503 | | {{{ |
504 | | M-x show-vine-default |
505 | | }}} |
506 | | を実行すると、起動している Emacs のバージョンに対応した vine-default の設定を閲覧できます。 |
507 | | |
508 | | |
509 | | === 高度な使い方 === |
510 | | |
511 | | vine-defaultでの設定を上書きしたい場合はフックを使います。 |
512 | | |
513 | | 例えば、vine-default で set-frame-font には次のように「Monospace 12」が設定されてたとします。 |
514 | | {{{ |
515 | | (if window-system |
516 | | (set-frame-font "Monospace 12")) |
517 | | }}} |
518 | | |
519 | | これを ~/.emacs.el で変更したい場合は after-vine-default-setup-hook をフックしてください。 |
520 | | {{{ |
521 | | (add-hook 'after-vine-default-setup-hook |
522 | | (lambda () |
523 | | (if window-system |
524 | | (set-frame-font "Monospace 10")))) |
525 | | }}} |
526 | | |
527 | | 上記はあくまで一例として紹介しましたが、 |
528 | | フォントの設定を変更したい方は、 |
529 | | 現実的には、vine-default-faces 自体を使わないと思われますので、 |
530 | | ~/.emacs.el に |
531 | | {{{ |
532 | | (setq vine-default-faces nil) |
533 | | |
534 | | (unless vine-default-faces |
535 | | (if window-system (set-frame-font "DejaVu Sans Mono 10"))) |
536 | | }}} |
537 | | のように、vine-default-faces を無効にしておいてフォントの設定をしても良いです。 |
538 | | |
539 | | |
540 | | また、各 vine-default で設定されていない項目についてはフックせずに、 |
541 | | そのまま ~/.emacs.el に記述しても有効です。 |
542 | | |
543 | | vine-default で何が設定されているのかをよく理解していない場合は、 |
544 | | とりあえず after-vine-default-setup-hook へフックしてしまっても問題ありません。 |
545 | | |
546 | | そのため、別のファイル .emacs-misc.el にまとめてしまい、 |
547 | | 以下のようにして ~/.emacs.el でフックして読み込ませてしまっても良いです。 |
548 | | {{{ |
549 | | (add-hook 'after-vine-default-setup-hook |
550 | | (lambda () |
551 | | (load (expand-file-name "~/.emacs.misc.el") nil t nil) |
552 | | )) |
553 | | }}} |
554 | | |
555 | | この仕組みの詳細については「vine-default の下での ~/.emacs.el の設定」セクションを参照してください。 |
556 | | |
557 | | |
558 | | === IME === |
559 | | |
560 | | Vine Linux の Emacs 上における IME は、 |
561 | | X 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。 |
562 | | |
563 | | もし EMACS_IME と異なる IME を使いたい場合は、 |
564 | | skk を例にすると、~/.emacs.el に |
565 | | {{{ |
566 | | (setq emacs-ime "skk") |
567 | | }}} |
568 | | を設定します。 |
569 | | |
570 | | |
571 | | === Vine Linux 4 の .emacs.my.el === |
572 | | |
573 | | Vine Linux 4.2 までの ~/.emacs.el には、 |
574 | | ユーザ用初期化ファイル ~/.emacs.my.el があれば、 |
575 | | それを読み込む仕組みがありました。 |
576 | | |
577 | | Vine Linux 5.x では、vine-default に移行したため、.emacs.my.el を読み込む仕組みは廃止しました。 |
578 | | |
579 | | もし過去の .emacs.my.el を流用したい場合は、 |
580 | | 以下のように after-vine-default-setup-hook にフックして、 |
581 | | ~/.emacs.my.el を読み込ませることができます。 |
582 | | {{{ |
583 | | (add-hook 'after-vine-default-setup-hook |
584 | | (lambda () |
585 | | (if (file-exists-p (expand-file-name "~/.emacs.my.el")) |
586 | | (load (expand-file-name "~/.emacs.my.el") nil t nil)) |
587 | | )) |
588 | | }}} |
589 | | ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、 |
590 | | Vine Linux 4の Emacs 22 などで使っていた ~/.emacs.my.el をそのまま流用できるとは限りません。 |
591 | | |
592 | | |
593 | | === 仕組み === |
594 | | |
595 | | vine-default は、各デフォルト設定を読み込む *-init.el を、 |
596 | | vine-default-setup 内で読まれる vine-default-setup-hook にひっかけて一旦ストックしておき、 |
597 | | after-init-hook にひっかけた vine-default-setup を実行することにより、 |
598 | | Vine Linux のデフォルト設定が読み込まれます。 |
599 | | |
600 | | 具体的には、site-start.el と *-init.el に以下のような関数とフックを定義しています。 |
601 | | {{{ |
602 | | ;;; Emacs default settings for Vine Linux |
603 | | (defcustom emacs-ime (getenv "EMACS_IME") |
604 | | "A variable of default Input Method Editor" |
605 | | :type 'string) |
606 | | (if (null emacs-ime) |
607 | | (setq emacs-ime "scim")) |
608 | | |
609 | | (defcustom vine-default t |
610 | | "A boolean for all Vine Linux default settings" |
611 | | :type 'boolean) |
612 | | (if (equal (getenv "LOGNAME") "root") |
613 | | (setq vine-default nil)) |
614 | | |
615 | | (defcustom vine-default-base t |
616 | | "A boolean for vine-default-base" |
617 | | :type 'boolean) |
618 | | |
619 | | (defcustom vine-default-faces t |
620 | | "A boolean for vine-default-faces" |
621 | | :type 'boolean) |
622 | | |
623 | | (defvar vine-default-setup-hook nil |
624 | | "*List of functions to be called at vine-default-setup") |
625 | | |
626 | | (defvar after-vine-default-setup-hook nil |
627 | | "*List of functions to be called at the end of vine-default-setup") |
628 | | |
629 | | (defun vine-default-setup () |
630 | | "a function for setup to default configurations of Vine Linux." |
631 | | (if vine-default |
632 | | (progn |
633 | | (if vine-default-base (require 'vine-default-base)) |
634 | | (if vine-default-faces (require 'vine-default-faces)) |
635 | | (run-hooks 'vine-default-setup-hook) |
636 | | (run-hooks 'after-vine-default-setup-hook) |
637 | | ) |
638 | | ) |
639 | | ) |
640 | | |
641 | | (add-hook 'after-init-hook 'vine-default-setup) |
642 | | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
643 | | |
644 | | (mapc 'load (directory-files "/etc/emacs-23.0.92/site-start.d" t "\\.el\\'")) |
645 | | }}} |
646 | | |
647 | | Emacs の関連パッケージに対しては、 |
648 | | 例えば YaTeX の場合は、 |
649 | | 50yatex-init.el に以下のような設定を追加しています。 |
650 | | {{{ |
651 | | (defcustom vine-default-yatex t |
652 | | "A boolean for vine-default-yatex" |
653 | | :type 'boolean) |
654 | | |
655 | | (add-hook 'vine-default-setup-hook |
656 | | (lambda() |
657 | | (if vine-default-yatex |
658 | | (require 'vine-default-yatex)))) |
659 | | }}} |
660 | | |
661 | | vine-default-yatex.el には、YaTeX のデフォルト設定を記述し、 |
662 | | (provide 'vine-default-yatex) を提供するようにします。 |
663 | | |
664 | | |
665 | | ==== vine-default の下での ~/.emacs.el の設定 ==== |
666 | | |
667 | | vine-default の下での Emacs の設定は、 |
668 | | 大きくわけて以下の 3 つの設定パートに分かれています。 |
669 | | |
670 | | a. vine-default |
671 | | b. vine-default が上書きしない設定 |
672 | | c. vine-default が上書きする設定 |
673 | | |
674 | | (a) は ~/.emacs.el を読み込んだ直後に、 |
675 | | /usr/share/emacs-23.x/site-lisp 以下の vine-default-*.el を然るべき順序で読み込まれます。 |
676 | | |
677 | | (b), (c) は、必要であれば ~/.emacs.el に(あるいは、.emacs.el から読み込む別の *.el に)設定します。 |
678 | | |
679 | | (b) を直接 ~/.emacs.el に設定して構いませんが、 |
680 | | (c) を直接 ~/.emacs.el に設定していると、 |
681 | | (a) により vine-default が優先されてしまいます。 |
682 | | |
683 | | 例えば、以下のように ~/.emacs.el にフォントを設定していても、 |
684 | | 後から読まれる vine-default-faces.el により「Monospace 12」に上書きされていまいます。 |
685 | | {{{ |
686 | | (if window-system |
687 | | (set-frame-font "Monospace 10")) |
688 | | }}} |
689 | | このような vine-default を上書きする設定は、after-vine-default-setup-hook をひっかけます。詳細は「高度な使い方」セクションを参照してください。 |
690 | | |
691 | | |
692 | | == Emacs Lisp パッケージ == |
693 | | |
694 | | ここでは、Emacs Lisp パッケージの作成および emacs flavor の挙動について説明します。 |
695 | | |
696 | | Vine Linux の Emacs は、 |
697 | | Debian で採用している Emacs Lisp パッケージ管理の独自システムを採用しています。 |
698 | | |
699 | | Emacs Lisp パッケージをインストールしたときに、 |
700 | | *.el から現在インストールされている Emacs の flavor に対応した *.elc を |
701 | | 自動的に生成(バイトコンパイル:byte-compile)し、 |
702 | | 必要なパスの設定やリソースの読み込みを行います。 |
703 | | さらに、Vine Linux の場合は vine-default の設定も同時に施されます。 |
704 | | |
705 | | 逆に、Emacs Lisp パッケージをアンインストールしたときには、 |
706 | | 通常のパッケージと同様にパッケージ自体の削除に加えて、 |
707 | | *.elc の削除も同時に行います。 |
708 | | |
709 | | === パッケージ構成 === |
710 | | |
711 | | === spec ファイル === |
712 | | |
713 | | === ''package''-{install,remove}.sh === |
714 | | |
715 | | === ''package''-init.el === |
716 | | |
717 | | ''package''-init.el は、 |
718 | | site-start.el から然るべき順序で読み込まれるように、addflavor 時に |
719 | | /usr/share/emacs/site-lisp/''package''/''package''-init.el |
720 | | から |
721 | | /etc/emacs-''flavor''/site-start.d/NN''package''-init.el |
722 | | へシンボリックリンクが張られます。 |
723 | | |
724 | | === vine-default-''package''.el === |
725 | | |
726 | | vine-default-''package''.el は、addflavor 時にバイトコンパイルしません。 |