| 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 時にバイトコンパイルしません。 |