「MacOSX WorkShop/dot emacs el」の版間の差分

提供: MacWiki
移動: 案内検索
(OSXWS-10.5 の emacs 設定ファイル(案))
行118: 行118:
 
;; 編集ファイル foo のバックアップファイル foo~ をコピーで作る
 
;; 編集ファイル foo のバックアップファイル foo~ をコピーで作る
 
(setq backup-by-copying t)
 
(setq backup-by-copying t)
 
;; gzファイルも編集できるように
 
(auto-compression-mode t)
 
  
 
;;; emacsclient サーバを起動
 
;;; emacsclient サーバを起動
行623: 行620:
  
 
=== (取り除いた項目) ===
 
=== (取り除いた項目) ===
 +
<pre>
 +
;; gzファイルも編集できるように
 +
(auto-compression-mode t)
 +
</pre>
 +
* デフォルトで t なので不要です。-- ぜ
 +
 
<pre>
 
<pre>
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

2008年1月16日 (水) 02:32時点における版

MacOSX_WorkShop/10.4 の「OSX-Preferences」と「emacs-lisps」で提供されている Emacs の設定ファイルを議論します。

基本方針

OSXWS は大学や研究機関の計算機管理者が導入し、管理者権限を持たない学生さんやユーザーが利用する事を念頭に置いて下さい。

  • 変更事項はその理由を明記する。

複数人の趣味に偏るのを避ける為にも必要です。

  • 修正案の作り方

このWiki上で修正案を作る方法として、取り除くほうが良いと考えている物を「(取り除いた項目)」に移し、追加したいと考えているものを実際に追加し「(追加した項目)」に記入するようにしています。それにコメント、指摘を書き込んで頂けたら助かります。

  • inline-patch や transparency patch 等 upstream で仕様が今後も変更される確率が高く、且つ、OSXWS としてのデフォルトなど基本的な設定は、site-start.d 内で行う。

Emacs初期設定の改正

CarbonEmacsPackageなど他のEmacsと初期設定を使い分ける目的で、最近全ユーザ共通の領域で一部の初期設定を行うようになりましたが、この方法を止めて、初期設定ファイルは全てホームディレクトリ以下に置き、Emacsごとに条件分岐で読み込むようにする事を考えています。以下に具体的な案を示します。これを機に.emacsの全体的な見直しを考えていますので、ご意見頂ければと思います。-- seto

CarbonEmacsPackageとの共存、というより、システム標準の emacs との共存を良く考えた方が良いです。何らかの理由でOXSWSのCarbonEmacsが壊れてしまった場合、最後に頼りにするのはシステム標準のEmacsです。システム標準Emacsを使えなくしてまで独自の設定を放り込むとしたら、逆に大きな責任を背負うことになります。--

  • 確かに、OSXのアップデートでCarbonEmacsが使えなくなる事は過去に何度もありましたし、そういう時に/usr/bin/emacsを使う可能性はありますね。今回の変更では、そういったEmacsを起動しても初期設定ファイルを読みに行かないのでエラーは出ませんが、同時に文字コードなどの基本設定も読み込みません。それはいいですよね?(実際にエラーがでる項目はutf-8mと日本語メニューバーとタイムスタンプだけ見たいですが)--seto
    • タイムスタンプは (require 'time-stamp) で解決します。また、utf-8m は /usr/bin/emacs では不要です。Terminal.app がそのへんの変換処理をうまくやってくれますので。--ぜ
    • 何時も有り難う御座います。2月の半ばには本業も一段落する見込みですので、その頃に纏めの作業に入ろうと思います。--tkoba

OSXWS-10.5 の emacs 設定ファイル(案)

今までは一般ユーザが編集できないところで初期設定が行われていたので、設定を変更したい時は上から変更を重ねる方法しかありませんでした。カラーテーマを変更した場合は、起動時に一度デフォルトの色になって、その後自分の設定した色になるような形でした。基本的な初期設定をデフォルトとして提供しつつも、ユーザの意思でプレーンな状態から初期設定ファイルを書き直せるようなファイル構成の案として、以下のような感じにするのはどうでしょうか?提供する初期設定ファイルを変更する可能性がない場合は、デフォルトの設定を ~/.emacs_osxws.el で最初に与えるだけというのもシンプルで良いと思いますが。--seto

$ cat /private/etc/emacs-[EMACSVER]/site-start.d/99osxws.el

;; setting the MacOS X [[WorkShop]] flag
(defconst osxws-emacs-flag t 
  "This is Emacs of MacOS X WorkShop.")

$ cat ~/.emacs

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 初期設定ファイルの読み込み
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(cond ((boundp 'osxws-emacs-flag)
       ; Mac OS X WorkShop用初期化ファイル
       (load-file "~/.emacs_osxws.el")
       (load-file "~/.custom_osxws.el"))
      (t
       ; その他のEmacs用初期化ファイル
       (if (file-exists-p "~/.emacs.el") 
    (load-file "~/.emacs.el"))
       (if (file-exists-p "~/.custom.el")
    (load-file "~/.custom.el")))
)

$ cat ~/.emacs_osxws.el

;; japanese settings 
 (load-file "全ユーザ共通の場所/japanese-init.el")

;; Section 0 fundamental configurations
 (load-file "全ユーザ共通の場所/config0.el")

;; Section 1 appearance setting
 (load-file "全ユーザ共通の場所/config1.el")

OSXWS-10.4-3 の emacs 設定ファイル(案)

グローバル共通

OSXWSのEmacs は起動時に/private/etc/emacs-[EMACSVER]/site-start.d/を読みに行きます。 ここでは、upstream で今後も改変が予想される設定と、OSXWS のデフォルト設定を行います。これは、distribution 全体としての整合性や体裁(つまり、「街」としての機能を保つこと)を目的とします。ユーザーが自分の ~/.*.el を書き損じても、それら全てを無効にすれば OSXWS としての CarbonEmacs の機能が一通り利用できる事を目指します。

$ cat /private/etc/emacs-[EMACSVER]/site-start.d/99osxws.el

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  osxws.el for MacOS X [[WorkShop]]
;;            KOBAYASHI Taizo <xxxxxxx@xxxxxx.com>
;; Time-stamp: <07/03/07 15:17:49 tkoba>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 0 fundamental configurations
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; setting the MacOS X [[WorkShop]] flag
(defconst osxws-emacs-flag t 
  "This is Emacs of MacOS X WorkShop.")

;; get display height
(setq display-height
  (string-to-number
    (shell-command-to-string
     "defaults -currentHost read com.apple.windowserver | \
      grep UnmirroredHeight | head -1 | \
      sed -e \"s/^[ ]*UnmirroredHeight = //;s/\;//\"")))

;; japanese settings for Carbon Emacs Package
(if
    (equal 
     (substring 
      (concat 
       (shell-command-to-string "defaults read -g AppleLocale") "__") 0 2) "ja")
    (save-excursion
     (require 'utf-8m)
     (set-clipboard-coding-system 'utf-8)
     (set-terminal-coding-system 'utf-8) ; 'euc-jp-unix)
     (set-file-name-coding-system 'utf-8m)
     (set-language-environment 'Japanese)
     (set-default-coding-systems 'euc-jp-unix)
     (set-keyboard-coding-system (if window-system 'sjis-mac 'utf-8))
     (load "menu-tree")))

;;; 前回の編集箇所を記録
(require 'saveplace)
(setq-default save-place t)
(setq save-place-file "~/Library/Application Support/OSXWS/emacs-places.txt")

;; 編集ファイル foo のバックアップファイル foo~ をコピーで作る
(setq backup-by-copying t)

;;; emacsclient サーバを起動
(server-start)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 1 appearance setting
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; tool-bar を消す
(tool-bar-mode nil)

;;; 括弧の対応表示
(require 'paren)
(show-paren-mode)

;;; mark 領域に色付け
(setq transient-mark-mode t)

;;; フォントのスケールをしない
(setq scalable-fonts-allowed nil)

;;; 行番号を表示する
(line-number-mode t)

;;; ステータスラインに時間を表示する
(if (equal (substring (concat 
       (shell-command-to-string "defaults read -g AppleLocale") "__") 0 2) "ja")
      (progn
       (setq dayname-j-alist
            '(("Sun" . "日") ("Mon" . "月") ("Tue" . "火") ("Wed" . "水")
             ("Thu" . "木") ("Fri" . "金") ("Sat" . "土")))
       (setq display-time-string-forms
             '((format "%s年%s月%s日(%s) %s:%s %s"
                       year month day
                       (cdr (assoc dayname dayname-j-alist))
                       24-hours minutes
                       load)))))
(display-time)

;;; 最終更新日の自動挿入
;;;   ファイルの先頭から 8 行以内に Time-stamp: <> または
;;;   Time-stamp: " " と書いてあれば、セーブ時に自動的に日付が挿入されます
(require 'time-stamp)
(if (not (memq 'time-stamp write-file-functions))
    (setq write-file-functions
   (cons 'time-stamp write-file-functions)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 2 keyboard/keybindig
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; コマンド、コントロール、オプションの各キーを
;;; alt, control, hyper, meta, super
;;; の各キーとして利用
(setq mac-command-modifier 'alt)
(setq mac-control-modifier 'control)
(setq mac-option-modifier 'meta)

(cua-selection-mode t)

;;; [Home] Key と [End] Key を従来の動作に戻す
(define-key global-map [home] 'beginning-of-buffer)
(define-key global-map [end] 'end-of-buffer)

;;; mac-key-mode 
;; (OSXアプリケーションのショートカット)
(when (eq window-system 'mac)
  (require 'mac-key-mode)
  (mac-key-mode 1))

;; C. fix: Unicode => Japanese mapping
;; Thanks to saiki-san (see [macemacsjp-users 870])
;; register circle around digits to cjk table (by Ando-san)
(defadvice utf-translate-cjk-load-tables
  (after my-ad-circled-digit activate)
  (dotimes (i 20)
    (let ((unicode (+ #x2460 i))
   (char (+ 54433 i)))
      (if (utf-translate-cjk-substitutable-p unicode)
   (puthash unicode char ucs-unicode-to-mule-cjk))
      (puthash char unicode ucs-mule-cjk-to-unicode))))
;; prevent to use half-width marks (by Nanba-san)
(utf-translate-cjk-set-unicode-range 
 '((#x2e80 . #xd7a3)
   (#xff00 . #xffef)
   (#xa7 . #xa7)                        ;
   (#xb0 . #xb1)                        ;
   (#xb4 . #xb4)                        ;
   (#xb6 . #xb6)                        ;
   (#xd7 . #xd7)                        ;
   (#xf7 . #xf7)                        ;
   (#x370 . #x3ff)                      ; ギリシャ
   (#x400 . #x4ff)                      ; キリル
   (#x2000 . #x206f)                    ; 一般句読点
   (#x2103 . #x2103)                    ; ℃
   (#x212b . #x212b)                    ; Å
   (#x2190 . #x21ff)                    ; 矢印
   (#x2200 . #x22ff)                    ; 数学記号
   (#x2300 . #x23ff)                    ; 技術記号
   (#x2460 . #x2473)                    ; 円囲み数字
   (#x2500 . #x257f)                    ; 罫線
   (#x25a0 . #x25ff)                    ; 幾何学模様
   (#x2600 . #x26ff)                    ; その他の記号
   ))
;; C. end

;; D. fix yen key problem on JIS keyboard
;; Ando-san's code (see [Macemacsjp-users 1126])
(define-key global-map [2213] nil)
(define-key global-map [67111077] nil)
(define-key function-key-map [2213] [?\\])
(define-key function-key-map [67111077] [?\C-\\]) 

(define-key global-map [3420] nil)
(define-key global-map [67112284] nil)
(define-key function-key-map [3420] [?\\])
(define-key function-key-map [67112284] [?\C-\\])

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 3 shell-command の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; password の入力を隠す
(add-hook 'comint-output-filter-functions
 'comint-watch-for-password-prompt)

;;; escape sequence
(autoload 'ansi-color-for-comint-mode-on "ansi-color"
 "Set `ansi-color-for-comint-mode' to t." t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 4 橋本さんの inline-patch 設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(when (eq window-system 'mac)
  (add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)
  (mac-add-ignore-shortcut '(control))
  (mac-set-input-method-parameter 'japanese 'cursor-color "red"))

;; Command-Space で起動します。
(global-set-key [(alt \ )] 'toggle-input-method)
;; Shift-Space で起動します。
(global-set-key [?\S-\ ] 'toggle-input-method)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 5 [[CarbonEmacs]]ウィンドウモードの設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(when (eq window-system 'mac)
  
  ;; fixed-width-fontset (carbon-font)
  (require 'carbon-font)
  ;; if display-height is less than 900, set font size 12pt.
  (if (< display-height 900)
    (setq fontsize 12)
    (setq fontsize 14))
  (fixed-width-set-fontset "hiramaru" fontsize)
  
  ;; color-theme
  ;; M-x color-theme-?によってカラーテーマを変更できます。
  (require 'color-theme)
  (color-theme-dark-blue2)

  ;; 透過ウィンドウ Transparency3
  (add-to-list
   'default-frame-alist
   '(alpha . (90 40))) ;; (alpha . (<active frame> <non active frame>))
  (setq frame-alpha-lower-limit 20)
  
  ;; アンチエイリアス 
  (setq mac-allow-anti-aliasing t)

  ;;----------------------------------------------------------
  ;; smart-dnd (ドラッグ&ドロップ)
  (require 'smart-dnd)

  ;; yahtml-mode:
  (add-hook
   'yahtml-mode-hook
   '(lambda ()
      (smart-dnd-setup
       '(
  ("\\.gif\\'" . "<img src=\"%R\">\n")
  ("\\.jpg\\'" . "<img src=\"%R\">\n")
  ("\\.png\\'" . "<img src=\"%R\">\n")
  ("\\.css\\'" . "<link rel=\"stylesheet\" type=\"text/css\" href=\"%R\">\n" )
  ("\\.js\\'"  . "<script type=\"text/javascript\" src=\"%R\"></script>\n" )
  (".*" . "<a href=\"%R\">%f</a>\n")))))

  ;; yatex-mode:
  (add-hook
   'yatex-mode-hook
   '(lambda ()
      (smart-dnd-setup
       '(
  ("\\.tex\\'" . "\\input{%r}\n")
  ("\\.cls\\'" . "\\documentclass{%f}\n")
  ("\\.sty\\'" . "\\usepackage{%f}\n")
  ("\\.eps\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.ps\\'"  . "\\includegraphics[clip]{%r}\n")
  ("\\.pdf\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.jpg\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.png\\'" . "\\includegraphics[clip]{%r}\n")
         ("\\.bst\\'" . "\\bibliographystyle{%n}\n")
  ("\\.bib\\'" . "\\bibliography{%n}\n")))))
  
  ;; C/C++ mode:
  (add-hook 
   'c-mode-common-hook
   '(lambda () (smart-dnd-setup '(("\\.h\\'" . "#include <%f>")))))
  ;;----------------------------------------------------------
  )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Section 6 その他の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; Yatex
(if (file-exists-p "~/.yatex.el")
      (load-file "~/.yatex.el"))

;; Mew 5.2  -  Messaging in the Emacs World
(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)

(if (file-exists-p "~/.mew.el")
      (load-file "~/.mew.el"))

;;; バッファの最後でnewlineで新規行を追加するのを禁止する
(setq next-line-add-newlines nil)

;;; 画面最下行で[↓]を押したときのスクロール数
(setq scroll-step 1)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Local Variables:
;; mode: emacs-lisp
;; buffer-file-coding-system: junet-unix
;; End:

ローカル共通

.emacsでは条件分岐のみを行います。他のEmacsに別の初期設定を行いたい場合もここから読み込むように設定します。

$ cat ~/.emacs

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 初期設定ファイルの読み込み
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(cond ((boundp 'osxws-emacs-flag)
       ; Mac OS X WorkShop用初期化ファイル
       (load-file "~/.emacs_osxws.el")
       (load-file "~/.custom_osxws.el"))
      (t
       ; その他のEmacs用初期化ファイル
       (if (file-exists-p "~/.emacs.el") 
    (load-file "~/.emacs.el"))
       (if (file-exists-p "~/.custom.el")
    (load-file "~/.custom.el")))
)


OSXWSのEmacs専用custom 用ファイル

M-x customize による設定が書き込まれるファイルです。

$ cat ~/.custom_osxws.el

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  .custom for MacOS X [[WorkShop]]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq custom-file "~/.custom_osxws.el")

OSXWSのEmacs専用 .emacs

ユーザーは設定をここで行います。ユーザーが弄りそうな設定をサンプルの形で提供します。 $ cat ~/.emacs_osxws.el

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ~/.emacs_osxws.el
;;  .emacs for MacOS X [[WorkShop]]
;; Time-stamp: <07/03/07 16:41:26 tkoba>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; 初期設定ファイルの指定
(setq user-init-file "~/.emacs_osxws.el")

;;; C-h と Backspace の入れ替え
;;; 前一文字削除が Ctrl + h に割当てられます
;(keyboard-translate ?\C-h ?\C-?)
;(global-set-key "\C-h" nil)

;;; コマンド、コントロール、オプションの各キーを
;;; alt, control, hyper, meta, super
;;; の各キーとして利用
;(setq mac-command-modifier 'alt)
;(setq mac-control-modifier 'control)
;(setq mac-option-modifier 'meta)

;;; gzファイルも編集できるように
;(auto-compression-mode t)

;;; 一行が 80 字以上になった時には自動改行する
;(setq fill-column 80)
;(setq text-mode-hook 'turn-on-auto-fill)
;(setq default-major-mode 'text-mode)

;;; 起動時に message を表示しない
;(setq inhibit-startup-message t)

;;; visible-bell
;(setq visible-bell t)

;;; 行番号を表示する
;(line-number-mode t)

;;; mule/emacs -nw で起動した時にメニューバーを消す
;(if window-system (menu-bar-mode 1) (menu-bar-mode -1))

;;; バッファの最後でnewlineで新規行を追加するのを禁止する
;(setq next-line-add-newlines nil)

;;; 画面最下行で[↓]を押したときのスクロール数
;(setq scroll-step 1)
 
;;; mark 領域に色付け
;(setq transient-mark-mode t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; [[CarbonEmacs]]ウィンドウモードの設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(when (eq window-system 'mac)
  
  ;; fixed-width-fontset (carbon-font)
  ;(require 'carbon-font)
  ;(fixed-width-set-fontset "hiramaru" 14)
  
  ;; color-theme
  ;; M-x color-theme-?によってカラーテーマを変更できます。
  ;(require 'color-theme)
  ;(color-theme-dark-blue2)
  ;(color-theme-ld-dark)
  ;(color-theme-gnome2)
  ;(color-theme-wheat)

  ;; 透過ウィンドウ Transparency3
  ;(add-to-list
  ; 'default-frame-alist
  ; '(alpha . (90 40))) ;; (alpha . (<active frame> <non active frame>))
  ;(setq frame-alpha-lower-limit 20)
  
  ;; アンチエイリアス 
  ;(setq mac-allow-anti-aliasing t)
;)
;; End:

YaTeXの設定ファイル

.emacs_osxws.elから読み込まれます。

$ cat .yatex.el

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  ~/.yatex.el for MacOS X [[WorkShop]]
;;            KOBAYASHI Taizo <xxxxxxxxx@xxxxxx.com>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; yatex の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist
      (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another [[LaTeX]] mode" t)

;; platex と Mxdvi
(setq tex-command "platex-euc --src-special"
      dvi2-command "mxdvi")
;; platex と TeXShop
;(setq tex-command "~/Library/TeXShop/bin/platex2pdf-euc"
;      dvi2-command "open -a TeXShop")
;; pdflatex と TeXShop 
;(setq tex-command "pdflatex"
;      dvi2-command "open -a TeXShop")

(setq dviprint-command-format "dvips %s | lpr"
      YaTeX-kanji-code 3 ; (1 JIS, 2 SJIS, 3 EUC)
      YaTeX-use-AMS-LaTeX t ; AMS-LaTeX
      section-name "documentclass"
      makeindex-command "mendex -E"
      bibtex-command "jbibtex -kanji=euc"
      YaTeX-skip-default-reader  t
      YaTeX-latex-message-code 'euc-jp-unix
      YaTeX-use-font-lock t
)

(add-hook 'skk-mode-hook
 (lambda ()
  (if (eq major-mode 'yatex-mode)
      (progn
 	(define-key skk-j-mode-map "\\" 'self-insert-command)
 	(define-key skk-j-mode-map "$" 'YaTeX-insert-dollar)
   ))
))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; yahtml の設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist
      (cons (cons "\\.html$" 'yahtml-mode) auto-mode-alist))
(autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t)
(add-to-list 'auto-mode-alist '("\\.htm\\'" . yahtml-mode))

(setq yahtml-www-browser "open"
      yahtml-lint-program "htmllint"
      yahtml-kanji-code 3)
 
(add-hook 'yahtml-mode-hook
     '(lambda ()
       (auto-fill-mode -1)
       )) 

;;;; 常に<p>をいれたら</p>
(setq yahtml-always-/p t)
;;;; 常に<li>をいれたら</li>
(setq yahtml-always-/li t)

;; End:

  • 変更箇所
    • Emacs 22.1 で magic-mode から auto-mode-alist へ変更

変更点

議論する項目

 (color-theme-ld-dark)
    • デフォルトのカラーテーマですが、黒背景に白文字はコントラストが強すぎて目に負担が大きいと思って、青中心の配色のものを選びました。これも個人の好みが出るところですので、何も設定せずに.emacs.my.elに書いてもらうというのでも良いかもしれません。--seto
    • 色はいちばん個人の好みが出るところなので、CarbonEmacsPackage では絶対に手をつけないことにしています。OSXWSが汎用ディストリビューションを目指すのでしたら、色には手を付けずに、ユーザーのカスタマイズに任せるべきだと思います。-- ぜ
    • Distribution としての OSXWS のポリシーを反映するものにすべきでしょう。単体の CarbonEmacsPackage では銭谷さんの仰言る通りカスタマイズすべきではないと思います。それはモデルハウス的なものであるからです。一方 Distribution の一部として提供される場合には「街」の景観に溶け込むようにデフォルトの設定を行うべきです。Vine Linux も emacs には相当のカスタマイズを施していますが、その事によりトラブルが発生した事はありません。-- tkoba
;;; モード行にカレントディレクトリを表示
(add-to-list 'global-mode-string '("" default-directory "-"))
    • OSX の場合、時計がメニューバーにあるので、モード行は別の情報にしてもよいかと思い、カレントディレクトリを表示さあせることを考えていましたが、メニューバーに日付はでないということで、検討しています。--seto
;;; フォントのスケールをしない
(setq scalable-fonts-allowed nil)
    • これはどういう効果があるのでしたっけ?
    • 効果が認められないのでトラブルを避ける為に外しました。
    • この設定がないと mew のヘッダーの文字が潰れて見難くなるので復活させました。

(追加した項目)

;;; mac-key-mode 
;; (OSXアプリケーションのショートカット)
(when (eq window-system 'mac)
  (require 'mac-key-mode)
  (mac-key-mode 1))
    • 以前から、optionがMetaキーに割り当てられていましたが、そのように設定した状態では、Commandキーがほとんど使われていない状況になっているので、それを有効利用するために追加しました。 mac-key-modeを使っていても、Emacsの標準的な操作にかわりがないので問題ないかと思います。--seto
;;; ベル音を鳴らさない
(setq visible-bell t)
    • 候補として追加しましたが、かならず必要な設定ではないかも知れません。--seto
  ;; yatex-mode:
  (add-hook
   'yatex-mode-hook
   '(lambda ()
      (smart-dnd-setup
       '(
  ("\\.tex\\'" . "\\input{%r}\n")
  ("\\.cls\\'" . "\\documentclass{%f}\n")
  ("\\.sty\\'" . "\\usepackage{%f}\n")
  ("\\.eps\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.ps\\'"  . "\\includegraphics[clip]{%r}\n")
  ("\\.pdf\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.jpg\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.png\\'" . "\\includegraphics[clip]{%r}\n")
  ("\\.bst\\'"  .  "\\bibliographystyle{%n}\n")
  ("\\.bib\\'"  .  "\\bibliography{%n}\n")))))
    • YaTeX での smart-dnd に画像はclip オプションもあった方が無難ということで加えました。

また BibTeX の利用を考え .bst、.bib ファイルの挿入も加えました。

(取り除いた項目)

;; gzファイルも編集できるように
(auto-compression-mode t)
  • デフォルトで t なので不要です。-- ぜ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; このファイルに間違いがあった場合に全てを無効にします
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(put 'eval-expression 'disabled nil)
    • この行は「.emacs に間違いがあった場合に全てを無効」する設定なのですか?

とてもそのようには見えませんが... --

    • ありがとうございます。気がつきませんでした。また、これがあってもなくても、eval-expressionコマンドの振る舞いは変わらないようですから取り除きました。 --seto


;;; マクロサーチパスの追加
;;; ~/lib/emacs 以下にユーザ用の *.el, *.elc を置くことができます
(setq load-path (append '("~/lib/emacs") load-path))
    • 管理者権限のないユーザの利用を前提に考えているので、ユーザがlispを追加するにはホーム以下のどこかに置かなければなりません。しかし、その設定を最初からしておく必要はないかもしれません。--seto
    • 中級者は自分の .emacs.el (.emacs.my.el) に同じ設定を書くでしょうから、不要だと思います。-- ぜ
;;; active でない window の空 cursor を出さない
(setq cursor-in-non-selected-windows nil)
    • ウィンドウのactive、non activeは、透明度を変更するため、カーソルに関してはデフォルトの設定のままでよいと判断しました。--seto
;;; C-h と Backspace の入れ替え
;;; 前一文字削除が Ctrl + h に割当てられます
(keyboard-translate ?\C-h ?\C-?)
(global-set-key "\C-h" nil)
;;; Command-? を help にする
;(global-set-key [(alt \?)] 'help)
    • もともとのキーバインドである help は非常に重要な機能なので、最初から変更されているとストレスに感じるユーザが少なからずいると想像していました。CocoaのC-hはBackspaceですから悩ましいですけど。--seto


コメント

  • 2007-03-08 (Thu) 11:00:23 tkoba : 皆様、様々なご教示を戴き有り難う御座います。現時点でのテスト環境に更新致しました。引き続きご意見を宜しくお願い致します。
  • 2007-03-08 (Thu) 08:40:16  : あと、(setq scalable-fonts-allowed nil) が carbon-font と共存できるかどうかが心配です。
    • 何時も有り難う御座います。効果が不明でトラブルの元になりかねないので外しました。--tkoba
  • 2007-03-08 (Thu) 08:38:26  : それから、~/Library/Application Support/OSXWS/ は、OSXWS のインストーラーが作成するのでしょうか?
    • 現状では OSX-Preferences に含まれている dot file 管理ツールの osxws-upgrade 内で行っています。-tkoba
  • 2007-03-08 (Thu) 08:36:46  : 「アプアランス」ではなく「アピアランス」だと思います。
  • 2006-03-23 (Thu) 10:57:02 seto : expand-file-nameで"~"などを展開してから使っていますが、それがなくても問題なく動作するようです。現在のEmacsでは必要ないと考えてよいでしょうか?
    • load-file を使えば、expand-file-name は不要です。load-file 関数の定義は次のようになっていますから... - ぜ
(defun load-file (file)
  "Load the Lisp file named FILE."
  ;; This is a case where .elc makes a lot of sense.
  (interactive (list (let ((completion-ignored-extensions
			    (remove ".elc" completion-ignored-extensions)))
		       (read-file-name "Load file: "))))
  (load (expand-file-name file) nil nil t))
    • 勉強になります。load-fileで統一しました。--seto
  • 2006-03-21 (Tue) 17:48:03  : 僕は (setq mac-allow-anti-aliasing t) をオンにしています。関連して [Macemacsjp-users 791] も参考になります。~/lib/emacs はすべてのユーザーに必要でしょうか?
    • ありがとうございます。anti aliasing を nil にして見ていたものは中途半端なものだったのですね。デフォルトでは t にしておきます。(そして個人的には、閾値を適当に設定しようと思います。)--seto
    • 確かに自分でlispを持ってくる人は、自分で好きな場所に置いてパスを通しますよね。迷っている項目に上げておくので、他の方の意見も頂けたらと思います。--seto
    • Macの流儀に従うと、~/Library/Emacsではないでしょうか? --fu7mu4
    • 確かにそうですね。取りあえず、この設定に関しては取り除いておきますので、問題があれば言ってください。--seto
    • CarbonEmacsPackage では /Library/Application Support/Emacs をサポートしていますが、次版から削除する予定です。暗黙の load-path を増やすと、いろいろ混乱が起きて厄介です。--ぜ
  • 2006-03-21 (Tue) 01:06:31 seto : 個人的には私もC-hはhelpですから、デフォルトのままがよいと思います。現行バージョンからは変更になりますがよろしいでしょうか?長期的に考えて、悩ましいところはEmacsデフォルトのまま手を付けない方針にしたいと思います。
  • 2006-03-20 (Mon) 13:39:22  : elisp 開発者は C-h k, C-h f, C-h v などを頻繁に使います。迷ったときは手をつけないのがいちばんかと思います。
  • 2006-03-20 (Mon) 11:32:15 seto : デフォルトでC-hをBackspaceにするべきかどうか悩みます。デフォルトでバインドされている help もよく使う機能なので、そのままでも良さそうな気がします。nwモードでも、deleteキーでBackspaceできます。

参考したサイト