2009年1月26日

AUCTEX で dvipdfmx と Preview.app を起動

Mac の Carbon Emacs Package で auctex を使っている。dvi にした後で dvipdfmx で PDF に変換し、プレビューで確認・印刷をするが、この部分も C-c C-c で起動できるようにした。

M-x customize-option TeX-command-list を実行。適当な位置で INS をクリックし、次のようなエントリを作る。

INS DEL Name: DVI to PDF
        Command: dvipdfmx %s
        How: Value Menu TeX-run-command
        Create a process for NAME using COMMAND to process FILE. More
        Prompt: Toggle  off (nil)
        Modes: Value Menu All
        Menu elements:
        INS
INS DEL Name: Preview
        Command: open -a Preview.app %s.pdf
        How: Value Menu TeX-run-command
        Create a process for NAME using COMMAND to process FILE. More
        Prompt: Toggle  off (nil)
        Modes: Value Menu All
        Menu elements:
        INS

Save for Future Sessions をクリックして保存する。

投稿者 hattori : 19:45 | コメント (0) | トラックバック

2008年7月12日

Thunderbird と Carbon Emacs Package

Thunderbird でメールを書く時に好きなエディタを使えるようにする external editor という拡張がある。これで Carbon Emacs Package を使うには、アドオンの設定でテキストエディタを次のように指定する。

/Applications/Emacs.app/Contents/MacOS/bin/emacsclient

実際に編集する時は、Emacs が動いていて M-x server-start が実行された状態でなければならない。Emacs を自動的に起動する方法もあるようだが、私は Emacs はほとんど常に立ち上げているので、~/.emacs(server-start) を書いておけば、まあいいだろう。

追記:時々 Thunderbird が emacsclient の終了を検知しない(emacsclient がゾンビになる)で、作成ウィンドウが閉じられなくなるという現象が起きる。次のメールの emacsclient を起動すると、前のメールの終了が検知されて送信できるので、一つずつずらしながら送信して、最後にダミーメールの編集をすればうまくいく(場合もある)。うまくいかない場合はしょうがないので、書いたメールを /tmp から救出する。

投稿者 hattori : 18:22 | コメント (0) | トラックバック

2008年5月27日

.mailcap で Preview.app を起動

Wanderlust などで PDF を読む時は、.mailcap に Preview.app を起動するように書いておけばいいが、open コマンドがすぐに終了してしまうため、Preview.app が実際にファイルを読みに行く前にテンポラリファイルが消されてしまうことがある。それを防ぐには、open コマンドの実行後に数秒間 sleep すればよい。

.mailcap には次のように書く。

application/pdf; sh -c "open -a /Applications/Preview.app %s\; sleep 3"

投稿者 hattori : 12:52 | コメント (0) | トラックバック

2008年3月18日

Emacs の mmm-mode を使ってみた

PHPの中にHTMLが埋め込まれたプログラムを編集するのに、mmm-mode を使ってみた。

Carbon Emacs パッケージには mmm-mode も php-mode も入っている。ただし、php-mode のバージョンが古くて font-lock でエラーが出るので、1.4.0 をダウンロードして置き換える。

とりあえず M-x mmm-mode としてみる。これだけではまだ全体が php-mode なので、HTML の部分を指定してやらなくてはいけない。ヒアドキュメントをいちいち指定するのはやってられないので、あらかじめ用意されたクラスを使う。C-c % C-c でクラスの here-doc を指定する。ところが、うまくいくところといかないところがある。

echo <<<HTML

...

HTML

はうまくいくが、

echo <<<HTML

...

HTML;

はうまくいかない。セミコロンだけ次の行に書くのもきれいじゃないので、C-c % C-x<<<HTML から ^HTML;? までを指定するとうまくいった。

投稿者 hattori : 18:54 | コメント (0) | トラックバック

2007年4月28日

Ubuntu で Emacs を使うための設定

システム->設定->キーボード
  レイアウトのオプション
    Alt/Win key behavior
      Alt and Meat are on the Alt keys
    Ctrl key position
      Swap Ctrl and CapsLock
    Group Shift/Lock behavior
      Alt+Shift changes group を解除
    Third level choosers
      Press Right Alt key to choose 3rd level を解除

システム->設定->SCIM入力メソッド設定
  ホットキー SCIM開始
    Control+Space を削除

投稿者 hattori : 21:05 | コメント (0) | トラックバック

2005年11月30日

Wanderlust で大きなメールを出すと消えてしまう

症状:MacOSX 10.4 に EasyPackage で emacs と wanderlust をインストールし、大きなファイルを添付したメールを送ると、正常に送れたように見えるが、宛先に届かず、エラーも返ってこない。

原因:SMTP的にはエラーは起きていないし、サーバは他のマシンの wanderlust からのメールは正常に処理している。試しに他の SMTP サーバに送ってみると、今度はエラーが返ってきた。それを見ると、どうもスプリットメッセージがうまく処理できていないようである。なぜサーバがスプリットメッセージを特別扱いするのかは謎。

対策:M-x customize-optionmime-edit-split-message を off にする。

投稿者 hattori : 18:27 | コメント (0) | トラックバック

2005年9月 5日

Wanderlust で日本語ファイル名を mime-play する(3)

MIMEではファイル名の拡張子でファイルの種類を判断するという規定はないので、タイプがapplication/octet-streamの時はアプリケーションを起動しないというのは、正しい動作なのだそうだ。(cf. 間違いだらけのメールリーダ)
しかし正しくても不便なことには違いない。きっと同じことを考えている人がいるはずと思って探し回ったら、launcherまたはrun-mailcapを使う方法があった

.mailcapに application/*; run-mailcap %s と書いたら、無限にプロセスが増殖してしまった…。launcherの方は大丈夫。

投稿者 hattori : 15:06 | コメント (0) | トラックバック

2005年8月25日

howm の設定

基本的な設定。

(global-set-key "\C-c,," 'howm-menu)
(autoload 'howm-menu "howm" "Hitori Otegaru Wiki Modoki" t)

snap-record が標準ではキーバインドがないみたいなので、C-x , にバインドする。snap-play の方は、howm-mode なら action-lock がやってくれるので不要。

(global-set-key "\C-x," 'snap-record)
(autoload 'snap-record "snap" 
  "Convert snapshot of application to string, and put it to kill-ring." t)
(autoload 'snap-play "snap"
  "Restore snapshot of application from string at point." t)

JPEG ファイルを表示しようとすると、mm-device-type が未定義と言われるので、定義する。

(defun mm-device-type ()
  window-system)

file://~/hoge.jpg だと、チルダを展開してくれない。

(eval-after-load "howm-backend"
  '(defadvice action-lock-find-file (before canonicalize first (f u) activate)
     (setq f (expand-file-name f))))

投稿者 hattori : 11:38 | コメント (0) | トラックバック

2005年8月 4日

Wanderlust で日本語ファイル名を mime-play する(2)

症状:日本語のファイル名が付いた添付ファイルで v (mime-preview-play-current-entity) を実行すると、アプリケーションを起動せずに、ファイルに保存しようとする。

ファイル名が日本語かどうかは関係なくて、タイプが application/octet-stream なのが悪いようだ。

投稿者 hattori : 16:04 | コメント (0) | トラックバック

2005年5月31日

Emacs 用 RSS リーダ

newsticker.el - 未読は要約が表示されるが、既読は見出しだけになるので見やすい。ミニバッファの ticker 表示がよくできている!

投稿者 hattori : 20:10 | コメント (0) | トラックバック

2005年5月19日

Wanderlust で日本語ファイル名を mime-play する(1)

症状:日本語のファイル名が付いた添付ファイルで v (mime-preview-play-current-entity) を実行すると、例えば「あいう.doc」が「\あ\い\う.doc」になって、そんなファイルは無いと言われる。

原因:Debain の /etc/mailcap は引数をシングルクォートで囲んである。flim は引数の非ASCII文字の前にバックスラッシュを挿入する。結果として、二重にエスケープされてしまう。

対策:mime-format-mailcap-commandが呼ばれるときに、'%s'%sに置き換えてしまう。

(eval-after-load "mime-conf"
  '(defadvice mime-format-mailcap-command 
     (before mailcap-quote (mtext situation) activate)
     (while (string-match "'%s'" mtext)
       (setq mtext (replace-match "%s" nil t mtext)))))

投稿者 hattori : 20:09 | コメント (0) | トラックバック

2004年11月15日

mapae で複数ブログを切り替える

mapaeは MovableType 用 emacs フロントエンド。

投稿者 hattori : 20:33 | コメント (0) | トラックバック

2004年11月10日

csv-mode.el (その2)

2バイト文字が含まれていると、csv-align-fields で正しく揃わない。以下のように修正。

*** csv-mode.el.orig	2004-11-10 20:32:21.000000000 +0900
--- csv-mode.el	2004-11-10 20:37:17.000000000 +0900
***************
*** 255,261 ****
  
  (defconst csv-mode-line-help-echo
    ;; See bindings.el for details of `mode-line-format' construction.
!   (get-text-property 0 'help-echo (car default-mode-line-format))
    "Primary default mode line help echo text.")
  
  (defconst csv-mode-line-format
--- 255,263 ----
  
  (defconst csv-mode-line-help-echo
    ;; See bindings.el for details of `mode-line-format' construction.
!   ; We can't depend on default-mode-line-format which was modified by egg.
!   ; (get-text-property 0 'help-echo (car default-mode-line-format))
!   "mouse-1: select window, mouse-2: delete others, mouse-3: delete ..."
    "Primary default mode line help echo text.")
  
  (defconst csv-mode-line-format
***************
*** 1006,1012 ****
  		(setq beg (point))	; beginning of current field
  		(while (not (eolp))
  		  (csv-end-of-field)
! 		  (setq x (- (point) beg)) ; field width
  		  (if w
  		      (if (> x (car w)) (setcar w x))
  		    (setq w (list x)
--- 1008,1016 ----
  		(setq beg (point))	; beginning of current field
  		(while (not (eolp))
  		  (csv-end-of-field)
! 		  ; width must be calculated by string-width
! 		  ; (setq x (- (point) beg)) ; field width
! 		  (setq x (string-width (buffer-substring beg (point))))
  		  (if w
  		      (if (> x (car w)) (setcar w x))
  		    (setq w (list x)
***************
*** 1026,1032 ****
  		  (let ((left-padding 0) (right-padding 0) overlay)
  		    (csv-end-of-field)
  		    (set-marker end (point)) ; end of current field
! 		    (setq x (- (point) beg) ; field width
  			  x (- (car w) x)) ; required padding
  
  		    ;; beg = beginning of current field
--- 1030,1038 ----
  		  (let ((left-padding 0) (right-padding 0) overlay)
  		    (csv-end-of-field)
  		    (set-marker end (point)) ; end of current field
! 		    ; width must be calculated by string-width
! 		    ; (setq x (- (point) beg) ; field width
! 		    (setq x (string-width (buffer-substring beg (point)))
  			  x (- (car w) x)) ; required padding
  
  		    ;; beg = beginning of current field

投稿者 hattori : 20:40 | コメント (0) | トラックバック

2004年11月 1日

csv-mode.el (その1)

emacsでCSVを扱うためのメジャーモード。フィールド番号を指定して削除やソートができる。

eggが入っていると、ロードした時にエラーが出る。以下のように修正。

(defconst csv-mode-line-help-echo
  ;; See bindings.el for details of `mode-line-format' construction.
; We can't depend on default-mode-line-format which was modified by egg.
;  (get-text-property 0 'help-echo (car default-mode-line-format))
  "mouse-1: select window, mouse-2: delete others, mouse-3: delete ..."
  "Primary default mode line help echo text.")

投稿者 hattori : 20:35 | コメント (0) | トラックバック